tem_vrtx_module Module

A module to provide informations on vertex property for elements.


Uses

  • module~~tem_vrtx_module~~UsesGraph module~tem_vrtx_module tem_vrtx_module module~tem_topology_module tem_topology_module module~tem_vrtx_module->module~tem_topology_module module~tem_property_module tem_property_module module~tem_vrtx_module->module~tem_property_module module~tem_geometry_module tem_geometry_module module~tem_vrtx_module->module~tem_geometry_module module~tem_bc_prop_module tem_bc_prop_module module~tem_vrtx_module->module~tem_bc_prop_module module~treelmesh_module treelmesh_module module~tem_vrtx_module->module~treelmesh_module module~env_module env_module module~tem_vrtx_module->module~env_module module~tem_logging_module tem_logging_module module~tem_vrtx_module->module~tem_logging_module module~tem_subtree_type_module tem_subTree_type_module module~tem_vrtx_module->module~tem_subtree_type_module module~tem_tools_module tem_tools_module module~tem_vrtx_module->module~tem_tools_module module~tem_grow_array_module tem_grow_array_module module~tem_vrtx_module->module~tem_grow_array_module module~tem_param_module tem_param_module module~tem_vrtx_module->module~tem_param_module mpi mpi module~tem_vrtx_module->mpi module~tem_topology_module->module~env_module module~tem_property_module->module~env_module module~tem_property_module->mpi module~tem_prophead_module tem_prophead_module module~tem_property_module->module~tem_prophead_module module~tem_geometry_module->module~tem_topology_module module~tem_geometry_module->module~tem_property_module module~tem_geometry_module->module~treelmesh_module module~tem_geometry_module->module~env_module module~tem_geometry_module->module~tem_logging_module module~tem_geometry_module->module~tem_subtree_type_module module~tem_geometry_module->module~tem_tools_module module~tem_geometry_module->module~tem_param_module module~tem_geometry_module->mpi module~tem_float_module tem_float_module module~tem_geometry_module->module~tem_float_module module~tem_debug_module tem_debug_module module~tem_geometry_module->module~tem_debug_module module~tem_bc_prop_module->module~tem_topology_module module~tem_bc_prop_module->module~tem_property_module module~tem_bc_prop_module->module~treelmesh_module module~tem_bc_prop_module->module~env_module module~tem_bc_prop_module->module~tem_logging_module module~tem_bc_prop_module->module~tem_param_module module~tem_bc_prop_module->mpi module~tem_aux_module tem_aux_module module~tem_bc_prop_module->module~tem_aux_module module~aot_table_module aot_table_module module~tem_bc_prop_module->module~aot_table_module module~aotus_module aotus_module module~tem_bc_prop_module->module~aotus_module module~tem_bc_prop_module->module~tem_debug_module module~tem_bc_prop_module->module~tem_prophead_module module~aot_out_module aot_out_module module~tem_bc_prop_module->module~aot_out_module module~treelmesh_module->module~tem_topology_module module~treelmesh_module->module~tem_property_module module~treelmesh_module->module~env_module module~treelmesh_module->module~tem_logging_module module~treelmesh_module->module~tem_tools_module module~treelmesh_module->mpi module~tem_global_module tem_global_module module~treelmesh_module->module~tem_global_module module~tem_sparta_module tem_Sparta_module module~treelmesh_module->module~tem_sparta_module module~treelmesh_module->module~tem_aux_module module~treelmesh_module->module~aot_table_module module~treelmesh_module->module~aotus_module module~env_module->mpi module~flu_binding flu_binding module~env_module->module~flu_binding iso_fortran_env iso_fortran_env module~env_module->iso_fortran_env module~env_module->module~aotus_module module~tem_logging_module->module~env_module module~tem_logging_module->module~aot_table_module module~tem_logging_module->module~aotus_module module~tem_subtree_type_module->module~tem_property_module module~tem_subtree_type_module->module~treelmesh_module module~tem_subtree_type_module->module~env_module module~tem_subtree_type_module->module~tem_logging_module module~tem_subtree_type_module->mpi module~tem_subtree_type_module->module~tem_global_module module~tem_subtree_type_module->module~tem_aux_module module~tem_tools_module->module~env_module module~tem_grow_array_module->module~env_module module~tem_param_module->module~env_module module~tem_global_module->module~env_module module~tem_global_module->module~tem_logging_module module~tem_global_module->mpi module~tem_global_module->module~tem_aux_module module~tem_global_module->module~aot_table_module module~tem_global_module->module~aotus_module module~tem_global_module->module~tem_prophead_module module~tem_global_module->module~aot_out_module module~tem_sparta_module->module~env_module module~tem_sparta_module->module~tem_logging_module module~tem_sparta_module->mpi module~tem_sparta_module->module~tem_float_module module~tem_sparta_module->module~tem_aux_module module~tem_float_module->module~env_module module~tem_aux_module->module~env_module module~tem_aux_module->module~tem_logging_module module~tem_aux_module->module~tem_tools_module module~tem_aux_module->mpi module~tem_aux_module->module~flu_binding module~tem_aux_module->module~aot_table_module module~tem_aux_module->module~aotus_module module~tem_comm_env_module tem_comm_env_module module~tem_aux_module->module~tem_comm_env_module module~tem_lua_requires_module tem_lua_requires_module module~tem_aux_module->module~tem_lua_requires_module module~tem_revision_module tem_revision_module module~tem_aux_module->module~tem_revision_module 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_prophead_module->module~env_module module~tem_prophead_module->mpi module~tem_prophead_module->module~aot_table_module module~tem_prophead_module->module~aotus_module module~tem_prophead_module->module~aot_out_module module~tem_comm_env_module->mpi 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_lua_requires_module->module~aotus_module iso_c_binding iso_c_binding module~tem_lua_requires_module->iso_c_binding

