非圧縮性Navier-Stokes方程式 — トラブルシューティングガイド
より充実した内容を navier-stokes-incompressible.html でご覧いただけます。
トラブルシューティング
NS方程式を解くときによく遭遇するトラブルを教えてください。
発散(divergence)と非物理的な結果が二大トラブルだ。
よくある問題と対策
1. 計算が発散する
症状: 残差が急増し、速度や圧力が$10^{20}$等の異常値に。
| 原因 | 診断 | 対策 |
|---|---|---|
| CFL数が大きすぎる | タイムステップ確認 | $\Delta t$ を半分にする |
| メッシュ品質不良 | 最小Orthogonal Quality確認 | 0.1以下のセルを修正 |
| 境界条件の矛盾 | 入出口の流量バランス | BC見直し |
| 初期条件が不適切 | 初期速度場が非物理的 | ポテンシャル流で初期化 |
| 緩和係数が高すぎる | SIMPLE設定確認 | 圧力0.3, 運動量0.5で試行 |
2. 残差が停滞する
残差が$10^{-3}$くらいで止まっちゃうんですけど…
対策の優先順位:
1. メッシュ品質の確認・改善
2. 2次精度で計算開始し、1次で初期化してから切替
3. 緩和係数の調整(上げすぎると発散、下げすぎると停滞)
4. Coupled ソルバーに切替(Fluent の場合)
5. 初期条件の改善(粗メッシュの解を補間)
3. 非物理的な逆流
症状: 出口境界で逆流(Reversed Flow)の警告が大量に出る。
原因: 出口が流れの剥離・再循環領域に近すぎる。
対策:
- 出口を下流に延長(管径の10〜20倍)
- Fluentなら Prevent Backflow オプションを有効化
- 逆流時の温度・乱流量の値を適切に設定
4. 圧力振動(チェッカーボード)
症状: 圧力場に市松模様状の振動が見られる。
原因: コロケーション格子でのRhie-Chow補間が不十分、またはメッシュの非直交性が高い。
対策:
- 圧力の離散化を PRESTO! (Fluent) に変更
- OpenFOAMなら nNonOrthogonalCorrectors を増やす
- メッシュの直交性を改善
5. 定常計算が収束しない(物理的な原因)
どんなにメッシュを改善しても定常計算が収束しないことがあるんですが…
流れ自体が非定常の場合がある。 カルマン渦列(Re > 47 で発生)のように、物理的に非定常な流れを定常計算で解こうとすると残差が振動し続ける。このときは非定常計算に切り替えること。モニタリング量の時間変動を確認し、周期的振動が見られたら非定常で解くべきだ。
物理を理解していないと、数値的なトラブルなのか物理的な現象なのか区別がつかないんですね。
まさにその通り。CFDのデバッグには流体力学の基礎知識が不可欠だ。
発散の犯人、9割は境界条件
「計算が発散した!」——CFD初学者が最初に壁にぶつかるのがこれです。原因として真っ先に疑われるのはメッシュ品質やタイムステップですが、現場の経験則では「発散の原因9割は境界条件の設定ミス」と言われています。例えば、入口を速度境界にして出口も圧力固定にしないと、方程式系が数学的に不定になって発散します。非圧縮性流れは特に圧力境界の設定が繊細で、「少なくとも1か所は圧力を絶対値で固定する」というルールを押さえておくだけで、謎の発散トラブルの大半は防げます。
トラブル解決の考え方
「解析が合わない」と思ったら
- まず深呼吸——焦って設定をランダムに変えると、問題がさらに複雑になる
- 最小再現ケースを作る——非圧縮性Navier-Stokes方程式の問題を最も単純な形で再現する。「引き算のデバッグ」が最も効率的
- 1つだけ変えて再実行——複数の変更を同時に行うと、何が効いたか分からなくなる。科学実験と同じ「対照実験」の原則
- 物理に立ち返る——計算結果が「重力に逆らって物が浮く」ような非物理的な結果なら、入力データの根本的な間違いを疑う
関連トピック
なった
詳しく
報告