## 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 Frames (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**

- Car Aerodynamics (e.g. Car Wind Tunnel)

**Aerospace Industry**

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

**Architecture**

- External Aerodynamics of Buildings (e.g. Wind around Buildings)

**Internal Flows**

- Pipe Flows (e.g. Pipe Flow)
- Valve 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 Frames (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

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**

- simpleFoam steady-state, SIMPLE algorithm
- overSimpleFoam extension of simpleFoam with Overset
- SRFSimpleFoam variant of simpleFoam resolved in SRF

**Incompressible, Transient - Main Solvers**

- pimpleFoam transient, PIMPLE algorithm, DyM
- overPimpleDyMFoam extension of pimpleFoam with Overset, DyM
- SRFPimpleFoam variant of pimpleFoam resolved in SRF

**Incompressible, Transient - Simplified Solvers***

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

- rhoSimpleFoam compressible version of
`simpleFoam`

, small density changes - buoyantBoussinesqSimpleFoam extension of
`simpleFoam`

with heat transfer and buoyancy using Boussinesq approximation

## 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**

Velocity | \(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**

Pressure | \(P\) [\(Pa\)] |

Vorticity | \(\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

and momentum equation

where:

- \(\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:

- Momentum equation is solved to compute an intermediate velocity field - momentum predictor
- The pressure equation is solved to provide a correction to the pressure field
- 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

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:

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:

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:

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:

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

### SIMPLE vs. SIMPLEC

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