mus_advRel_kPS_rMRT_vEmodelCorr_lD3Q19 Subroutine

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

Advection relaxation routine based on the E-Model for the D3Q19 Lattice Boltzmann model for the generic advection and anisotropic-dispersion equation. The E-Model is corrected to account for the effect of numerical diffusion with the nonlinear equilibrium correction

Irina Ginzburg (2005), "Equilibrium-type and link-type lattice Boltzmann models for generic advection and anisotropic-dispersion equation", Advances in Water Resources, Volume 28, Issue 11

The MRT model is based on:

Dominique d’Humières. “Multiple–relaxation–time lattice Boltzmann models in three dimensions”. In: Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences 360.1792 (2002), pp. 437–451. doi: 10.1098/rsta.2001.0955

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.

First load all local values into temp array

Arguments

Type IntentOptional Attributes Name
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