PISO法
理論と物理
PISO法の概要
先生、PISO法ってSIMPLE法と何が違うんですか?
PISO(Pressure-Implicit with Splitting of Operators)は1986年にIssaが提案した圧力-速度連成アルゴリズムだ。SIMPLE法が外部反復(outer iteration)を何度も回して収束させるのに対し、PISO法は1タイムステップ内で2回の圧力補正を行い、外部反復なしで時間精度を確保するんだ。
外部反復が不要ということは、非定常計算で有利なんですか?
PISOアルゴリズムの手順
具体的な手順を教えてください。
PISO法は以下の手順で進む。
Step 1: 運動量予測子(Predictor)
前タイムステップの圧力 $p^n$ を使って運動量方程式を解き、仮速度 $\mathbf{u}^*$ を得る:
Step 2: 第1圧力補正子(First Corrector)
速度を補正: $\mathbf{u}^{**} = \frac{H(\mathbf{u}^*)}{a_P} - \frac{1}{a_P}\nabla p'$
Step 3: 第2圧力補正子(Second Corrector)
最終速度: $\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法との理論的比較
両者の本質的な違いを整理しよう。
| 特性 | SIMPLE | PISO |
|---|---|---|
| 圧力補正回数 | 1回/外部反復 | 2回(以上)/タイムステップ |
| 外部反復 | 必要(10〜数100回) | 不要 |
| 緩和係数 | 必要(0.2〜0.8) | 不要 |
| 主な用途 | 定常計算 | 非定常計算 |
| 時間精度 | 擬似時間進行 | 真の時間精度 |
| CFL制限 | なし(陰的) | 推奨CFL < 1〜5 |
PISOでもCFL数の制限があるんですか? 陰的じゃないんですか?
時間離散化自体は陰的だが、PISOの2回の補正で分裂誤差を十分低減するにはCFL数をある程度抑える必要がある。実用上はCFL < 1が安全、最大でもCFL < 5程度を推奨する。CFL数が大きすぎると精度が劣化するんだ。
PISOがSIMPLEより非定常に強い「数学的な理由」
PISO法(Pressure Implicit with Splitting of Operators)がSIMPLEと決定的に違うのは「1タイムステップ内で圧力補正を2回以上繰り返す」こと。非定常流れでは1ステップで流れが大きく変わるため、1回の圧力補正では連続の方程式(質量保存)を満たしきれない。PISOはその2回目の補正で速度場の質量保存誤差をほぼゼロにできる——これが理論的な強さ。心臓弁の開閉シミュレーションや、エンジンシリンダー内の燃焼流れなど「流れが瞬時に変わる」問題でPISOが選ばれる理由はここにある。定常解析でSIMPLE、非定常でPISOという使い分けは今も有効な基本戦略です。
各項の物理的意味
- 時間項 $\partial(\rho\phi)/\partial t$:蛇口をひねった瞬間を思い浮かべてください。最初は水がバタバタと不安定に出て、しばらくすると安定した流れになりますよね? この「変化している最中」を記述するのが時間項です。心臓の拍動で血流が脈打つのも、エンジンのバルブが開閉するたびに流れが変動するのも、すべて非定常現象。では定常解析とは? 「十分時間が経って流れが落ち着いた後」だけを見る——つまりこの項をゼロにする。計算コストが大幅に下がるため、まず定常で解いてみるのがCFDの基本戦略です。
- 対流項 $\nabla \cdot (\rho \mathbf{u} \phi)$:川に落ち葉を落としたらどうなりますか? 流れに乗って下流に運ばれますよね。これが「対流」——流体の動きが物を運ぶ効果です。暖房の温風が部屋の端まで届くのも、空気という「運び屋」が熱を対流で輸送しているから。ここが面白いところ——この項は「速度×速度」を含むため非線形です。つまり、流れが速くなるとこの項が急激に強くなり、制御が難しくなる。これが乱流の根本原因です。よくある勘違い:「対流と伝導は同じようなもの」→ 全然違います! 対流は流れが運ぶ、伝導は分子が伝える。桁違いの効率差があります。
- 拡散項 $\nabla \cdot (\Gamma \nabla \phi)$:コーヒーにミルクを入れて放置したことはありますか? かき混ぜなくても、しばらく経つと自然に混ざりますよね。あれが分子拡散です。では次の質問——ハチミツとお水、どちらが流しやすいですか? 当然お水ですよね。ハチミツは粘性($\mu$)が高いから流れにくい。粘性が大きいと拡散項が強くなり、流体は「もったりした」動きになります。レイノルズ数が小さい流れ(ゆっくり、ドロドロ)では拡散が支配的。逆にRe数が大きい流れでは対流が圧倒し、拡散は脇役になります。
- 圧力項 $-\nabla p$:注射器のピストンを押すと、液体が針先から勢いよく出ますよね? なぜでしょう? ピストン側が高圧、針先が低圧——この圧力差が流体を押す力になるからです。ダムの放水も同じ原理。天気図で等圧線がギュッと密になっている場所では? そう、強風が吹きます。「圧力差があるところに流れが生まれる」——これがナビエ-ストークス方程式の圧力項の物理的意味。ここでの勘違いポイント:CFDの「圧力」は絶対圧ではなくゲージ圧のことが多い。圧縮性解析に切り替えたとたんに結果がおかしくなる場合、絶対圧/ゲージ圧の混同が原因かもしれません。
- ソース項 $S_\phi$:暖められた空気が上に昇る——なぜでしょう? 周囲より軽く(密度が低く)なったから、浮力で押し上げられるのです。この浮力はソース項として方程式に追加されます。他にも、ガスコンロの炎で化学反応熱が発生する、工場の電磁ポンプで金属溶湯にローレンツ力がかかる…これらはすべて「外部から流体にエネルギーや力を注入する」作用であり、ソース項で表現します。ソース項を忘れるとどうなるか? 自然対流の解析で浮力を入れ忘れると、流体は一切動かない——冬の部屋で暖房をつけたのに暖かい空気が上に行かない、という物理的にありえない結果になります。
仮定条件と適用限界
- 連続体仮定:クヌッセン数 Kn < 0.01(分子平均自由行程 ≪ 代表長さ)で成立
- ニュートン流体仮定:せん断応力と歪み速度が線形関係(非ニュートン流体では粘度モデルが必要)
- 非圧縮性仮定(Ma < 0.3の場合):密度を一定として扱う。マッハ数0.3以上では圧縮性効果を考慮
- ブシネスク近似(自然対流):密度変化を浮力項のみで考慮し、他の項では一定密度を使用
- 適用外ケース:希薄気体(Kn > 0.1)、超音速・極超音速流れ(衝撃波捕捉が必要)、自由表面流れ(VOF/Level Set等が必要)
次元解析と単位系
| 変数 | SI単位 | 注意点・換算メモ |
|---|---|---|
| 速度 $u$ | m/s | 入口条件で体積流量から換算する際、断面積の単位に注意 |
| 圧力 $p$ | Pa | ゲージ圧と絶対圧の区別。圧縮性解析では絶対圧を使用 |
| 密度 $\rho$ | kg/m³ | 空気: 約1.225 kg/m³@20°C、水: 約998 kg/m³@20°C |
| 粘性係数 $\mu$ | Pa·s | 動粘性係数 $\nu = \mu/\rho$ [m²/s] との混同に注意 |
| レイノルズ数 $Re$ | 無次元 | $Re = \rho u L / \mu$。層流/乱流遷移の判定指標 |
| CFL数 | 無次元 | $CFL = u \Delta t / \Delta x$。時間刻みの安定性に直結 |
数値解法と実装
PISO法の実装詳細
PISO法を実装するとき、H演算子って何ですか?
OpenFOAMの文脈でよく出る表現だ。運動量方程式を離散化すると:
ここで $H(\mathbf{u}) = -\sum_N a_N \mathbf{u}_N + \mathbf{b}$ と定義する。すると:
この形にすると、速度を圧力勾配の関数として表せる。これを連続の式に代入することで圧力のポアソン方程式が得られるんだ。
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 > 1 | PIMPLE(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-Nicolson | 2次 | 無条件安定 | CrankNicolson |
LES計算では2次精度の backward か CrankNicolson を使うべきだ。RANS定常計算の擬似非定常(pseudo-transient)では Euler で十分。
PIMPLE法——PISOとSIMPLEを掛け合わせた「いいとこ取り」実装
OpenFOAMを使っている人ならPIMPLEという名前を見たことがあるはず。これはPISOとSIMPLEを組み合わせたハイブリッドアルゴリズム。1タイムステップ内でSIMPLEの外部反復(PIMPLE loopと呼ばれる)を回しながら、その中でPISOの内部圧力補正を行う構造になっている。CFL数が1を超えても安定して計算を進められるのが最大の強み——つまりSIMPLEの「大きなタイムステップで進む」利点と、PISOの「非定常精度」を両立させた設計だ。LESや乱流の非定常解析でCFL=0.5〜1に縛られるのが辛い……というケースで重宝される実用的な実装です。
風上差分(Upwind)
1次風上: 数値拡散が大きいが安定。2次風上: 精度向上するが振動のリスク。高レイノルズ数流れでは必須。
中心差分(Central Differencing)
2次精度だが、Pe数 > 2で数値振動が発生。低レイノルズ数の拡散支配流れに適する。
TVDスキーム(MUSCL、QUICK等)
リミッタ関数により数値振動を抑制しつつ高精度を維持。衝撃波や急勾配の捕捉に有効。
有限体積法 vs 有限要素法
FVM: 保存則を自然に満足。CFDの主流。FEM: 複雑形状・マルチフィジックスに有利。SPH等のメッシュフリー法も発展中。
CFL条件(クーラン数)
陽解法: CFL ≤ 1が安定条件。陰解法: CFL > 1でも安定だが、精度と反復回数に影響。LES: CFL ≈ 1を推奨。物理的意味: 1タイムステップで情報が1セル以上進まないこと。
残差モニタリング
連続の式・運動量・エネルギーの各残差が3〜4桁低下で収束と判断。質量保存の残差は特に重要。
緩和係数
圧力: 0.2〜0.3、速度: 0.5〜0.7が一般的な初期値。発散する場合は緩和係数を下げる。収束後は上げて加速。
非定常計算の内部反復
各タイムステップ内で定常解に収束するまで反復。内部反復数: 5〜20回が目安。残差がタイムステップ間で変動する場合は時間刻みを見直す。
SIMPLE法のたとえ
SIMPLE法は「交互に調整する」手法。まず速度を仮に求め(予測ステップ)、その速度で質量保存が満たされるよう圧力を補正し(補正ステップ)、補正された圧力で速度を修正する——このキャッチボールを繰り返して正解に近づく。2人で棚を水平にする作業に似ている:片方が高さを合わせ、もう片方がバランスを取り、これを交互に繰り返す。
風上差分のたとえ
風上差分は「川の流れに立って上流の情報を重視する」手法。川の中にいる人が下流を見ても水の出所は分からない——上流の情報が下流を決めるという物理を反映した離散化手法。精度は1次だが、流れの方向を正しく捕捉するため安定性が高い。
実践ガイド
非定常CFD解析でのPISO実践
実際にPISO法で非定常解析をする際の設定手順を教えてください。
代表的なケース(円柱まわりの渦放出、Re=200のLaminar流れ)を例にしよう。
Step 1: 時間刻みの決定
CFL条件から時間刻みを決める:
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以下) | 分裂誤差の制御 |
| nCorrectors | 2〜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 LES | 2000万セル | 100,000 | 数週間 |
| 3D DNS | 数億セル | 1,000,000+ | 数ヶ月(HPC必須) |
LESとDNSの計算コストの差がすごいですね。
DNSはKolmogorovスケールまで解像する必要があるから、$Re^{9/4}$ に比例してメッシュ数が増える。産業用途ではLESかDES(Detached Eddy Simulation)が現実的だね。
タイムステップを小さくすれば精度が上がる?——PISOの現実
「非定常CFDはタイムステップを小さくすれば正確」という思い込みは危険。PISOでΔtを10倍小さくしても、計算コストが10倍になるだけで精度が10倍になるわけじゃない。逆に小さすぎるタイムステップは丸め誤差の蓄積を招く。実務でのベストプラクティスは「CFL数を0.5〜1の間に保つΔt」を選ぶこと。水道管の圧力過渡解析で、担当者がΔt = 1e-6秒で1秒間を計算しようとしたが100万ステップになって計算機が1ヶ月かかると判明——CFL条件を計算したらΔt = 1e-4で十分だった、という実話がある。PISOの実践では「どのCFLで回すか」の判断が最も重要です。
解析フローのたとえ
CFDの解析フローは「水族館の水槽を設計する」感覚で考えてみてください。まず水槽の形を決め(計算領域)、水の入り口と出口を設計し(境界条件)、ポンプの強さを設定する(流量条件)。魚がどう泳ぐか見たければ粒子追跡。水温が気になれば熱解析を追加。…どうですか? 意外と直感的ではありませんか?
初心者が陥りやすい落とし穴
「y+って何ですか?」——この質問が出たら要注意。壁面近くのメッシュ解像度を表すy+は、CFDの結果精度を左右する最重要パラメータの1つ。壁関数を使うなら30〜300、壁を完全に解像するなら1以下。これを確認せずに「摩擦抵抗が合わない!」と悩む人がとても多い。体温計の先端をちゃんと脇に挟まないで「熱がないのに37.5度って出た!」と慌てているようなものです。
境界条件の考え方
入口の境界条件は「蛇口をどのくらい開けるか」と同じ。ちょろちょろ出すか(低速)、全開にするか(高速)。でもCFDではもう一つ——「どのくらい暴れた水を出すか」(乱流強度)も指定する必要があります。蛇口の開け方を間違えると、下流のシンク全体の流れが変わりますよね? CFDでも入口条件のミスは下流全体に波及します。
ソフトウェア比較
非定常ソルバーの実装比較
各CFDソルバーでPISO法やその類似手法はどう実装されてますか?
| ソルバー | 非定常アルゴリズム | 時間精度 | 適応時間刻み |
|---|---|---|---|
| Ansys Fluent | PISO, SIMPLE系, Coupled | 1次/2次 | あり(Global CFL) |
| Ansys CFX | 連成型 + 係数反復 | 2次後退差分 | あり |
| STAR-CCM+ | SIMPLE系(内部反復付き) | 1次/2次 | あり |
| OpenFOAM | PISO, PIMPLE | 1次/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 |
| interFoam | VOF二相流 | 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の組み合わせが柔軟性が高いよ。
FluentのTransient SIMPLECとOpenFOAMのpisoFoam——「非定常」の実装哲学の違い
非定常解析に使うソルバーはツールによって名前も哲学も違う。FluentはSIMPLE系アルゴリズムの非定常拡張(Transient SIMPLEC)を使いながら、内部的にPISO的な補正を組み込んでいる。一方OpenFOAMはpisoFoamとpimpleFoamを明示的に使い分けさせる設計——透明性が高い代わりに、ユーザーが自分でアルゴリズムを理解して選択する責任がある。Star-CCM+は独自の「Segregated Solver」が非定常にも対応し、CFL適応タイムステップ機能が充実している。どのツールを使うにせよ「このソルバーはPISO系か、それとも?」という知識があると、ドキュメントを読むときに格段にます。
選定で最も重要な3つの問い
- 「何を解くか」:PISO法に必要な物理モデル・要素タイプが対応しているか。例えば、流体ではLES対応の有無、構造では接触・大変形の対応能力が差になる。
- 「誰が使うか」:初心者チームならGUIが充実したツール、経験者ならスクリプト駆動の柔軟なツールが適する。自動車のAT車(GUI)とMT車(スクリプト)の違いに似ている。
- 「どこまで拡張するか」:将来の解析規模拡大(HPC対応)、他部門への展開、他ツールとの連携を見据えた選択が長期的なコスト削減につながる。
先端技術
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法の発散原因トップ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.85 | Skewness Correctionを有効に |
| セル体積比 | < 10:1 | 急激な変化は圧力振動の原因 |
5. 時間離散化と空間離散化の不整合
症状: 計算は安定だが結果が非物理的
原因: 2次時間離散化(backward)を使いながら、空間は1次風上 → 時間精度と空間精度の不釣り合い
対策: 時間と空間の精度を揃える。2次時間なら空間も2次以上にすべきだ。
PISO vs PIMPLE の選択判断
PISOとPIMPLEのどちらを使うべきか、判断基準を教えてください。
迷ったらPIMPLEが安全、精度を追求するならPISO、という理解で合ってますか?
そのとおり。PIMPLEのnOuterCorrectors=1にすれば実質PISOだから、まずPIMPLEで始めて、安定したらnOuterCorrectors=1に減らすという戦略もあるよ。
「PISOで計算したのに圧力振動が止まらない」——よくある罠
PISOを使って非定常計算をしているのに圧力場がギザギザに振動する——という相談は意外と多い。原因の多くは「nCorrectors(補正ループ回数)が1になっている」こと。デフォルトが1のソルバーでは、1ステップに1回しか圧力補正をしないのでPISOの真の強みが出ない。2〜3回にするだけでスムーズになることがある。もう一つの原因が境界条件のタイムステップ非整合——入口条件が時間に対して階段状に変化していると、その不連続がPISO反復の中で増幅される。PISOのトラブルは「アルゴリズムの設定パラメータ」と「境界条件の時間整合性」の2点から疑うのが診断の定石です。
「解析が合わない」と思ったら
- まず深呼吸——焦って設定をランダムに変えると、問題がさらに複雑になる
- 最小再現ケースを作る——PISO法の問題を最も単純な形で再現する。「引き算のデバッグ」が最も効率的
- 1つだけ変えて再実行——複数の変更を同時に行うと、何が効いたか分からなくなる。科学実験と同じ「対照実験」の原則
- 物理に立ち返る——計算結果が「重力に逆らって物が浮く」ような非物理的な結果なら、入力データの根本的な間違いを疑う
関連トピック
なった
詳しく
報告