atl_derive_module Module


Uses

Used by

  • module~~atl_derive_module~~UsedByGraph module~atl_derive_module atl_derive_module module~atl_operator_module atl_operator_module module~atl_operator_module->module~atl_derive_module module~atl_eqn_euler_derive_module atl_eqn_euler_derive_module module~atl_eqn_euler_derive_module->module~atl_derive_module module~atl_eqn_euler_1d_derive_module atl_eqn_euler_1d_derive_module module~atl_eqn_euler_1d_derive_module->module~atl_derive_module module~atl_eqn_euler_2d_derive_module atl_eqn_euler_2d_derive_module module~atl_eqn_euler_2d_derive_module->module~atl_derive_module module~atl_eqn_filnvrstk_derive_module atl_eqn_filNvrStk_derive_module module~atl_eqn_filnvrstk_derive_module->module~atl_derive_module module~atl_eqn_filnvrstk_var_module atl_eqn_filNvrStk_var_module module~atl_eqn_filnvrstk_var_module->module~atl_operator_module module~atl_eqn_filnvrstk_var_module->module~atl_eqn_filnvrstk_derive_module module~atl_eqn_euler_hlp_module atl_eqn_euler_hlp_module module~atl_eqn_euler_hlp_module->module~atl_eqn_euler_derive_module module~atl_eqn_euler_hlp_module->module~atl_eqn_euler_1d_derive_module module~atl_eqn_euler_hlp_module->module~atl_eqn_euler_2d_derive_module module~atl_eqn_euler_2d_var_module atl_eqn_euler_2d_var_module module~atl_eqn_euler_hlp_module->module~atl_eqn_euler_2d_var_module module~atl_eqn_euler_var_module atl_eqn_euler_var_module module~atl_eqn_euler_hlp_module->module~atl_eqn_euler_var_module module~atl_eqn_euler_1d_var_module atl_eqn_euler_1d_var_module module~atl_eqn_euler_hlp_module->module~atl_eqn_euler_1d_var_module module~atl_source_module atl_source_module module~atl_source_module->module~atl_operator_module module~atl_initialize_module atl_initialize_module module~atl_initialize_module->module~atl_operator_module module~atl_initialize_module->module~atl_source_module module~atl_eqn_nvrstk_hlp_module atl_eqn_nvrstk_hlp_module module~atl_eqn_nvrstk_hlp_module->module~atl_eqn_euler_derive_module module~atl_eqn_nvrstk_hlp_module->module~atl_eqn_euler_2d_derive_module module~atl_eqn_nvrstk_hlp_module->module~atl_eqn_euler_hlp_module module~atl_eqn_nvrstk_var_module atl_eqn_nvrstk_var_module module~atl_eqn_nvrstk_hlp_module->module~atl_eqn_nvrstk_var_module module~atl_eqn_nvrstk_hlp_module->module~atl_eqn_euler_2d_var_module module~atl_eqn_nvrstk_hlp_module->module~atl_eqn_euler_var_module module~atl_eqn_nvrstk_var_module->module~atl_operator_module proc~atl_modg_kernel_utests atl_modg_kernel_utests proc~atl_modg_kernel_utests->module~atl_eqn_euler_derive_module proc~atl_modg_kernel_utests->module~atl_eqn_euler_var_module module~atl_eqn_euler_2d_var_module->module~atl_operator_module module~atl_eqn_euler_2d_var_module->module~atl_eqn_euler_derive_module module~atl_eqn_euler_2d_var_module->module~atl_eqn_euler_2d_derive_module module~atl_eqn_filnvrstk_hlp_module atl_eqn_filnvrStk_hlp_module module~atl_eqn_filnvrstk_hlp_module->module~atl_eqn_euler_derive_module module~atl_eqn_filnvrstk_hlp_module->module~atl_eqn_euler_2d_derive_module module~atl_eqn_filnvrstk_hlp_module->module~atl_eqn_filnvrstk_derive_module module~atl_eqn_filnvrstk_hlp_module->module~atl_eqn_filnvrstk_var_module module~atl_eqn_filnvrstk_hlp_module->module~atl_eqn_euler_var_module module~atl_eqn_euler_var_module->module~atl_operator_module module~atl_eqn_euler_var_module->module~atl_eqn_euler_derive_module module~atl_eqn_euler_1d_var_module->module~atl_operator_module module~atl_eqn_euler_1d_var_module->module~atl_eqn_euler_derive_module module~atl_eqn_euler_1d_var_module->module~atl_eqn_euler_1d_derive_module module~atl_global_time_integration_module atl_global_time_integration_module module~atl_global_time_integration_module->module~atl_eqn_euler_derive_module module~atl_global_time_integration_module->module~atl_eqn_euler_1d_derive_module module~atl_global_time_integration_module->module~atl_eqn_euler_2d_derive_module module~atl_compute_module atl_compute_module module~atl_compute_module->module~atl_source_module module~atl_program_module atl_program_module module~atl_program_module->module~atl_source_module module~atl_program_module->module~atl_initialize_module module~atl_program_module->module~atl_global_time_integration_module proc~implicit_update implicit_update proc~implicit_update->module~atl_eqn_euler_hlp_module proc~compute_rhs_cubes compute_rhs_cubes proc~compute_rhs_cubes->module~atl_source_module module~atl_equation_init_module atl_equation_init_module module~atl_equation_init_module->module~atl_eqn_euler_hlp_module module~atl_equation_init_module->module~atl_eqn_nvrstk_hlp_module module~atl_equation_init_module->module~atl_eqn_filnvrstk_hlp_module module~atl_container_module atl_container_module module~atl_container_module->module~atl_global_time_integration_module module~atl_physfluxfilnvrstk_module atl_physFluxFilNvrStk_module module~atl_physfluxfilnvrstk_module->module~atl_eqn_filnvrstk_var_module program~atl_harvesting atl_harvesting program~atl_harvesting->module~atl_initialize_module

Contents


Abstract Interfaces

abstract interface

  • public subroutine atl_derive_fromModalData(fun, varSys, tree, iElem, elempos, nodalInput, nodalRes)

    This interface describes the arguments to be used for routines that do the derivation of variables from the variable system. These derive routines are passed to atl_derive_getElement via a procedure pointer.

    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.

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

    global treelm mesh info

    integer, intent(in) :: iElem

    The Current element index

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

    TreeID of the element to get the variable for.

    type(atl_derive_inputVar_type) :: nodalInput(:)

    The input data. nodalInput contains one entry for each input variable. This entry itself contains the nodal data for the dofs and components of the input variable. These nodal data has to be gained by oversampling and projecting the modal state into nodal space.

    real(kind=rk), allocatable:: nodalRes(:,:)

    The result in nodal space


Derived Types

type, public :: atl_derive_inputVar_type

This type stores the state data for a given variable and a given element. This type is used to allocate arrays for arbitrary variable counts, as jagged arrays are not allowed in Fortran.

Components

TypeVisibilityAttributesNameInitial
real(kind=rk), private, allocatable:: data(:,:)

Subroutines

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.

Read more…

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