Moment based velocity boundary condition from Sam Bennent PhD thesis "A Lattice Boltzmann Model for Diffusion of Binary Gas Mixtures"
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.
! add small correction term to density which comes from momentum in the ! flow direction while substituing unknowns pdfs terms obtained ! from moments BC derivation to compute density. ! With this correction term density is recovered correctly at this node dens_correction = dot_product(vel, globBC%elemLvl(iLevel)%normal%val(:, iElem)) ! correction term for Multispecies ! rho_new = rho_old/(1.0 - dens_correction) rho = rho + rho0*dens_correction
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 | :: | rho | ||||
real(kind=rk), | private | :: | vel(3) | ||||
real(kind=rk), | private | :: | dens_correction | ||||
real(kind=rk), | private | :: | vel_b(globBC%nElems(iLevel)*3) | ||||
real(kind=rk), | private | :: | pressB(globBC%nElems(iLevel)) | ||||
integer, | private | :: | iELem | ||||
integer, | private | :: | iDir | ||||
integer, | private | :: | tmpDir | ||||
integer, | private | :: | nLinks | ||||
integer, | private | :: | iLink | ||||
integer, | private | :: | elemPos | ||||
integer, | private | :: | |||||
integer, | private, | allocatable | :: | missing_links(:) | |||
real(kind=rk), | private, | allocatable | :: | rhs(:) | |||
real(kind=rk), | private, | allocatable | :: | unKnown_fTmp(:) | |||
real(kind=rk), | private | :: | fTmp(layout%fStencil%QQ) | ||||
real(kind=rk), | private | :: | moments(layout%fStencil%QQ) | ||||
real(kind=rk), | private | :: | fTmp_2(layout%fStencil%QQ) | ||||
real(kind=rk), | private | :: | rhoTmp | ||||
real(kind=rk), | private | :: | uxTmp(3) | ||||
real(kind=rk), | private | :: | inv_vel | ||||
real(kind=rk), | private | :: | inv_press | ||||
integer, | private | :: | bcVel_pos | ||||
integer, | private | :: | bcPress_pos |