Stencil definitions
A stencil is basically a set of elementoffsets $(s_x, s_y, s_z)$, describing the relative positions of all required elements for a given element.
Type  Visibility  Attributes  Name  Initial  

character(len=labelLen),  private  ::  label  a stencil label 

integer,  private  ::  number of directions 

integer,  private  ::  QQN  TodoHK: do we really need this? It is mostly confusing, and solver specific! 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, Todo: SZ: is this really the case? 1 if a stencil entry with entries further than neighbor are encountered 

integer,  private,  allocatable  ::  map2treeDef(:)  mapping of treelm definition to stencil entries, if possible entry is zero if nothing defined 

integer,  private  ::  restPosition  Restdensity 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. 