tem_levelDesc_type Derived Type

type, public :: tem_levelDesc_type

detailed information of a complete level of elements including all treeIDs, properties and neighbors as well as informations about ghost/halo cells and its dependencies for interpolation/reconstruction


Inherits

type~~tem_leveldesc_type~~InheritsGraph type~tem_leveldesc_type tem_levelDesc_type type~tem_halolist_type tem_haloList_type type~tem_leveldesc_type->type~tem_halolist_type haloList type~grw_intarray_type grw_intarray_type type~tem_leveldesc_type->type~grw_intarray_type intpFromCoarser, intpFromFiner type~tem_element_type tem_element_type type~tem_leveldesc_type->type~tem_element_type elem type~tem_communication_type tem_communication_type type~tem_leveldesc_type->type~tem_communication_type sendBuffer, sendBufferFromCoarser, sendBufferFromFiner, recvBuffer, recvBufferFromCoarser, recvBufferFromFiner type~tem_levelneighbor_type tem_levelNeighbor_type type~tem_leveldesc_type->type~tem_levelneighbor_type neigh type~dyn_intarray_type dyn_intarray_type type~tem_leveldesc_type->type~dyn_intarray_type sourceFromFiner, sourceFromCoarser, bc_elemBuffer type~dyn_longarray_type dyn_longarray_type type~tem_leveldesc_type->type~dyn_longarray_type require type~depsource_type depSource_type type~tem_leveldesc_type->type~depsource_type depFromFiner, depFromCoarser type~tem_halolist_type->type~dyn_intarray_type partnerProc type~grw_dynintarray_type grw_dynintarray_type type~tem_halolist_type->type~grw_dynintarray_type halos type~tem_element_type->type~grw_intarray_type eType, pntTID, sourceProc, haloNesting type~tem_element_type->type~dyn_longarray_type tID type~grw_grw_stencilelementarray_type grw_grw_stencilelementarray_type type~tem_element_type->type~grw_grw_stencilelementarray_type stencil type~grw_logicalarray_type grw_logicalarray_type type~tem_element_type->type~grw_logicalarray_type needsUpdate type~grw_longarray_type grw_longarray_type type~tem_element_type->type~grw_longarray_type property type~grw_dynlongarray_type grw_dynlongarray_type type~tem_element_type->type~grw_dynlongarray_type neighID type~tem_communication_type->type~grw_intarray_type elemPos type~tem_realbuffer_type tem_realbuffer_type type~tem_communication_type->type~tem_realbuffer_type buf_real type~tem_intbuffer_type tem_intbuffer_type type~tem_communication_type->type~tem_intbuffer_type buf_int type~tem_longbuffer_type tem_longbuffer_type type~tem_communication_type->type~tem_longbuffer_type buf_long type~depsource_type->type~grw_intarray_type elem, elemBuffer c_ptr c_ptr type~tem_realbuffer_type->c_ptr mem_mpi type~grw_stencilelementarray_type grw_stencilelementarray_type type~grw_grw_stencilelementarray_type->type~grw_stencilelementarray_type val type~tem_intbuffer_type->c_ptr mem_mpi type~grw_dynintarray_type->type~dyn_intarray_type val type~tem_longbuffer_type->c_ptr mem_mpi type~grw_dynlongarray_type->type~dyn_longarray_type val type~tem_stencilelement_type tem_stencilElement_type type~grw_stencilelementarray_type->type~tem_stencilelement_type val

Inherited by

type~~tem_leveldesc_type~~InheritedByGraph type~tem_leveldesc_type tem_levelDesc_type type~tem_face_type tem_face_type type~tem_face_type->type~tem_leveldesc_type dimByDimDesc

Contents


Components

TypeVisibilityAttributesNameInitial
type(tem_element_type), private :: elem
type(dyn_longarray_type), private :: require

This list includes treeIDs for which additionally neighbors have to be identified constructed in tem_init_elemLevels used in routine: identify_additionalNeigh

