mus_set_nonEqExpol Subroutine

public subroutine mus_set_nonEqExpol(me, curved, tree, stencil, nScalars, globBC, bc_neigh, pdf, levelDesc, varPos, nLinks, minLevel, maxLevel)

Linkwise non-equilibrium extrapolation (can handle curved walls)

All the coefficients are pre-calculated here and then used for the specific boundary conditions - potential_noneq_expol & potential_neumann - velocity_noneq_expol & pressure_noneq_expol - spc_moledens_noneq_expol & spc_solvent_noneq_expol

The pdf is decomposed into equilibrium (eq) and non-equilibrium (neq) part: f = f_eq + f_neq - f_eq is calculated by weighting a fictitious X, which is obtained by an extrapolation using the fluid neighbor(s) - f_neq is approximated by second-order extrapolation using the fluid neighbor(s) - for qVal < 0.75 even the second neighbor is used for the extrapolations

Bitmask is true for incoming direction


type(bc_nonEqExpol_type), intent(out), allocatable:: me(:)

setting type for bc

logical, intent(in) :: curved

Curved or straight boundary

type(treelmesh_type), intent(in) :: tree

using mesh information

type(tem_stencilHeader_type), intent(in) :: stencil

for directions

integer, intent(in) :: nScalars

number of scalars

type(glob_boundary_type), intent(in) :: globBC

scheme global boundary type

type(bc_neigh_type), intent(in) :: bc_neigh(minLevel:maxLevel)

boundary neighbor

type(pdf_data_type), intent(in) :: pdf(tree%global%minlevel:tree%global%maxlevel)

contains global state vector

type(tem_levelDesc_type), intent(in) :: levelDesc(minLevel:maxLevel)

level descriptor

integer, intent(in) :: varPos(:)

for position of elements

integer, intent(in) :: nLinks(minLevel:maxLevel)

for linkwise treatment

integer, intent(in) :: minLevel

minimum and maximum level

integer, intent(in) :: maxLevel

minimum and maximum level

Called by

proc~~mus_set_noneqexpol~~CalledByGraph proc~mus_set_noneqexpol mus_set_nonEqExpol proc~init_boundary_single init_boundary_single proc~init_boundary_single->proc~mus_set_noneqexpol proc~mus_init_boundary mus_init_boundary proc~mus_init_boundary->proc~init_boundary_single proc~mus_initialize mus_initialize proc~mus_initialize->proc~mus_init_boundary proc~mus_reset_aux mus_reset_aux proc~mus_reset_aux->proc~mus_init_boundary program~musubi musubi program~musubi->proc~mus_initialize proc~mus_perform_dynloadbal mus_perform_dynLoadBal proc~mus_perform_dynloadbal->proc~mus_reset_aux



integer, private :: iLink
integer, private :: invDir
integer, private :: iElem
integer, private :: iLevel
integer, private :: iDir
integer, private :: elemPos
integer, private :: QQ
integer, private :: QQN
real(kind=rk), private :: qVal