27  Complete input structure

Strict JSONC and 14 top-level blocks

A Wake CFD case combines mesh, physical models, domains and boundary conditions, numerical methods, and run and output settings in one input structure. Desktop enters the same information through panels; CLI, batch, and automation workflows pass it as a JSONC file. Read this page after the individual topics to review their relationships and the reproducible run unit.

27.1 Format rules

  • // line comments and /* ... */ block comments are allowed.
  • JSON5 syntax such as trailing commas and unquoted keys is not allowed.
  • Write arrays as arrays; for example, "mesh": [{ ... }] and "domains": [{ ... }].
  • Write string lists as arrays too; for example, "fields": ["default"].

27.2 The 14 top-level blocks

27.3 The 13 top-level blocks

Block Required Role
mesh ✓ Mesh files and scope
analysis ✓ Solver, time, and dimension
models ✓ Euler/NS, regime, and turbulence
materials ✓ EOS and material properties
reference ✓ Reference pressure, temperature, density, velocity, and moment reference
domains ✓ Domains, zones, and boundary conditions
interfaces △ Periodic, stage, GGI, and other domain connections
numerical_method ✓ Solver-specific numerical methods and linear solvers
initialization ✓ Initialization or restart
run_control ✓ Iteration, convergence, and time stepping
outputs △ Restart and file output
monitoring △ Console, residual CSV, and named monitors
expert_parameters △ Internal algorithm tuning
expressions △ Named constants and reusable physical-quantity expressions

wake_version is an additional optional file-level metadata key. expressions is a regular optional top-level configuration block.

Key Required Role
wake_version △ Solver version when the file was authored (for compatibility checks)

27.4 Minimal structure

{
  "mesh": [{ "file_name": "mesh.cgns", "format": "cgns" }],
  "analysis": { "solver": "dbns", "time": "steady", "dimension": 2 },
  "models": { "type": "euler" },
  "materials": [{
    "name": "Air",
    "type": "pure",
    "eos": { "type": "ideal_gas", "gas_constant": 287.058 }
  }],
  "reference": {
    "pressure": 101325.0,
    "temperature": 273.15,
    "density": 1.225
  },
  "domains": [{
    "name": "fluid",
    "material": "Air",
    "boundaries": []
  }],
  "initialization": { "type": "auto" },
  "numerical_method": {
    "dbns": {
      "convective": { "scheme": "roe", "spatial_order": 2 },
      "time_integration": "euler_implicit"
    }
  },
  "run_control": {
    "iteration": 1000,
    "cfl": { "type": "constant", "fluid": { "value": 5.0 } }
  }
}

27.5 Four analysis axes

Axis Key Values
Physics models.type euler, navier_stokes
Solver analysis.solver dbns, pbns, fr
Turbulence models.turbulence.model none, sa, sst, LES/DES models
Time analysis.time steady, unsteady

For example, the combination of models.type=navier_stokes and models.turbulence.model=sa represents RANS-SA. There is no separate rans solver enum.

27.6 Constants and expressions

For the full reference, including reusable-expression expansion, reserved names, and validation behavior, see Expressions.

Physical-quantity fields—such as boundary-condition velocity, pressure, and temperature, and initialization fields—can accept expressions instead of constants. The following forms are supported.

{
  "expressions": {
    "V0": 10.0,
    "H": 1.0,
    "inlet_profile": "V0*(1-(y/H)**2)"
  },

  "domains": [{
    "boundaries": [
      { "velocity": 10.0 },
      { "velocity": { "type": "constant", "value": 10.0 } },
      { "velocity": { "type": "expression", "expr": "$inlet_profile" } },
      { "velocity": "V0*(1-(y/H)**2)" }
    ]
  }]
}

The boundary objects above illustrate field syntax only; they omit required name, type, and mesh-marker bindings and are not a runnable case.

The four velocity forms above, in order: a bare number; the same thing written explicitly (the bare number is auto-converted to this form during parsing); a reference to a named expression declared in expressions (the whole text is the reference, so it takes the $name shorthand); and an inline expression written as a bare string, mixing a named constant (V0) into a larger formula (no $ needed when it is only part of the expression). The object form carries the text in its expr key; the bare string is the same thing written short.

Numerical parameters such as CFL, tolerance, and relaxation do not use this form; it applies only to physical-quantity fields. A handful of names are reserved by context and can’t be redefined: x, y, z, t (boundary/initialization/source expressions), T, P, rho (material/source expressions), and pi.

27.7 Inheritance and composition

{ "$extends": "base.jsonc", "run_control": { "iteration": 3000 } }

$extends and --overlay use RFC 7396 Merge Patch: objects merge while arrays are replaced. To modify only a specific array element, use --patch with RFC 6902 JSON Pointer.

$extends chain → --overlay → --patch

For execution and case reuse, see Running Wake CFD; for each block’s meaning, see its individual topic in this reference.