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.