Used by

  • module~~tem_vrtx_module~~UsedByGraph module~tem_vrtx_module tem_vrtx_module module~hvs_vtk_module hvs_vtk_module module~hvs_vtk_module->module~tem_vrtx_module module~hvs_output_module hvs_output_module module~hvs_output_module->module~tem_vrtx_module module~hvs_output_module->module~hvs_vtk_module module~hvs_vtk_module~2 hvs_vtk_module module~hvs_vtk_module~2->module~tem_vrtx_module module~tem_tracking_module tem_tracking_module module~tem_tracking_module->module~hvs_output_module program~tem_tracking_test tem_tracking_test program~tem_tracking_test->module~tem_tracking_module

Contents


Variables

TypeVisibilityAttributesNameInitial
integer, private, parameter, dimension( 5, 20 ):: vrtxMap =reshape((/0, 0, 0, 1, qBSW, 1, 0, 0, 1, qBSE, 0, 0, 1, 1, qTSW, 1, 0, 1, 1, qTSE, 0, 1, 0, 1, qBNW, 1, 1, 0, 1, qBNE, 0, 1, 1, 1, qTNW, 1, 1, 1, 1, qTNE, 1, 0, 0, 1, q_BS, 0, 0, 1, 1, q_SW, 2, 0, 1, 1, q_SE, 1, 0, 2, 1, q_TS, 0, 1, 0, 1, q_BW, 0, 1, 2, 1, q_TW, 2, 1, 0, 1, q_BE, 2, 1, 2, 1, q_TE, 1, 2, 0, 1, q_BN, 0, 2, 1, 1, q_NW, 2, 2, 1, 1, q_NE, 1, 2, 2, 1, q_TN/), (/5, 20/))

Derived Types

type, public :: tem_vrtx_type

Datatype for the vrtx dependend information. A dynamic array and a growing array are 'coupled'. The comparison between the real coordinates is shifted to the integer comparison of the dynamic array. The size of the two arrays are the same. Additionally a map of the 8 vertices for each element to the global index is stored.

Components

TypeVisibilityAttributesNameInitial
integer, private :: nVertices

total number of vertices

type(grw_real2darray_type), private :: coord

growing array to store the coordinates

integer, private, allocatable:: map2global(:,:)

