This module contains data type and subroutines required to store levelWise points and values for variable access
\author Kannan Masilamani
Interface to initialize growing array of points
This routine initialize growing array of points
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_grwPoints_type), | intent(out) | :: | me | Growing array of points in each dimension |
||
integer, | intent(in), | optional | :: | length | Initial length of the container |
Interface to append a single point or array of points to growing array of points
This routine append a single point to growing array of points
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_grwPoints_type), | intent(inout) | :: | me | Growing array of points in each dimension |
||
real(kind=rk), | intent(in) | :: | val(3) | single point to append |
This routine append a array of points to growing array of points
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_grwPoints_type), | intent(inout) | :: | me | Growing array of points in each dimension |
||
real(kind=rk), | intent(in) | :: | val(:,:) | Array of points to append |
Interface to truncate growing array of points
This routine truncates growing array of points
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_grwPoints_type), | intent(inout) | :: | me | Growing array of points in each dimension |
Interface to destroy growing array of points
This routine destroys growing array of points
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_grwPoints_type), | intent(inout) | :: | me | Growing array of points in each dimension |
Interface to append point, offset_bit and elemPos to pointData
Routine to append point Datas like points, offset_bit and elemPos Append point datas only if treeID of a point in max level is newly added
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_pointData_type), | intent(inout) | :: | me | Point data type to be filled |
||
real(kind=rk), | intent(in) | :: | point(1:3) | space coordinate to append |
||
logical, | intent(in) | :: | storePnt | logical to store point into me%grwPnt |
||
character, | intent(in) | :: | offset_bit | offset bit to append |
||
logical, | intent(in) | :: | storeOffsetBit | logical to store offset bit into me%offset_bit |
||
integer, | intent(in) | :: | elemPos | Position of element which contains given point in global tree%treeID |
||
type(treelmesh_type), | intent(in) | :: | tree | global tree |
||
integer, | intent(out) | :: | pos | return position of treeID of a point in maxLevel in me%treeID |
||
logical, | intent(out) | :: | wasAdded | If point is new and added to pointData |
Data type contain 1D growing array of points for each dimension. In general, they are space coordinate in the treelmesh but for Ateles solver variables, they are used to store local coordinate with in a reference element.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(grw_realarray_type), | private | :: | coordX | X-coordinate points |
|||
type(grw_realarray_type), | private | :: | coordY | Y-coordinate points |
|||
type(grw_realarray_type), | private | :: | coordZ | Z-coordinate points |
Contains source elements required for interpolation to derive solver variables
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(grw_intarray_type), | private | :: | first | First position of source elements in srcElemPos per point size: nPnts |
|||
type(grw_intarray_type), | private | :: | last | last position of source elements in srcElemPos per point size: nPnts |
|||
type(grw_intarray_type), | private | :: | elemPos | Position of source elements in levelwise list for solver variable. position in leveldesc is used so interpolation can be done level wise using ghost elements. In Musubi, the genertic get_valOfIndex routine and get_valOfIndex routine of state variables does not include halo elements for interpolation |
|||
type(grw_realarray_type), | private | :: | weight | Interpolation weight for each source elements |
Data type contains growing array of points, evaluated variable value on those points per level For solver variables, additional information like elemPos and local coord are stored for every point.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | private | :: | nPnts | = | 0 | Number of points in the growing array |
|
type(tem_grwPoints_type), | private | :: | grwPnt | growing array of points either global space coorinate in treelmmesh or local coordinate with on a reference element |
|||
type(dyn_longarray_type), | private | :: | treeID | Unique treeID in finest level to create unique list of grwPnt |
|||
type(grw_chararray_type), | private | :: | offset_bit | Offset bit encodes direction of boundary for surface coupling. used to translate space coordinate in the offset direction to determine the treeID in remote domain |
|||
type(grw_intarray_type), | private | :: | elemPos | elemPos refer to position in linearized tree. size: number of points |
|||
type(grw_intarray_type), | private | :: | pntlevel | For solver variables, pntlevel refer to the local level of the point In case of coupling, the requested level could differ from local level, hence we stored the local level explicitly size: number of points |
|||
type(tem_sourceElems_type), | private | :: | srcElem | Contains source elements required for interpolation to derive solver variables for every point |
Data type contains pointData information for all levels.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(tem_pointData_type), | private | :: | pntLvl(globalMaxLevels) | pointData for all levels |
Routine to append point Datas like points, offset_bit and elemPos Append point datas only if treeID of a point in max level is newly added
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_pointData_type), | intent(inout) | :: | me | Point data type to be filled |
||
real(kind=rk), | intent(in) | :: | point(1:3) | space coordinate to append |
||
logical, | intent(in) | :: | storePnt | logical to store point into me%grwPnt |
||
character, | intent(in) | :: | offset_bit | offset bit to append |
||
logical, | intent(in) | :: | storeOffsetBit | logical to store offset bit into me%offset_bit |
||
integer, | intent(in) | :: | elemPos | Position of element which contains given point in global tree%treeID |
||
type(treelmesh_type), | intent(in) | :: | tree | global tree |
||
integer, | intent(out) | :: | pos | return position of treeID of a point in maxLevel in me%treeID |
||
logical, | intent(out) | :: | wasAdded | If point is new and added to pointData |
This routine initialize growing array of points
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_grwPoints_type), | intent(out) | :: | me | Growing array of points in each dimension |
||
integer, | intent(in), | optional | :: | length | Initial length of the container |
This routine append a single point to growing array of points
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_grwPoints_type), | intent(inout) | :: | me | Growing array of points in each dimension |
||
real(kind=rk), | intent(in) | :: | val(3) | single point to append |
This routine append a array of points to growing array of points
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_grwPoints_type), | intent(inout) | :: | me | Growing array of points in each dimension |
||
real(kind=rk), | intent(in) | :: | val(:,:) | Array of points to append |
This routine truncates growing array of points
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_grwPoints_type), | intent(inout) | :: | me | Growing array of points in each dimension |
This routine destroys growing array of points
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_grwPoints_type), | intent(inout) | :: | me | Growing array of points in each dimension |