PISO法

Category: 流体解析(CFD) | Integrated 2026-04-06
CAE visualization for piso algorithm theory - technical simulation diagram
PISO法 — 理論と非定常圧力補正

Theory and Physics

Overview of the PISO Method

🧑‍🎓

Professor, what's the difference between the PISO method and the SIMPLE method?


🎓

PISO (Pressure-Implicit with Splitting of Operators) is a pressure-velocity coupling algorithm proposed by Issa in 1986. While the SIMPLE method converges by running many outer iterations, the PISO method performs two pressure corrections within one time step to ensure time accuracy without outer iterations.


🧑‍🎓

Does not needing outer iterations mean it's advantageous for unsteady calculations?


🎓

Exactly. For unsteady flows (LES, DNS, moving mesh problems, etc.), the continuity equation must be strictly satisfied at each time step. PISO has a higher computational cost per time step, but since it doesn't require outer iterations, it is often more efficient overall.


PISO Algorithm Procedure

🧑‍🎓

Could you explain the specific steps?


🎓

The PISO method proceeds with the following steps.


Step 1: Momentum Predictor


Solve the momentum equation using the pressure from the previous time step $p^n$ to obtain a tentative velocity $\mathbf{u}^*$:


$$ a_P \mathbf{u}_P^* = H(\mathbf{u}^*) - \nabla p^n $$

Step 2: First Corrector


