mus_nernstPlanck_advRel_generic Subroutine

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

Advection relaxation routine for the nernst planvk model with an explicit calculation of all equilibrium quantities. Slow and simple. This routine should only be used for testing purposes

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.

Pre-calculate velocitiy terms relaxation parameter

Calculate equilibrium distribution functions fEq

Generic fetching step: Streaming for pull Local copy for push



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



integer, private :: iElem
integer, private :: iDir
integer, private :: iField
integer, private :: QQ
integer, private :: nScalars
integer, private :: nFields
integer, private :: elemOff
real(kind=rk), private :: pdfTmp
real(kind=rk), private :: inv_vel
real(kind=rk), private :: transVel(nsolve*3)
real(kind=rk), private :: vel_fluid(3)
integer, private :: vel_varPos
real(kind=rk), private :: moleDens
real(kind=rk), private :: ucx(layout%fStencil%QQ)
real(kind=rk), private :: eqState
real(kind=rk), private :: omega
type(mus_varSys_data_type), private, pointer:: fPtr
type(mus_scheme_type), private, pointer:: scheme