PISO法

カテゴリ: 流体解析(CFD) | 統合版 2026-04-06
CAE visualization for piso algorithm theory - technical simulation diagram
PISO法 — 理論と非定常圧力補正

PISO法の理論基礎

PISO法の概要

🧑‍🎓

先生、PISO法ってSIMPLE法と何が違うんですか?


🎓

PISO(Pressure-Implicit with Splitting of Operators)は1986年にIssaが提案した圧力-速度連成アルゴリズムだ。SIMPLE法が外部反復(outer iteration)を何度も回して収束させるのに対し、PISO法は1タイムステップ内で2回の圧力補正を行い、外部反復なしで時間精度を確保するんだ。


🧑‍🎓

外部反復が不要ということは、非定常計算で有利なんですか?


🎓

そのとおり。非定常流れ(LESDNS、移動メッシュ問題など)では各タイムステップで厳密に連続の式を満たす必要がある。PISOはタイムステップあたりの計算コストは高いが、外部反復が不要なため全体として効率的なことが多いんだ。


PISOアルゴリズムの手順

🧑‍🎓

具体的な手順を教えてください。


🎓

PISO法は以下の手順で進む。


Step 1: 運動量予測子(Predictor)


前タイムステップの圧力 $p^n$ を使って運動量方程式を解き、仮速度 $\mathbf{u}^*$ を得る:


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

Step 2: 第1圧力補正子(First Corrector)


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

速度を補正: $\mathbf{u}^{**} = \frac{H(\mathbf{u}^*)}{a_P} - \frac{1}{a_P}\nabla p'$


Step 3: 第2圧力補正子(Second Corrector)


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

