CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Running, Solving & CFD (
-   -   pimpleFoam vs simpleFoam vs pisoFoam vs icoFoam? (

phsieh2005 September 4, 2009 16:40

pimpleFoam vs simpleFoam vs pisoFoam vs icoFoam?

Can someone explain the difference among pimpleFoam, simpleFoam, pisoFoam, and icoFoam?

When to select which solver?



ata September 5, 2009 04:01

icoFoam is transient solver for incompressible, laminar flow of Newtonian fluids.

pimpleFoam is large time-step transient solver for incompressible, flow using the PIMPLE(merged PISO-SIMPLE) algorithm.

pisoFoam is transient solver for incompressible flow.
Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected.

simpleFoam is steady-state solver for compressible, turbulent flow



David* September 21, 2009 03:53

simpleFoam is for incompressible, turbulent flow.

ata September 21, 2009 04:51

pimpleFoam vs simpleFoam vs pisoFoam vs icoFoam? Reply to Thread
Hi David
Thanks it's true.


kjetil February 18, 2010 11:02

Using LES with simplefoam
May LES be used with simpleFoam?

florian_krause February 18, 2010 11:20


simpleFoam is a steady-state solver, as ata already mentioned.....

Thus, No you cannot use simpleFoam for LES. Use pisoFoam instead!


nileshjrane September 10, 2010 05:36


I am getting different results for same case using icoFoam and simpleFoam. icoFoam seems to give better results. What could be the reason?? Isn't the two suppose to give similar results??? BTW i am using the default solvers coming with OF170. Only change is i changed fvscheme for U to upwind (which is the scheme used in simpleFoam anyway).

Djub September 5, 2012 11:14


I have the same kind of question: what is the interest of pisoFoam compared to pimpleFoam -and vice-versa.
I am trying to simulate the interaction between wind and buildings: my simulation has to be unsteady, incompresible, with large to very large Reynolds number and complex geometry. Should I use pisoFoam or pimpleFoam? And why?

In your case, Nilesh, icoFoam is unsteady laminar, whereas simpleFoam is stead turbulent. Equations are not similar!

I know people who have choosen to prefer pimpleFoam over pisoFoam ( But they are running RANS, I would like to perform LES. Any advice or explaination ?

owayz September 5, 2012 16:41

Using LES or RANS doesn't matter. People who normally prefer pimpleFOAM say that pimple Algorithm is more robust and efficient. They also say that it can be used for larger (compared to piso, where courant number of > 1 could result in diverged simulation) time steps. If larger time step is of interest (as in some sudo transient cases ) then surely pimple is an attractive algorithm.
You said that you want to do LES. In LES you might also need to think about time scales and you must keep your time step smaller than the time scales of the large eddies which you are actually simulating.
What I have observed is that people normally keep the courant number less that 0.5-0.4 . Pimple offers you more control by providing nOuterIterations parameter. Where as if nOuterIterations is = 1, you pimple is just simply a piso Algorithm. So definitely some addition cost on computation with more outer iterations could improve your results, but it is sometimes an important decision whether you want to improve the results further or not.


Djub September 6, 2012 04:21

Hi Awais. Thanks a lot for your advices. But I did not catch everything:o

"as in some sudo transient cases" . What means "sudo" ?

My goal is to model very large Reynolds problem: about 1e5 or 1e6. Thus, keeping a little Co is out of my CPU capabilities. Today I am running with Co close to 1. TJunction tutorial works with a Co of 5, and only 1 nOuterIterations . So this tuto is actually a piso algorithm?

I think about using a Co of 5 (same as the tuto), and 1 nOuterIterations (just to be not only piso but real pimple). Do you think it'd be OK?

Another aspect: I am not familiar with the concept of "final" solvers. For the momment I used the same as "normal" ones:

p {solver PCG; preconditioner DIC; tolerance 1e-06; relTol 0.1; }
pFinal { solver PCG; preconditioner DIC; tolerance 1e-06; relTol 0; }
"(U|k)" { solver PBiCG; preconditioner DILU; tolerance 1e-05; relTol 0; }
"(U|k)Final" { solver PBiCG; preconditioner DILU; tolerance 1e-05; relTol 0; }
Is this OK? Or does it make no sense? Or is it a waste of CPU?

owayz September 6, 2012 09:12

Hi Julien,
By Sudo Transient I mean a simulation which is physically not transient, but you use a transient flow solver like pimpleFoam. To see this in action you can also have a look at the angleDuct tutorial in rhoPimpleFoam/ras. There the courant number is 10.
But if you are using LES, you would need time Averaging of the solution. Plus time scale of the structures in flow is also important.
If you are doing RANS simulation then may be the setup you have just said (i.e. Co 5 and 1 nouterIteration) might work. But again in transient simulation you will be interested in averaged values of the flow, so just think whether you will be able to capture all the flow fluctuations with that time step or not.
My understanding is that you should keep Co < 1 (specially) when your flow is highly transient like flow over a cylinder produces vortex street and if the time step is high we might miss many modes of the fluctuations and this could be reflected in our averaged values (or may be it could also take more time to get a time averaged solution).
Regarding pFinal and UFinal I think these are somehow the stringent criteria for last Iteration on the equation in one pimple Loop so as to get the best possible solution in the numerical sense.

akidess September 10, 2012 03:03


Originally Posted by Djub (Post 380507)
"as in some sudo transient cases" . What means "sudo" ?

Small side remark - he probably meant to write 'pseudo' ;)

owayz September 10, 2012 10:25

Thanks for pointing that out Anton. :)

Djub September 12, 2012 03:59

Hi everybody,

I ran some cases with Pimple. It rocks!
From a working PISO case, the only change is about nOuterIterations (in fvsolution ). In my case, I use 2 nOuterItreations. You have also to choose for final solvers, I suppose for the last iteration.
But PIMPLE permits the use of the entry adjustTimeStep yes in the controlDict. In this case, you control directly the CFL (entry maxCo). I am now working with a maxCo of 10 ! And it is still stable and realist . And of course much faster :D !

In this case, your time step is not constant so you may prefer to use writeControl adjustableRunTime (instead of timestep). In this case, writeInterval is in seconds.


sdharmar March 20, 2013 13:39

Courant number
Isn't it a problem if you increased Courant number>1


Djub March 21, 2013 05:53

Pimple being an Implicit numerical method (cf Wikipedia), you can use a large Co, greater than 1. Co needs to be smaller than 1 for explicit method (see here).
By the way, as owayz said, I took a great care to define correctly the time scales of the large eddies I am simulating.
In my case, there was no problem at Co=10. Nevertheless, Co=100 crashed, as well as Co=50. At Co=30, the results were not satisfactory. So the limit (in my case, which was a simple rectangular rod in a laminar flow, for vortex shedding estimation), the limit is between Co=10 (OK) and Co=30 (KO)

aylalisa March 27, 2013 14:09

physical example

most stupid question comes probably at last.

I've read the discussion more then once but I am still not clear about the usage of these different solvers.

Could anybody try to explain the advantages/disadvantages on the basis of a practical situation.

Supposed there is a duct flow (L > 5000mm, W =250mm, H = 20mm, fluid = water, point of origin is located in the center of the duct) with...

a) small Reynoldsnumber (100 - 200) at inlet, no obstacle (e.g. rod or cube) in the middle of the duct,

b) small Reynoldsnumber (100 -200) at inlet, obstacle (cube with side length a=20mm) positioned in the center of the duct,

c) high Reynoldsnumber (> 3000) at inlet, no obstacle located in the duct,

d) high Reynoldsnumber (> 3000) at inlet, obstacle (cube a=20mm) positioned in the center of the duct.

For what case would you use which solver and why?
You could also change the physical setting of one of the cases if that helps to show the advantage of a specific solver.

Thanks a lot in advance!


akidess March 28, 2013 03:59

If there is no motion of the obstacle, then it doesn't influence your choice of solver. I believe you can use pimpleFoam for all cases. You might be able to use even larger timesteps (thus saving some computational time) by using simpleFoam for the high Reynolds cases.

aylalisa April 3, 2013 11:03

modify the situation
What kind of flow phenomenon makes you use pisoFoam and icoFoam respectively?

Djub April 3, 2013 11:26

icoFoam is laminar, whereas pisoFoam can deal with turbulence.

All times are GMT -4. The time now is 16:59.