tem_meshInfo_module Module

This module provides the functionality to derive mesh dependent information for tracking output.


Uses

  • module~~tem_meshinfo_module~~UsesGraph module~tem_meshinfo_module tem_meshInfo_module iso_c_binding iso_c_binding module~tem_meshinfo_module->iso_c_binding module~tem_varsys_module tem_varSys_module module~tem_meshinfo_module->module~tem_varsys_module module~aotus_module aotus_module module~tem_meshinfo_module->module~aotus_module module~tem_time_module tem_time_module module~tem_meshinfo_module->module~tem_time_module module~tem_geometry_module tem_geometry_module module~tem_meshinfo_module->module~tem_geometry_module module~env_module env_module module~tem_meshinfo_module->module~env_module module~tem_aux_module tem_aux_module module~tem_meshinfo_module->module~tem_aux_module module~tem_property_module tem_property_module module~tem_meshinfo_module->module~tem_property_module module~treelmesh_module treelmesh_module module~tem_meshinfo_module->module~treelmesh_module module~tem_logging_module tem_logging_module module~tem_meshinfo_module->module~tem_logging_module module~tem_topology_module tem_topology_module module~tem_meshinfo_module->module~tem_topology_module module~tem_varsys_module->iso_c_binding module~tem_varsys_module->module~aotus_module module~tem_varsys_module->module~tem_time_module module~tem_varsys_module->module~env_module module~tem_varsys_module->module~tem_aux_module module~tem_varsys_module->module~treelmesh_module module~tem_varsys_module->module~tem_logging_module module~aot_out_module aot_out_module module~tem_varsys_module->module~aot_out_module module~aot_table_module aot_table_module module~tem_varsys_module->module~aot_table_module module~tem_dyn_array_module tem_dyn_array_module module~tem_varsys_module->module~tem_dyn_array_module module~tem_time_module->module~aotus_module module~tem_time_module->module~env_module module~tem_time_module->module~aot_out_module module~tem_time_module->module~aot_table_module mpi mpi module~tem_time_module->mpi module~tem_geometry_module->module~env_module module~tem_geometry_module->module~tem_property_module module~tem_geometry_module->module~treelmesh_module module~tem_geometry_module->module~tem_logging_module module~tem_geometry_module->module~tem_topology_module module~tem_tools_module tem_tools_module module~tem_geometry_module->module~tem_tools_module module~tem_float_module tem_float_module module~tem_geometry_module->module~tem_float_module module~tem_geometry_module->mpi module~tem_debug_module tem_debug_module module~tem_geometry_module->module~tem_debug_module module~tem_subtree_type_module tem_subTree_type_module module~tem_geometry_module->module~tem_subtree_type_module module~tem_param_module tem_param_module module~tem_geometry_module->module~tem_param_module module~env_module->module~aotus_module iso_fortran_env iso_fortran_env module~env_module->iso_fortran_env module~flu_binding flu_binding module~env_module->module~flu_binding module~env_module->mpi module~tem_aux_module->module~aotus_module module~tem_aux_module->module~env_module module~tem_aux_module->module~tem_logging_module module~tem_revision_module tem_revision_module module~tem_aux_module->module~tem_revision_module module~tem_aux_module->module~tem_tools_module module~tem_aux_module->module~flu_binding module~tem_aux_module->module~aot_table_module module~tem_lua_requires_module tem_lua_requires_module module~tem_aux_module->module~tem_lua_requires_module module~tem_aux_module->mpi module~tem_comm_env_module tem_comm_env_module module~tem_aux_module->module~tem_comm_env_module module~tem_property_module->module~env_module module~tem_prophead_module tem_prophead_module module~tem_property_module->module~tem_prophead_module module~tem_property_module->mpi module~treelmesh_module->module~aotus_module module~treelmesh_module->module~env_module module~treelmesh_module->module~tem_aux_module module~treelmesh_module->module~tem_property_module module~treelmesh_module->module~tem_logging_module module~treelmesh_module->module~tem_topology_module module~tem_global_module tem_global_module module~treelmesh_module->module~tem_global_module module~treelmesh_module->module~tem_tools_module module~treelmesh_module->module~aot_table_module module~treelmesh_module->mpi module~tem_sparta_module tem_Sparta_module module~treelmesh_module->module~tem_sparta_module module~tem_logging_module->module~aotus_module module~tem_logging_module->module~env_module module~tem_logging_module->module~aot_table_module module~tem_topology_module->module~env_module module~tem_prophead_module->module~aotus_module module~tem_prophead_module->module~env_module module~tem_prophead_module->module~aot_out_module module~tem_prophead_module->module~aot_table_module module~tem_prophead_module->mpi module~tem_global_module->module~aotus_module module~tem_global_module->module~env_module module~tem_global_module->module~tem_aux_module module~tem_global_module->module~tem_logging_module module~tem_global_module->module~tem_prophead_module module~tem_global_module->module~aot_out_module module~tem_global_module->module~aot_table_module module~tem_global_module->mpi module~tem_tools_module->module~env_module module~tem_lua_requires_module->iso_c_binding module~tem_lua_requires_module->module~aotus_module module~tem_lua_requires_module->module~env_module module~tem_lua_requires_module->module~flu_binding module~tem_lua_requires_module->module~aot_table_module module~tem_dyn_array_module->module~env_module module~tem_float_module->module~env_module module~tem_sparta_module->module~env_module module~tem_sparta_module->module~tem_aux_module module~tem_sparta_module->module~tem_logging_module module~tem_sparta_module->module~tem_float_module module~tem_sparta_module->mpi module~tem_debug_module->module~env_module module~tem_debug_module->module~tem_logging_module module~tem_debug_module->module~tem_tools_module module~tem_debug_module->module~flu_binding module~tem_debug_module->module~aot_table_module module~tem_subtree_type_module->module~env_module module~tem_subtree_type_module->module~tem_aux_module module~tem_subtree_type_module->module~tem_property_module module~tem_subtree_type_module->module~treelmesh_module module~tem_subtree_type_module->module~tem_logging_module module~tem_subtree_type_module->module~tem_global_module module~tem_subtree_type_module->mpi module~tem_param_module->module~env_module module~tem_comm_env_module->mpi

Contents


Subroutines

public subroutine tem_varSys_append_meshInfoVar(varSys)

This subroutine appends the list of meshInfo variables (e.g. element volume, element volume fraction, treeID, ... )

Arguments

TypeIntentOptionalAttributesName
type(tem_varSys_type), intent(inout) :: varSys

global variable system to which meshInfoVar to be appended

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

Get the treeID of an element

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

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

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

Get the computational weight of elements

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

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

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

Get the MPI rank to which the corresponding treeID belongs. This routine is used to visualize the rank affinity of the mesh elements

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

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

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

Get the level of an element

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

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

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

Get the volume of an element

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

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

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

compute the volume of the current element as a fraction of a reference bounding hexahedral volume (stored in tree%global%effLength). The sum of all element fractions then gives the fractional fluid volume occupation inside the reference volume, i.e. the porosity

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

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

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

Evaluate if the element is fluidifiable or not

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

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