超音速流れ — トラブルシューティング
計算が発散する
超音速解析で計算が発散するとき、チェックすべきポイントを教えてください。
超音速特有の発散原因をまとめよう。
| 原因 | 症状 | 対策 |
|---|---|---|
| CFL数が大きすぎる | 初期数ステップで発散 | CFL=0.5から開始 |
| 初期条件の不連続 | 衝撃波が非物理的に振動 | ランプ関数でマッハ数を徐々に上げる |
| メッシュのアスペクト比 | 境界層プリズム先端で発散 | プリズム→テトラ遷移比を改善 |
| 背圧設定ミス | 出口に衝撃波が反射 | 超音速出口にはExtrapolateを使う |
| 壁面温度過大 | 粘性加熱で温度発散 | 等温壁条件を適用 |
超音速出口なのに静圧を指定してしまうとどうなりますか?
超音速出口に静圧を固定すると、出口から非物理的な情報が上流に伝わり、数値的に不安定になる。超音速出口は全変数が外挿されるべきだから、FluentではSupersonic/Initial Gauge Pressureの「Supersonic」設定を使う。出口にごく一部でも亜音速域がある場合(例えば壁面境界層内)は、Pressure Outletに小さなbackflow圧力を設定するのが安全だ。
衝撃波位置がずれる
理論で予測される位置と衝撃波がずれるんですが、何が原因ですか?
まず確認すべきは以下だ。
1. 入口条件の精度: 全温度と全圧からマッハ数を逆算して、意図したマッハ数になっているか確認。等エントロピー関係式 $p_0/p = (1 + \frac{\gamma-1}{2}M^2)^{\gamma/(\gamma-1)}$ で検算する
2. 境界層の影響: 無粘性理論は壁面上の実効くさび角が物理くさび角と一致する前提だが、境界層の排除厚さにより実効角度が変わる
3. 3D効果: 2D理論で比較しているが、計算が3Dの場合、スパン方向端面の影響で衝撃波角度が変わる
4. 数値拡散: メッシュが粗いと衝撃波が拡散し、見かけの位置がずれる
非物理的な全圧損失
膨張波を通過した後に全圧が下がるんですが、等エントロピー過程のはずなのにおかしくないですか?
それは数値拡散による数値的なエントロピー生成だ。風上スキームは本質的に人工散逸を含むので、衝撃波がない領域でもわずかなエントロピー生成が起こる。対策としては、
- メッシュを細かくする(最も確実)
- 高次精度スキームを使う
- 中心差分ベースのスキーム(低散逸)に切り替える
- 膨張波領域のメッシュを流れ方向に揃える
全圧損失率はどのくらいまでなら許容範囲ですか?
等エントロピー過程(膨張波、滑らかな加速)での数値的全圧損失が0.1%以下であれば十分な精度だ。衝撃波を含む場合は理論的なRankine-Hugoniot全圧損失と比較して、数値的な追加損失が数%以下であれば実用的な精度と言えるよ。格子収束性の確認は必須だ。
レイノルズの実験(1883年)——乱流発見の瞬間
オズボーン・レイノルズは、管内の水にインクを流す実験で「層流から乱流への遷移」を発見しました。流速を上げていくと、インクの線がある瞬間にグチャグチャに乱れる。この劇的な瞬間を、レイノルズは数学的に $Re = \rho uD/\mu$ という無次元数で表現した。100年以上経った今も、CFDエンジニアが最初に確認するのはこのレイノルズ数です。
トラブル解決の考え方
デバッグのイメージ
CFDのデバッグは「水道管の詰まり修理」に似ている。まず「どこで詰まっているか」(どの残差が下がらないか)を特定し、次に「何が詰まっているか」(メッシュ品質?境界条件?乱流モデル?)を調べ、最後に「どう直すか」(メッシュ修正?緩和係数?)を判断する。
「解析が合わない」と思ったら
- まず深呼吸——焦って設定をランダムに変えると、問題がさらに複雑になる
- 最小再現ケースを作る——超音速流れの問題を最も単純な形で再現する。「引き算のデバッグ」が最も効率的
- 1つだけ変えて再実行——複数の変更を同時に行うと、何が効いたか分からなくなる。科学実験と同じ「対照実験」の原則
- 物理に立ち返る——計算結果が「重力に逆らって物が浮く」ような非物理的な結果なら、入力データの根本的な間違いを疑う
CFDメッシュの品質管理や乱流モデルの選定に悩む時間を、もっと創造的な設計作業に使えたら。 — Project NovaSolverはそんな実務者の声から生まれました。
超音速流れの実務で感じる課題を教えてください
Project NovaSolverは、CAEエンジニアが日々直面する課題——セットアップの煩雑さ、計算コスト、結果の解釈——の解決を目指しています。あなたの実務経験が、より良いツール開発の原動力になります。
実務課題アンケートに回答する →