simpleFoam - OpenFOAM Solver

Solver: simpleFoam   Description

simpleFoam is a pressure-based solver designed for steady-state simulations of incompressible flow. It handles laminar and turbulent, single-phase flows under isothermal conditions, accommodating both Newtonian and non-Newtonian fluids.

The solver uses the SIMPLE (Semi-Implicit Method for Pressure-Linked Equations) algorithm for pressure-momentum coupling, augmented by under-relaxation techniques to enhance convergence. It supports both Multiple Reference Frame (MRF) and porosity modeling and allows easy integration of passive scalar transport equations and source terms.

Widely adopted in various industries, the solver can be found in many scenarios: automotive industry (e.g. car aerodynamics), aerospace industry (e.g. aircraft aerodynamics), architecture, rotating machinery, and internal flows (e.g. pipe and valve flows).

Solver: simpleFoam   Features

  • Steady-State
  • Incompressible
  • Single-Phase
  • Low-Speed Flows
  • SIMPLE Algorithm
  • Subsonic Flow (Ma < 0.3)
  • Laminar and Turbulent (RANS, LES, DES)
  • Newtonian and Non-Newtonian Fluid
  • Pressure-Based Solver
  • Rotating Objects:
    • Multiple Reference Frames (MRF)
  • Passive Scalar
  • Porosity Modeling
  • Source Term (explicit/implicit)
  • Solution Limiters:
    • Velocity Damping

Solver: simpleFoam   Application

Automotive Industry

Aerospace Industry

  • Low-Speed Aircraft Aerodynamics
  • Low-Speed Airplanes Wing Profiles (e.g. Airfoil NACA 0012)


Internal Flows

Rotating Machinery

  • Propellers - without mesh motion, Multiple Rotating Frame (MRF)

Solver: simpleFoam   What can be calculated

Steady-State Flows

  • Pressure and velocity do not change over time. It means we want to simulate a fully developed flow in which parameters (fields) do not vary in the time domain.

Incompressible Flows of Gases and Fluids

  • Particular care should be taken with gases. It is commonly assumed that compressibility effects become increasingly significant for Mach numbers (Ma) > 0.3. However, this threshold should be validated or cross-checked with the literature to determine the actual limit for the Mach number. For instance, in the case of airfoil profiles, this solver correlates well with experimental data for Mach numbers up to 0.6.

Laminar and Turbulent Flows

  • Whether the flow is smooth and orderly (laminar) or chaotic and irregular (turbulent), the solver provides robust models and algorithms to capture the complex dynamics accurately. Laminar, RANS (Reynolds Average Navier Stokes) and LES (Large Eddy Simulation) turbulence models are available.

Single-Phase Flows

  • Only one fluid in the numerical domain is considered. The solver does not support calculations involving multiple fluids simultaneously: for instance, interactions between air and water are not accounted for.

Isothermal flows

  • The solver handles fluid flow problems under the assumption that the temperature of the fluid remains constant throughout the entire flow domain. The energy equation is not solved.

Flow through Porous Media

  • It offers specialized models to handle flow resistance and pressure drop in porous materials, useful in various engineering and environmental applications.

Rotational Flow Systems

  • Multiple Reference Frame (MRF) simulates rotating components, like fans, turbines, or pumps, without actually modeling the rotation of components. The solver divides the computational domain into a stationary and a rotating region, each with its reference frame. The regions are coupled through interface boundaries to exchange information.

Solver: simpleFoam   Incompressible Solvers Comparison

Incompressible Solvers In this group, we have included single-phase, pressure-based solvers for low-speed flows with negligible variations in density, applicable for external and internal aerodynamics (Ma < 0.3) and hydrodynamics. These solvers use incompressibility features for stability and robustness.

Incompressible, Stedy-State - Main Solvers

Incompressible, Transient - Main Solvers

Incompressible, Transient - Simplified Solvers*

  • pisoFoam transient, PISO** algorithm
  • icoFoam transient, PISO** algorithm, laminar flows only (no turbulence), Newtonian fluids only
  • * Dedicated solvers for simplified scenarios, improve stability and computational efficiency
  • ** The PISO algorithm is used for cases with a small Courant number Co < 1
  • DyM - Dynamic Mesh
  • MRF - Multiple Reference Frame
  • SRF - Single Reference Frame
  • Overset - also known as Chimera Grid (Method)
  • SIMPLE - Semi-Implicit Method for Pressure-Linked Equations
  • PIMPLE - merged PISO and SIMPLE
  • PISO - Pressure-Implicit Split-Operator

