On Tue, 22 Jan 2008, David Knezevic wrote:

> I'd like to implement the following boundary condition for the outflow
> of a channel:
> du/dn - n*p = 0,
> where n is the outward normal and p is the pressure. It seems to me that
> this BC would result in an extra boundary term $-\int_{\partial\Omega} n
> p \ds$ being added to the momentum equations?

That seems right.

> In my case the outward normal on the outflow boundary is n = (1,0). I
> tried to implement this BC using the following code in side_constraint:
>
>          if (boundary_id == outflow_id)
>            Fu(i) -= JxW_side[qp] * p * phi_side[i][qp];
>
>          if (boundary_id != outflow_id)
>            Fv(i) += JxW_side[qp] * penalty *
>                     (v - v_value) * phi_side[i][qp];
>
>                if (boundary_id != outflow_id)
>                  Kuu(i,j) += JxW_side[qp] * penalty *
>                              phi_side[i][qp] * phi_side[j][qp];
>                if (boundary_id != outflow_id)
>                  Kvv(i,j) += JxW_side[qp] * penalty *
>                              phi_side[i][qp] * phi_side[j][qp];
>
> where p = side_value(p_var, qp),  plus there are other BCs not shown
> here for inflow and no-slip. This doesn't appear to work; the Newton
> convergence fails with these BCs. If anyone can point out how to
> properly implement this BC, I'd be most appreciative :)

For the new Fu term, you'll need a corresponding Jacobian term.  Try:

        if (boundary_id == outflow_id)
          Kup(i,j) -= JxW_side[qp] * psi_side[j][qp] * phi_side[i][qp];
---
Roy

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to