## abstract interface

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

### Arguments

Type | Intent | Optional | Attributes | | Name | |

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. |

### Description

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.