Skip to content
SHD Sim
Menu
Documentation menu

Draft. This manual is new and still growing. If something here does not match what you see in the software, the software is right — tell us and we will fix the page.

Steady or transient

The Models panel asks for a time dependency before it asks for almost anything else, because the answer changes the solver, the run control, the cost and — for some analysis types — whether the case can be set up at all.

The failure mode this page exists to prevent is specific and common: a steady solver pointed at a flow that has no steady solution will run happily to the iteration limit, produce a stable-looking number, and that number is not the answer to anything.


What a steady solver is doing

A transient solver marches in time. It takes the field at time t, advances it to t + Δt, and repeats. Each step is a physical instant, and the sequence is a history.

A steady solver does not. SIMPLE and its relatives iterate towards a solution of the steady equations — the equations with the time derivative deleted. The "iteration" counter is not a clock. There is no time in the case. Iteration 500 is not later than iteration 400; it is closer to satisfying a set of algebraic relations.

That is why the Simulation control panel asks for Iterations in a steady case and End time in a transient one. It is not a cosmetic relabelling: they are different quantities, and asking how many seconds a steady run represents has no answer.

The consequence follows directly. A steady solver converges if a steady solution exists. If one does not, there is nothing for the iteration to converge on, and the solver does not know that.


The plateau, and why it is not a result

Point a steady solver at vortex shedding, or a buoyant plume, or a sloshing free surface, and here is what you see:

  • Residuals fall a few orders of magnitude and then stop, or settle into a regular oscillation
  • The monitored drag coefficient wobbles at some amplitude and keeps wobbling
  • Adding iterations changes nothing except the run time

It is tempting to read the wobble's average as "the steady answer, plus some numerical noise". It is not, and the reason is worth being precise about.

The steady equations are not the time-average of the unsteady equations. When you average a periodic flow, the nonlinear convective term does not average to the convective term of the mean — the fluctuations leave behind an extra stress, in exactly the way the fluctuations in a turbulent flow leave behind the Reynolds stress. A steady RANS solver has no term for that residue, because the model it carries was calibrated for turbulent fluctuations, not for a coherent shedding cycle.

So the plateau is a fixed point of a set of equations that the real mean flow does not satisfy. It is a number. It is stable. It is not the time-average, and the difference is not small for strongly shedding flows — a steady solve behind a bluff body typically under-predicts drag, because it produces a steady wake that does not entrain the way a shedding one does.


Telling the difference

Look at the monitor, not the residual. This is the whole diagnostic. A residual plateau is ambiguous — it could be an unsteady flow, or a mesh quality problem, or excessive under-relaxation. A monitored quantity that oscillates with a regular period and constant amplitude, while the residuals sit flat, is an unsteady flow being solved steadily.

The verification checklist in the report makes the same point where it can: it judges convergence on the quantities the report headlines, and where they will not settle it says so, and notes that a steady run that will not settle is often unsteady rather than unconverged. It is worth checking the trace for an oscillation before adding iterations.

Ask whether the physics has a frequency. Is there a Strouhal number for this shape? Is there a natural convection cell that will overturn? Is there a free surface that can slosh? Is there a rotating part passing a stationary one? If the flow has an intrinsic time scale, it has no steady solution, and the question is settled before you run anything.

Watch for a solution that will not sit still under refinement. Some flows have a steady solution that is unstable — it exists mathematically and the physical flow will not stay on it. A steady solve can find it, and a finer mesh or a lower relaxation may find a different one.


When steady is right

Most of the time, and it should be the default question rather than the concession.

Steady is right when you want the mean and the mean is genuinely steady: attached external aerodynamics at fixed incidence, duct and manifold flow, a heat exchanger at a fixed operating point, ventilation at a fixed supply rate, a pressure drop, a load case. In all of these, a steady solve reaches a usable answer in a fraction of the cost of a transient one that would have to be run long enough to average.

The cost difference is not marginal. A steady run converges in iterations; a transient run needs enough steps to clear the initial transient, and then enough further steps to average over several periods of whatever it is you are averaging. Both have to satisfy the Courant number constraint on the step size, which the steady run does not.


When the choice is not yours

Several analysis types have no steady form at all, and the application forces transient rather than letting you configure a case that cannot run.

The analysis types with no steady counterpart are Multiphase (VoF), Marine & Waves, Compressible multiphase, Free surface (potential), Multiphase (Euler-Euler), Particles (Lagrangian), Spray, Combustion / Reacting, Premixed combustion, Cavitation, Supersonic / shock, Miscible mixing, Sediment / drift flux, Shallow water, Electrostatics, Magnetostatics, Magnetohydrodynamics and Molecular / rarefied. These are solved by executables that integrate in time; there is no steady solver to select. The last of those is the clearest case: both particle methods march particles forward in time, and "steady DSMC" is not a slower answer, it is not a thing.

Pinning a solver overrides the family. If you choose a solver the catalogue marks steady-only, that solver is the steady form of its family whatever the list above says. Three of the parcel solvers — simpleSprayFoam, simpleCoalParcelFoam and simpleReactingParcelFoam — are exactly that, inside the spray and Lagrangian families.

Conjugate heat transfer is a default, not a constraint. A CHT case starts transient because chtMultiRegionFoam is what it starts with, and that solver builds a PIMPLE control per region. But CHT does have a steady form — chtMultiRegionSimpleFoam — and choosing it switches the case back. If your question is "what temperature does this settle at", that is the solver to pin.

Adding a moving mesh to a steady case switches it to transient too, and says so in the log: "Switched to Transient: a moving mesh has no steady form." It also changes the algorithm from SIMPLE to PIMPLE, which changes what the Models panel offers — a steady case is given SIMPLE and SIMPLEC, a transient one PIMPLE and PISO. A moving mesh has no steady form by definition, and the alternative behaviour — a case that looks configured, writes a motion dictionary and aborts on the first step — is worse.

Scale-resolving turbulence models are the same story from the other direction. LES and the DES hybrids resolve eddies, and an eddy is an unsteady object. They cannot be run steady.

If you select a steady time dependency for something that has no steady form, the Problems tab says so with the solver named, before the run rather than fifteen minutes into it.


Choosing

Deciding between steady and transient: if the analysis type has no steady form the run is forced transient. Otherwise, a flow with an intrinsic frequency such as shedding or sloshing is transient, because a steady solve plateaus and the plateau is not the mean; so is a case where the unsteady history is itself the answer. Everything else is steady, which is far cheaper and the right model for the question.

The useful middle

A steady solve makes an excellent initial condition for a transient one.

Starting a transient run from a uniform field means spending real time steps washing out an initial condition that was never physical. Starting from a converged steady solution puts the transient run near the flow it is going to develop, and the initial transient is shorter. For a shedding case the steady solution will not shed on its own — it has to be perturbed or simply left to go unstable — but it still saves the cost of establishing the bulk flow.

The application supports this as restarting from an existing solution; see the how-to guides.


If you do run transient

Three things follow immediately, and each is a separate decision:

  1. The time step is not free. It is bounded by the Courant number, which is bounded by your smallest cell. See Courant number.
  2. The run has to be long enough twice over — long enough to clear the initial transient, and then long enough to average over several periods of whatever you are averaging. Averaging across the initial transient contaminates the mean.
  3. Convergence means something different. In a transient run it is a per-time-step property: each step must converge within its correctors. A residual plot that sits flat and low across the whole run is normal and correct, not a stalled solve. See Convergence and residuals.

Where you act on this