Most Frequently Used Solvers

OpenFOAM v2414 has 448 tutorial cases. 393 cases are used in this study. Other cases don’t have both folder system or constant and are deemed as “incomplete”.

There are 81 solvers used for the tutorial cases. Below listed the solvers that are mostly used.

index                        counts
-------------------------  --------
adjointOptimisationFoam          89
interFoam                        40
pimpleFoam                       30
simpleFoam                       22
reactingTwoPhaseEulerFoam        16
reactingParcelFoam               14
interIsoFoam                     13
rhoPimpleFoam                    10
reactingFoam                      9
chtMultiRegionFoam                8
rhoCentralFoam                    7
buoyantSimpleFoam                 7
rhoSimpleFoam                     6
pisoFoam                          6
fireFoam                          6

It is surprised to see adjointOptimisationFoam is the most used in the tutorial cases; in daily use, the most used solver are simpleFoam, pimpleFoam, rhoPimpleFoam and rhoSimpleFoam.

For CFD modelling, we list the often used solvers in the following table. They are listed in the 3rd, 4th, 8th, 11th and 14th positions.

solver          time-dependent    compressibility    Ma           Flow Regime
--------------  ----------------  -----------------  -----------  ------------------
simpleFoam      steady-state      incompressible     sub-sonic    laminar/turbulence
pimpleFoam      transient         incompressible     sub-sonic    laminar/turbulence
rohSimpleFoam   steady-state      compressible       sub-sonic    laminar/turbulence
rohPimpleFoam   transient         compressible       sub-sonic    laminar/turbulence
rohCentralFoam  transient         compressible       super-sonic  laminar/turbulence

We see other solvers. Most of them have some add-on features. For example, buoyancy, reaction, multi-region, and multi-phase etc.

controlDict Analysis

Analysis is made to file controlDict.

For transient analysis deltaT needs to be specified. This is crictial for stable computation. It is also important for computation accuracy and computation time. The time step is often variable and is determined by maxCo with 0.3, 0.5 or 1.0.

With solver rhoCentralFoam, it often has a very small maxCo (e.g. 0.2) or equivalently, a small maxDeltaT. The flow with this solver is usualy very high i.e. sonic or super-sonic flow.

timePrecision and writePrecision are mostly set to 6.

For steady-state flow solver, deltaT are always set to 1 as for the simplicit purpose.

Turbulence Properties

Tutorial cases using solver rhoCentralFoam doesn’t have any with laminar and turbulence model. They are all laminar flow.

For other cases, the most used turbulence model is RAS.

simulationType       LES       RAS   laminar
application                                 
pimpleFoam      0.185185  0.444444  0.370370
rhoCentralFoam  0.000000  0.000000  1.000000
rhoPimpleFoam   0.000000  0.800000  0.200000
rhoSimpleFoam   0.000000  0.833333  0.166667
simpleFoam      0.000000  0.950000  0.050000

The RAS model usage is shown in the following table.

RAS Model      RNGkEpsilon  SpalartAllmaras  kEpsilon  kOmegaSST  kOmegaSSTLM  kkLOmega  realizableKE
application                                                                                          
pimpleFoam        0.083333         0.000000  0.666667   0.166667     0.000000  0.083333      0.000000
rhoPimpleFoam     0.000000         0.000000  0.875000   0.125000     0.000000  0.000000      0.000000
rhoSimpleFoam     0.000000         0.000000  0.600000   0.400000     0.000000  0.000000      0.000000
simpleFoam        0.000000         0.157895  0.526316   0.210526     0.052632  0.000000      0.052632

Transport Properties

for incompressible solver, file transportProperties are needed.

For compressible solver, instead of using file transportProperties, the file thermophysicalProperties is needed.

Thermophysical Properties

for incompressible solver, file thermophysicalProperties are not required.

For compressible solver, for transient flow, hePsiThermo is used, and for steady state flow, heRhoThermo is more often used.

