atl_operator_module Module

This module provides the routine for applying operators. Currently it is only implemented for 3D and needs to be extended to 2d


Uses

Used by

  • module~~atl_operator_module~~UsedByGraph module~atl_operator_module atl_operator_module module~atl_eqn_filnvrstk_var_module atl_eqn_filNvrStk_var_module module~atl_eqn_filnvrstk_var_module->module~atl_operator_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_var_module atl_eqn_nvrstk_var_module module~atl_eqn_nvrstk_var_module->module~atl_operator_module module~atl_eqn_euler_2d_var_module atl_eqn_euler_2d_var_module module~atl_eqn_euler_2d_var_module->module~atl_operator_module module~atl_eqn_euler_var_module atl_eqn_euler_var_module module~atl_eqn_euler_var_module->module~atl_operator_module module~atl_eqn_euler_1d_var_module atl_eqn_euler_1d_var_module module~atl_eqn_euler_1d_var_module->module~atl_operator_module module~atl_eqn_euler_hlp_module atl_eqn_euler_hlp_module module~atl_eqn_euler_hlp_module->module~atl_eqn_euler_2d_var_module module~atl_eqn_euler_hlp_module->module~atl_eqn_euler_var_module module~atl_eqn_euler_hlp_module->module~atl_eqn_euler_1d_var_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_eqn_nvrstk_hlp_module atl_eqn_nvrstk_hlp_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_hlp_module->module~atl_eqn_euler_hlp_module proc~compute_rhs_cubes compute_rhs_cubes proc~compute_rhs_cubes->module~atl_source_module proc~atl_modg_kernel_utests atl_modg_kernel_utests proc~atl_modg_kernel_utests->module~atl_eqn_euler_var_module module~atl_eqn_filnvrstk_hlp_module atl_eqn_filnvrStk_hlp_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_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 program~atl_harvesting->module~atl_program_module program~ateles ateles program~ateles->module~atl_program_module module~atl_modg_filnvrstk_kernel_module atl_modg_filNvrStk_kernel_module module~atl_modg_filnvrstk_kernel_module->module~atl_physfluxfilnvrstk_module module~atl_modg_2d_filnvrstk_kernel_module atl_modg_2d_filNvrStk_kernel_module module~atl_modg_2d_filnvrstk_kernel_module->module~atl_physfluxfilnvrstk_module proc~imexrk_substep imexrk_substep proc~imexrk_substep->module~atl_compute_module module~atl_modg_2d_kernel_module atl_modg_2d_kernel_module module~atl_modg_2d_kernel_module->module~atl_physfluxfilnvrstk_module module~atl_ssprk2_module atl_ssprk2_module module~atl_ssprk2_module->module~atl_compute_module proc~implicit_update implicit_update proc~implicit_update->module~atl_eqn_euler_hlp_module module~atl_rktaylor_module atl_rktaylor_module module~atl_rktaylor_module->module~atl_compute_module module~atl_numflux_filnvrstk_module atl_numFlux_filNvrStk_module module~atl_numflux_filnvrstk_module->module~atl_physfluxfilnvrstk_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 proc~global_corrector_substep global_corrector_substep proc~global_corrector_substep->module~atl_compute_module module~atl_fwdeuler_module atl_fwdEuler_module module~atl_fwdeuler_module->module~atl_compute_module module~atl_laxfriedrichflux_module atl_laxFriedrichFlux_module module~atl_laxfriedrichflux_module->module~atl_physfluxfilnvrstk_module module~atl_rk4_module atl_rk4_module module~atl_rk4_module->module~atl_compute_module

Contents


Subroutines

public subroutine atl_set_opVar_getElement(solData_evalElem, fun)

Arguments

TypeIntentOptionalAttributesName
class(tem_varSys_solverData_evalElem_type), intent(in) :: solData_evalElem

Description on how to set the element retrieval function for stfuns.

type(tem_varSys_op_type), intent(inout) :: 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.

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

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.

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

public subroutine atl_op_Gradient_forPoint(fun, varSys, point, time, tree, nPnts, res)

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.

real(kind=rk), intent(in) :: point(:,:)

Three-dimensional coordinates at which the variable should be evaluated. Only useful for variables provided as space-time functions.

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) :: nPnts

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

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

Resulting values for the requested variable.

Dimension: n requested entries x nComponents of this variable Access: (iElem-1)*fun%nComponents + iComp

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

This routine takes in a variable and differentiates it in a modal way

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.

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

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

This routine takes in a variable and differentiates it in a modal 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.

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

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

This routine takes in a variable and differentiates it in a modal 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.

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

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

This routine takes in a variable and differentiates it in a modal way

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.

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

Resulting values for the requested variable.

public subroutine atl_op_gradient_fromIndex(fun, varSys, time, iLevel, idx, idxLen, nVals, res)

to do

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(tem_time_type), intent(in) :: time

Point in time at which to evaluate the variable.

integer, intent(in) :: iLevel

Level on which values are requested

integer, intent(in) :: idx(:)

Index of points in the growing array and variable val array to return. Size: most times nVals, if contiguous arrays are used it depends on the number of first indices

integer, intent(in), optional :: idxLen(:)

With idx as start index in contiguous memory, idxLength defines length of each contiguous memory Size: dependes on number of first index for contiguous array, but the sum of all idxLen is equal to nVals

integer, intent(in) :: nVals

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

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

Resulting values for the requested variable.

Dimension: n requested entries x nComponents of this variable Access: (iElem-1)*fun%nComponents + iComp

public subroutine atl_opVar_setupIndices(fun, varSys, point, offset_bit, iLevel, tree, nPnts, idx)

This routine takes points coordinates, pass them tp the input variables the opertaion depends and return indices

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.

real(kind=rk), intent(in) :: point(:,:)

List of space coordinate points to store as growing array in method_data

character, intent(in), optional :: offset_bit(:)

Offset bit encoded as character for every point.

Offset integer coord(3) is converted into a character with offset_bit = achar( (coord(1)+1) + (coord(2)+1)4 + (coord(3)+1)16 ) Backward transformation form character to 3 integer: coord(1) = mod(ichar(offset_bit),4) - 1 coord(2) = mod(ichar(offset_bit),16)/4 - 1 coord(3) = ichar(offset_bit)/16 - 1

If not present default is to center i.e offset_bit = achar(1+4+16)

integer, intent(in) :: iLevel

Level to which input points belong to

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

global treelm mesh info

integer, intent(in) :: nPnts

Number of points to add in method_data of this variable

integer, intent(out) :: idx(:)

Index of points in the growing array and variable val array. Size: nPoints

This must be stored in boundary or source depends on who calls this routine. This index is required to return a value using getValOfIndex.

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

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.

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

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

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.

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

private subroutine atl_division(fun, varSys, tree, iElem, elempos, nodalInput, nodalRes)

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

Mesh info

integer, intent(in) :: iElem

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

private subroutine atl_op_division_forElement(fun, varSys, elempos, time, tree, nElems, nDofs, res)

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.

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

private subroutine atl_divideVecByScal(fun, varSys, tree, iElem, elempos, nodalInput, nodalRes)

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

Mesh info

integer, intent(in) :: iElem

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

private recursive subroutine get_statePtr(varPos, varSys, found, fPtr)

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: varPos
type(tem_varSys_type), intent(in) :: varSys

The variable system to obtain the variable from.

logical, intent(out) :: found
type(atl_varSys_data_type), intent(out), pointer:: fPtr

private subroutine atl_op_deviation_forElement(fun, varSys, elempos, time, tree, nElems, nDofs, res)

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.

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