22 Initialization
auto, specified, restart, FR preset
22.1 What this setting is
Initial conditions define the flow field from which iterative calculation starts. Steady analyses often begin from a uniform freestream; for complex or unsteady flows, a previous solution (restart) can greatly reduce convergence time. The initial field does not replace final physical conditions, but a field that differs too much from boundary conditions can cause early divergence or unnecessary iterations.
22.2 Configure in the GUI
specified selected. The fields shown belong to that type; choosing another type replaces them.
| GUI control | Input key | What to choose |
|---|---|---|
| Type | initialization.type |
auto, specified, or restart; fr_preset is listed but disabled. The rest of the dialog follows this choice. |
| Mach | initialization.mach |
DBNS only. An empty field takes the operating state’s value. |
| Pressure [Pa] | initialization.pressure |
Required closure on both DBNS and FR. |
| Temperature [K] | initialization.temperature |
DBNS closure. FR ignores it. |
| Direction type | initialization.direction.type |
cartesian (Cartesian components) or angles (AoA / AoS). Leave the direction unset to take the farfield’s. |
| Direction X / Y / Z | initialization.direction.cartesian.{x,y,z} |
The freestream direction, normalised by the solver. |
| AoA / AoS [deg] | initialization.direction.angles.{aoa,aos} |
Shown in place of the components when Direction type is Angles. |
An empty field is not zero: the dialog greys it as (unset) and the key is left out of the deck, so the operating state supplies the value. The dialog says so above the fields it applies to.
The Desktop writes a newer initialization than the verified solver reads.
The Desktop has no v0.23.0 release, so this section describes the current build. Its deck vocabulary is ahead of the command-line solver documented in the rest of this page: it writes type: "specified" and a direction object where v0.23.0 reads type: "uniform" and flow_direction. Author a deck for the command-line solver from the JSONC sections below, not from the key column above. The two converge in a later release.
initialization selects how to create the solution at calculation start. It is a tagged union whose active fields depend on type.
{
"initialization": {
"type": "uniform",
"mach": 0.8,
"pressure": 101325.0,
"temperature": 273.15,
"flow_direction": [1.0, 0.0, 0.0]
}
}22.3 type
| Value | Meaning |
|---|---|
auto |
Extract the initial state automatically — DBNS-only behavior; see the callout below |
uniform |
One uniform state from the constant fields of this block. An omitted field takes the operating state’s value |
expression |
A per-point field: each value is an expression in x, y, z |
fr_preset |
Preset for FR validation |
restart |
Read a .wsol restart file |
type: "auto" means something different on each solver. DBNS extracts the state from a boundary condition (farfield first, then an isentropic inlet/outlet, else it’s an error). FR has no such BC-extraction path at all — auto on FR is always quiescent: ρ = 1, u = v = 0, p = 1, regardless of what boundary conditions the case defines.
22.4 uniform
The same key means something different — or nothing at all — depending on the solver’s thermodynamic closure.
| Key | DBNS (FVM) | FR |
|---|---|---|
mach |
Consumed | Not consumed — silently has no effect |
flow_direction |
Consumed | Not consumed — silently has no effect |
temperature |
Required closure (EOS(P,T) derives ρ) |
Not consumed — silently has no effect |
density |
Not consumed (derived from EOS) | Required closure |
pressure |
Required closure | Required closure |
Setting mach/flow_direction/temperature on an FR case does nothing — no warning, no error, just silently ignored — because FR’s closure is (ρ, u, v, w, p) only. To give an FR case a freestream, write density + pressure + velocity_x/velocity_y/velocity_z instead.
{
"initialization": {
"type": "uniform",
"mach": 0.8,
"pressure": 101325.0,
"temperature": 273.15,
"flow_direction": [1.0, 0.0, 0.0]
}
}{
"initialization": {
"type": "uniform",
"density": 1.225,
"pressure": 101325.0,
"velocity_x": 100.0,
"velocity_y": 0.0,
"velocity_z": 0.0
}
}flow_direction is a [x, y, z] unit vector, normalised on read; leaving it out takes the farfield’s direction. Angle of attack is not set here — it is a flight condition and belongs to the far-field boundary (domains[].boundaries[].aoa). Giving any velocity_x/y/z instead replaces both mach and flow_direction.
22.4.1 Turbulence seeding
Optionally seed the internal turbulence field directly, independent of the farfield/inlet boundary condition’s own turbulence block:
{
"initialization": {
"type": "uniform",
"mach": 0.8, "pressure": 101325.0, "temperature": 273.15,
"flow_direction": [1.0, 0.0, 0.0],
"turbulence": {
"intensity": 0.05,
"intermittency": 1.0,
"nu_factor": 3.0,
"eddy_viscosity_ratio": 10.0
}
}
}| Key | Meaning |
|---|---|
intensity |
SST/k-ω turbulence intensity (0.05 = 5%) |
intermittency |
Transition intermittency γ (transition models) |
nu_factor |
SA freestream ν̃/ν multiplier |
eddy_viscosity_ratio |
Inflow μ_t/μ ratio; length_scale [m] and hydraulic_diameter [m] are alternatives, and only one may be given |
Setting any one of these switches the solver to seeding the whole field from this block instead of scanning boundary-condition turbulence values (the default behavior when the block is omitted entirely). The block is ignored with type: "restart", with a warning.
22.4.2 Per-point fields
Per-point fields have a branch of their own: set type: "expression" and write each scalar as an expression in x, y, and z. A value is a bare string, or the object form { "type": "expression", "expr": "…" }; a bare number, or { "type": "constant", "value": … }, is still a constant.
{
"initialization": {
"type": "expression",
"pressure": { "type": "expression", "expr": "101325 + 1000*exp(-(x^2 + y^2))" },
"temperature": 300.0,
"velocity_x": "sin(2*pi*x)",
"velocity_y": 0.0,
"velocity_z": 0.0
}
}pressure and temperature are required in this branch on the finite-volume solvers. mach is a plain number and takes no expression. PBNS accepts auto and uniform only.
22.5 FR preset
Use the following preset for an FR validation case.
{
"initialization": {
"type": "fr_preset",
"fr_preset": {
"name": "taylor_green",
"taylor_green": { "Ps": 111.607 }
}
}
}Supported presets are isentropic_vortex, yee_shu, taylor_green, and density_wave_diag. Place each preset’s parameters in a subblock with the same name: isentropic_vortex.{M, R, S}, yee_shu.{eps, u_inf, v_inf}, taylor_green.Ps, or density_wave_diag.{rho0, u0, v0, p0, A}.
22.6 restart
{
"initialization": {
"type": "restart",
"restart_file": "restart_flow_001.wsol"
},
"run_control": { "resume": true }
}These are two different intents, distinguished by run_control.resume:
run_control.resume |
Intent | Behavior |
|---|---|---|
false (default) |
Warm-start | Only the flow field is taken as the initial value; the iteration counter, physical time, and BDF history all reset. Use this to start a new case (an AoA/CFL sweep, say) from an existing solution. |
true |
Continuation | The iteration counter, physical time, residual-reduction origin, and adaptive-CFL state are all restored, so the run continues as if uninterrupted — see resume. |
Solver support. All three solvers read a restart file. PBNS accepts auto, uniform, and restart, and rejects fr_preset before the run starts; a PBNS restart file must carry u, v, w, p, and T. fr_preset is FR-only — using it on a DBNS or PBNS case is an input error. If the restart file carries no turbulence fields, they are filled from the first farfield, then the first inlet, then the defaults (SST I 0.05 and μ_t/μ 10, SA 3).
22.7 Configure from the CLI
{
"initialization": {
"type": "uniform",
"mach": 0.8395,
"pressure": 101325.0,
"temperature": 273.15,
// 3.06 deg angle of attack as a unit vector; the angle itself is set on
// the farfield boundary, which this only has to agree with
"flow_direction": [0.998574, 0.0, 0.053387]
}
}