Characteristic-based non-reflective open boundary conditions
: add explaination of these steps
These boundary conditions are taken from the paper: S. Izquierdo and N. Fueyo, "Characteristic nonreflecting boundary conditions for open boundaries in lattice Boltzmann methods," Physical Review E, vol. 78, no. 46707, 2008.
Note: unstable behavior for high omega relaxation parameters. It is recommended to use a sponge layer with a \ref mus_aux_module::mus_setspatialomega "spatial omega" where the omega is decreased towards the boundaries to increase stability
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 | :: | rhoDef(globBC%nElems(iLevel)) | ||||
real(kind=rk), | private | :: | rhoF | ||||
real(kind=rk), | private | :: | uxF(globBC%nElems(iLevel)*3) | ||||
real(kind=rk), | private | :: | usqB | ||||
real(kind=rk), | private | :: | usqF | ||||
real(kind=rk), | private | :: | fPlusFluid | ||||
real(kind=rk), | private | :: | fEqPlus | ||||
real(kind=rk), | private | :: | fEqPlusFluid | ||||
real(kind=rk), | private | :: | inv_rho_phy | ||||
real(kind=rk), | private | :: | fTmp(nScalars*globBC%nElems(iLevel)) | ||||
real(kind=rk), | private | :: | fTmpPre(nScalars) | ||||
real(kind=rk), | private | :: | fTmpPre_2(nScalars) | ||||
real(kind=rk), | private | :: | omega | ||||
integer, | private | :: | iDir | ||||
integer, | private | :: | iElem | ||||
integer, | private | :: | |||||
integer, | private | :: | invDir | ||||
integer, | private | :: | elemPos | ||||
integer, | private | :: | posInBuffer | ||||
integer, | private | :: | bcPress_pos | ||||
real(kind=rk), | private | :: | sigma | ||||
real(kind=rk), | private | :: | kappa | ||||
real(kind=rk), | private | :: | csMod | ||||
real(kind=rk), | private | :: | Ma_L | ||||
real(kind=rk), | private | :: | lodi_length | ||||
real(kind=rk), | private | :: | k_i | ||||
real(kind=rk), | private | :: | swap | ||||
real(kind=rk), | private | :: | L1 | ||||
real(kind=rk), | private | :: | L2 | ||||
real(kind=rk), | private | :: | L3 | ||||
real(kind=rk), | private | :: | L4 | ||||
real(kind=rk), | private | :: | L5 | ||||
real(kind=rk), | private | :: | dudx | ||||
real(kind=rk), | private | :: | dvdx | ||||
real(kind=rk), | private | :: | dwdx | ||||
real(kind=rk), | private | :: | drhodx | ||||
real(kind=rk), | private | :: | rhoN1Prev | ||||
real(kind=rk), | private | :: | uN1Prev(3) | ||||
real(kind=rk), | private | :: | rhoN2Prev | ||||
real(kind=rk), | private | :: | uN2Prev(3) | ||||
real(kind=rk), | private | :: | rhoLodi | ||||
real(kind=rk), | private | :: | uLodi(3) | ||||
integer, | private | :: | normal(3) |