thermoType-type  hePsiThermo  heRhoThermo
application                              
rhoCentralFoam      1.000000     0.000000
rhoPimpleFoam       0.800000     0.200000
rhoSimpleFoam       0.166667     0.833333

71% of rhoCentralFoam and 66% rhoSimpleFoam cases use constant transport properties. But 75% of rhoPimpleFoam uses Sutherland’s law for temperature correction.

thermoType-transport     const  sutherland
application                               
rhoCentralFoam        0.714286    0.285714
rhoPimpleFoam         0.250000    0.750000
rhoSimpleFoam         0.666667    0.333333

Solver rhoSimpleFoam uses Boussinesq but other two solvers mainly use perfect gas equation of state.

thermoType-equationOfState  Boussinesq  perfectGas
application                                       
rhoCentralFoam                0.000000    1.000000
rhoPimpleFoam                 0.000000    1.000000
rhoSimpleFoam                 0.333333    0.666667

For equation of state, mostly hConst is widely used.

thermoType-thermo             eConst    hConst     janaf
thermoType-equationOfState                              
Boussinesq                  0.000000  1.000000  0.000000
perfectGas                  0.058824  0.882353  0.058824

Governing Equations

For incompressible flow solver,

\[\frac{\partial U}{\partial t} + \nabla\cdot (UU)=-\nabla p + \nabla \cdot (\nu_{eff}\nabla U)\]

For compressible flow solver,

\[\frac{\partial \rho U}{\partial t} + \nabla\cdot (\rho UU)=-\nabla p + \nabla \cdot (\nu_{eff}\nabla U)\]

Numerical Schemes

Time Difference

pimpleFoam, rhoPimpleFoam and rhoCentralFoam are transient solver. Thus, ddtSchemes are mostly Euler. There is a quasi-steady-state method localEuler for solver rhoCentralFoam.

For simpleFoam and rhoSimpleFoam, more than 80% of cases use steadyState. There is still about 13%-16% cases use Euler method.

application         pimpleFoam  rhoCentralFoam  rhoPimpleFoam  rhoSimpleFoam  simpleFoam
ddtSchemes-default                                                                      
Euler                      0.6        0.857143            0.8       0.166667    0.136364
backward                   0.4        0.000000            0.1       0.000000    0.000000
localEuler                 0.0        0.142857            0.1       0.000000    0.000000
steadyState                0.0        0.000000            0.0       0.833333    0.863636

Divergent Schemes

The divergent is, $ \nabla \cdot $, an operator being applied to a tensor. The result is a vector.

Divergent schemes can affect the accuracy, stability, numerical diffusion of a computation.

As can be seen, for most cases, there is no divergent default scheme. Most cases prefer to set a divergent scheme.

application   pimpleFoam  rhoCentralFoam  rhoPimpleFoam  rhoSimpleFoam  simpleFoam
default                                                                           
Gauss linear         0.1             0.0            0.0            0.0         0.0
none                 0.9             1.0            1.0            1.0         1.0

For viscous-stress, $\nabla \cdot (\nu_{eff} (\nabla U + \nabla U ^T))$, most cases use Gauss linear schemes. Here $T(grad(U))=(\nabla U + \nabla U ^T)$.

application                          rhoPimpleFoam  rhoSimpleFoam
div(((rho*nuEff)*dev2(T(grad(U)))))                              
Gauss linear                                   1.0            1.0
------------------
application                          pimpleFoam
div((nu*dev2(T(grad(U)))))            
Gauss linear                                   1.0
------------------
application                          pimpleFoam      simpleFoam
div((nuEff*dev2(T(grad(U)))))                        
Gauss linear                                   1.0            0.954545
fusedGauss linear                              0.0            0.045455

for velocity divergent, also Gauss linear scheme is used.

application   pimpleFoam  rhoPimpleFoam  rhoSimpleFoam
div(U)                                                
Gauss linear         1.0            1.0            1.0

