Outlet Pressure do-nothing boundary is the open boundary condition for incompressible model. This BC sets reference density at boundary so pressure is not loaded config file. Here, the normal velocity is extrapolated from 1st fluid node and tangential velocity is extrapolated from 2nd fluid node in normal direction. Algorithm used in this boundary condition: fEq(1,u) and fEq(rho,u) are computed using macroscopic values from current element. In fNeq, post-collision of current time step is used for normal direction.
This is taken from the paper: M. Junk and Z. Yang, Asymptotic Analysis of Lattice Boltzmann Outflow Treatments Commun. Comput. Phys., pp. 1–11, 2011.
This subroutine's interface must match the abstract interface definition boundaryRoutine in bc/mus_bc_header_module.f90 in order to be callable via fnct function pointer.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(boundary_type) | :: | me | global boundary type |
|||
real(kind=rk), | intent(inout) | :: | state(:) | Current state vector of iLevel |
||
real(kind=rk), | intent(in) | :: | bcBuffer(:) | state values of boundary elements of all fields of iLevel |
||
type(glob_boundary_type), | intent(in) | :: | globBC | scheme global boundary type |
||
type(tem_levelDesc_type), | intent(in) | :: | levelDesc | iLevel descriptor |
||
type(treelmesh_type), | intent(in) | :: | tree | Treelm Mesh |
||
integer, | intent(in) | :: | nSize | size of state array ( in terms of elements ) |
||
integer, | intent(in) | :: | iLevel | the level On which this boundary was invoked |
||
type(tem_time_type), | intent(in) | :: | sim_time | global time information |
||
integer, | intent(in) | :: | neigh(:) | connectivity array corresponding to state vector |
||
type(mus_scheme_layout_type), | intent(in) | :: | layout | stencil layout information |
||
type(mus_field_prop_type), | intent(in) | :: | fieldProp | fluid parameters and properties |
||
integer, | intent(in) | :: | varPos(:) | pointer to field variable in the state vector |
||
integer, | intent(in) | :: | nScalars | number of Scalars in the scheme var system |
||
type(tem_varSys_type), | intent(in) | :: | varSys | scheme variable system |
||
type(mus_derVarPos_type), | intent(in) | :: | derVarPos | position of derived quantities in varsys |
||
type(mus_physics_type), | intent(in) | :: | physics | scheme global boundary type |
||
integer, | intent(in) | :: | iField | current field |
||
type(mus_mixture_type), | intent(in) | :: | mixture | mixture info |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=rk), | private | :: | fTmp(nScalars*globBC%nElems(iLevel)) | ||||
real(kind=rk), | private | :: | fEq(layout%fStencil%QQ*globBC%nElems(iLevel)) | ||||
real(kind=rk), | private | :: | fEq0(layout%fStencil%QQ*globBC%nElems(iLevel)) | ||||
real(kind=rk), | private | :: | fNEq | ||||
real(kind=rk), | private | :: | rho(globBC%nElems(iLevel)) | ||||
real(kind=rk), | private | :: | uxB(3) | ||||
real(kind=rk), | private | :: | uxB_n(3) | ||||
real(kind=rk), | private | :: | uxB_n2(3) | ||||
real(kind=rk), | private | :: | uxB_t(3) | ||||
real(kind=rk), | private | :: | normal(3) | ||||
integer, | private | :: | normalDir | ||||
real(kind=rk), | private | :: | velocity(3,globBC%nElems(iLevel)) | ||||
real(kind=rk), | private | :: | uxF_2(globBC%nElems(iLevel)*3) | ||||
real(kind=rk), | private | :: | omega | ||||
real(kind=rk), | private | :: | visc | ||||
real(kind=rk), | private | :: | facFNeq | ||||
integer, | private | :: | iDir | ||||
integer, | private | :: | invDir | ||||
integer, | private | :: | iElem | ||||
integer, | private | :: | |||||
integer, | private | :: | elemPos | ||||
integer, | private | :: | posInBuffer |