衝撃波管問題(Riemannソルバー) — よくある問題と対策

カテゴリ: 流体解析(CFD) | 2026-02-20
この記事は統合版に移行しました
より充実した内容を shock-tube-riemann.html でご覧いただけます。
CAE visualization for shock tube riemann troubleshoot - technical simulation diagram
衝撃波管問題(Riemannソルバー) — よくある問題と対策

数値振動(Gibbs現象)

🧑‍🎓

衝撃波の前後に数値的な振動が出てしまうんですが、どうすればいいですか?


🎓

不連続面近傍のオーバーシュート/アンダーシュートは高次精度スキームの宿命だ。対策の選択肢を整理しよう。


対策メリットデメリット
1次精度に落とす振動完全消滅数値拡散で解がぼやける
TVDリミッターを強める振動抑制しつつ2次精度滑らかな領域の精度が低下
WENO/MP系スキーム高次精度を維持実装が複雑、計算コスト増
人工粘性追加実装簡単粘性量の調整が経験的
🧑‍🎓

Fluentで2次精度風上差分を使っていて振動が出る場合は?


🎓

Fluentでは「Solution Methods」でSpatial DiscretizationをFirst Order Upwindに一旦落として収束させ、その解を初期値にしてSecond Orderに切り替えるという手順が有効だ。また、Gradient LimiterのMethodをStandardからMultidimensional Limiterに変更すると振動が抑制されることもある。


Carbuncle現象

🧑‍🎓

「Carbuncle現象」って何ですか?先輩が困っていたんですが...


🎓

Carbuncle現象は、強い垂直衝撃波の数値解が格子に依存した非物理的な不安定構造を示す問題だ。Roe系スキームで特に発生しやすい。衝撃波面が格子に平行に配置されたとき、衝撃波面上に不規則な凹凸が成長してしまう。


🎓

対策はいくつかある。


1. HLL系スキームへの切り替え: HLLやHLLCは接触不連続面の解像度が低い代わりにCarbuncleフリー

2. H-correction(Sanders et al., 1998): Roeスキームに横方向の数値粘性を追加

3. Rotated Roe: フラックス計算の座標系を局所的に回転させる

4. AUSM+up: 低マッハ数補正付きAUSMはCarbuncleに対してロバスト


🧑‍🎓

STAR-CCM+のデフォルトがAUSM+なのは、この問題を避けるためですか?


🎓

それも理由の一つだよ。AUSM系は衝撃波安定性に優れるから、汎用ソルバーのデフォルトには適しているんだ。


低マッハ数領域での精度劣化

🧑‍🎓

圧縮性ソルバーで低マッハ数($M < 0.3$)の流れを解くと精度が悪いと聞きましたが?


🎓

Godunov系スキームは低マッハ数で過度な数値拡散を生じる。これはフラックスの散逸項が $O(1/M)$ でスケーリングするためだ。対策として以下がある。


🎓
  • プリコンディショニング: Turkel, Choi-Merkleなどの手法で固有値を修正し、低マッハ数での数値拡散を抑制。FluentではLow Speed Preconditionerとして実装されている
  • AUSM+up: 圧力項に低マッハ数補正を追加したスキーム。全速度域で使用可能
  • 圧力ベースソルバーへの切り替え: $M < 0.3$ が支配的なら非圧縮性ソルバーの方が効率的。FluentのCoupled Pressure-Based Solverは$M < 2$程度まで対応

  • 🧑‍🎓

    全速度域で使えるソルバーがあれば理想的ですね。


    🎓

    All-speed schemeは活発な研究分野で、STAR-CCM+のCoupled Flowソルバーはそれに近い設計思想だよ。非圧縮極限と圧縮性を一つのフレームワークで扱える点が強みだ。

    Coffee Break よもやま話

    衝撃波管のトラブルあるある——「負圧力」が出たら要注意

    Riemannソルバーを実装して衝撃波管問題を走らせると、初心者が最初にハマるのが「負の圧力・密度」の出現だ。物理的にありえない値が出た瞬間に計算は発散する。原因の多くは初期の圧力比が大きすぎてソルバーが追いつかないか、メッシュが粗すぎて膨張波の波頭を解像できていないかのどちらか。実務では「まず圧力比10から始めて徐々に上げる」という地味な作業で9割の問題は解決する。残り1割は数値粘性の設定を見直すことになる。

    トラブル解決の考え方

    「解析が合わない」と思ったら

    1. まず深呼吸——焦って設定をランダムに変えると、問題がさらに複雑になる
    2. 最小再現ケースを作る——衝撃波管問題(Riemannソルバー)の問題を最も単純な形で再現する。「引き算のデバッグ」が最も効率的
    3. 1つだけ変えて再実行——複数の変更を同時に行うと、何が効いたか分からなくなる。科学実験と同じ「対照実験」の原則
    4. 物理に立ち返る——計算結果が「重力に逆らって物が浮く」ような非物理的な結果なら、入力データの根本的な間違いを疑う
    この記事の評価
    ご回答ありがとうございます!
    参考に
    なった
    もっと
    詳しく
    誤りを
    報告
    参考になった
    0
    もっと詳しく
    0
    誤りを報告
    0
    Written by NovaSolver Contributors
    Anonymous Engineers & AI — サイトマップ
    プロフィールを見る

    🔧 関連シミュレーター

    この理論を実際にパラメータを変えて体験できます → シミュレーター集