This module provides descriptions for elements
dynamic array of variable types
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public, | parameter | :: | eT_undefined | = | -1 | |
integer, | public, | parameter | :: | eT_nonExisting | = | 0 | |
integer, | public, | parameter | :: | eT_fluid | = | 1 | |
integer, | public, | parameter | :: | eT_ghostFromCoarser | = | 2 | |
integer, | public, | parameter | :: | eT_ghostFromFiner | = | 3 | |
integer, | public, | parameter | :: | eT_halo | = | 4 | |
integer, | public, | parameter | :: | eT_distributedGhostFromFiner | = | 5 | |
integer, | public, | parameter | :: | eT_sacrificed | = | 6 |
Element properties which are created while adaptive refinement |
integer, | public, | parameter | :: | eT_minNumber | = | -1 |
eType integer values must be in the range of eT_minNumber <= eT_val <= eT_maxNumber |
integer, | public, | parameter | :: | eT_maxNumber | = | 7 | |
integer, | public, | parameter | :: | eT_minRelevant | = | 1 |
Relevant number of element types. As the distributed ghost from finer are in the assemble list step collapsed with the normal ghosFromFiner, only eType = 1 to 4 needs to be treated afterwards |
integer, | public, | parameter | :: | eT_maxRelevant | = | 4 | |
character(len=12), | public, | parameter | :: | eT_labels(eT_minNumber:eT_maxNumber) | = | [' undefined', ' nonExisting', ' fluid', 'gFromCoarser', ' gFromFiner', ' halo', ' dgFromFiner', ' sacrificed', ' newFluid'] |
Array of element type labels To use it, one can do the following: write(,) trim(eT_labels(levelDesc( level )%elem%eType%val( tPos ))) |
integer, | private, | parameter | :: | eT_newFluid | = | 7 |
initialize the dynamic array
Include the subroutines for the dynamic array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type), | intent(out) | :: | me | |||
integer, | intent(in), | optional | :: | length |
truncate the array, meaning cut off the trailing empty entries
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type) | :: | me |
empty the entries without changing arrays
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type) | :: | me |
destroy the dynamic array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type), | intent(inout) | :: | me |
insert an element at a given position
adds the value to a given position inside the growing array.
if the requested position is outside the current array bounds, the array will be resized accordingly. if it is inside the current array bounds, the element at the requested position will be replaced.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type) | :: | me | ||||
type(grw_stencilelementarray_type), | intent(in) | :: | val | |||
integer, | intent(in) | :: | pos | |||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
adds the values starting from a given position inside the growing array.
if the requested position is outside the current array bounds, the array
will be resized accordingly. if it is inside the current array bounds, the
elements starting from the requested position will be replaced up to
the element at position pos + size(val) - 1
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type) | :: | me | ||||
type(grw_stencilelementarray_type), | intent(in) | :: | val(:) | |||
integer, | intent(in) | :: | pos | |||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
append a value to the dynamic array and return its position.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type) | :: | me | ||||
type(grw_stencilelementarray_type), | intent(in) | :: | val | |||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type) | :: | me | ||||
type(grw_stencilelementarray_type), | intent(in) | :: | val(:) | |||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
increase the size of the container for the array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type) | :: | me | ||||
integer, | intent(in), | optional | :: | pos | ||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
return the number of total allocated memory (bytes) per element
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_element_type), | intent(inout) | :: | me |
element object |
||
integer(kind=long_k), | intent(out) | :: | elemSize |
number of total entries to be returned |
return the number of actual used memory (bytes) per element
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_element_type), | intent(inout) | :: | me |
element object |
||
integer(kind=long_k), | intent(out) | :: | elemSize |
number of total entries to be returned |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_element_type), | intent(inout) | :: | me | |||
integer, | intent(in) | :: | elemPos | |||
integer, | intent(in) | :: | new_eType |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_element_type), | intent(inout) | :: | me | |||
integer, | intent(in) | :: | nElems | |||
integer, | intent(in) | :: | elemPos(:) | |||
integer, | intent(in) | :: | new_eType |
initialize an element and optionally set contents
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_element_type), | intent(out) | :: | me | |||
integer, | intent(in), | optional | :: | length |
append an element with its treeID, property, element type, position in Tree, position in boundary_ID, number of neighbors, procID
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_element_type), | intent(inout) | :: | me |
element object |
||
integer(kind=long_k), | intent(in) | :: | tID |
element treeID |
||
integer(kind=long_k), | intent(in), | optional | :: | property |
property associated with the treeID |
|
integer, | intent(in), | optional | :: | eType |
element type |
|
integer, | intent(in), | optional | :: | pntTID |
count of this type pointer of the treeID |
|
integer, | intent(in), | optional | :: | sourceProc |
the procID which is adding the element |
|
integer, | intent(in), | optional | :: | nNeighIDs |
number of neighbors |
|
integer, | intent(in), | optional | :: | haloNesting |
nesting level for haloElems |
|
logical, | intent(in), | optional | :: | needsUpdate | ||
type(tem_stencilElement_type), | intent(in), | optional | :: | stencilElements(:) | ||
integer, | intent(out) | :: | pos |
position of treeID |
||
logical, | intent(out), | optional | :: | wasAdded |
truncate all the lists in the element object
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_element_type), | intent(inout) | :: | me |
element object |
destroy all the lists in the element object
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_element_type), | intent(inout) | :: | me |
element object |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(dyn_longarray_type), | public | :: | tID |
Tree ID |
|||
type(grw_longarray_type), | public | :: | property |
Property |
|||
type(grw_intarray_type), | public | :: | eType |
element type: fluid, ghostFromCoarser, ghostFromFiner, halo |
|||
type(grw_intarray_type), | public | :: | pntTID |
Pointer to the original treeID list It should have the same size of tree It is destroyed in assemble_lists |
|||
type(grw_grw_stencilelementarray_type), | public | :: | stencil |
Stencils defined for this element |
|||
type(grw_dynlongarray_type), | public | :: | neighID |
neighbor treeIDs coming from the stencil definitions each element has a list of neighbors, so this is an array of array |
|||
type(grw_intarray_type), | public | :: | sourceProc |
source partition (starts at 1) |
|||
type(grw_intarray_type), | public | :: | haloNesting |
nesting (only relevant for halos, to include their neighborhood) |
|||
type(grw_logicalarray_type), | public | :: | needsUpdate |
does this element need an update |
|||
integer, | public | :: | nElems(eT_minNumber:eT_maxNumber) |
number of various types elements |
growing array type for type(grw_stencilelementarray_type)
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | nvals | = | 0 | ||
integer, | public | :: | containersize | = | 0 | ||
type(grw_stencilelementarray_type), | public, | allocatable | :: | val(:) |
Return the element type of a treeID .
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=long_k), | intent(in) | :: | tID |
the element you are looking for |
||
type(tem_element_type), | intent(in) | :: | me |
the descriptor you use for searching |
element type
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | eT |
Write element information to disk
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_element_type), | intent(in) | :: | me |
element object |
||
integer, | intent(in) | :: | elemPos | |||
integer, | intent(in) | :: | nUnit | |||
logical, | intent(in), | optional | :: | compact | ||
logical, | intent(in), | optional | :: | header | ||
logical, | intent(in), | optional | :: | stencil |
Whether to write stencil information |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nElems(eT_minRelevant:eT_maxRelevant) | |||
integer, | intent(in) | :: | outUnit |
Include the subroutines for the dynamic array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type), | intent(out) | :: | me | |||
integer, | intent(in), | optional | :: | length |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type), | intent(inout) | :: | me |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type) | :: | me |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type) | :: | me |
adds the value to a given position inside the growing array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type) | :: | me | ||||
type(grw_stencilelementarray_type), | intent(in) | :: | val | |||
integer, | intent(in) | :: | pos | |||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
adds the values starting from a given position inside the growing array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type) | :: | me | ||||
type(grw_stencilelementarray_type), | intent(in) | :: | val(:) | |||
integer, | intent(in) | :: | pos | |||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type) | :: | me | ||||
type(grw_stencilelementarray_type), | intent(in) | :: | val | |||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type) | :: | me | ||||
type(grw_stencilelementarray_type), | intent(in) | :: | val(:) | |||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grw_stencilelementarray_type) | :: | me | ||||
integer, | intent(in), | optional | :: | pos | ||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
initialize an element and optionally set contents
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_element_type), | intent(out) | :: | me | |||
integer, | intent(in), | optional | :: | length |
truncate all the lists in the element object
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_element_type), | intent(inout) | :: | me |
element object |
return the number of actual used memory (bytes) per element
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_element_type), | intent(inout) | :: | me |
element object |
||
integer(kind=long_k), | intent(out) | :: | elemSize |
number of total entries to be returned |
return the number of total allocated memory (bytes) per element
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_element_type), | intent(inout) | :: | me |
element object |
||
integer(kind=long_k), | intent(out) | :: | elemSize |
number of total entries to be returned |
destroy all the lists in the element object
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_element_type), | intent(inout) | :: | me |
element object |
append an element with its treeID, property, element type, position in Tree, position in boundary_ID, number of neighbors, procID
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_element_type), | intent(inout) | :: | me |
element object |
||
integer(kind=long_k), | intent(in) | :: | tID |
element treeID |
||
integer(kind=long_k), | intent(in), | optional | :: | property |
property associated with the treeID |
|
integer, | intent(in), | optional | :: | eType |
element type |
|
integer, | intent(in), | optional | :: | pntTID |
count of this type pointer of the treeID |
|
integer, | intent(in), | optional | :: | sourceProc |
the procID which is adding the element |
|
integer, | intent(in), | optional | :: | nNeighIDs |
number of neighbors |
|
integer, | intent(in), | optional | :: | haloNesting |
nesting level for haloElems |
|
logical, | intent(in), | optional | :: | needsUpdate | ||
type(tem_stencilElement_type), | intent(in), | optional | :: | stencilElements(:) | ||
integer, | intent(out) | :: | pos |
position of treeID |
||
logical, | intent(out), | optional | :: | wasAdded |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_element_type), | intent(inout) | :: | me | |||
integer, | intent(in) | :: | elemPos | |||
integer, | intent(in) | :: | new_eType |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_element_type), | intent(inout) | :: | me | |||
integer, | intent(in) | :: | nElems | |||
integer, | intent(in) | :: | elemPos(:) | |||
integer, | intent(in) | :: | new_eType |