オイラー方程式(圧縮性) — トラブルシューティングガイド
より充実した内容を euler-equations.html でご覧いただけます。
トラブルシューティング
先生、オイラーソルバーで計算がうまくいかないときの対処法を教えてください。
よくあるトラブルをパターン別に整理しよう。
1. 膨張衝撃波(Expansion Shock)の発生
症状: 物理的にありえない膨張衝撃波が解に含まれる
原因: Roeスキームはエントロピー条件を自動的には満たさない。固有値がゼロに近い場合にentropy violationが起こる。
対策: エントロピー修正(Harten-Hyman fix)を適用する。
$\delta$ は小さな正の値(例: $0.1 \times (|u| + a)$)。Fluentではデフォルトでentropy fixが適用されているから通常は問題ない。
2. Carbuncle現象
Carbuncle現象って何ですか?
症状: bow shock(離脱衝撃波)の前面にニキビ状の凸凹が発生する。特に格子が衝撃波に対して正対している場合に起きやすい。
原因: Roe等のリーマンソルバーの固有の不安定性。接触不連続に対する散逸が不足。
対策:
- HLLCソルバーに切り替え(接触波の散逸が適度にある)
- Roeソルバーに人工的なshear viscosityを追加
- メッシュを衝撃波に対してわずかに斜めにする(実用的な回避策)
3. 負の密度・圧力
症状: 計算中に密度や圧力が負値になって発散
原因: 高次精度再構築で、衝撃波近傍でオーバーシュート/アンダーシュートが発生。リミッターが不十分。
対策:
- より散逸的なリミッター(minmod)に切り替え
- positivity-preserving limiter を使用
- CFL数を下げる(0.3〜0.5程度に)
- failsafe機構: 負値が検出されたら局所的に1次精度に落とす
圧力が負になるって怖いですね。どうやって事前に防げますか?
強い衝撃波(圧力比10以上)の問題では、最初から保守的な設定(1次精度、小さいCFL)で計算を開始し、安定したら徐々に高次精度に切り替えるのが安全だ。
4. 境界からの非物理的反射
症状: 計算領域の境界から衝撃波や圧力波が反射して、定常解が得られない
対策:
- 遠方場境界にcharacteristic-based NRBC(Non-Reflecting Boundary Condition)を使用
- 計算領域を十分大きく取る(翼弦長の20〜50倍)
- スポンジ層(ダンピングゾーン)を境界近傍に追加
オイラーソルバーは粘性がない分、数値的な問題が目立ちやすいんですね。
その通り。Navier-Stokes方程式では粘性項が自然な散逸を提供するから安定化されるが、オイラー方程式では数値スキームの散逸だけが安定化要因になる。だからスキームの選択とパラメータ調整がより重要なんだ。
「計算が爆発する」——オイラー解析あるある発散の原因トップ3
オイラー方程式の計算が突然発散するとき、原因の大半は「初期条件の設定ミス」「CFL数の過大設定」「衝撃波とメッシュの位置関係」の3つに集約されます。特に多いのが初期条件問題で、「フリーストリーム一様流で初期化したらノズル喉部付近で即発散」というケース。喉部近傍でマッハ数が1に近づくと特性線が鋭くなり、わずかな不連続が増幅します。対策として現場では「マッハ数を0.1くらいから徐々に上げるランプアップ手法」や「局所的に圧力・密度を滑らかにするピーシング初期化」が使われます。CFL数は0.3〜0.5から始めるのが無難です。
トラブル解決の考え方
関連トピック
なった
詳しく
報告