Numerical Conditions
Numerical Conditions are set in system/fvSolution and system/fvSchemes file.
- Pressure-Velocity Coupling Scheme
- Momentum Predictor
- Flux Type
- Discretization Schemes
- Under-Relaxation Factors
- Improve Stability
- Max Iterations per Time Step, Number of Correctors
- Multiphase
- Convergence Criteria
- Limits
- Equations
- Default numerical conditions
Pressure-Velocity Coupling Scheme
Pressure-Velocity Coupling Scheme is set at consistent of SIMPLE and PIMPLE dictionary of system/fvSolution file.
no for SIMPLE, yes for SIMPLEC
SIMPLE
{
consistent <yes or no>;
...
}
Momentum Predictor
Momentum Predictor is set at the momentumPredictor of PIMPLE dictionary in the system/fvSolution file.
PIMPLE
{
...
momentumPredictor <on or off>;
...
}
Flux Type
Flux Type is set at Riemann dictionary in the system/fvSolution file. Riemann dictionary is used only for density based solver and as follows
Riemann
{
fluxScheme <roeFlux or AUSMplusFlux or AUSMplusUpFlux>;
secondOrder <yes or no>;
reconGradScheme VKLimited Gauss linear 1;
roeFluxCoeffs
{
epsilon <value>;
}
AUSMplusUpFluxCoeffs
{
MInf <value>;
}
}
fluxScheme is roeFlux for Roe-FDS, AUSMplusFlux for AUSM, AUSMplusUpFlux for AUSM-up.
Entropy Fix Coefficient is set at epsilon of roeFluxCoeffs, Cut-off Mach Number is at MInf of AUSMplusUpFluxCoeffs.
Discretization Schemes
Time
Time is set at ddtSchemes dictionary in the system/fvSchemes file.
Euler for First Order Implicit , backward for Second Order Implicit
ddtSchemes
{
default <Euler or backward>;
}
Pressure
Pressure is set at interpolationSchemes dictionar in the system/fvSchemes file.
For Linear
interpolationSchemes
{
default linear;
interpolate(p) linear;
interpolate(p_rgh) linear;
}
For Momentum Weighted
interpolationSchemes
{
default linear;
interpolate(p) momentumWeighted;
interpolate(p_rgh) momentumWeighted;
}
For Momentum Weighted Reconstruct
interpolationSchemes
{
default linear;
interpolate(p) momentumWeightedReconstruct;
interpolate(p_rgh) momentumWeightedReconstruct;
}
Momentum, Energy, Turbulence, Volume Fraction
These are set in divSchemes dictionary in the system/fvSchemes file.
For First Order Upwind
divSchemes
{
default Gauss linear;
div(phi,U) Gauss upwind;
div(rhoPhi,U) Gauss upwind;
div(phiNeg,U) Gauss upwind;
div(phiPos,U) Gauss upwind;
div(phi,k) Gauss upwind;
div(phi,epsilon) Gauss upwind;
div(phi,omega) Gauss upwind;
div(phi,nuTilda) Gauss upwind;
div(phi,alpha) Gauss upwind;
div(phirb,alpha) Gauss upwind;
div(phi,scalar) Gauss upwind;
}
For Second Order Upwind
divSchemes
{
default Gauss linear;
div(phi,U) Gauss linearUpwind momentumReconGrad;
div(rhoPhi,U) Gauss linearUpwind momentumReconGrad;
div(phiNeg,U) Gauss MinmodV;
div(phiPos,U) Gauss MinmodV;
div(phi,k) Gauss linearUpwind turbulenceReconGrad;
div(phi,epsilon) Gauss linearUpwind turbulenceReconGrad;
div(phi,omega) Gauss linearUpwind turbulenceReconGrad;
div(phi,nuTilda) Gauss linearUpwind turbulenceReconGrad;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,scalar) Gauss linearUpwind momentumReconGrad;
}
For density based solver
Discretization scheme of Flow is set at Riemann dictionary in the system/fvSolution file. For ‘First Order Upwind’ secondOrder is no, otherwise yes
Riemann
{
...
secondOrder <yes or no>;
...
}
For turbulence same as pressure based solver.
Under-Relaxation Factors
Relaxation Factors is set at relaxationFactors dictionary in the system/fvSolution file.
Input values are set as follows
relaxationFactors
{
fields
{
p <value>;
pFinal <value>;
p_rgh <value>;
p_rghFinal <value>;
rho <value>;
rhoFinal <value>;
}
equations
{
U <value>;
UFinal <value>;
h <value>;
hFinal <value>;
"(k|epsilon|omega|nuTilda)" <value>;
"(k|epsilon|omega|nuTilda)Final" <value>;
alpha.waterLiquid <value>;
alpha.waterLiquidFinal <value>;
scalar <value>;
scalarFinal <value>;
}
}
Improve Stability
Improve Stability option is set at laplacianSchemes dictionary in the system/fvSchemes file.
If option is Off
laplacianSchemes
{
default Gauss linear corrected;
}
If option is On
laplacianSchemes
{
default Gauss linear limited corrected 0.5;
}
If solver is density based, this option is not used and laplacianSchemes dictionary is same as option is off.
Max Iterations per Time Step, Number of Correctors
These are set at PIMPLE dictionary in the system/fvSolution file.
nOuterCorrectors for Max Iterations per Time Step, nCorrectors for Number of Correctors
PIMPLE
{
...
nCorrectors <value>;
nOuterCorrectors <value>;
...
}
Multiphase
Multiphase related setups are set at solvers dictionary in the system/fvSolution file.
solvers
{
...
"alpha.*"
{
...
nAlphaSubCycles <value>;
nAlphaCorr <value>;
MULESCorr <yes or no>;
cAlpha <value>;
nLimiterIter <value>;
...
}
...
}
nAlphaSubCycles for Max. Iteration per Time Step, nAlphaCorr for Number of Correctors
If MULES Variant is Explicit, MULESCorr is no, otherwise yes
Phase Interface Compression Factor is set at cAlpha.
Number of MULES iterations over the limiter is set at nLimiterIter.
Convergence Criteria
For pressure based solver convergence criteria is set at residualControl dictionary of SIMPLE and PIMPLE in the system/fvSolution file.
SIMPLE
{
...
residualControl
{
p <value>;
p_rgh <value>;
U <value>;
h <value>;
"(k|epsilon|omega|nuTilda)" <value>;
"alpha.*" <value>;
}
}
For transient, there are tolerance and relTol in residualControl dictionary. Inputs of Absolute are set for tolerance and inputs of Relative are set for relTol.
PIMPLE
{
...
residualControl
{
...
p_rgh
{
tolerance <value>;
relTol <value>;
}
U
{
tolerance <value>;
relTol <value>;
}
...
}
}
For density based solver convergence criteria is set at LU-SGS dictionay in the system/fvSolution file.
LU-SGS
{
residualControl
{
rho 0.001;
rhoU 0.001;
rhoE 0.001;
"(k|epsilon|omega|nuTilda)" 0.001;
}
}
Limits
limitT dictionary in the system/fvOptions file is used for limit temperature.
limitT
{
type limitTemperature;
active yes;
selectionMode all;
min 1;
max 5000;
}
Equations
In SIMPLE and PIMPLE dictionary in the system/fvSolution file, you can on/off equations of flow, energy and species.
SIMPLE // PIMPLE
{
...
solveFlow <yes or no>;
solveEnergy <yes or no>;
solveSpecies <yes or no>;
...
}
3 terms of energy equation as Viscous dissipation, Kinetic energy, Pressure Work can be of/off in the constant/thermophysicalProperties file.
includeViscousDissipation <true of false>;
includeKineticEnergy <true of false>;
includePressureWork <true of false>;
Default numerical conditions
SIMPLE in fvSolution file
nNonOrthogonalCorrectors, pRefCell, pRefValue are fixed as 0.
SIMPLE
{
...
nNonOrthogonalCorrectors 0;
pRefCell 0;
pRefValue 0;
...
}
PIMPLE in fvSolution file
turbOnFinalIterOnly is false. nAlphaSpreadIter and nAlphaSweepIter is 0, rDeltaTSmoothingCoeff and rDeltaTDampingCoeff is 0.5.
PIMPLE
{
...
turbOnFinalIterOnly false;
nAlphaSpreadIter 0;
nAlphaSweepIter 0;
rDeltaTSmoothingCoeff 0.5;
rDeltaTDampingCoeff 0.5;
...
}
solvers in fvSolution file
solvers dictionary is for matrix solver for each field.
solver and preconditioner are depend on field.
tolerance is fixed as 1e-16, relative tolerance(relTol) is 0.1, minimum iteration(minIter) is 1 and maximum iteration(maxIter) is 5 except volume fraction(alpha).
For alpha, tolerance is fixed as 1e-8, relTol is 0, minIter is 1 and maxIter is 10.
Pressure
p_rgh uses PCG solver and GAMG preconditioner.
solvers
{
...
p_rgh
{
solver PCG;
preconditioner
{
preconditioner GAMG;
smoother DIC;
tolerance 1e-5;
relTol 0.1;
}
tolerance 1e-16;
relTol 0.1;
minIter 1;
maxIter 5;
}
...
}
Velocity, turbulence, species, user defined scalar
U, k, epsilon, omega, nuTilda, scalar and Yi use PBiCGStab solver and DILU preconditioner.
solvers
{
...
"(U|k|epsilon|omega|nuTilda|scalar|Yi)"
{
solver PBiCGStab;
preconditioner DILU;
tolerance 1e-16;
relTol 0.1;
minIter 1;
maxIter 5;
}
...
}
Energy
h uses PBiCGStab solver and GAMG preconditioner.
solvers
{
...
h
{
solver PBiCGStab;
preconditioner
{
preconditioner GAMG;
smoother DILU;
tolerance 1e-5;
relTol 0.1;
}
tolerance 1e-16;
relTol 0.1;
minIter 1;
maxIter 5;
}
...
}
Density
rho uses PCG solver and DIC preconditioner.
solvers
{
...
rho
{
solver PCG;
preconditioner DIC;
tolerance 1e-16;
relTol 0.1;
minIter 1;
maxIter 5;
}
...
}
alpha.*
alpha uses smoothSolver solver and symGaussSeidel smoother.
icAlpha is fixed as 0 and alphaApplyPrevCorr is fixed as yes.
solvers
{
...
"alpha.*"
{
solver smoothSolver;
smoother symGaussSeidel;
icAlpha 0;
alphaApplyPrevCorr yes;
tolerance 1e-8;
relTol 0;
minIter 1;
maxIter 10;
}
...
}
fieldBounds in fvSolution file
fieldBounds is used only in density based solver for limit values as follows
fieldBounds
{
p 1e-06 1e+10;
rho 1e-06 1e+10;
h 1e-06 1e+10;
e 1e-06 1e+10;
rhoE 1e-06 1e+10;
T 1e-06 3e+4;
U 3e+4;
}
gradSchemes in fvSchemes file
In pressure based solver always use Gauss linear. momentumReconGrad, energyReconGrad and turbulenceReconGrad are definition to use in divSchemes.
gradSchemes
{
default Gauss linear;
momentumReconGrad VKLimited Gauss linear 1.0;
energyReconGrad VKLimited Gauss linear 1.0;
turbulenceReconGrad VKLimited Gauss linear 1.0;
}
In density based solver, always use conditions below
gradSchemes
{
default Gauss linear;
grad(k) VKLimited Gauss linear 0.5;
grad(epsilon) VKLimited Gauss linear 0.5;
grad(omega) VKLimited Gauss linear 0.5;
grad(nuTilda) VKLimited Gauss linear 0.5;
reconGrad VKLimited Gauss linear 0.5;
}
interpolationSchemes in fvSchemes file
In density based solver setup is fixed as follows
interpolationSchemes
{
default linear;
interpolate(rho) linearUpwind phi grad(rho);
}
snGradSchemes int fvSchemes file
Always use setup below
snGradSchemes
{
default corrected;
}