v2026.11.16174
Guide / Choosing… / Choosing an equation set

Choosing an equation set

Which equations should the solver solve?

Choose the equation set from the physics. Each set adds terms to the one before it:

  • euler solves the inviscid flow equations. There is no viscosity, and so no boundary layer and no turbulence.
  • viscous solves the Navier–Stokes equations for laminar flow.
  • rans solves the Reynolds-averaged Navier–Stokes equations, with transport equations that model the effect of turbulence on the mean flow.
  • les solves the filtered Navier–Stokes equations. The energy-containing eddies are resolved on the mesh, and only the scales below the filter width are modelled.

Use euler where viscosity plays no part in the result, viscous for laminar flow, rans for turbulent flow whose turbulence is modelled, and les where the energy-containing eddies must be resolved. To resolve eddies away from the wall while keeping RANS near it, use rans with a hybrid model; see Choosing a turbulence model.

typeTurbulenceMesh near the wallSolver
"euler"none; the flow is inviscidno boundary layer to resolvecompressible only
"viscous"none; the flow is laminarresolves the boundary layercompressible or incompressible
"rans"modelled by transport equationsset by the wall treatmentcompressible or incompressible
"les"resolved above the filter widthfine enough to carry resolved eddiescompressible or incompressible

Equation sets

The equations block sits under solver and selects the equation set:

parameters = {
  "config_version": 2,
  "solver": {
    "equations": {
      "type": "rans",
      "turbulence": {"model": "sst"},
    },
    # ... numerical_scheme, fluid_properties, reference_conditions, ...
  },
}

type is case-insensitive on input, so "RANS", "rans" and "Rans" validate alike; it is stored in lower case.

The choice between the compressible and the incompressible solver is a separate one, made by {"solver_settings": {"type": ...}} with "compressible" or "incompressible". Both solvers share the equation types "viscous", "rans" and "les", and the incompressible solver accepts further keys alongside them (see Incompressible equation sets). The incompressible solver has no Euler equation set.

precondition

Low-speed Mach preconditioning modifies the pseudo-time system to restore good conditioning at low Mach number. It therefore has meaning only where a pseudo-time loop exists, in steady runs and under dual time stepping. Global time stepping has no pseudo-time loop to precondition, so precondition is unavailable there. False is the default, and never conflicts with a time-marching choice.

Euler

The compressible Euler equations describe inviscid flow. They suit flows in which momentum greatly outweighs viscosity, at very high speed for example. An Euler mesh need not resolve the boundary layer, and so generally has far fewer cells than the corresponding viscous mesh.

Euler takes only the common type and precondition keys:

parameters["solver"]["equations"] = {
    "type": "euler",
    "precondition": True,
}

Viscous

The viscous equations describe flow that is viscous but laminar. The Reynolds number of the flow determines whether it is turbulent.

A viscous mesh must resolve the boundary layer, and so is generally larger than an Euler mesh. On the same mesh a viscous run is faster than a RANS run, since it solves fewer equations.

Compressible viscous flow takes only the common type and precondition keys:

parameters["solver"]["equations"] = {
    "type": "viscous",
    "precondition": True,
}

RANS

The Reynolds-averaged Navier–Stokes equations, for fully turbulent flow.

Besides the common keys, "rans" requires the turbulence dictionary, which names the turbulence model and any hybrid RANS–LES model layered on it. The choice of model is set out in Choosing a turbulence model.

parameters["solver"]["equations"] = {
    "type": "rans",
    "precondition": True,
    "turbulence": {"model": "sst"},
}

LES

Large eddy simulation resolves the energy-containing turbulent scales directly, and models only the sub-grid scales below the mesh filter width. A non-hybrid LES run solves no additional transport equation for turbulence: the sub-grid-scale model is a kernel inside the viscous solver. The "les" equation set is therefore handled by the same solver path as "viscous", with the sub-grid closure switched on.

The turbulence dictionary of "les" is optional, and selects the sub-grid model; see LES sub-grid models. Leaving it out gives implicit LES, with no sub-grid model.

Hybrid RANS–LES methods carry a transport-equation RANS model beneath their LES branch, and are configured through the RANS equation set, never through "les".

parameters["solver"]["equations"] = {
    "type": "les",
    "turbulence": {"les": "wale"},
}

Incompressible equation sets

With the incompressible solver, {"solver_settings": {"type": "incompressible"}}, the equation types "viscous", "rans" and "les" accept further keys beside type and precondition: the non-orthogonal correction, gradient limiting and central blending, the energy equation, and the stratified-atmosphere settings, among them base_state and theta_perturbation.

The pressure-velocity coupling scheme, its relaxation factors and the SIMPLE pressure settings belong to convergence_control; see Incompressible convergence control.

parameters["solver"] = {
    "solver_settings": {"type": "incompressible"},
    "equations": {
        "type": "viscous",
    },
    # ... numerical_scheme, fluid_properties, reference_conditions, ...
}

Incompressible RANS

The incompressible RANS equations combine these keys with the turbulence dictionary of RANS. The incompressible solver solves the sst and sa-neg turbulence models only.

parameters["solver"] = {
    "solver_settings": {"type": "incompressible"},
    "equations": {
        "type": "rans",
        "precondition": True,
        "turbulence": {"model": "sst"},
    },
    # ... numerical_scheme, fluid_properties, reference_conditions, ...
}

Incompressible LES

The incompressible LES equations combine these keys with the LES turbulence dictionary of LES:

parameters["solver"] = {
    "solver_settings": {"type": "incompressible"},
    "equations": {
        "type": "les",
        "turbulence": {"les": "wale"},
    },
    # ... numerical_scheme, fluid_properties, reference_conditions, ...
}

Reference entries