map of vertices for each element to global index vrtx_index_map(nelems, 8 vertices)

integer, private :: maxVertices

simulation time that coordinate info belongs to max number of vertices

logical, private, allocatable:: refine(:)

array of elements with qValues


Functions

private function tem_calc_vrtxOf_qVal(treeID, tree, qVal, iVrtx) result(coord)

This subroutine calculates the vertex coordinate for a given element depending on the treeID, the global tree, the q-Value and iVrtx

Arguments

TypeIntentOptionalAttributesName
integer(kind=long_k), intent(in) :: treeID
type(treelmesh_type), intent(in) :: tree
real(kind=rk), intent(in) :: qVal
integer, intent(in) :: iVrtx

Return Value real(kind=rk)(3)

private pure function tem_posOfLong(long, array) result(pos)

This function detects the first position of an integer value of kind long_k in an array. When there is no match the return value is 0.

Arguments

TypeIntentOptionalAttributesName
integer(kind=long_k), intent(in) :: long
integer(kind=long_k), intent(in) :: array(:)

Return Value integer


Subroutines

public subroutine tem_calc_vrtx_coord(tree, vrtx, subTree, boundary, useQVal)

Run over all 8 vertices for each element in the treeID list, calculate its coordinates and add its position to the map.

Arguments

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

fluid mesh

type(tem_vrtx_type), intent(inout) :: vrtx

Vertex data

type(tem_subTree_type), intent(in), optional :: subTree

optional subTree information

type(tem_BC_prop_type), intent(in), optional :: boundary

boundary information incl. q-Values

logical, intent(in), optional :: useQVal

use the qValue information?

public subroutine tem_vrtx_finalize(vrtx)

Clean up allocated memory in vrtx structure

Arguments

TypeIntentOptionalAttributesName
type(tem_vrtx_type), intent(inout) :: vrtx

private subroutine tem_calc_vrtx_coord_noqval(tree, vrtx, subTree, vrtxTreeID)

Run over all 8 vertices for each element in the treeID list, calculate its coordinates and add its position to the map.

Arguments

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

fluid mesh

type(tem_vrtx_type), intent(inout) :: vrtx

Vertex data

type(tem_subTree_type), intent(in), optional :: subTree

optional subTree information

integer(kind=long_k), intent(out), allocatable:: vrtxTreeID(:)

boundary information incl. q-Values

private subroutine tem_unify_vrtx(inList, origList, coord, map, tree, nElems, nUnique, refine)

This subroutine takes the sorted list as an input and unifies its entries the result is used to create a unique array of vertex coordinates and a map for the 8 vertices of each element.

Arguments

TypeIntentOptionalAttributesName
integer(kind=long_k), intent(inout), allocatable:: inList(:)
integer(kind=long_k), intent(inout), allocatable:: origList(:)
type(grw_real2darray_type) :: coord
integer, intent(inout), allocatable:: map(:,:)
type(treelmesh_type), intent(in) :: tree
integer, intent(in) :: nElems
integer, intent(in) :: nUnique

number of unique vertices (from q-Values)

logical, intent(in) :: refine(:)

private recursive subroutine qsort_vrtx(list)

Quicksort for long integer kinds.

Arguments

TypeIntentOptionalAttributesName
integer(kind=long_k), intent(inout) :: list(:)

list to be sorted

private subroutine partition(list, marker)

This subroutine partitions the given list for the quicksort algorithm

Arguments

TypeIntentOptionalAttributesName
integer(kind=long_k), intent(inout) :: list(:)

list to be partitioned

integer, intent(out) :: marker

marker where the list is partitioned

private subroutine tem_invertRealRkArray(me, nElems)

Invert a given array 1 2 3 4 5 -> 5 4 3 2 1

Arguments

TypeIntentOptionalAttributesName
real(kind=rk), intent(inout) :: me(:,:)

array to invert

integer, intent(in) :: nElems

number of elements in the array

private subroutine tem_init_vrtx_prop(vrtx)

Initialize the vertex property headers.

Arguments

TypeIntentOptionalAttributesName
type(tem_vrtx_type) :: vrtx

vertex type