type(tem_haloList_type), private :: haloList
integer(kind=long_k), private, allocatable:: total(:)

list of treeIDs for this level. Consists of ordered treeIDs of first fluid, then ghost, then halo elements. total: Array size: nElems ( = nElems_fluid+nElems_ghostFromCoarser + nElems_ghostFromFiner+nElems_halo )

real(kind=rk), private, allocatable:: baryOfTotal(:,:)

Barycenter for all treeID in total list size: nElems in total, 3

integer, private, allocatable:: totalPnt(:)

pointer to elem%tID list set in routine: identify_lists used in tem_build_listHorizontalDep, assemble_lists Array size: nElems

integer(kind=long_k), private, allocatable:: property(:)

list of property bits for this level. the same order as total list array size: nElems

integer, private, allocatable:: pntTID(:)

pointer from the levelDescriptor to the original treeID list ( only for fluids ) array size: nElems_fluid

type(tem_levelNeighbor_type), private, allocatable:: neigh(:)

neighbor relations for all fluid elements. Dimension: number of stencils We store the positions of the neighbor elements inside the total-list. If a fluid element does not have a neighbor in a direction (e.g. because of a boundary in that direction), we store the boundary ID as negative to indicate, that it is not a regular neighbor.

type(depSource_type), private, allocatable:: depFromFiner(:)

Dependencies for ghost elements To reconstruct all the data you should iterate over this list and reconstruct the ghost elements with source element information from these data types data. Up = to coarser, down = to finer array size: nElems_ghostFromFiner

type(depSource_type), private, allocatable:: depFromCoarser(:)

In treelm, only the parent is stored. If more sources are needed, it has to be extend in the solver. array size: nElems_ghostFromCoarser

type(dyn_intarray_type), private :: sourceFromFiner

Store all the source elements for the ghostFromFiner Their positions in total list on source level

type(dyn_intarray_type), private :: sourceFromCoarser

Store all the source elements that needed for all ghostFromCoarser

real(kind=rk), private, allocatable:: intpBufFromFiner(:,:)

Buffer storing intermediate values of the source elements for the interpolation

real(kind=rk), private, allocatable:: intpBufFromCoarser(:,:)
type(grw_intarray_type), private, allocatable:: intpFromCoarser(:)

List to store interpolation from coarser ghost elements How to use: do indElem = 1, intpFromCoarser%nVals posInDepFromCoarser = intpFromCoarser%val( indElem ) posInTotal = depFromCoarser%elem%val( posInDepFromCoarser ) end do Size of intpFromCoarser depends on interpolation order which intern depends on available number of source elements

type(grw_intarray_type), private :: intpFromFiner

List to store interpolation from finer ghost elements

type(dyn_intarray_type), private :: bc_elemBuffer

pointing to the position of boundary elements in the levelDescriptor total list

integer, private :: offset(2,eT_minRelevant:eT_maxRelevant) =0

Offsets in the assembled lists for fluid (1), ghostFromCoarser(2), ghostFromFiner(3) and halo(4) elements for the assembled lists, i.e the totalList, invSorted, ... gets the values (0, nElems_fluid, nElems_fluid+nElems_ghostCoarser, nElems_fluid+nElems_ghostCoarser+nELems_ghostFiner)

type(tem_communication_type), private :: sendBuffer

Local Fluids required by remote processes

type(tem_communication_type), private :: sendBufferFromCoarser

Local ghostFromCoarser required by remote processes

type(tem_communication_type), private :: sendBufferFromFiner

Local ghostFromFiner required by remote processes

type(tem_communication_type), private :: recvBuffer

My halos which are fluids on remote processes

type(tem_communication_type), private :: recvBufferFromCoarser

My halos which are ghostFromCoarser on remote processes

type(tem_communication_type), private :: recvBufferFromFiner

My halos which are ghostFromFiner on remote processes

integer, private :: nElems

total number of elements