Solver: simpleFoam   Alternative Solvers

In this section, we propose alternative solvers from different categories, distinct from the current solver. While they may fulfill similar purposes, they diverge significantly in approach and certain features.

Solver: simpleFoam   Tutorial

  • Excellent introductory tutorial to SimFlow, where the fundamental aspects of the software are given. The tutorial focuses on the water flow through a simple T-pipe geometry.
  • Simulation of wind flows around the buildings, with mesh refinement and turbulence modeling.
  • Analysis of the airfoil profile, utilizing a dedicated plugin for 2D airfoil meshing and analysis.
  • External aerodynamic analysis based on the car example. The simulation case includes symmetry conditions and turbulence modeling.
  • Steady-state flow through the purous medium based on the catalytic-converted simulation using a Darcy-Forchheimer porosity model.
  • Analysis of a rotating propeller using an MRF model that enables steady-state simulation.
  • A two-dimensional steady-state analysis with periodic boundary conditions and pressure jumps.
  • Analysis for steady-state, two-dimensional airflow around the wing’s airfoil.

Solver: simpleFoam   Validation Cases

  • Well-known CFD benchmark for external aerodynamics. Steady-state analysis of the flow around the Ahmed body at Re = 2 784 000. Validated against ERCOFTAC test data.
  • Wind environmental analyses with two validation cases of a single building and an urban area.
  • It is a standard validation benchmark for CFD solvers that includes the study of drag and lift force on wing profile NACA 0012 for Re = 6000000 and Mach number Ma = 0.15.
  • Simulation of an asymmetric diffuser, also referred to as a Buice-Eaton 2D diffuser. It models two-dimensional, incompressible, turbulent, fully developed flow with a Reynolds number of 20,000.

Solver: simpleFoam   Results Fields

This solver provides the following results fields:

  • Primary Results Fields - quantities produced by the solver as default outputs
  • Derivative Results - quantities that can be computed based on primary results and supplementary models. They are not initially produced by the solver as default outputs.

Primary Results Fields


\(U\) [\(\frac{m}{s}\)]

Kinematic Pressure \(p/\rho\)

\(p\) [\(\frac{m^{2}}{s^{2}}\)]

Kinematic Pressure It is a pressure normalized by density. To obtain pressure in Pascals [Pa], multiply kinematic pressure by the fluid’s reference density. Read More: Kinematic Fluid Properties

Derivative Results


\(P\) [\(Pa\)]


\(\omega\) [\(\frac{1}{s}\)]

Peclet Number

\(Pe\) [\(-\)]

Stream Function

\(\psi\) [\(\frac{m^2}{s}\)]

Q Criterion

\(Q\) [\(-\)]

Wall Functions (for RANS/LES turbulence)

\(y^+\) [\(-\)]

Wall Shear Stress

\(WSS\) [\(Pa\)]

Turbulent Fields (for RANS/LES turbulence)

\(k\) \(\epsilon\) \(\omega\) \(R\) \(L\) \(I\) \(\nu_t\) \(\alpha_t\)

Volumetric Stream

\(\phi\) [\(\frac{m^{3}}{s}\)]

Passive Scalar

\(scalar_i\) [\(-\)]

Forces and Torque acting on the Boundary

\(F\) [\(N\)] \(M\) [\(-\)]

Force Coefficients

\(C_l\) [\(-\)] \(C_d\) [\(-\)] \(C_m\) [\(-\)]

Average, Minimum or Maximum in Volume from any Result Field

\(Avg\) \(Min\) \(Max\)

Solver: simpleFoam   SIMPLE Algorithm

The SIMPLE (Semi-Implicit Method for Pressure-Linked Equations) algorithm is an iterative method used in computational fluid dynamics to solve the Navier-Stokes equations for incompressible flows.

Essentially, only equations of momentum and pressure (obtained by clever manipulation of continuity and momentum equations) are solved together with scalar transport equations of turbulence variables. The solver uses the segregated solution strategy, which means that transport equations are solved sequentially, and the solution of the preceding equations is used in the subsequent equations.

The pressure equation is derived to ensure velocity and pressure coupling and, therefore, to avoid high-frequency oscillations. First, the momentum equation is solved to get the velocity field, which does not satisfy the continuity equation. Velocity calculated in the first step is called momentum predictor. Next, the pressure equation is derived, and then the newly available pressure is used to calculate again the momentum equation - momentum corrector. At the end of the iterative process, turbulence momentum equations are solved.

