衝撃波管問題(Riemannソルバー) — 数値フラックスと近似解法

カテゴリ: 流体解析(CFD) | 2026-01-20
shock-tube-riemann-method
数値解法の舞台裏

Godunov法とRiemannソルバー

🧑‍🎓

RiemannソルバーがCFDの中でどういう役割を果たしているのか、改めて教えてください。


🎓

Godunovの考え方は、各セル界面でのフラックスを局所的なRiemann問題の解から求めるというものだ。セル $i$ と $i+1$ の境界では、左状態 $\mathbf{U}_i$ と右状態 $\mathbf{U}_{i+1}$ から成るRiemann問題を解き、界面フラックス $\mathbf{F}_{i+1/2}$ を決定する。


🎓

厳密Riemannソルバーは毎回Newton法の反復が必要で計算コストが高い。そこで実用的な近似Riemannソルバーが多数開発されてきた。代表的なものを比較しよう。


ソルバー原理衝撃波接触不連続面膨張波コスト
Exact(Godunov)厳密解正確正確正確
Roe近似ヤコビアンの線形化良好良好良好
HLL2波近似(最速・最遅波)良好拡散大良好
HLLC3波近似(接触波追加)良好良好良好低〜中
AUSM+圧力-対流分離良好やや拡散良好
Rusanov(LLF)最大固有値で近似安定拡散大安定最低
🧑‍🎓

HLLだと接触不連続面がぼやけるのに、HLLCだと良好なのはなぜですか?


🎓

HLLは波を2本しか考慮しないから、接触不連続面(3本目の波)の情報が失われるんだ。HLLCのCはContact waveのCで、3本目の波を追加することで接触不連続面を解像できるようになった。Toroの教科書に詳しい導出がある。


Roeソルバーの詳細

🧑‍🎓

Roeソルバーはどういう仕組みで近似しているんですか?


🎓

Roeの考え方は、非線形のEuler方程式を界面で線形化するというものだ。Roe平均状態を使ってヤコビアン行列 $\hat{A}$ を構成し、


$$ \mathbf{F}_{i+1/2} = \frac{1}{2}(\mathbf{F}_L + \mathbf{F}_R) - \frac{1}{2}|\hat{A}|(\mathbf{U}_R - \mathbf{U}_L) $$

Roe平均の密度と速度は以下で定義される。


$$ \hat{\rho} = \sqrt{\rho_L \rho_R}, \quad \hat{u} = \frac{\sqrt{\rho_L} u_L + \sqrt{\rho_R} u_R}{\sqrt{\rho_L} + \sqrt{\rho_R}} $$

🧑‍🎓

Roeソルバーの弱点はありますか?


🎓

膨張衝撃波(expansion shock)という非物理的な解を生成する場合がある。これはエントロピー条件に違反するもので、Harten-Hyman entropy fixで修正する必要がある。また、低マッハ数領域では過度な数値拡散が生じる問題もあり、Low-Mach Roe修正(Rieper fix等)が提案されているよ。


MUSCL法とTVD制限関数

🧑‍🎓

1次精度だと数値拡散が大きすぎると思うんですが、高次精度化はどうするんですか?


🎓

MUSCL(Monotonic Upstream-centered Scheme for Conservation Laws)法で2次精度化するのが標準だ。セル界面の左右状態を線形再構成で外挿する。


$$ \mathbf{U}_{i+1/2}^L = \mathbf{U}_i + \frac{1}{2}\phi(r)(\mathbf{U}_i - \mathbf{U}_{i-1}) $$

ここで $\phi(r)$ がTVDリミッター関数、$r$ は解の滑らかさの指標だ。リミッターを選ぶことで、滑らかな領域では2次精度、不連続近傍では1次精度に自動的に切り替わる。

Coffee Break よもやま話

ライト兄弟は最初の「CFDエンジニア」だった?

ライト兄弟は1901年に自作の風洞で200以上の翼型を試験しました。当時のコンピュータは? もちろん存在しません。彼らは手作業で揚力と抗力を測定し、最適な翼型を見つけ出した。現代のCFDエンジニアがFluent1発で計算する揚力係数を、ライト兄弟は何百回もの風洞実験で手に入れたのです。

