tem_property_module Module

Module to describe additional elmental properties, like boundary conditions.

Every element in the octree structure can be assigned several properties. The description of the properties is kept abstract, such that very different properties can be assigned to elements in a similar manner. As 64 bits are available to describe additional properties, we could attach 64 different kinds of data to each element and each one combinable with all other properties. The most important data that has to be attached to elements in nearly every mesh are the boundary conditions in tem_bc_module, others are for example vertex displacements in tem_vrtx_module and regional influences. As the boundary conditions are such a basic part of the general mesh description, we present their property implementation exemplary in more detail. Each property is indicated by a bit in the property bit-mask. Which bit is attached to what kind of property is defined in the header file. The property might then be linked to further information stored in additional files. See tem_bc_module for details of the boundary implementation.

The amount and kind of additional data that might be attached to the elements by the properties is arbitrary and could involve several more indirections. For example an additional non-elemental file is typically required to describe vertex displacements of elements. Thus, for elements, where the vertices should be moved, there is an elemental list of integers indicating which vertices to use for the eight corners of the element. The actual coordinates are stored in a separate file with the coordinates for each vertex.

Element properties: each element might have up to 64 properties attached to it the bitpos indicates just the position of the bit in the field indicating, which should flag the corresponding property A 0 indicates the absence of the property and a 1 the presence Thus, an element with all bits set to 0 has no additional properties Must be smaller than 64, because the respective bits will be set in a 64-bit integer.

deallocate the property and header lists accordingly.


Uses

  • module~~tem_property_module~~UsesGraph module~tem_property_module tem_property_module module~env_module env_module module~tem_property_module->module~env_module module~tem_prophead_module tem_prophead_module module~tem_property_module->module~tem_prophead_module mpi mpi module~tem_property_module->mpi module~env_module->mpi aotus_module aotus_module module~env_module->aotus_module flu_binding flu_binding module~env_module->flu_binding iso_fortran_env iso_fortran_env module~env_module->iso_fortran_env module~tem_prophead_module->module~env_module module~tem_prophead_module->mpi aot_out_module aot_out_module module~tem_prophead_module->aot_out_module aot_table_module aot_table_module module~tem_prophead_module->aot_table_module module~tem_prophead_module->aotus_module

Used by

  • module~~tem_property_module~~UsedByGraph module~tem_property_module tem_property_module module~tem_adaptation_module tem_adaptation_module module~tem_adaptation_module->module~tem_property_module module~tem_bc_prop_module tem_bc_prop_module module~tem_bc_prop_module->module~tem_property_module module~tem_color_prop_module tem_color_prop_module module~tem_color_prop_module->module~tem_property_module module~tem_construction_module tem_construction_module module~tem_construction_module->module~tem_property_module module~tem_geometry_module tem_geometry_module module~tem_geometry_module->module~tem_property_module module~tem_meshinfo_module tem_meshInfo_module module~tem_meshinfo_module->module~tem_property_module module~tem_refining_module tem_refining_module module~tem_refining_module->module~tem_property_module module~tem_shape_module tem_shape_module module~tem_shape_module->module~tem_property_module module~tem_subres_prop_module tem_subres_prop_module module~tem_subres_prop_module->module~tem_property_module module~tem_subtree_module tem_subTree_module module~tem_subtree_module->module~tem_property_module module~tem_subtree_type_module tem_subTree_type_module module~tem_subtree_type_module->module~tem_property_module module~tem_surfacedata_module tem_surfaceData_module module~tem_surfacedata_module->module~tem_property_module module~tem_vrtx_module tem_vrtx_module module~tem_vrtx_module->module~tem_property_module module~tem_vrtx_prop_module tem_vrtx_prop_module module~tem_vrtx_prop_module->module~tem_property_module module~treelmesh_module treelmesh_module module~treelmesh_module->module~tem_property_module

Variables

Type Visibility Attributes Name Initial
integer, public, parameter :: prp_fluid = 1

fluid

integer, public, parameter :: prp_solid = 2

solid

integer, public, parameter :: prp_hasBnd = 3

The element has boundaries. closer defined in the property module

integer, public, parameter :: prp_defElems = 4

deformed Elements

integer, public, parameter :: prp_chgElems = 5

changed Elements This is now used for adaptive refinement

integer, public, parameter :: prp_fluidify = 6

Fluidifiable Elements

integer, public, parameter :: prp_vrtx = 7

vertex information

integer, public, parameter :: prp_hasQVal = 8

has qVal elements

integer, public, parameter :: prp_hasIBM = 9

the element is a parent element of one or more surface data points

integer, public, parameter :: prp_hasRemoteNgh = 10

element has a remote neighbor

integer, public, parameter :: prp_sendHalo = 12

is this a fluid element which needs to be send to an attached proc

integer, public, parameter :: prp_noSolidification = 13

Solidification is not allowed for this element.

integer, public, parameter :: prp_hasNormal = 15

There is a boundary normal stored for this element

integer, public, parameter :: prp_requireFullNeighborhood = 20

the complete neighborhood is required for this element

integer, public, parameter :: prp_fineGhostClosestToFluid = 25

indicates whether this fine ghost cell is the closest to the fluid cell

integer, public, parameter :: prp_isColored = 30

Indicate if the element has some coloring attached to it.

integer, public, parameter :: prp_hasPolynomial = 31

This bit indicates wether the color in the element is further resolved by polynomial information.

integer, public, parameter :: prp_particle = 32

Derived Types

type, public ::  tem_property_type

An auxilary data type to describe modifications and additional features for some elements.

Components

Type Visibility Attributes Name Initial
integer, public :: nElems

Number of local elements with this property

integer(kind=long_k), public :: Offset

Offset of the local chunk of elements with this property in the list of all elements with that properties on disk

integer, public, allocatable :: ElemID(:)

The indices of elements in the local partition, that have this property.


Subroutines

public subroutine init_propertylist(header, property, nproperties)

Defines how many properties there are.

Read more…

Arguments

Type IntentOptional Attributes Name
type(tem_prophead_type), pointer :: header(:)

Pointer to the list of headers for the properties to be allocated

type(tem_property_type), pointer :: property(:)

Pointer to the list of properties to be allocated

integer, intent(in) :: nproperties

Number of properties to allocate in the list

public subroutine destroy_propertylist(header, property)

Arguments

Type IntentOptional Attributes Name
type(tem_prophead_type), pointer :: header(:)

Pointer to list of property headers to destroy

type(tem_property_type), pointer :: property(:)

Pointer to list of properties to destroy

public subroutine gather_property(Property, Header, BitField, comm)

Gather the information on a property from the bit fields of all elements

Arguments

Type IntentOptional Attributes Name
type(tem_property_type), intent(out) :: Property

Property to gather

type(tem_prophead_type), intent(in) :: Header

Header for this property

integer(kind=long_k), intent(in) :: BitField(:)

The BitField for the properties of all local elements

integer, intent(in) :: comm

Communicator to act on