Solver: simpleFoam   Equations

This solver solves the continuity equation

\[\nabla \cdot \vec U = 0\]

and momentum equation

\[\nabla \cdot (\vec U \otimes \vec U) - \nabla \cdot \vec R = - \nabla p + S\]


  • \(\vec U\) - velocity vector
  • \(p\) - pressure
  • \(\vec R\) - stress tensor
  • \(S\) - momentum source

There are four unknowns in the above equations: 3 components of velocity and pressure. However, the continuity equation is rather an additional condition applied on the momentum equation. Therefore, we are missing the equation for pressure.

To get the pressure equation, we have to take the divergence of the momentum equation and substitute this into the continuity equation to get the Poison equation for the pressure. To solve the Poisson equation, the SIMPLE algorithm (Semi-Implicit Method for Pressure-Linked Equations) is used. The momentum and pressure equations are solved in an iterative manner:

  1. Momentum equation is solved to compute an intermediate velocity field - momentum predictor
  2. The pressure equation is solved to provide a correction to the pressure field
  3. Updated velocity is calculated - momentum corrector

Under-relaxation in SIMPLE Algorithm

The SIMPLE algorithm was originally intended for steady-state flows. It means that the time derivative

\[\frac{\partial \vec U}{\partial t} = \frac{U_p^{i+1} - U_p^i}{\Delta t}\]

is not present in the equations.

If we assume for a moment that the time derivative exists in the equation, then based on the right-hand side we can notice that if \(\Delta t\) gets very small, the time derivative can get very large. It can be much larger than convection or diffusion terms (\(\nabla^2 \vec U and \nabla \cdot (\vec U \otimes \vec U)\)) in the equation (or any other like body forces and source terms).

After discretizing equations of motion, the time derivative always gets on the diagonal of the matrix \(\mathbb M\). So, small time steps improve diagonal dominance, which means that the terms that appear on the diagonal of matrix \(\mathbb M\) are higher than the others. From the linear algebra point of view, it simply means that the equations are more stable and are easier to solve.

For steady-state flows, if we do not have a time derivative, the equations are more likely to be unstable. To deal with this problem, under-relaxation is applied to artificially increase the diagonal dominance of matrix \(\mathbb M\). However, the under-relaxation used in the SIMPLE algorithm for the momentum equation is different from the standard one.

We can write down the general form of the discretized equation as:

\[[a_pU_p + \sum_Na_NU_N = R_p]\]

where \(a_pU_p\) are the diagonal terms, \(a_NU_N\) are off-diagonal terms and \(R_p\) represents the right-hand side. Under-relaxation is done by adding two additional terms:

\[[\frac{1 - \alpha}{\alpha}a_pU_p + a_pU_p + \sum_Na_NU_N = R_p + \frac{1 - \alpha}{\alpha}a_pU_p^{old} ]\]

where \(\alpha\) represents the under-relaxation factor that takes the value of \(0 < \alpha \le 1\).

The reason why we can add those terms is that when converged \(U_p^{old} = U_p\) and the terms cancel out. We can also rearrange to get the following:

\[[\frac{1}{\alpha}a_pU_p \sum_Na_NU_N = R_p + \frac{1 - \alpha}{\alpha}a_pU_p^{old}]\]

The diagonal term gets larger as \(\alpha \rightarrow 0\). This process is completely artificial and is introduced to increase the diagonal dominance of matrix \(\mathbb M\).

We should also mention the traditional way the under-relaxation is done to the fields, like pressure, temperature, or turbulent kinetic energy, for example:

\[p = \alpha p_{new} + (1 - \alpha)p_{old}\]

There are two different types of relaxation. One is applied to the momentum equation to increase the diagonal dominance (stability), and the other to the fields.

The under-relaxation is controlled in SimFlow in the Solution section. For each field, value between 0 and 1 can be defined. 1 means that no under-relaxation is applied, 0 means that "full" relaxation is defined. Under-relaxation simply means that the variable changes from one to the other interation by a certain amount. And again, under relaxation factor of 1 means that the change is not scaled at all, while factor of 0.5 means that the variable change is scaled by 50%.


SimFlow offers additional variation of SIMPLE algorithm called consistent SIMPLE or SIMPLEC. By default, SIMPLEC is used and the User must explicitly choose SIMPLEC in the Solution section. The SIMPLEC formulation for the pressure-velocity coupling needs a small amount of under-relaxation for velocity and other transport equations. No relaxation for pressure is required. It results in more robust solution and faster convergence.