boundary_type Derived Type

type, public :: boundary_type

Boundary treatment data type. It include boundary treatment for only ONE field. For the same boundary elements, each field may have a different treatment. It includes function pointers and neighbor elements required by this boundary treatment


type~~boundary_type~~InheritsGraph type~boundary_type boundary_type type~bc_wall_bouzidi_type bc_wall_bouzidi_type type~boundary_type->type~bc_wall_bouzidi_type bouzidi type~bc_neigh_type bc_neigh_type type~boundary_type->type~bc_neigh_type neigh type~bc_inlet_bouzidi_type bc_inlet_bouzidi_type type~boundary_type->type~bc_inlet_bouzidi_type inletUbbQVal, inletBFL type~bc_nrbc_type bc_nrbc_type type~boundary_type->type~bc_nrbc_type nrbc type~bc_states_type bc_states_type type~boundary_type->type~bc_states_type BC_states type~array_type array_type type~boundary_type->type~array_type links type~bc_outlet_type bc_outlet_type type~boundary_type->type~bc_outlet_type outletExpol type~bc_blackbox_membrane_type bc_blackbox_membrane_type type~boundary_type->type~bc_blackbox_membrane_type blackbox_mem type~bc_field_elems_type bc_field_elems_type type~boundary_type->type~bc_field_elems_type elemLvl type~bc_noneqexpol_type bc_nonEqExpol_type type~boundary_type->type~bc_noneqexpol_type nonEqExpol type~grw_stringkeyvaluepairarray_type grw_stringkeyvaluepairarray_type type~boundary_type->type~grw_stringkeyvaluepairarray_type varDict type~tem_bc_state_type tem_bc_state_type type~bc_states_type->type~tem_bc_state_type velocity, massFlowRate, pressure, moleFrac, moleFlux, moleDens, moleDiff_flux, pdf, potential, surChargeDens type~bc_moments_type bc_moments_type type~bc_field_elems_type->type~bc_moments_type moments

Inherited by

type~~boundary_type~~InheritedByGraph type~boundary_type boundary_type type~mus_field_type mus_field_type type~mus_field_type->type~boundary_type bc type~mus_scheme_type mus_scheme_type type~mus_scheme_type->type~mus_field_type field type~mus_varsys_solverdata_type mus_varSys_solverData_type type~mus_varsys_solverdata_type->type~mus_scheme_type scheme type~mus_varsys_data_type mus_varSys_data_type type~mus_varsys_data_type->type~mus_varsys_solverdata_type solverData



integer, private :: bc_id

Boundary ID

character(len=LabelLen), private :: BC_kind

kind of this boundary

character(len=LabelLen), private :: label

name of this boundary

integer, private :: nNeighs =0

number of neighbors fluid element needed for extrapolation to get data at boundary element

logical, private :: curved =.false.

Curved boundaries are treated with qValues and extrapolation of nonEq from 2nd neighbor

type(bc_neigh_type), private, allocatable:: neigh(:)

Level wise neighbor information of boundary elements Each field may have a different handlement on the same boundary Thus requires a different neighborhood allocated in mus_alloc_fieldBC

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

Level wise element information of boundary elements like stencil position in array of stencils, moments type for momentBC and LODI array for NRBC allocated in mus_alloc_fieldBC

procedure(boundaryRoutine), private, pointer:: fnct=> null()

function pointer to boundary routine to call

type(bc_states_type), private :: BC_states

musubi bc state variables

type(grw_stringkeyvaluepairarray_type), private :: varDict

Dictionary of boundary variables with varDict%val()%key is the name of boundary variable and varDict%val()%value is the name of spacetime function variable

integer, private :: order

order of boundary which determines number of neighbor need for this boundary

real(kind=rk), private :: qVal

standard q-value for higher order boundaries without any definition in seeder

type(bc_nrbc_type), private :: nrbc

Non-reflective boundary type

real(kind=rk), private :: slip_fac

slip wall factor

type(bc_blackbox_membrane_type), private :: blackbox_mem

black box membrane boundary

logical, private :: useComputeNeigh =.false.

whether this boundary needs neighbors on compute stencil

logical, private :: evalBcVar_link =.false.

Is true if this boundary requires boundary variables on boundary surface linkwise. Required to compute real coordinates points on boundary surface

logical, private :: requireNeighBufPre =.false.

Is true only if boundary requires neighbuf Pre-collision values

logical, private :: requireNeighBufPost =.false.

Is true only if boundary requires neighbuf Post-collision values

logical, private :: treat_corner =.false.

Collect corner BC i.e elements which are interesected by multiple boundaries only for moments based BC

type(array_type), private, allocatable:: links(:)

Level-wise links that are to be updated size: minLevel:maxLevel allocated in mus_alloc_fieldBC

type(bc_wall_bouzidi_type), private, allocatable:: bouzidi(:)

Level wise wall bouzidi data size: minLevel:maxLevel

type(bc_inlet_bouzidi_type), private, allocatable:: inletUbbQVal(:)

Level wise inletUbbQVal data size: minLevel:maxLevel

type(bc_inlet_bouzidi_type), private, allocatable:: inletBFL(:)

Level wise inletBfl data size: minLevel:maxLevel

type(bc_nonEqExpol_type), private, allocatable:: nonEqExpol(:)

Level wise nonEquilibrium extrapolation data for link-wise implementation size: minLevel:maxLevel

type(bc_outlet_type), private, allocatable:: outletExpol(:)

Level wise outletExpol data size: minLevel:maxLevel