tem_pointData_module Module

This module contains data type and subroutines required to store levelWise points and values for variable access

\author Kannan Masilamani



Interfaces

public interface init

Interface to initialize growing array of points

  • private subroutine init_grwPoints(me, length)

    This routine initialize growing array of points

    Arguments

    Type IntentOptional 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

public interface append

Interface to append a single point or array of points to growing array of points

  • private subroutine append_singlePnt2grwPoints(me, val)

    This routine append a single point to growing array of points

    Arguments

    Type IntentOptional 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

  • private subroutine append_vectorPnt2grwPoints(me, val)

    This routine append a array of points to growing array of points

    Arguments

    Type IntentOptional 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

public interface truncate

Interface to truncate growing array of points

  • private subroutine truncate_grwPoints(me)

    This routine truncates growing array of points

    Arguments

    Type IntentOptional Attributes Name
    type(tem_grwPoints_type), intent(inout) :: me

    Growing array of points in each dimension

public interface destroy

Interface to destroy growing array of points

  • private subroutine destroy_grwPoints(me)

    This routine destroys growing array of points

    Arguments

    Type IntentOptional Attributes Name
    type(tem_grwPoints_type), intent(inout) :: me

    Growing array of points in each dimension

private interface append

Interface to append point, offset_bit and elemPos to pointData

  • private subroutine append_pointData(me, point, storePnt, offset_bit, storeOffsetBit, elemPos, tree, pos, wasAdded)

    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

    Arguments

    Type IntentOptional 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(len=1), 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


Derived Types

type, public ::  tem_grwPoints_type

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.

Read more…

Components

Type Visibility Attributes Name Initial
type(grw_realarray_type), public :: coordX

X-coordinate points

type(grw_realarray_type), public :: coordY

Y-coordinate points

type(grw_realarray_type), public :: coordZ

Z-coordinate points

type, public ::  tem_sourceElems_type

Contains source elements required for interpolation to derive solver variables

Components

Type Visibility Attributes Name Initial
type(grw_intarray_type), public :: first

First position of source elements in srcElemPos per point size: nPnts

type(grw_intarray_type), public :: last

last position of source elements in srcElemPos per point size: nPnts

type(grw_intarray_type), public :: 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), public :: weight

Interpolation weight for each source elements

type, public ::  tem_pointData_type

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.

Components

Type Visibility Attributes Name Initial
integer, public :: nPnts = 0

Number of points in the growing array

type(tem_grwPoints_type), public :: grwPnt

growing array of points either global space coorinate in treelmmesh or local coordinate with on a reference element

type(dyn_longarray_type), public :: treeID

Unique treeID in finest level to create unique list of grwPnt

type(grw_chararray_type), public :: 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), public :: elemPos

elemPos refer to position in linearized tree. size: number of points

type(grw_intarray_type), public :: 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), public :: srcElem

Contains source elements required for interpolation to derive solver variables for every point

type, public ::  tem_pointData_list_type

Data type contains pointData information for all levels.

Components

Type Visibility Attributes Name Initial
type(tem_pointData_type), public :: pntLvl(globalMaxLevels)

pointData for all levels

type(tem_pointData_type), public :: mapToTree

Contains source elements position in global tree for interpolation to derive solver variables for every point. srcElem in tem_pointData_type contains source element position in level-wise list which is used in get_valOfIndex. This routine is used in solver get_point routine which interpolate a variable to a point from elements in fluid tree excluding ghosts. Halo elements are considered as source only for auxField variable.


Subroutines

private subroutine append_pointData(me, point, storePnt, offset_bit, storeOffsetBit, elemPos, tree, pos, wasAdded)

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

Arguments

Type IntentOptional 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(len=1), 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

private subroutine init_grwPoints(me, length)

This routine initialize growing array of points

Arguments

Type IntentOptional 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

private subroutine append_singlePnt2grwPoints(me, val)

This routine append a single point to growing array of points

Arguments

Type IntentOptional 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

private subroutine append_vectorPnt2grwPoints(me, val)

This routine append a array of points to growing array of points

Arguments

Type IntentOptional 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

private subroutine truncate_grwPoints(me)

This routine truncates growing array of points

Arguments

Type IntentOptional Attributes Name
type(tem_grwPoints_type), intent(inout) :: me

Growing array of points in each dimension

private subroutine destroy_grwPoints(me)

This routine destroys growing array of points

Arguments

Type IntentOptional Attributes Name
type(tem_grwPoints_type), intent(inout) :: me

Growing array of points in each dimension