tem_global_module Module

This module provides the global part of the TREe based ELemental Mesh, which is needed on each partition.


Uses

  • module~~tem_global_module~~UsesGraph module~tem_global_module tem_global_module module~tem_prophead_module tem_prophead_module module~tem_global_module->module~tem_prophead_module module~aotus_module aotus_module module~tem_global_module->module~aotus_module module~aot_out_module aot_out_module module~tem_global_module->module~aot_out_module module~aot_table_module aot_table_module module~tem_global_module->module~aot_table_module module~env_module env_module module~tem_global_module->module~env_module module~tem_aux_module tem_aux_module module~tem_global_module->module~tem_aux_module mpi mpi module~tem_global_module->mpi module~tem_logging_module tem_logging_module module~tem_global_module->module~tem_logging_module module~tem_prophead_module->module~aotus_module module~tem_prophead_module->module~aot_out_module module~tem_prophead_module->module~aot_table_module module~tem_prophead_module->module~env_module module~tem_prophead_module->mpi module~env_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~tem_aux_module->module~aotus_module module~tem_aux_module->module~aot_table_module module~tem_aux_module->module~env_module module~tem_aux_module->mpi 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_tools_module tem_tools_module module~tem_aux_module->module~tem_tools_module module~tem_lua_requires_module tem_lua_requires_module module~tem_aux_module->module~tem_lua_requires_module module~tem_aux_module->module~flu_binding module~tem_comm_env_module tem_comm_env_module module~tem_aux_module->module~tem_comm_env_module module~tem_logging_module->module~aotus_module module~tem_logging_module->module~aot_table_module module~tem_logging_module->module~env_module module~tem_tools_module->module~env_module module~tem_lua_requires_module->module~aotus_module module~tem_lua_requires_module->module~aot_table_module module~tem_lua_requires_module->module~env_module module~tem_lua_requires_module->module~flu_binding iso_c_binding iso_c_binding module~tem_lua_requires_module->iso_c_binding module~tem_comm_env_module->mpi

Used by

  • module~~tem_global_module~~UsedByGraph module~tem_global_module tem_global_module module~tem_restart_module tem_restart_module module~tem_restart_module->module~tem_global_module module~treelmesh_module treelmesh_module module~treelmesh_module->module~tem_global_module module~tem_subtree_type_module tem_subTree_type_module module~tem_subtree_type_module->module~tem_global_module

Contents


Derived Types

type, public :: tem_global_type

A datatype describing the global mesh information, present in all partitions (on all processes).

Read more…

Components

TypeVisibilityAttributesNameInitial
real(kind=rk), private :: BoundingCubeLength

Length of the outermost bounding cube

real(kind=rk), private :: Origin(3)

Origin of the cube, extent of length in each direction from this point.

real(kind=rk), private :: effOrigin(3) =0._rk

Origin of the cube which is effectively covered by tree elements

real(kind=rk), private :: effLength(3) =0._rk

Length of the hexahedral domain which is effectively covered by tree elements

character(len=labelLen), private :: predefined =''

name of the predefined mesh generated on the fly

integer(kind=long_k), private :: nElems

total number of elements

integer, private :: nParts

Number of parts, the mesh is partitioned into !< process%comm_size

integer, private :: myPart

The part to be processed locally (0:nParts-1) !< process%rank

integer, private :: comm

MPI communicator of the processes, the mesh is distributed on

integer, private :: minLevel

Minimal element level present in the mesh

integer, private :: maxLevel

Maximal element level present in the mesh

character(len=LabelLen), private :: label

Name of the mesh

character(len=LabelLen), private :: comment

Space for comments

integer, private :: nProperties

Total number of properties present in the mesh properties: fluid, solid, has boundaries, has elements, is deformed

real(kind=rk), private :: effboundingCube(3,2)

The information of real bounding cube which is read from the mesh header

type(tem_prophead_type), private, pointer:: Property(:)=> null()

declarations for each property (The bit position of the flag for the property, the total number of elements with it, and label for its declaration). For a detailed description see \ref tem_property_module

character(len=pathlen), private :: dirname

Name of the directory, where the data for the mesh is read from. Has to have a trailing directory separator.

logical, private :: meshChange =.false.

did the mesh changed since last time dumping it??


Subroutines

public subroutine tem_mesh_out(me, conf)

write mesh information into lua file.

Read more…

Arguments

TypeIntentOptionalAttributesName
type(tem_global_type), intent(in) :: me

Structure to store header in

type(aot_out_type), intent(inout) :: conf

aotus lua state to write output

public subroutine tem_global_mesh_read(me, conf, myPart, nParts, comm)

Read more…

Arguments

TypeIntentOptionalAttributesName
type(tem_global_type), intent(out) :: me

Structure to store header in

type(flu_State) :: conf

