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

TypeIntentOptionalAttributesName
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


Calls

proc~~atl_generic_frommodal_getelement~~CallsGraph proc~atl_generic_frommodal_getelement atl_generic_fromModal_getElement interface~ply_poly_project_n2m ply_poly_project_n2m proc~atl_generic_frommodal_getelement->interface~ply_poly_project_n2m interface~ply_poly_project_m2n ply_poly_project_m2n proc~atl_generic_frommodal_getelement->interface~ply_poly_project_m2n proc~ply_convert2oversample ply_convert2oversample proc~atl_generic_frommodal_getelement->proc~ply_convert2oversample proc~tem_levelof tem_LevelOf proc~atl_generic_frommodal_getelement->proc~tem_levelof proc~ply_dof_2degree ply_dof_2degree proc~atl_generic_frommodal_getelement->proc~ply_dof_2degree proc~ply_convertfromoversample ply_convertFromOversample proc~atl_generic_frommodal_getelement->proc~ply_convertfromoversample proc~ply_poly_project_n2m_multivar ply_poly_project_n2m_multiVar interface~ply_poly_project_n2m->proc~ply_poly_project_n2m_multivar proc~ply_poly_project_m2n_multivar ply_poly_project_m2n_multiVar interface~ply_poly_project_m2n->proc~ply_poly_project_m2n_multivar proc~ply_convert2oversample_2d ply_convert2oversample_2d proc~ply_convert2oversample->proc~ply_convert2oversample_2d proc~ply_convert2oversample_3d ply_convert2oversample_3d proc~ply_convert2oversample->proc~ply_convert2oversample_3d proc~ply_convert2oversample_1d ply_convert2oversample_1d proc~ply_convert2oversample->proc~ply_convert2oversample_1d proc~ply_degree_2dof ply_degree_2dof proc~ply_dof_2degree->proc~ply_degree_2dof proc~ply_convertfromoversample_3d ply_convertFromOversample_3d proc~ply_convertfromoversample->proc~ply_convertfromoversample_3d proc~ply_convertfromoversample_1d ply_convertFromOversample_1d proc~ply_convertfromoversample->proc~ply_convertfromoversample_1d proc~ply_convertfromoversample_2d ply_convertFromOversample_2d proc~ply_convertfromoversample->proc~ply_convertfromoversample_2d proc~ply_fxt_n2m_1d ply_fxt_n2m_1D proc~ply_poly_project_n2m_multivar->proc~ply_fxt_n2m_1d interface~ply_pnttoleg_2d ply_pntToLeg_2D proc~ply_poly_project_n2m_multivar->interface~ply_pnttoleg_2d proc~ply_l2p_trafo_2d ply_l2p_trafo_2D proc~ply_poly_project_n2m_multivar->proc~ply_l2p_trafo_2d proc~ply_fxt_n2m_3d ply_fxt_n2m_3D proc~ply_poly_project_n2m_multivar->proc~ply_fxt_n2m_3d proc~ply_fxt_n2m_2d ply_fxt_n2m_2D proc~ply_poly_project_n2m_multivar->proc~ply_fxt_n2m_2d proc~ply_l2p_trafo_1d ply_l2p_trafo_1D proc~ply_poly_project_n2m_multivar->proc~ply_l2p_trafo_1d proc~ply_l2p_trafo_3d ply_l2p_trafo_3D proc~ply_poly_project_n2m_multivar->proc~ply_l2p_trafo_3d interface~ply_pnttoleg_3d ply_pntToLeg_3D proc~ply_poly_project_n2m_multivar->interface~ply_pnttoleg_3d proc~ply_fxt_m2n_3d ply_fxt_m2n_3D proc~ply_poly_project_m2n_multivar->proc~ply_fxt_m2n_3d interface~ply_legtopnt_2d ply_legToPnt_2D proc~ply_poly_project_m2n_multivar->interface~ply_legtopnt_2d proc~ply_fxt_m2n_1d ply_fxt_m2n_1D proc~ply_poly_project_m2n_multivar->proc~ply_fxt_m2n_1d proc~ply_poly_project_m2n_multivar->proc~ply_l2p_trafo_2d proc~ply_fxt_m2n_2d ply_fxt_m2n_2D proc~ply_poly_project_m2n_multivar->proc~ply_fxt_m2n_2d proc~ply_poly_project_m2n_multivar->proc~ply_l2p_trafo_1d proc~ply_poly_project_m2n_multivar->proc~ply_l2p_trafo_3d interface~ply_legtopnt_3d ply_LegTopnt_3D proc~ply_poly_project_m2n_multivar->interface~ply_legtopnt_3d

Called by

proc~~atl_generic_frommodal_getelement~~CalledByGraph proc~atl_generic_frommodal_getelement atl_generic_fromModal_getElement proc~atl_pressure_getelement atl_pressure_getElement proc~atl_pressure_getelement->proc~atl_generic_frommodal_getelement proc~atl_speedofsound_getelement atl_speedOfSound_getElement proc~atl_speedofsound_getelement->proc~atl_generic_frommodal_getelement proc~atl_op_division_forelement atl_op_division_forElement proc~atl_op_division_forelement->proc~atl_generic_frommodal_getelement proc~atl_machnumber_getelement atl_machNumber_getElement proc~atl_machnumber_getelement->proc~atl_generic_frommodal_getelement proc~atl_pressure_1d_getelement atl_pressure_1d_getElement proc~atl_pressure_1d_getelement->proc~atl_generic_frommodal_getelement proc~atl_qcriterion_getelement atl_qCriterion_getElement proc~atl_qcriterion_getelement->proc~atl_generic_frommodal_getelement proc~atl_lambda2_getelement atl_lambda2_getElement proc~atl_lambda2_getelement->proc~atl_generic_frommodal_getelement proc~atl_pressure_2d_getelement atl_pressure_2d_getElement proc~atl_pressure_2d_getelement->proc~atl_generic_frommodal_getelement proc~atl_rans_pressure_getelement atl_Rans_pressure_getElement proc~atl_rans_pressure_getelement->proc~atl_generic_frommodal_getelement proc~atl_temperature_getelement atl_temperature_getElement proc~atl_temperature_getelement->proc~atl_generic_frommodal_getelement proc~atl_kineticenergy_getelement atl_kineticEnergy_getElement proc~atl_kineticenergy_getelement->proc~atl_generic_frommodal_getelement proc~atl_op_dividevecbyscal_forelement atl_op_divideVecByScal_forElement proc~atl_op_dividevecbyscal_forelement->proc~atl_generic_frommodal_getelement

Contents


Variables

TypeVisibilityAttributesNameInitial
type(atl_derive_inputVar_type), private, allocatable:: inputState(:,:)
type(atl_derive_inputVar_type), private, allocatable:: nodalInput(:)
real(kind=rk), private, allocatable:: input(:)
real(kind=rk), private, allocatable:: modalInput(:,:)
real(kind=rk), private, allocatable:: modalRes(:,:)
real(kind=rk), private, allocatable:: nodalRes(:,:)
real(kind=rk), private, allocatable:: res2d(:,:)
integer, private, allocatable:: nComps(:)
integer, private :: iElem
integer, private :: iDof
integer, private :: iComp
integer, private :: i
integer, private :: level
integer, private :: pos
integer, private :: numDofs
integer, private, allocatable:: levelDofs(:)
integer, private, allocatable:: overSamp_dofs(:)
type(ply_poly_project_type), private :: projection