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

Wake CFD Desktop Initialization dialog with Type set to Specified, unset Mach, pressure and temperature fields, and a Cartesian direction of 1, 0, 0
Figure 22.1: The Initialization dialog with 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.

Note

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
Warning

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
Important

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

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]
  }
}