19  Interfaces

periodic, stage, frozen_rotor, sliding, GGI, CHT

Placeholder for Wake CFD Desktop Domain and Boundary Condition modal

Placeholder for the GUI Interface panel. Replace with the actual screen for selecting the interface type and markers on both sides.

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|.