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
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
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 ) Todo: to be replaced by growing array |
||
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 Todo: to be replaced by growing array |
||
integer(kind=long_k), | private, | allocatable | :: | property(:) | list of property bits for this level. the same order as total list array size: nElems Todo: to be replaced by growing array |
||
integer, | private, | allocatable | :: | pntTID(:) | pointer from the levelDescriptor to the original treeID list ( only for fluids ) array size: nElems_fluid Todo: to be replaced by growing array |
||
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 Todo: move into solver? |
||
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 |