lua flu state to read mesh from

integer, intent(in) :: myPart

The process local part (= MPI Rank in comm)

integer, intent(in) :: nParts

Number of partitions, the mesh is partitioned into (= Number of MPI processes in comm).

integer, intent(in) :: comm

MPI Communicator to use

public subroutine load_tem_global(me, dirname, myPart, nParts, comm)

A routine to load global informations from the header file in the given directory.

Read more…

Arguments

TypeIntentOptionalAttributesName
type(tem_global_type), intent(out) :: me

Structure to store header in

character(len=*), intent(in) :: dirname

Directory containing the mesh informations

integer, intent(in) :: myPart

The process local part (= MPI Rank in comm)

integer, intent(in) :: nParts

Number of partitions, the mesh is partitioned into (= Number of MPI processes in comm).

integer, intent(in) :: comm

MPI Communicator to use

public subroutine tem_global_mesh_free(me)

Routine to free allocated memory for the header again.

Arguments

TypeIntentOptionalAttributesName
type(tem_global_type), intent(inout) :: me

public subroutine dump_tem_global(me, root_only)

A routine to dump global informations into the mesh header in lua format

Read more…

Arguments

TypeIntentOptionalAttributesName
type(tem_global_type), intent(in) :: me

global type to be dumped

logical, intent(in), optional :: root_only

root dump global mesh when true and all process dump its own mesh when false

private subroutine tem_global_mesh_internal(me, conf, thandle, myPart, nParts, comm)

Read more…

Arguments

TypeIntentOptionalAttributesName
type(tem_global_type), intent(out) :: me

Structure to load the mesh to

type(flu_State) :: conf

Directory containing the mesh informations

integer, intent(in) :: thandle

Handle for the table to read the description of the mesh from.

integer, intent(in) :: myPart

Partition to use on the calling process (= MPI Rank in comm)

integer, intent(in) :: nParts

Number of partitions, the mesh is partitioned into (= Number of MPI processes in comm).

integer, intent(in) :: comm

MPI Communicator to use

private subroutine gen_treelm_cube_global(me, conf, thandle, myPart, nParts, comm)

Generate the header for the simple full cube mesh.

Arguments

TypeIntentOptionalAttributesName
type(tem_global_type), intent(out) :: me

Structure to load the mesh to

type(flu_State) :: conf

Directory containing the mesh informations

integer, intent(in) :: thandle

Handle for the table to read the description of the mesh from.

integer, intent(in) :: myPart

Partition to use on the calling process (= MPI Rank in comm)

integer, intent(in) :: nParts

Number of partitions, the mesh is partitioned into (= Number of MPI processes in comm).

integer, intent(in) :: comm

MPI Communicator to use

private subroutine gen_treelm_slice_global(me, conf, thandle, myPart, nParts, comm)

Generate the simple single level mesh of a slice in the full cube.

Arguments

TypeIntentOptionalAttributesName
type(tem_global_type), intent(out) :: me

Structure to load the mesh to

type(flu_State) :: conf

Directory containing the mesh informations

integer, intent(in) :: thandle

Handle for the table to read the description of the mesh from.

integer, intent(in) :: myPart

Partition to use on the calling process (= MPI Rank in comm)

integer, intent(in) :: nParts

Number of partitions, the mesh is partitioned into (= Number of MPI processes in comm).

integer, intent(in) :: comm

MPI Communicator to use

private subroutine gen_treelm_line_global(me, conf, thandle, myPart, nParts, comm, predefined)

Generate the simple single level mesh of a line in the full cube.

Arguments

TypeIntentOptionalAttributesName
type(tem_global_type), intent(out) :: me

Structure to load the mesh to

type(flu_State) :: conf

Directory containing the mesh informations

integer, intent(in) :: thandle

Handle for the table to read the description of the mesh from.

integer, intent(in) :: myPart

Partition to use on the calling process (= MPI Rank in comm)

integer, intent(in) :: nParts

Number of partitions, the mesh is partitioned into (= Number of MPI processes in comm).

integer, intent(in) :: comm

MPI Communicator to use

character(len=*), intent(in) :: predefined

private subroutine gen_treelm_single_global(me, conf, thandle, myPart, nParts, comm)

Generate the single element mesh.

Arguments

TypeIntentOptionalAttributesName
type(tem_global_type), intent(out) :: me

Structure to load the mesh to

type(flu_State) :: conf

Directory containing the mesh informations

integer, intent(in) :: thandle

Handle for the table to read the description of the mesh from.

integer, intent(in) :: myPart

Partition to use on the calling process (= MPI Rank in comm)

integer, intent(in) :: nParts

Number of partitions, the mesh is partitioned into (= Number of MPI processes in comm).

integer, intent(in) :: comm

MPI Communicator to use