Device-copyable boundary condition.
Every boundary condition is imposed weakly through a ghost state that is passed to the Riemann solver (and used for gradient reconstruction). The meaning of data depends on type:
- UPT: data = W = [rho, u, p] of the inflow state
- FARFIELD: data = W = [rho, u, p] of the free stream
- PARTITION: faces towards cells of other ranks, at the edge of the halo. The interior state is copied; nothing an owned cell uses depends on it.
- P_OUT: data[N_DIM + 1] = back pressure
- P_OUT_AVERAGE: data[N_DIM + 1] = target area-averaged pressure; data[0] = current pressure shift (target minus the average of the adjacent cells), updated every stage
- walls: data[1..N_DIM] = wall velocity; WALL_ISOTHERMAL: data[0] = wall temperature; WALL_HEAT_FLUX: data[N_DIM + 1] = heat flux into the fluid
- DIRICHLET: unused; the exterior state is set per face (BoundaryData::face_state)
- NSCBC_OUTLET: data[N_DIM + 1] = target pressure
- NSCBC_INLET: data = [rho, -, p] of the target state; the target velocity is per face (BoundaryData::char_target)
Characteristic conditions (NSCBC_*) also use relax, indexed by Relax. Their exterior state for the Riemann solver is BoundaryData::characteristic_W; ghosts elsewhere are EXTRAPOLATION's (docs/design/nscbc.md).