mrt_advRel_MSLiquid_generic Subroutine

public subroutine mrt_advRel_MSLiquid_generic(fieldProp, inState, outState, auxField, neigh, nElems, nSolve, level, layout, params, varSys, derVarPos)

Unoptimized Advection relaxation routine for the multispecies BGK model

This routine contains the implementation based on the paper "A Lattice Boltzmann Scheme for liquid mixtures - Part II: Discretization and Numerics, Jens Zudrop, Sabine Roller, Pietro Asinari. "\n MRT paper "Lattice Boltzmann liquid mixture modeling for electrodialytic engineering applications - J. Zudrop, K. Masilamani, S. Roller and P. Asinari"\n

This subroutine interface must match the abstract interface definition kernel in scheme/mus_scheme_type_module.f90 in order to be callable via compute function pointer.


type(mus_field_prop_type), intent(in) :: fieldProp(:)

Array of field properties (fluid or species)

real(kind=rk), intent(in) :: inState(nElems*varSys%nScalars)

input pdf vector

real(kind=rk), intent(out) :: outState(nElems*varSys%nScalars)

output pdf vector

real(kind=rk), intent(inout) :: auxField(nElems*varSys%nAuxScalars)

Auxiliary field computed from pre-collision state Is updated with correct velocity field for multicomponent models

integer, intent(in) :: neigh(nElems*layout%fStencil%QQ)

connectivity vector

integer, intent(in) :: nElems

number of elements in state Array

integer, intent(in) :: nSolve

number of elements solved in kernel

integer, intent(in) :: level

current level

type(mus_scheme_layout_type), intent(in) :: layout

current layout

type(mus_param_type), intent(in) :: params

global parameters

type(tem_varSys_type), intent(in) :: varSys

variable system definition

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of derived quantities in varsys for all fields


proc~~mrt_advrel_msliquid_generic~~CallsGraph proc~mrt_advrel_msliquid_generic mrt_advRel_MSLiquid_generic proc~invert_matrix invert_matrix proc~mrt_advrel_msliquid_generic->proc~invert_matrix



real(kind=rk), private :: pdfTmp(varSys%nScalars)
integer, private :: iElem
integer, private :: iField
integer, private :: iField_2
integer, private :: nFields
integer, private :: iDir
integer, private :: QQ
integer, private :: nScalars
integer, private :: vPos(layout%fStencil%QQ)
type(mus_varSys_data_type), private, pointer:: fPtr
type(mus_scheme_type), private, pointer:: scheme
integer, private, dimension(varSys%nStateVars):: stateVarMap
integer, private, dimension(varSys%nStateVars):: dens_pos
integer, private :: mom_pos(3,varSys%nStateVars)
real(kind=rk), private, dimension(varSys%nStateVars):: mass_dens
real(kind=rk), private, dimension(varSys%nStateVars):: num_dens
real(kind=rk), private, dimension(varSys%nStateVars):: moleFrac
real(kind=rk), private, dimension(varSys%nStateVars):: molWeight
real(kind=rk), private, dimension(varSys%nStateVars):: phi
real(kind=rk), private, dimension(3, varSys%nStateVars):: first_moments
real(kind=rk), private, dimension(3, varSys%nStateVars):: velocity
real(kind=rk), private, dimension(3, varSys%nStateVars):: eqVel
real(kind=rk), private :: totNum_dens
real(kind=rk), private :: usqr
real(kind=rk), private :: ucx
real(kind=rk), private :: feq
real(kind=rk), private :: omega
real(kind=rk), private :: omega_new
real(kind=rk), private :: paramB
real(kind=rk), private :: theta_eq
real(kind=rk), private :: velAvg(3)
real(kind=rk), private :: velNew(3)
real(kind=rk), private :: ucxQuadTerm
real(kind=rk), private :: totMassDens
real(kind=rk), private :: omegaMoments(layout%fStencil%QQ,layout%fStencil%QQ)
real(kind=rk), private :: fneq(layout%fStencil%QQ)
real(kind=rk), private :: fneq_om(layout%fStencil%QQ)
real(kind=rk), private, dimension(varSys%nStateVars, varSys%nStateVars):: matA
real(kind=rk), private, dimension(varSys%nStateVars, varSys%nStateVars):: invA
real(kind=rk), private, dimension(varSys%nStateVars, varSys%nStateVars):: resi_coeff
integer, private :: elemOff
real(kind=rk), private :: wRestInv
real(kind=rk), private :: sRest(varSys%nStateVars)