derive_injectionPS Subroutine

public recursive subroutine derive_injectionPS(fun, varSys, elempos, time, tree, nElems, nDofs, res)

Derive injection variable defined as a source term for lbm passive scalar. It evaluates spacetime function defined in lua file for injection variable and convert it to state value which is to be added to the state


class(tem_varSys_op_type), intent(in) :: fun

Description of the method to obtain the variables, here some preset values might be stored, like the space time function to use or the required variables.

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

The variable system to obtain the variable from.

integer, intent(in) :: elempos(:)

Position of the TreeID of the element to get the variable for in the global treeID list.

type(tem_time_type), intent(in) :: time

Point in time at which to evaluate the variable.

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

global treelm mesh info

integer, intent(in) :: nElems

Number of values to obtain for this variable (vectorized access).

integer, intent(in) :: nDofs

Number of degrees of freedom within an element.

real(kind=rk), intent(out) :: res(:)

Resulting values for the requested variable.

Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp



type(mus_varSys_data_type), private, pointer:: fPtr
type(mus_scheme_type), private, pointer:: scheme
real(kind=rk), private :: luaRes(nElems)
real(kind=rk), private :: velocity(nElems*3)
real(kind=rk), private :: local_vel(3)
real(kind=rk), private, allocatable:: linkwise_luaRes(:)
integer, private :: trans_velPos
integer, private :: data_varPos
integer, private :: iElem
integer, private :: iDir
integer, private :: nCompPDF
integer, private :: nInputStates