Supported Immersed Boundary Conditions
This page lists the supported surface BC specifier values for the IBM → BoundaryConditions block, the required/optional fields for each BC, and brief behavior notes.
All values are interpreted in the global unit system. Numeric fields may be expressions resolved against the Dictionary.
Primitive variables
Several BCs require the full set of primitive variables for the active physics model. For ideal-gas CFD this is typicallyP, U, V, W, T(and, if applicable, a vibrational or species subset). See Physics Models for the canonical variable names.
Normal direction & signs
The surface unit normal used internally points into the domain. When a BC asks for a signed normal quantity (e.g.,normal_velocity), a positive value means flow into the domain along that inward normal.
Index of specifiers
supersonic_inflowsubsonic_inflowstagnation_subsonic_inflowsupersonic_outflowpressure_outletmach_outletvelocity_outflowmassflow_outmassflow_inwall_modelslipwallnoslipwallzero
supersonic_inflow
Purpose: impose a constant freestream primitive state.
Required fields (all primitives): P, U, V, W, T (see Physics Models).
Optional: none.
Behavior: ghost cells are set to the provided state, independent of the interior.
Example
inlet
{
component = "my_inlet"
geometries = ["fuselage"]
specifier = "supersonic_inflow"
P = "Qinf::pinf"
T = "Qinf::Tinf"
U = "Qinf::uinf"
V = 0.0
W = 0.0
}
subsonic_inflow
Purpose: subsonic inflow using Blazek-style relations; interior pressure influences the boundary state.
Required fields (all primitives): P, T, U, V, W (see Physics Models).
Optional: none.
Behavior: interior state is sampled; pressure/velocity are adjusted per the formulation.
Example
inlet_sub
{
component = "inlet_component"
geometries = ["fuselage"]
specifier = "subsonic_inflow"
P = "Qinf::pinf"
T = "Qinf::Tinf"
U = 0.0
V = 0.0
W = 0.0
}
stagnation_subsonic_inflow
Purpose: specify total conditions at a subsonic inlet (Rodriguez et al., Sect. C). Supports multi-species mass fractions.
Required fields:
total_pressure(akaP0)total_temperature(akaT0)- Optional per-physics: species mass fractions (names must match the species names for your physics model; typically all but the last species).
Behavior: derives static state at the boundary from interior plus P0/T0. Mass fractions (if present) are injected; tangential velocity is zero; normal velocity is set by the formulation.
Example
jet_inlet
{
component = "inlet_component"
geometries = ["fuselage"]
specifier = "stagnation_subsonic_inflow"
total_pressure = "jetP0"
total_temperature = "jetT0"
# For multi-species models, supply mass fractions by species name (examples):
# O2 = 0.23
# N2 = 0.77
}
supersonic_outflow
Purpose: pure extrapolation at supersonic exit.
Required fields: none.
Optional: none.
Behavior: ghosts equal interior close-point state.
Example
aft_exit
{
component = "aft_exit"
geometries = ["fuselage"]
specifier = "supersonic_outflow"
}
pressure_outlet
Purpose: subsonic pressure outlet with specified static back-pressure (Rodriguez et al., Sect. A).
Required fields: P (back pressure).
Optional: none.
Behavior: if local normal Mach < 1, set static pressure to P and adjust density/velocity using invariants; otherwise acts like extrapolation.
Example
p_out
{
component = "nozzle_exit"
geometries = ["fuselage"]
specifier = "pressure_outlet"
P = "Qinf::pinf"
}
mach_outlet
Purpose: outlet that targets a normal Mach number; computes static pressure from interior total pressure.
Required fields: mach_number (target normal Mach).
Optional: none.
Behavior: if interior normal Mach < 1, pressure is set from P0 and target Ma; otherwise uses interior P0 directly.
Example
ma_out
{
component = "aft_exit"
geometries = ["fuselage"]
specifier = "mach_outlet"
mach_number = 0.3
}
velocity_outflow
Purpose: impose a normal velocity at the outlet while extrapolating tangential velocity; pressure/temperature consistent with invariants.
Required fields: normal_velocity (positive means into the domain along the inward normal).
Optional: none.
Behavior: sets u·n = normal_velocity, keeps tangential velocity from interior, and computes thermodynamic state consistently.
Example
vel_out
{
component = "vent"
geometries = ["fuselage"]
specifier = "velocity_outflow"
normal_velocity = 5.0
}
massflow_out
Purpose: outlet that adjusts back-pressure to meet a target mass flow rate.
Required fields:
massflow(> 0) — target mass flow ratepressure_init— initial guess for back-pressure
Optional fields (defaults):
update_interval(default25) — steps between controller updatesrelax_scale(default0.33) — relaxation factor in back-pressure update
Special constraints: — apply to a single surface patch (not to a patch-group that expands to multiple IDs).
Behavior: during updates, adjusts Pback to drive the integrated mass flow to the target; acts like a pressure outlet between updates.
Example
mout
{
component = "nozzle_exit"
geometries = ["fuselage"]
specifier = "massflow_out"
massflow = 12.0
pressure_init = "Qinf::pinf"
update_interval = 25
relax_scale = 0.33
}
massflow_in
Purpose: inlet that sets normal velocity to achieve a target mass flow rate at a given total temperature; supports multi-species injection.
Required fields:
massflow(> 0) — target mass flow ratetotal_temperature—T0for the inflowdensity_init— initial guess for average inflow density (used by the updater)
Optional fields (defaults):
update_interval(default25) — steps between controller updates- Species mass fractions for multi-species physics (supply by name, typically all but the last species)
Special constraints: — apply to a single surface patch.
Behavior: updater computes effective area and average density; normal velocity is aligned with the inward normal to meet the mass flow; tangential velocity is zero.
Example
min
{
component = "inlet_component"
geometries = ["fuselage"]
specifier = "massflow_in"
massflow = 4.2
total_temperature = 600.0
density_init = 0.8
update_interval = 25
# For multi-species models, specify mass fractions by species name:
# O2 = 0.23
# N2 = 0.77
}
wall_model
Purpose: wall-modelled boundary (velocity/temperature set via wall-model result and IBM sampling).
Required fields: none.
Optional: none (sampling controlled globally by IBM.sample_dist_wm).
Behavior: tangential velocity is reduced per wall-model gradient; normal velocity mirrored to cancel penetration.
Example
wm_wall
{
component = "any"
geometries = ["fuselage"]
specifier = "wall_model"
}
Note: If you previously specified
wall_temperaturewithwall_model, that parameter is ignored by this BC type; usenoslipwallfor fixed-Twsurfaces.
slipwall
Purpose: inviscid slip wall: zero normal velocity; tangential velocity extrapolated.
Required fields: none.
Optional: none.
Example
slip
{
component = "polished_cap"
geometries = ["fuselage"]
specifier = "slipwall"
}
noslipwall
Purpose: viscous no-slip wall with optional fixed wall temperature and experimental radiative balance.
Required fields: none (defaults to adiabatic if no wall_temperature is given).
Optional fields:
wall_temperature— fixed wall temperature (if omitted or non-positive ⇒ adiabatic)radiative(bool, defaultfalse)- if
radiative = true:emissivityreference_temperature
Behavior: no-slip via linear extrapolation; temperature extrapolated about Tw if provided; radiative balance solver is not fully supported yet.
Example
hot_wall
{
component = "base_component"
geometries = ["fuselage"]
specifier = "noslipwall"
wall_temperature = 300.0
# radiative = false
}
zero
Purpose: debugging BC that sets the ghost state to zero (all primitives).
Required fields: none.
Optional: none.
Example
zero_test
{
component = "test_patch"
geometries = ["fuselage"]
specifier = "zero"
}