最終速度: $\mathbf{u}^{n+1} = \frac{H(\mathbf{u}^{**})}{a_P} - \frac{1}{a_P}\nabla(p' + p'')$


🧑‍🎓

SIMPLEでは圧力補正が1回だけで外部反復を回すのに対し、PISOは2回の補正で完了するんですね。


🎓

正確にはPISOの2回目の補正で隣接セル係数 $H$ の更新を反映するため、SIMPLEの省略近似が改善されるんだ。結果として緩和係数が不要になり、時間精度が保たれる。


SIMPLE法との理論的比較

🎓

両者の本質的な違いを整理しよう。


特性SIMPLEPISO
圧力補正回数1回/外部反復2回(以上)/タイムステップ
外部反復必要(10〜数100回)不要
緩和係数必要(0.2〜0.8)不要
主な用途定常計算非定常計算
時間精度擬似時間進行真の時間精度
CFL制限なし(陰的)推奨CFL < 1〜5
🧑‍🎓

PISOでもCFL数の制限があるんですか? 陰的じゃないんですか?


🎓

時間離散化自体は陰的だが、PISOの2回の補正で分裂誤差を十分低減するにはCFL数をある程度抑える必要がある。実用上はCFL < 1が安全、最大でもCFL < 5程度を推奨する。CFL数が大きすぎると精度が劣化するんだ。


Coffee Break よもやま話

PISOがSIMPLEより非定常に強い「数学的な理由」

PISO法(Pressure Implicit with Splitting of Operators)がSIMPLEと決定的に違うのは「1タイムステップ内で圧力補正を2回以上繰り返す」こと。非定常流れでは1ステップで流れが大きく変わるため、1回の圧力補正では連続の方程式(質量保存)を満たしきれない。PISOはその2回目の補正で速度場の質量保存誤差をほぼゼロにできる——これが理論的な強さ。心臓弁の開閉シミュレーションや、エンジンシリンダー内の燃焼流れなど「流れが瞬時に変わる」問題でPISOが選ばれる理由はここにある。定常解析でSIMPLE、非定常でPISOという使い分けは今も有効な基本戦略です。

PISO法の数値計算手法

PISO法の実装詳細

🧑‍🎓

PISO法を実装するとき、H演算子って何ですか?


🎓

OpenFOAMの文脈でよく出る表現だ。運動量方程式を離散化すると:


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

ここで $H(\mathbf{u}) = -\sum_N a_N \mathbf{u}_N + \mathbf{b}$ と定義する。すると:


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

この形にすると、速度を圧力勾配の関数として表せる。これを連続の式に代入することで圧力のポアソン方程式が得られるんだ。


nCorrectors と nNonOrthogonalCorrectors

🧑‍🎓

OpenFOAMの設定で nCorrectors っていうパラメータがありますが、これは何ですか?


🎓

nCorrectors はPISOの圧力補正ステップの回数だ。デフォルトは2だが、CFL数が大きい場合や精度を上げたい場合は3〜4にすることもある。


nNonOrthogonalCorrectors はメッシュの非直交性を補正するための追加反復だ。非直交メッシュでは圧力ラプラシアンに直交でない寄与が生じるため、これを反復的に修正する必要がある。


```

PISO

{

nCorrectors 2;

nNonOrthogonalCorrectors 1;

}

```


PIMPLE法(PISO-SIMPLEハイブリッド)

🧑‍🎓

PIMPLE法って聞いたことがあるんですけど、PISOとどう違うんですか?


🎓

PIMPLE法はOpenFOAMで実装されたPISOとSIMPLEのハイブリッドだ。タイムステップ内で外部反復(SIMPLE的なループ)を行いつつ、最終的にPISO補正で仕上げる。


```

PIMPLE

{

nOuterCorrectors 2; // SIMPLE的な外部反復

nCorrectors 1; // PISO補正

nNonOrthogonalCorrectors 1;

}

```


パラメータ値の意味
nOuterCorrectors = 1純粋なPISO
nOuterCorrectors > 1PIMPLE(PISO+SIMPLE)
nOuterCorrectors大、nCorrectors=0純粋なSIMPLE

PIMPLE法の利点はCFL数制限を大幅に緩和できることだ。nOuterCorrectorsを十分とれば、CFL >> 1 でも安定に計算できる。


🧑‍🎓

つまりPIMPLE法は「大きなタイムステップでも安定」で「時間精度も確保」できる、いいとこ取りなんですね。


🎓

ただしnOuterCorrectorsを増やすとタイムステップあたりのコストが増える。CFL < 1 なら純粋PISOs(nOuterCorrectors=1)のほうが効率的だよ。


時間離散化スキームとの組み合わせ

🧑‍🎓

時間の離散化はどうすればいいですか?


🎓

PISO法と組み合わせる一般的な時間離散化を比較しよう。


スキーム精度安定性OpenFOAM名
Euler陰解法1次無条件安定Euler
2次後退差分2次無条件安定backward
Crank-Nicolson2次無条件安定CrankNicolson

LES計算では2次精度の backward か CrankNicolson を使うべきだ。RANS定常計算の擬似非定常(pseudo-transient)では Euler で十分。


Coffee Break よもやま話

PIMPLE法——PISOとSIMPLEを掛け合わせた「いいとこ取り」実装

OpenFOAMを使っている人ならPIMPLEという名前を見たことがあるはず。これはPISOとSIMPLEを組み合わせたハイブリッドアルゴリズム。1タイムステップ内でSIMPLEの外部反復(PIMPLE loopと呼ばれる)を回しながら、その中でPISOの内部圧力補正を行う構造になっている。CFL数が1を超えても安定して計算を進められるのが最大の強み——つまりSIMPLEの「大きなタイムステップで進む」利点と、PISOの「非定常精度」を両立させた設計だ。LESや乱流の非定常解析でCFL=0.5〜1に縛られるのが辛い……というケースで重宝される実用的な実装です。

PISO法の実務適用

非定常CFD解析でのPISO実践

🧑‍🎓

実際にPISO法で非定常解析をする際の設定手順を教えてください。


🎓

代表的なケース(円柱まわりの渦放出、Re=200のLaminar流れ)を例にしよう。


Step 1: 時間刻みの決定

CFL条件から時間刻みを決める:

$$ \Delta t = \frac{\text{CFL} \times \Delta x_{\min}}{|\mathbf{u}|_{\max}} $$

CFL = 0.5、最小セルサイズ 0.001m、最大流速 2 m/s なら:

$\Delta t = 0.5 \times 0.001 / 2 = 0.00025$ s

Step 2: ソルバー設定

OpenFOAMの場合:

```

PISO

{

nCorrectors 2;

nNonOrthogonalCorrectors 0;

}

```

Fluentの場合:

  • Transient Formulation: Second Order Implicit
  • Pressure-Velocity Coupling: PISO
  • PISO Parameters: Skewness Correction = 1, Neighbor Correction = 1

Step 3: データ出力設定

🧑‍🎓

結果の保存頻度はどう決めればいいですか?


🎓

渦放出の周期を $T$ とすると、1周期あたり20〜50個のスナップショットがあれば十分だ。Strouhal数 $St \approx 0.2$ なら $T = D / (St \times U) $ で見積もれる。


LES計算でのPISO設定

🧑‍🎓

LES(Large Eddy Simulation)ではPISOの設定をどう変えますか?


🎓

LESでは空間スキームと時間スキームの精度が重要になる。


設定項目推奨値理由
時間離散化2次(backward)時間精度確保
対流項2次中央差分 or ブレンド数値散逸の低減
CFL数< 1(理想は0.5以下)分裂誤差の制御
nCorrectors2〜3質量保存精度
線形ソルバー残差$10^{-6}$高精度解
🧑‍🎓

LESでは1次風上はダメなんですか?


🎓

1次風上の数値粘性は乱流のSGS(Sub-Grid Scale)粘性と同等以上になり得る。せっかくLESで渦を解像しても、数値散逸で潰してしまう。最低でも2次精度、理想的には中央差分系が必要だ。ただし中央差分は非有界なので、TVDリミッタ付きスキームやブレンドスキーム(例: linearUpwind)を使うことが多い。


計算コストの見積もり

🧑‍🎓

非定常計算って計算コストはどのくらい見ておけばいいですか?


🎓

目安を示そう。


解析タイプメッシュ規模タイムステップ数典型的なCPU時間
2D渦放出(Laminar)5万セル20,000数時間
3D RANS非定常500万セル10,000数日
3D LES2000万セル100,000数週間
3D DNS数億セル1,000,000+数ヶ月(HPC必須)
🧑‍🎓

LESとDNSの計算コストの差がすごいですね。


🎓

DNSはKolmogorovスケールまで解像する必要があるから、$Re^{9/4}$ に比例してメッシュ数が増える。産業用途ではLESかDES(Detached Eddy Simulation)が現実的だね。


Coffee Break よもやま話

タイムステップを小さくすれば精度が上がる?——PISOの現実

「非定常CFDはタイムステップを小さくすれば正確」という思い込みは危険。PISOでΔtを10倍小さくしても、計算コストが10倍になるだけで精度が10倍になるわけじゃない。逆に小さすぎるタイムステップは丸め誤差の蓄積を招く。実務でのベストプラクティスは「CFL数を0.5〜1の間に保つΔt」を選ぶこと。水道管の圧力過渡解析で、担当者がΔt = 1e-6秒で1秒間を計算しようとしたが100万ステップになって計算機が1ヶ月かかると判明——CFL条件を計算したらΔt = 1e-4で十分だった、という実話がある。PISOの実践では「どのCFLで回すか」の判断が最も重要です。

PISO法のソフトウェア比較

非定常ソルバーの実装比較

🧑‍🎓

各CFDソルバーでPISO法やその類似手法はどう実装されてますか?


🎓
ソルバー非定常アルゴリズム時間精度適応時間刻み
Ansys FluentPISO, SIMPLE系, Coupled1次/2次あり(Global CFL)
Ansys CFX連成型 + 係数反復2次後退差分あり
STAR-CCM+SIMPLE系(内部反復付き)1次/2次あり
OpenFOAMPISO, PIMPLE1次/2次/C-Nあり(adjustTimeStep)

Ansys Fluent のPISO

🎓

FluentのPISOは「Skewness Correction」と「Neighbor Correction」の2つのパラメータを持つ。Skewness Correctionはメッシュの歪みを補正し、Neighbor Correctionは隣接セル値の更新回数を制御する。通常はどちらもデフォルト値(1)で十分だ。


Fluent 2020R2以降では Pressure-Based Coupled Algorithm のTransient版が推奨されることが多く、PISO以上の収束安定性を示す場合がある。


OpenFOAM のPISO/PIMPLE

🎓

OpenFOAMでは用途に応じてソルバーを選ぶ:


ソルバー名用途アルゴリズム
pisoFoam非圧縮非定常純粋PISO
pimpleFoam非圧縮非定常(大CFL)PIMPLE
interFoamVOF二相流PIMPLE + VOF
buoyantPimpleFoam浮力駆動流PIMPLE + エネルギー方程式

pimpleFoam が最も汎用的で、CFL制限も緩いため実務では最初の選択肢になることが多いんだ。


STAR-CCM+ の非定常設定

🎓

STAR-CCM+ではImplicit Unsteadyモデルを選択すると、内部反復(Inner Iterations)の数で品質を制御する。Temporal Discretization は1st Order か 2nd Order を選択できる。内部反復は5〜20回程度が一般的だが、LESでは各タイムステップの残差を十分下げることが重要だ。


移動メッシュとの連携

🧑‍🎓

回転体や変形を伴う問題ではどうなりますか?


🎓

移動メッシュ問題ではGCL(Geometric Conservation Law)の満足が追加要件になる。PISO法はタイムステップ内の整合性が高いため、動的メッシュとの相性が良い。


  • Sliding Mesh: 回転機械(ファン、ポンプ)の非定常解析
  • Dynamic Mesh / Morphing: FSI(流体-構造連成
  • Overset Mesh: 大変位を伴う物体運動

OpenFOAMのdynamicMeshDictとpimpleFoamの組み合わせが柔軟性が高いよ。


Coffee Break よもやま話

FluentのTransient SIMPLECとOpenFOAMのpisoFoam——「非定常」の実装哲学の違い

非定常解析に使うソルバーはツールによって名前も哲学も違う。FluentはSIMPLE系アルゴリズムの非定常拡張(Transient SIMPLEC)を使いながら、内部的にPISO的な補正を組み込んでいる。一方OpenFOAMはpisoFoamとpimpleFoamを明示的に使い分けさせる設計——透明性が高い代わりに、ユーザーが自分でアルゴリズムを理解して選択する責任がある。Star-CCM+は独自の「Segregated Solver」が非定常にも対応し、CFL適応タイムステップ機能が充実している。どのツールを使うにせよ「このソルバーはPISO系か、それとも?」という知識があると、ドキュメントを読むときに格段にます。

PISO法の先端研究

PISO法のDNS/LESにおける役割

🧑‍🎓

DNSやLESでPISO法はどのように使われていますか?


🎓

有限体積法ベースのDNS/LESでは、PISO法が圧力-速度連成の標準手法だ。特にOpenFOAMのdnsFoamやpisoFoamは学術研究で広く使われている。


DNSでは数値誤差が物理的なスケールに直接影響するため、PISO法の各ステップで非常に厳しい収束基準(残差 $10^{-8}$ 以下)が要求される。


分数ステップ法との関係

🧑‍🎓

分数ステップ法(Fractional Step Method)とPISO法は関係があるんですか?


🎓

密接に関係している。分数ステップ法(Chorin, 1968; Temam, 1969)は:


1. 圧力項を除いた運動量方程式で仮速度を求める

2. 圧力ポアソン方程式を解く

3. 速度を補正して発散フリーにする


PISO法はこの分数ステップ法をFVM上で実装したものと見なせるんだ。FEM系のコード(例えばNek5000)では分数ステップ法と呼ばれ、FVM系(OpenFOAM, Fluent)ではPISO法と呼ばれることが多い。本質的には同じ考え方だよ。


高次精度FVMとの組み合わせ

🧑‍🎓

空間精度をさらに上げる手法はありますか?


🎓

通常のFVMは2次精度が標準だが、以下の手法で高次精度化が可能だ:


  • MUSCL再構築: 3次精度の勾配再構築。OpenFOAMのlinearUpwindが近い
  • WENO(Weighted Essentially Non-Oscillatory): 3〜5次精度。衝撃波を含む問題にも適用可能
  • Compact Scheme: 高精度だが並列化が困難

LESでは空間フィルタ幅がメッシュサイズで決まるため、高次精度スキームを使うとフィルタのカットオフが急峻になり、解像可能な渦の範囲が広がるんだ。


スペクトル要素法との比較

🧑‍🎓

FVMのPISO以外に、非定常CFDで使われる手法はありますか?


🎓

スペクトル要素法(SEM)が高精度DNS/LESで有力だ。代表的なコードにNek5000やNekRSがある。多項式次数Nを上げることで指数関数的に精度が向上する(p-refinement)。


ただしSEMは複雑形状のメッシュ生成が困難で、産業用途ではFVMのPISO/PIMPLE系が依然主流だ。最近はGPU対応のNekRS(Argonne国立研究所)が10億格子点規模のDNSを実現している。


PISO法のトラブル対応

PISO法の典型的なトラブル

🧑‍🎓

PISO法で非定常計算を走らせたら発散したんですが、何が原因でしょう?


🎓

PISO法の発散原因トップ5を見ていこう。


1. CFL数が大きすぎる

🎓

症状: 計算開始直後または流れが発達した後に発散


対策:

  • maxCo を0.5以下に設定(OpenFOAM の adjustTimeStep 使用時)
  • Fluent では Global Courant Number を1以下に
  • PIMPLEに切り替えてnOuterCorrectorsを増やす

2. 初期条件が不適切

🎓

症状: 最初の数タイムステップで発散


対策:

  • まずSIMPLE法で定常解を求め、それを初期条件にする
  • 速度場をゼロではなく、近似的な流れ場で初期化
  • 乱流量(k, omega)を適切に初期化(タービュレンス強度と長さスケールから)

3. 境界条件での逆流

🧑‍🎓

出口で逆流が起こると発散するんですか?


🎓

特に渦放出のような問題では出口で局所的な逆流が生じやすい。


対策:

  • 出口を十分下流に配置(物体から20D以上)
  • OpenFOAM: inletOutlet 境界条件を使用
  • Fluent: Backflow Direction Specification を有効に

4. メッシュ品質の問題

🎓

特にPISOで注意すべき品質指標:


指標許容値PISO特有の注意
非直交性< 70度nNonOrthogonalCorrectorsで補正
スキューネス< 0.85Skewness Correctionを有効に
セル体積比< 10:1急激な変化は圧力振動の原因

5. 時間離散化と空間離散化の不整合

🎓

症状: 計算は安定だが結果が非物理的


原因: 2次時間離散化(backward)を使いながら、空間は1次風上 → 時間精度と空間精度の不釣り合い


対策: 時間と空間の精度を揃える。2次時間なら空間も2次以上にすべきだ。


PISO vs PIMPLE の選択判断

🧑‍🎓

PISOとPIMPLEのどちらを使うべきか、判断基準を教えてください。


🎓
条件推奨理由
CFL < 1 を維持できるPISOシンプルで効率的
CFL > 1 にしたいPIMPLE外部反復で安定化
移動メッシュPIMPLE大変位でCFLが跳ねやすい
LES/DNS(学術)PISOCFL制御下で最も効率的
産業LESPIMPLEロバスト性重視
🧑‍🎓

迷ったらPIMPLEが安全、精度を追求するならPISO、という理解で合ってますか?


🎓

そのとおり。PIMPLEのnOuterCorrectors=1にすれば実質PISOだから、まずPIMPLEで始めて、安定したらnOuterCorrectors=1に減らすという戦略もあるよ。


Coffee Break よもやま話

「PISOで計算したのに圧力振動が止まらない」——よくある罠

PISOを使って非定常計算をしているのに圧力場がギザギザに振動する——という相談は意外と多い。原因の多くは「nCorrectors(補正ループ回数)が1になっている」こと。デフォルトが1のソルバーでは、1ステップに1回しか圧力補正をしないのでPISOの真の強みが出ない。2〜3回にするだけでスムーズになることがある。もう一つの原因が境界条件のタイムステップ非整合——入口条件が時間に対して階段状に変化していると、その不連続がPISO反復の中で増幅される。PISOのトラブルは「アルゴリズムの設定パラメータ」と「境界条件の時間整合性」の2点から疑うのが診断の定石です。

関連シミュレーター

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

シミュレーター一覧

関連する分野

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