離散化手法の詳細解説

空間離散化における手法選択が数値精度・安定性・計算コストに与える影響を詳述する。

風上差分(Upwind)

1次風上: 数値拡散が大きいが安定。2次風上: 精度向上するが振動のリスク。高レイノルズ数流れでは必須。

中心差分(Central Differencing)

2次精度だが、Pe数 > 2で数値振動が発生。低レイノルズ数の拡散支配流れに適する。

TVDスキーム(MUSCL、QUICK等)

リミッタ関数により数値振動を抑制しつつ高精度を維持。衝撃波や急勾配の捕捉に有効。

有限体積法 vs 有限要素法

FVM: 保存則を自然に満足。CFDの主流。FEM: 複雑形状・マルチフィジックスに有利。SPH等のメッシュフリー法も発展中。

マトリクスソルバーの選定指針

問題規模と特性に応じた最適なソルバー選択のガイドライン。

ソルバー種別詳細・推奨条件
圧力-速度連成(SIMPLE系)SIMPLE: 標準的だが収束が遅い。SIMPLEC: 圧力補正の緩和が改善。PISO: 非定常問題に適する。
連立系ソルバーAMG(代数的マルチグリッド): 大規模問題の標準。ILU前処理: メモリ効率良好。ブロックGauss-Seidel: 連成系に有効。
DOF別推奨〜10⁵セル: SIMPLE+AMG、10⁵〜10⁷セル: SIMPLEC+AMG+並列、10⁷セル〜: 結合型ソルバー(Coupled Solver)を検討

時間積分法と収束判定

ソルバー内部の制御パラメータと収束判定基準について記述する。

CFL条件(クーラン数)

陽解法: CFL ≤ 1が安定条件。陰解法: CFL > 1でも安定だが、精度と反復回数に影響。LES: CFL ≈ 1を推奨。物理的意味: 1タイムステップで情報が1セル以上進まないこと。

残差モニタリング

連続の式・運動量・エネルギーの各残差が3〜4桁低下で収束と判断。質量保存の残差は特に重要。

緩和係数

圧力: 0.2〜0.3、速度: 0.5〜0.7が一般的な初期値。発散する場合は緩和係数を下げる。収束後は上げて加速。

非定常計算の内部反復

各タイムステップ内で定常解に収束するまで反復。内部反復数: 5〜20回が目安。残差がタイムステップ間で変動する場合は時間刻みを見直す。

数値解法の直感的理解

FVMのイメージ

有限体積法は「会計帳簿」に似ている。各セル(口座)について「入ってくる量」と「出ていく量」の収支を厳密に管理する。隣のセルに流れ出た量は、そのセルに流れ込む量と完全に一致する——これが「保存性」であり、流体解析で質量やエネルギーが勝手に増減しないことを保証する。

SIMPLE法のたとえ

SIMPLE法は「交互に調整する」手法。まず速度を仮に求め(予測ステップ)、その速度で質量保存が満たされるよう圧力を補正し(補正ステップ)、補正された圧力で速度を修正する——このキャッチボールを繰り返して正解に近づく。2人で棚を水平にする作業に似ている:片方が高さを合わせ、もう片方がバランスを取り、これを交互に繰り返す。

風上差分のたとえ

風上差分は「川の流れに立って上流の情報を重視する」手法。川の中にいる人が下流を見ても水の出所は分からない——上流の情報が下流を決めるという物理を反映した離散化手法。精度は1次だが、流れの方向を正しく捕捉するため安定性が高い。

CFDメッシュの品質管理や乱流モデルの選定に悩む時間を、もっと創造的な設計作業に使えたら。 — Project NovaSolverはそんな実務者の声から生まれました。

CAEの未来を、実務者と共に考える

Project NovaSolverは、衝撃波管問題(Riemannソルバー)における実務課題の本質に向き合い、エンジニアリングの現場を支える道具づくりを目指す研究開発プロジェクトです。

プロジェクトの最新情報を見る →