For K, it is mainly Gauss linear. But some variations are seen.

application                          rhoPimpleFoam  rhoSimpleFoam
div(phi,K)                                              
bounded Gauss limitedLinear 1.0       0.0           0.33333
bounded Gauss linearUpwind limited    0.0           0.33333
Gauss limitedLinear 1                 0.1           0.333333
Gauss linear                          0.6           0.000000
Gauss linearUpwind limited            0.3           0.000000

For velocity, the selection is very broad. This is the area that needs carefully studied.

application                                         pimpleFoam  rhoPimpleFoam  rhoSimpleFoam  simpleFoam
div(phi,U)                                                                                              
Gauss DEShybrid \n linear \n linearUpwind grad(...    0.068966            0.0       0.000000    0.000000
Gauss DEShybrid \n linear \n linearUpwind grad(...    0.034483            0.0       0.000000    0.000000
Gauss DEShybrid \n linear \n linearUpwind grad(...    0.034483            0.0       0.000000    0.000000
Gauss LUST grad(U)                                    0.034483            0.0       0.000000    0.000000
Gauss limitedLinearV 1                                0.137931            0.3       0.166667    0.045455
Gauss linear                                          0.172414            0.0       0.000000    0.000000
Gauss linearUpwind grad(U)                            0.413793            0.2       0.000000    0.000000
Gauss linearUpwind limited                            0.000000            0.3       0.000000    0.000000
Gauss linearUpwindV grad(U)                           0.068966            0.0       0.000000    0.000000
Gauss skewCorrected linear                            0.034483            0.0       0.000000    0.000000
Gauss upwind                                          0.000000            0.2       0.000000    0.045455
bounded Gauss LUST grad(U)                            0.000000            0.0       0.000000    0.045455
bounded Gauss limitedLinearV 1                        0.000000            0.0       0.000000    0.090909
bounded Gauss linearUpwind grad                       0.000000            0.0       0.000000    0.045455
bounded Gauss linearUpwind grad(U)                    0.000000            0.0       0.000000    0.272727
bounded Gauss linearUpwind limited                    0.000000            0.0       0.666667    0.045455
bounded Gauss linearUpwind unlimited                  0.000000            0.0       0.000000    0.045455
bounded Gauss linearUpwindV grad(U)                   0.000000            0.0       0.000000    0.136364
bounded Gauss localBlended linearUpwindV grad(U...    0.000000            0.0       0.000000    0.045455
bounded Gauss upwind                                  0.000000            0.0       0.166667    0.136364
bounded fusedGauss linearUpwind grad(U)               0.000000            0.0       0.000000    0.045455

For enery equation, rhoPimpleFoam and rhoSimpleFoam are opposite. In general, simpleFoam has limited value.

application                         rhoPimpleFoam  rhoSimpleFoam
energy                                                          
Gauss linearUpwind limited                    1.0            0.0
bounded Gauss limitedLinear 1.0               0.0            0.5
bounded Gauss linearUpwind limited            0.0            0.5

For turbulence, we can found that, again, simpleFoam has in most case used limited scheme.

application                         pimpleFoam  rhoPimpleFoam  rhoSimpleFoam  simpleFoam
turbulence                                                                              
Gauss limitedLinear 1                 0.666667            0.2            0.0    0.058824
Gauss linearUpwind limited            0.000000            0.4            0.0    0.000000
Gauss upwind                          0.333333            0.4            0.0    0.000000
bounded Gauss limitedLinear 1         0.000000            0.0            0.0    0.352941
bounded Gauss linearUpwind grad       0.000000            0.0            0.0    0.058824
bounded Gauss linearUpwind limited    0.000000            0.0            0.4    0.058824
bounded Gauss upwind                  0.000000            0.0            0.6    0.411765
bounded fusedGauss limitedLinear 1    0.000000            0.0            0.0    0.058824