19 Interfaces
periodic, stage, frozen_rotor, sliding, GGI, CHT
19.1 What this setting is
An interface defines faces from two regions as connected surfaces that exchange data rather than as ordinary boundaries. Use one when the solution on one face must continue onto another, such as for periodic flow, stationary and rotating regions, nonconformal meshes, or fluid–solid heat transfer. Unlike a simple inlet, outlet, or wall, an interface requires both domains and markers on both sides.
interfaces: defines a connection between two regions, or two faces of the same region. The parser automatically injects boundary conditions into the domains, so do not duplicate them in domains[].boundaries.
{
"interfaces": [
{
"name": "passage_periodic", "type": "periodic",
"side1_domain": "fluid",
"side1_mesh_markers": ["PER1"],
"side2_domain": "fluid",
"side2_mesh_markers": ["PER2"],
"periodicity": "rotational",
"axis": [0, 0, 1],
"angle": 30.0
}
]
}side1_domain/side2_domain plus their mesh_markers identify the two connected faces (same domain or different domains). angle [°] applies to periodicity: "rotational"; see below for the translational form.
19.2 type
| Value | Meaning |
|---|---|
periodic |
Periodic boundary (rotational/translational) |
stage |
Mixing plane (steady turbomachinery) |
frozen_rotor |
Coordinate-frame transformation only (no averaging) |
sliding |
Sliding mesh (transient rotor–stator) |
ggi |
General nonconformal mesh connection between stationary domains |
cht |
Fluid–solid conjugate heat transfer |
19.3 GGI
ggi connects nonconformal meshes in different domains without rotating-frame transformation. Set it as the interface type; there is no mesh_connection suboption. ggi, frozen_rotor, and sliding all use the same nonconformal supermesh engine. They differ only in how the two sides move: ggi joins stationary domains, frozen_rotor holds a fixed relative position, and sliding rotates the mesh with time.
{
"interfaces": [{
"name": "zone_junction",
"type": "ggi",
"side1_domain": "left",
"side1_mesh_markers": ["INTERFACE"],
"side2_domain": "right",
"side2_mesh_markers": ["INTERFACE"]
}]
}19.4 Periodic (single passage)
{
"interfaces": [
{
"name": "passage", "type": "periodic",
"side1_domain": "fluid",
"side1_mesh_markers": ["PER1_2D"],
"side2_domain": "fluid",
"side2_mesh_markers": ["PER2_2D"],
"periodicity": "rotational",
"axis": [0, 0, 1],
"angle": 30.0
}
]
}periodicity |
Fields | Unit |
|---|---|---|
rotational |
axis (unit vector), angle |
—, ° |
translational |
translation (displacement vector) |
m |
19.5 Stage / Mixing plane
Connects different fluid domains through spanwise averaging for steady turbomachinery.
{
"interfaces": [
{
"name": "stator_rotor", "type": "stage",
"side1_domain": "stator",
"side1_mesh_markers": ["STATOR_OUTLET"],
"side2_domain": "rotor",
"side2_mesh_markers": ["ROTOR_INLET"],
"axis": [0, 0, 1],
"n_span": 20,
"mixing_method": "area",
"pitch_change": "automatic",
"giles_relax": 0.1
}
]
}| Key | Meaning |
|---|---|
axis |
Machine rotation axis (unit vector) |
n_span |
Number of span-wise averaging bands, hub → shroud |
mixing_method |
algebraic, area, mass, or total — the spanwise-averaging weighting |
pitch_change |
automatic (default) or specified (add pitch_ratio, e.g. 1.278 for a stator/rotor blade-count ratio of 46/36) |
giles_relax |
Giles NRBC under-relaxation applied to the band-averaged values (default 0.1) — see below |
giles_relax is the relaxation factor used to apply span-band averages to boundary conditions. A larger value may converge faster but can cause oscillation or divergence at the stage boundary.
19.6 Frozen rotor
Transforms only the coordinate frame, with no averaging. It preserves asymmetric results, making it useful for stall diagnostics and local-effect analysis.
{
"interfaces": [
{
"name": "stator_rotor_frozen", "type": "frozen_rotor",
"side1_domain": "stator",
"side1_mesh_markers": ["STATOR_OUTLET"],
"side2_domain": "rotor",
"side2_mesh_markers": ["ROTOR_INLET"]
}
]
}19.7 Sliding mesh (transient)
The mesh physically rotates with time integration (analysis.time: unsteady is required). It is always nonconformal.
{
"interfaces": [
{
"name": "stator_rotor_sliding", "type": "sliding",
"side1_domain": "stator",
"side1_mesh_markers": ["STATOR_OUTLET"],
"side2_domain": "rotor",
"side2_mesh_markers": ["ROTOR_INLET"]
}
]
}Sliding is inherently nonconformal, and it pairs with domains[].motion.mesh_motion: true on the moving domain. The two sides form one solve unit, and the intersection is regenerated every physical step.
19.8 CHT (Conjugate Heat Transfer)
Thermally couples a fluid domain and a solid domain. The solid-side domain uses type: "solid" and references the solid block in materials.
{
"interfaces": [
{
"name": "blade_cht", "type": "cht",
"side1_domain": "R1",
"side1_mesh_markers": ["R1_BLADE_UPPER"],
"side2_domain": "Blade_Solid",
"side2_mesh_markers": ["BLADE_INNER"]
}
]
}A CHT interface takes no extra keys. The two walls are always paired through the supermesh, of which a conformal mesh is a special case. The solid side receives the fluid wall’s conductance k_eff / d_n as a Robin coefficient; there is no relaxation factor to set. The fluid-side marker is an isothermal no-slip wall, and its temperature supplies only the value used before the first exchange.
The run writes cht_balance.csv, reporting Q_side1, Q_side2, the mapping integral, and max|ΔT_w|.