$$ \nabla \cdot \left(\frac{1}{a_P} \nabla p'\right) = \nabla \cdot \mathbf{u}^* $$

Correct the velocity: $\mathbf{u}^{**} = \frac{H(\mathbf{u}^*)}{a_P} - \frac{1}{a_P}\nabla p'$


Step 3: Second Corrector


$$ \nabla \cdot \left(\frac{1}{a_P} \nabla p''\right) = \nabla \cdot \mathbf{u}^{**} $$

Final velocity: $\mathbf{u}^{n+1} = \frac{H(\mathbf{u}^{**})}{a_P} - \frac{1}{a_P}\nabla(p' + p'')$


🧑‍🎓

So while SIMPLE uses only one pressure correction per outer iteration, PISO completes with two corrections.


🎓

Precisely, the second correction in PISO reflects the update of the neighbor cell coefficients $H$, which improves the approximation omission in SIMPLE. As a result, relaxation factors become unnecessary and time accuracy is maintained.


Theoretical Comparison with SIMPLE Method

🎓

Let's organize the essential differences between the two.


CharacteristicSIMPLEPISO
Pressure Corrections1 per outer iteration2 (or more) per time step
Outer IterationsRequired (10 to several hundred)Not required
Relaxation FactorRequired (0.2 to 0.8)Not required
Main ApplicationSteady-state calculationsUnsteady calculations
Time AccuracyPseudo time marchingTrue time accuracy
CFL LimitNone (implicit)Recommended CFL < 1 to 5
🧑‍🎓

Does PISO also have a CFL number limit? Isn't it implicit?


🎓

The time discretization itself is implicit, but to sufficiently reduce the splitting error with PISO's two corrections, the CFL number needs to be kept somewhat low. Practically, CFL < 1 is safe, and a maximum of CFL < 5 is recommended. If the CFL number is too large, accuracy deteriorates.


Coffee Break Casual Talk

The "Mathematical Reason" Why PISO is Stronger than SIMPLE for Unsteady Flows

The decisive difference between the PISO method (Pressure Implicit with Splitting of Operators) and SIMPLE is that it "repeats pressure correction two or more times within one time step." In unsteady flows, the flow changes significantly within one step, so a single pressure correction cannot fully satisfy the continuity equation (mass conservation). PISO can reduce the mass conservation error in the velocity field to almost zero with its second correction—this is its theoretical strength. This is why PISO is chosen for problems where "the flow changes instantaneously," such as heart valve opening/closing simulations or combustion flow inside engine cylinders. The strategy of using SIMPLE for steady-state analysis and PISO for unsteady analysis remains a valid basic approach.

Physical Meaning of Each Term
  • Time Term $\partial(\rho\phi)/\partial t$: Imagine the moment you turn on a faucet. At first, water comes out in an unstable, spluttering manner, but after a while, it becomes a steady flow, right? This "period of change" is described by the time term. The pulsation of blood flow from a heartbeat, or the flow fluctuation each time an engine valve opens/closes—all are unsteady phenomena. So what is steady-state analysis? It looks only at "after sufficient time has passed and the flow has settled down"—meaning this term is set to zero. Since computational cost drops significantly, starting with a steady-state solution is a basic CFD strategy.
  • Convection Term $\nabla \cdot (\rho \mathbf{u} \phi)$: What happens if you drop a leaf into a river? It gets carried downstream by the flow, right? This is "convection"—the effect where fluid motion transports things. Warm air from a heater reaching the other side of the room is also because the "carrier," air, transports heat via convection. Here's the interesting part—this term includes "velocity × velocity," making it nonlinear. That is, as the flow becomes faster, this term rapidly strengthens, making control difficult. This is the root cause of turbulence. A common misconception: "Convection and conduction are similar things" → They are completely different! Convection is carried by flow, conduction is transmitted by molecules. There is an order of magnitude difference in efficiency.
  • Diffusion Term $\nabla \cdot (\Gamma \nabla \phi)$: Have you ever put milk in coffee and left it? Even without stirring, after a while it naturally mixes, right? That's molecular diffusion. Now a question—honey and water, which flows more easily? Obviously water, right? Honey has high viscosity ($\mu$), so it flows poorly. When viscosity is large, the diffusion term becomes strong, and the fluid moves in a "thick" manner. In low Reynolds number flows (slow, viscous), diffusion is dominant. Conversely, in high Re number flows, convection overwhelms and diffusion plays a minor role.
  • Pressure Term $-\nabla p$: When you push the plunger of a syringe, liquid shoots out forcefully from the needle tip, right? Why? Because the piston side is high pressure, the needle tip is low pressure—this pressure difference creates the force that pushes the fluid. Dam discharge works on the same principle. On a weather map, where are the isobars tightly packed? That's right, strong winds blow there. "Flow is generated where there is a pressure difference"—this is the physical meaning of the pressure term in the Navier-Stokes equations. A point of confusion here: "Pressure" in CFD is often gauge pressure, not absolute pressure. If results go wrong immediately after switching to compressible analysis, it might be due to confusion between absolute/gauge pressure.
  • Source Term $S_\phi$: Warmed air rises—why? Because it becomes lighter (lower density) than its surroundings, so it's pushed upward by buoyancy. This buoyancy is added to the equation as a source term. Other examples: chemical reaction heat generated by a gas stove flame, Lorentz force applied to molten metal by an electromagnetic pump in a factory... These are all actions that "inject energy or force into the fluid from the outside," expressed by the source term. What happens if you forget the source term? In natural convection analysis, if you forget to include buoyancy, the fluid doesn't move at all—you get a physically impossible result like turning on a heater in a winter room but the warm air doesn't rise.
Assumptions and Applicability Limits
  • Continuum Assumption: Valid for Knudsen number Kn < 0.01 (mean free path ≪ characteristic length)
  • Newtonian Fluid Assumption: Shear stress and strain rate have a linear relationship (viscosity model needed for non-Newtonian fluids)
  • Incompressibility Assumption (for Ma < 0.3): Treat density as constant. For Mach number ≥ 0.3, consider compressibility effects
  • Boussinesq Approximation (Natural Convection): Consider density changes only in the buoyancy term, use constant density in other terms
  • Non-applicable Cases: Rarefied gas (Kn > 0.1), supersonic/hypersonic flow (shock capturing required), free surface flow (VOF/Level Set, etc. required)
Dimensional Analysis and Unit Systems
VariableSI UnitNotes / Conversion Memo
Velocity $u$m/sWhen converting from volumetric flow rate for inlet conditions, pay attention to cross-sectional area units
Pressure $p$PaDistinguish between gauge pressure and absolute pressure. Use absolute pressure for compressible analysis
Density $\rho$kg/m³Air: approx. 1.225 kg/m³ @20°C, Water: approx. 998 kg/m³ @20°C
Viscosity Coefficient $\mu$Pa·sBe careful not to confuse with kinematic viscosity coefficient $\nu = \mu/\rho$ [m²/s]
Reynolds Number $Re$Dimensionless$Re = \rho u L / \mu$. Indicator for laminar/turbulent transition
CFL NumberDimensionless$CFL = u \Delta t / \Delta x$. Directly related to time step stability

Numerical Methods and Implementation

PISO Method Implementation Details

🧑‍🎓

When implementing the PISO method, what is the H operator?


🎓

It's an expression often seen in the OpenFOAM context. Discretizing the momentum equation gives:


$$ a_P \mathbf{u}_P = \sum_N a_N \mathbf{u}_N + \mathbf{b} - \nabla p $$

Here, define $H(\mathbf{u}) = -\sum_N a_N \mathbf{u}_N + \mathbf{b}$. Then:


$$ \mathbf{u}_P = \frac{H(\mathbf{u})}{a_P} - \frac{\nabla p}{a_P} $$

In this form, velocity can be expressed as a function of the pressure gradient. Substituting this into the continuity equation yields the pressure Poisson equation.


nCorrectors and nNonOrthogonalCorrectors

🧑‍🎓

In OpenFOAM settings, there's a parameter called nCorrectors. What is that?


🎓

nCorrectors is the number of PISO pressure correction steps. The default is 2, but it can be set to 3-4 for higher CFL numbers or when higher accuracy is desired.


nNonOrthogonalCorrectors are additional iterations to correct mesh non-orthogonality. For non-orthogonal meshes, non-orthogonal contributions arise in the pressure Laplacian, which need to be corrected iteratively.


```

PISO

{

nCorrectors 2;

nNonOrthogonalCorrectors 1;

}

```


PIMPLE Method (PISO-SIMPLE Hybrid)

🧑‍🎓

I've heard of the PIMPLE method. How is it different from PISO?


🎓

The PIMPLE method is a PISO and SIMPLE hybrid implemented in OpenFOAM. It performs outer iterations (SIMPLE-like loops) within a time step, finishing with PISO corrections.


```

PIMPLE

{

nOuterCorrectors 2; // SIMPLE-like outer iteration

nCorrectors 1; // PISO correction

nNonOrthogonalCorrectors 1;

}

```


ParameterMeaning of Value
nOuterCorrectors = 1Pure PISO
nOuterCorrectors > 1PIMPLE (PISO+SIMPLE)
nOuterCorrectors large, nCorrectors=0Pure SIMPLE

The advantage of the PIMPLE method is that it can significantly relax the CFL number limit. With sufficient nOuterCorrectors, stable calculation is possible even for CFL >> 1.


🧑‍🎓

So the PIMPLE method is a "best of both worlds" approach that is "stable even with large time steps" and "ensures time accuracy."


🎓

However, increasing nOuterCorrectors increases the cost per time step. If CFL < 1, pure PISO (nOuterCorrectors=1) is more efficient.


Combination with Time Discretization Schemes

🧑‍🎓

How should time be discretized?


🎓

Let's compare common time discretizations combined with the PISO method.


SchemeAccuracyStabilityOpenFOAM Name
Implicit Euler1st orderUnconditionally stableEuler
2nd Order Backward Difference2nd orderUnconditionally stablebackward
Crank-Nicolson2nd orderUnconditionally stableCrankNicolson

For LES calculations, the 2nd order backward or CrankNicolson should be used. For pseudo-transient RANS steady-state calculations, Euler is sufficient.


Coffee Break Casual Talk

PIMPLE Method—A "Best of Both Worlds" Implementation Combining PISO and SIMPLE

If you use OpenFOAM, you've probably seen the name PIMPLE. This is a hybrid algorithm combining PISO and SIMPLE. It has a structure where, within one time step, it runs SIMPLE's outer iterations (called the PIMPLE loop) while performing PISO's internal pressure corrections inside it. Its greatest strength is that it can stably advance calculations even when the CFL number exceeds 1—in other words, it combines SIMPLE's advantage of "advancing with large time steps" with PISO's "unsteady accuracy." It's a practical implementation valued in cases where being constrained to CFL=0.5~1 for LES or turbulent unsteady analysis is burdensome.

Upwind Differencing (Upwind)

1st order upwind: Large numerical diffusion but stable. 2nd order upwind: Improved accuracy but risk of oscillations. Essential for high Reynolds number flows.

Central Differencing (Central Differencing)

2nd order accuracy, but numerical oscillations occur for Pe number > 2. Suitable for low Reynolds number diffusion-dominated flows.

TVD Schemes (MUSCL, QUICK, etc.)

Maintain high accuracy while suppressing numerical oscillations via limiter functions. Effective for capturing shock waves or steep gradients.

Finite Volume Method vs Finite Element Method

FVM: Naturally satisfies conservation laws. Mainstream in CFD. FEM: Advantageous for complex shapes and multiphysics. Mesh-free methods like SPH are also developing.

CFL Condition (Courant Number)

関連シミュレーター

この分野のインタラクティブシミュレーターで理論を体感しよう

シミュレーター一覧

関連する分野

熱解析V&V・品質保証構造解析
この記事の評価
ご回答ありがとうございます!
参考に
なった
もっと
詳しく
誤りを
報告
参考になった
0
もっと詳しく
0
誤りを報告
0
Written by NovaSolver Contributors
Anonymous Engineers & AI — サイトマップ
About the Authors