tem_varSys_proc_setupIndices Abstract Interface

abstract interface
public subroutine tem_varSys_proc_setupIndices(fun, varSys, point, offset_bit, iLevel, tree, nPnts, idx)


class(tem_varSys_op_type), intent(in) :: fun

Description of the method to obtain the variables, here some preset values might be stored, like the space time function to use or the required variables.

type(tem_varSys_type), intent(in) :: varSys

The variable system to obtain the variable from.

real(kind=rk), intent(in) :: point(:,:)

List of space coordinate points to store as growing array in method_data

character, intent(in), optional :: offset_bit(:)

Offset bit encoded as character for every point.

Offset integer coord(3) is converted into a character with offset_bit = achar( (coord(1)+1) + (coord(2)+1)4 + (coord(3)+1)16 ) Backward transformation form character to 3 integer: coord(1) = mod(ichar(offset_bit),4) - 1 coord(2) = mod(ichar(offset_bit),16)/4 - 1 coord(3) = ichar(offset_bit)/16 - 1

If not present default is to center i.e offset_bit = achar(1+4+16)

integer, intent(in) :: iLevel

Level to which input points belong to

type(treelmesh_type), intent(in) :: tree

global treelm mesh info

integer, intent(in) :: nPnts

Number of points to add in method_data of this variable

integer, intent(out) :: idx(:)

Index of points in the growing array and variable val array. Size: n

This must be stored in boundary or source depends on who calls this routine. This index is required to return a value using getValOfIndex.


Interface description for a variable to setup point sets and return indices of points in the 1D growing array.

Before setupIndices, use setParams to set information about boundary or sources in the spacetime function type. Points are stored in the 1D growing array for each dimension in the level wise list in the method_data. offset_bit is required for each point on boundaries so the remote domain can use this offset to identify rank for the point. If offset_bit is not present then default is set to element center i.e offset_bit = achar(1+4+16).

For state variable, this routine will also compute elemPos in the given level and local_coord for every point. Elempos and local_coord are stored in same place as growing array of points.

For spacetime function variable, if function is time independent then values are computed and stored level wise after all points are added to spacetime function.