bc_elems_type Derived Type

type, private :: bc_elems_type

Level wise boundary elements information


Components

Type Visibility Attributes Name Initial
type(dyn_intarray_type), public :: elem

Positions in levelDesc total list Its purpose is to get the treeID of BC elements size is globBC%nElems to use: levelDesc(iLevel)%total( globBC%elemLvl(iLevel)%elem%val(iElem) )

type(grw_intarray_type), public :: posInBcElemBuf

Position of this boundary in the bc_elemBuffer bc_elemBuffer is growing array initial size: globBC%nElems It is initiated in mus_init_bc_elems of mus_bc_header_module Only non-wall BC needs elemBuffer

type(grw_int2darray_type), public :: normal

Normal vector for each boundary element pointing into the domain. normal is a growing array with size: normal%val(3, nElems)

type(grw_intarray_type), public :: normalInd

which is the index in the stencil corresponding to the normal vector?

type(grw_logical2darray_type), public :: bitmask

bit mask for each node holding directions which have to be updated. The bitmask points into the incoming direction into the flow domain, which actually we want to update * For PUSH, we write to the incoming position, as the kernel reads it from there without propagation. * For PULL, we need to write to the inverse direction, as the kernel performs a bounce back before reading it. However, this bounced back direction actually comes from the non-existent boundary element and would point into the incoming direction, so the value has to be treated and set as if it points really into the incoming direction. bitmask is a growing array, the values are in bitmask%val(:,:) 1st index size is QQN since center is not treated for bcElems

type(grw_real2darray_type), public :: qVal

The q-Values for the exact wall positions Its size: QQN, nElemsBC It is allocated in routine: allocateBCList assigned in routine: assignBCList