CFD: PIMPLE Algorithm

\underline{\textbf{Introduction}}
The PIMPLE Algorithm is a combination of PISO (Pressure Implicit with Splitting of Operator) and SIMPLE (Semi-Implicit Method for Pressure-Linked Equations). All these algorithms are iterative solvers but PISO and PIMPLE are both used for transient cases whereas SIMPLE is used for steady-state cases. This article discusses PIMPLE, what it does, how it is set up, and how it can be used.

The best way to think about the PIMPLE algorithm is to imagine it as a SIMPLE algorithm for every time step, where outer correctors are the iterations, and once converged will move on to the next time step until the solution is complete. Better stability is obtained from PIMPLE over PISO for this reason, especially when dealing with large time steps where the maximum Courant number may consistently be above 1 or when the nature of the solution is inherently unstable.

\underline{\textbf{Outer Correctors}}
The number of Outer correctors of the PIMPLE algorithm, as above mentioned, defines how many outer iterations to perform—that is, how many times the system of equations are performed before it is forced to move onto the next time step, regardless of whether that time step has converged or not.

The number of outer correctors does not mean that it will perform all of these iterations; it will simply iterate until time step convergence is reached, and move on to the next time step. The criteria for time step convergence is defined as the absolute tolerance of the solver, which is by default 1e-5. This makes the Algorithm fast when stable but gives room for many iterations when instabilities occur.

The number of iterations in the PIMPLE algorithm guide (OpenFOAM, 2017) is recommended to be between 50 and 1000, where the default is 2. It is 1 to make the algorithm act like the PISO algorithm.

Another thing to note about this algorithm is that it will solve with relaxation factors until the last outer iteration. Thus, if you were running for 50 iterations, then the algorithm will run the first 49 with relaxation factors and 1 without.

\underline{\textbf{Inner Correctors}}

The number of inner correctors is the number of times the pressure is corrected within an iteration. Typically this should be set low (suggested to be 1-3 in the PIMPLE guide). A large number of correctors rarely improve results and should conform to this recommendation.

\underline{\textbf{Stability}}

The stability of this algorithm can be improved by reducing the relaxation factor, by doing this convergence will take longer and therefore more outer correctors should be added (similar to steady-state, SIMPLE). This is useful in protecting against unstable solutions where the maximum Courant number is likely to spike. There are limits to this and sometimes it is better to simply reduce the time step size or if auto time stepping reduces the maximum Courant number.

\underline{\textbf{References}}

OpenFOAM guide/The PIMPLE algorithm in OpenFOAM
OpenFOAM (2017) available at: Spalart-Allmaras Model
OpenFOAM v5 User Guide: 4.5 Solution and algorithm control
OpenFOAM (.nd) available at: https://cfd.direct/openfoam/user-guide/fvsolution/


Credits to PowerUser Darren (@1318980)


Contributions and suggestions for improving this page are welcome, please private message @1318980.

14 Likes

Hi
Thanks for your useful article
As you said relaxation factors have been used in the SIMPLE algorithm and not in the PISO algorithm. So What about PIMPLE? Are we steel using relaxation factors just in the SIMPLE part of PIMPLE or we have to use them in PISO part too?

Hi dkomaizi, take a look into this PIMPLE guide, where a detailed step-by-step guide is presented. It complements nicely the information given above.

2 Likes