# tem_stencilHeader_type Derived Type

## type, public :: tem_stencilHeader_type

Stencil definitions

A stencil is basically a set of element-offsets $(s_x, s_y, s_z)$, describing the relative positions of all required elements for a given element.

## Components

TypeVisibilityAttributesNameInitial
character(len=labelLen), private :: label

a stencil label

integer, private :: QQ

number of directions

integer, private :: QQN

number of directions excluding the central (0,0,0)

integer, private :: nDims =0
integer, private, allocatable:: cxDir(:,:)

cartesian directions of discrete velocities. Integer number version. Size is (3,nDir)

real(kind=rk), private, allocatable:: cxDirRK(:,:)

Cartesian directions of discrete velocities. Real number version. Size is (3,nDir)

integer, private, allocatable:: cxDirInv(:)

inverted cartesian direction indices. this is well defined for symmetric stencils only.

real(kind=rk), private, allocatable:: cxcx(:,:)

2nd order tensor of discrete velocities Size is (6,QQ) for 3D: xx, yy, zz, xy, yz, xz (3,QQ) for 2D: xx, yy, xy (1,QQ) for 1D: xx

integer, private, allocatable:: map(:)

mapping of stencil entries to treelm definition, if possible entry is zero if nothing defined,

integer, private, allocatable:: map2treeDef(:)

mapping of treelm definition to stencil entries, if possible entry is zero if nothing defined

integer, private :: restPosition

Rest-density position in stencil

integer, private :: depStencil

the stencil on which the current one depends this is required for boundary stencils which elements actually require the neighbors of the compute stencil

logical, private :: useAll

use this stencil for all elements

logical, private :: requireNeighNeigh =.false.

requires valid neighbors of the stencil neighbors

logical, private :: requireAll =.false.

requires valid neighbors of the stencil neighbors

integer, private :: nElems

the number of elements using this stencil

type(grw_intarray_type), private, allocatable:: elemLvl(:)

list of elements on which this stencil should be applied Both elemLvl and elem array are used for stencil other than fluid stencil

type(grw_intarray_type), private :: elem

list of elements on which this stencil should be applied In build_BCstencil they point to original treeID list and used in tem_initelemLevels. Later this position is updated such that they point to the level wise total list in update_elemPosToTotalPos.