atl_generic_fromModal_getElement Subroutine

public recursive subroutine atl_generic_fromModal_getElement(fun, varSys, elempos, time, tree, nElems, nDofs, fnCalcPtr, solverData, res)

This routine prepares the data for variable derivation or operators. It gathers all input variables from the variable system, oversamples and projects them into nodal space, calls the function with the actual calculation and projects the results back into modal space. As these projections are common to all elementwise variable accesses, this generic routine does all necessary operations in a generic way.

Call the procedure that does the calculation

Arguments

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

TreeID of the element to get the variable for.

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. Careful: This argument determines how many dofs is returned in the output of this routine

procedure(atl_derive_fromModalData), pointer :: fnCalcPtr

Function pointer to perform specific operation. Sets in routine which calls this routine

type(atl_varSys_solverData_type), intent(inout) :: solverData

Solver data container

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