オイラー方程式(圧縮性)

カテゴリ: 流体解析(CFD) | 統合版 2026-04-06
CAE visualization for euler equations theory - technical simulation diagram
オイラー方程式(圧縮性)

理論と物理

概要

🧑‍🎓

先生、圧縮性のオイラー方程式ってどういうものですか? 非圧縮のオイラー方程式とは別物なんですか?


🎓

オイラー方程式は粘性を無視した流体の運動方程式だけど、圧縮性の場合は密度が変化するから、エネルギー方程式も含めた連立保存則の形になる。これが圧縮性CFDの出発点なんだ。


保存形オイラー方程式

🎓

1次元の場合、保存変数ベクトル $\mathbf{U}$ とフラックス $\mathbf{F}$ を使ってこう書ける。


$$ \frac{\partial \mathbf{U}}{\partial t} + \frac{\partial \mathbf{F}}{\partial x} = 0 $$

ここで


$$ \mathbf{U} = \begin{pmatrix} \rho \\ \rho u \\ \rho E \end{pmatrix}, \quad \mathbf{F} = \begin{pmatrix} \rho u \\ \rho u^2 + p \\ (\rho E + p)u \end{pmatrix} $$

🧑‍🎓

3つの式が連立してるんですね。それぞれ質量保存、運動量保存、エネルギー保存ですか?


🎓

そのとおり。3次元では運動量方程式が3成分になるから5元連立系になる。


$$ \mathbf{U} = [\rho, \; \rho u, \; \rho v, \; \rho w, \; \rho E]^T $$

これを閉じるために状態方程式が必要で、理想気体なら


$$ p = (\gamma - 1)\rho\left(E - \frac{u^2+v^2+w^2}{2}\right) $$

を使う。空気なら比熱比 $\gamma = 1.4$ だ。


双曲型方程式としての性質

🧑‍🎓

オイラー方程式が双曲型って聞いたことがあるんですけど、それはどういう意味ですか?


🎓

重要な概念だね。1次元オイラー方程式のヤコビアン $\mathbf{A} = \partial\mathbf{F}/\partial\mathbf{U}$ の固有値が全て実数であることが双曲型の条件だ。固有値は


$$ \lambda_1 = u - a, \quad \lambda_2 = u, \quad \lambda_3 = u + a $$

ここで $a = \sqrt{\gamma p/\rho}$ は音速。これらは特性速度と呼ばれ、情報が伝播する速度を表す。


🎓

$\lambda_1$ と $\lambda_3$ は音波の前進波・後退波、$\lambda_2$ はエントロピー波(接触不連続面)に対応する。超音速流れ($|u| > a$)では全固有値が同符号になるから、情報は一方向にしか伝わらない。これがCFDの境界条件設定に直結するんだ。


🧑‍🎓

超音速だと下流の情報が上流に伝わらないってことですね。境界条件の設定がマッハ数によって変わる理由がやっと分かりました。


🎓

亜音速入口では圧力などの情報が上流に伝播するから、1つの物理量は外部から指定し残りは内部から外挿する。超音速入口では全ての特性が流入方向だから、全変数を指定する。この原則を守らないと非物理的な反射波が発生するんだ。


Coffee Break よもやま話

18世紀の天才が書いた式が今もCFDの心臓部に

レオンハルト・オイラーが流体の運動方程式を導いたのは1757年のこと。粘性も熱伝導もない「理想流体」を仮定したこの方程式は、当時は抽象的すぎると批判された。ところが270年後、超音速・極超音速のCFDではこのオイラー方程式が粘性の支配するナビエ・ストークス方程式よりも先に使われる。なぜなら粘性の効果が慣性力に比べて極めて小さくなる高速流では、オイラー方程式が現実をよく近似するからだ。時代を超えて生き続ける数式の強さを感じる瞬間だ。

各項の物理的意味
  • 時間項 $\partial(\rho\phi)/\partial t$:蛇口をひねった瞬間を思い浮かべてください。最初は水がバタバタと不安定に出て、しばらくすると安定した流れになりますよね? この「変化している最中」を記述するのが時間項です。心臓の拍動で血流が脈打つのも、エンジンのバルブが開閉するたびに流れが変動するのも、すべて非定常現象。では定常解析とは? 「十分時間が経って流れが落ち着いた後」だけを見る——つまりこの項をゼロにする。計算コストが大幅に下がるため、まず定常で解いてみるのがCFDの基本戦略です。
  • 対流項 $\nabla \cdot (\rho \mathbf{u} \phi)$:川に落ち葉を落としたらどうなりますか? 流れに乗って下流に運ばれますよね。これが「対流」——流体の動きが物を運ぶ効果です。暖房の温風が部屋の端まで届くのも、空気という「運び屋」が熱を対流で輸送しているから。ここが面白いところ——この項は「速度×速度」を含むため非線形です。つまり、流れが速くなるとこの項が急激に強くなり、制御が難しくなる。これが乱流の根本原因です。よくある勘違い:「対流と伝導は同じようなもの」→ 全然違います! 対流は流れが運ぶ、伝導は分子が伝える。桁違いの効率差があります。
  • 拡散項 $\nabla \cdot (\Gamma \nabla \phi)$:コーヒーにミルクを入れて放置したことはありますか? かき混ぜなくても、しばらく経つと自然に混ざりますよね。あれが分子拡散です。では次の質問——ハチミツとお水、どちらが流しやすいですか? 当然お水ですよね。ハチミツは粘性($\mu$)が高いから流れにくい。粘性が大きいと拡散項が強くなり、流体は「もったりした」動きになります。レイノルズ数が小さい流れ(ゆっくり、ドロドロ)では拡散が支配的。逆にRe数が大きい流れでは対流が圧倒し、拡散は脇役になります。
  • 圧力項 $-\nabla p$:注射器のピストンを押すと、液体が針先から勢いよく出ますよね? なぜでしょう? ピストン側が高圧、針先が低圧——この圧力差が流体を押す力になるからです。ダムの放水も同じ原理。天気図で等圧線がギュッと密になっている場所では? そう、強風が吹きます。「圧力差があるところに流れが生まれる」——これがナビエ-ストークス方程式の圧力項の物理的意味。ここでの勘違いポイント:CFDの「圧力」は絶対圧ではなくゲージ圧のことが多い。圧縮性解析に切り替えたとたんに結果がおかしくなる場合、絶対圧/ゲージ圧の混同が原因かもしれません。
  • ソース項 $S_\phi$:暖められた空気が上に昇る——なぜでしょう? 周囲より軽く(密度が低く)なったから、浮力で押し上げられるのです。この浮力はソース項として方程式に追加されます。他にも、ガスコンロの炎で化学反応熱が発生する、工場の電磁ポンプで金属溶湯にローレンツ力がかかる…これらはすべて「外部から流体にエネルギーや力を注入する」作用であり、ソース項で表現します。ソース項を忘れるとどうなるか? 自然対流の解析で浮力を入れ忘れると、流体は一切動かない——冬の部屋で暖房をつけたのに暖かい空気が上に行かない、という物理的にありえない結果になります。
仮定条件と適用限界
  • 連続体仮定:クヌッセン数 Kn < 0.01(分子平均自由行程 ≪ 代表長さ)で成立
  • ニュートン流体仮定:せん断応力と歪み速度が線形関係(非ニュートン流体では粘度モデルが必要)
  • 非圧縮性仮定(Ma < 0.3の場合):密度を一定として扱う。マッハ数0.3以上では圧縮性効果を考慮
  • ブシネスク近似(自然対流):密度変化を浮力項のみで考慮し、他の項では一定密度を使用
  • 適用外ケース:希薄気体(Kn > 0.1)、超音速・極超音速流れ(衝撃波捕捉が必要)、自由表面流れ(VOF/Level Set等が必要)
次元解析と単位系
変数SI単位注意点・換算メモ
速度 $u$m/s入口条件で体積流量から換算する際、断面積の単位に注意
圧力 $p$Paゲージ圧と絶対圧の区別。圧縮性解析では絶対圧を使用
密度 $\rho$kg/m³空気: 約1.225 kg/m³@20°C、水: 約998 kg/m³@20°C
粘性係数 $\mu$Pa·s動粘性係数 $\nu = \mu/\rho$ [m²/s] との混同に注意
レイノルズ数 $Re$無次元$Re = \rho u L / \mu$。層流/乱流遷移の判定指標
CFL数無次元$CFL = u \Delta t / \Delta x$。時間刻みの安定性に直結

数値解法と実装

数値解法

🧑‍🎓

オイラー方程式をコンピュータで解くには、衝撃波の扱いがポイントになるんですよね?


🎓

そのとおり。オイラー方程式の解には衝撃波や接触不連続面といった不連続解が含まれる。これらを数値的に正しく捕獲するための手法が、圧縮性CFDの核心技術だ。


Godunovの方法とリーマンソルバー

🎓

Godunovの方法では、セル界面で局所的なリーマン問題を解いて数値フラックスを求める。


$$ \mathbf{F}_{i+1/2} = \mathbf{F}(\mathbf{U}^*(0; \mathbf{U}_L, \mathbf{U}_R)) $$

ここで $\mathbf{U}^*$ はリーマン問題の解、$\mathbf{U}_L, \mathbf{U}_R$ はセル界面の左右の状態だ。厳密リーマンソルバーは計算コストが高いので、近似リーマンソルバーが広く使われている。


ソルバー特徴長所短所
Roe (1981)線形化リーマン解接触不連続の解像度高いエントロピー修正が必要
HLL (1983)2波近似堅牢、実装が簡単接触不連続が拡散
HLLC (1994)3波近似(接触波含む)接触不連続も解像Roeより若干拡散
AUSM+ (1996)質量流束分離全マッハ数対応パラメータ調整必要
🧑‍🎓

Roeのリーマンソルバーが有名ですけど、具体的にはどう計算するんですか?


🎓

Roeは左右の状態からRoe平均を計算して、ヤコビアンを線形化する。Roe平均密度は $\hat{\rho} = \sqrt{\rho_L \rho_R}$ で定義される。数値フラックスは


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

第2項が数値的な散逸を加える風上項だ。


高次精度化: MUSCL法とリミッター

🎓

1次精度のGodunovスキームでは衝撃波が数十セルにまたがってしまう。高次精度化にはMUSCL(Monotone Upstream-centered Schemes for Conservation Laws)法を使う。


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

ここで $\phi(r)$ はスロープリミッター関数。リミッターを使わないと衝撃波近傍でGibbs振動が発生する。代表的なリミッターには minmod、van Leer、superbee がある。


🧑‍🎓

リミッターの選び方で結果が変わるんですか?


🎓

かなり変わる。minmod は最も拡散的だけど安定、superbee は鮮鋭だけど疎密波を階段状にしてしまう傾向がある。実用的には van Leer か van Albada が良いバランスだ。WENO(Weighted Essentially Non-Oscillatory)スキームは5次精度で衝撃波捕獲も優れているが、計算コストが高い。


🧑‍🎓

時間積分はどうするんですか?


🎓

陽解法ならTVD Runge-Kutta法(Shu-Osher 3段3次)が定番だ。CFL条件は


$$ \Delta t \leq \text{CFL} \cdot \frac{\Delta x}{|u| + a} $$

CFL $\leq 1$ が安定条件だ。陰解法ではLU-SGS(Lower-Upper Symmetric Gauss-Seidel)法が効率的で、CFL数を大きく取れるから定常計算の収束が速いんだ。


Coffee Break よもやま話

Godunov法の誕生——1959年のソ連が生んだ衝撃波数値解法

オイラー方程式を数値的に解く上で革命的だったのが、1959年にソ連の数学者Sergei Godunovが提案した「Godunov法」です。それまでの差分法は衝撃波まわりで数値振動(ギブス現象)が抑えられず苦労していたのですが、Godunovは「各セル界面でRiemann問題を解く」というアイデアを持ち込んだ。実は元の論文にはGodunov自身による「この1次精度スキームはあまり精度が高くない」という正直なコメントが書いてあったといわれています。それでも現代のHLLC・Roeスキームに至る衝撃波計算の系譜はすべてこのアイデアの延長線上にある。

風上差分(Upwind)

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

中心差分(Central Differencing)

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

TVDスキーム(MUSCL、QUICK等)

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

有限体積法 vs 有限要素法

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

CFL条件(クーラン数)

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

残差モニタリング

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

緩和係数

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

非定常計算の内部反復

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

SIMPLE法のたとえ

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

風上差分のたとえ

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

実践ガイド

実践ガイド

🧑‍🎓

先生、オイラー方程式ソルバーって実務のどこで使うんですか? 粘性を無視してるのに意味あるんですか?


🎓

いい疑問だね。オイラーソルバーは次のような場面で今でも重要だ。

  • 初期設計段階での空力評価(翼型の圧力分布、衝撃波位置)
  • ミサイルや発射体の抗力推算
  • Navier-Stokesソルバーの検証用ベンチマーク
  • 非粘性効果が支配的な問題(強い衝撃波、爆風波)

ベンチマーク問題

🧑‍🎓

オイラーソルバーの検証ってどうやるんですか?


🎓

標準的なベンチマーク問題がいくつかあるよ。


問題マッハ数検証ポイント
Sod衝撃波管内部流衝撃波・接触不連続・膨張波の捕獲
双楔反射M=2〜4衝撃波の反射と交差
NACA0012超音速M=0.8〜1.2遷音速での衝撃波位置
Shu-Osher問題M=3衝撃波-渦干渉の解像度
Sedov爆風波高圧比球対称爆風の自己相似解との比較
🎓

Sod問題は必ず最初にやるべきだ。解析解が存在するから、スキームの拡散特性やリミッターの影響を定量的に評価できる。Sod問題の初期条件は


$$ (\rho, u, p)_L = (1.0, 0, 1.0), \quad (\rho, u, p)_R = (0.125, 0, 0.1) $$

で、$t = 0.2$ での衝撃波位置、接触不連続のシャープさ、膨張波の滑らかさを比較する。


🧑‍🎓

実際にメッシュはどのくらい細かくすればいいんですか?


🎓

Sod問題なら100セルでスキームの基本特性が見える。400セルで2次精度の効果が明確になる。実問題では衝撃波近傍にAMR(Adaptive Mesh Refinement)を使うのが効率的だ。衝撃波の数値的厚みは概ね3〜5セルになるから、衝撃波の構造に興味がなければそれ以上の細分化は不要だよ。


境界条件の設定

🧑‍🎓

境界条件の設定って、マッハ数で変えなきゃいけないんですよね?


🎓

そう、特性理論に基づいて正しく設定する必要がある。


境界亜音速 (M<1)超音速 (M>1)
入口全圧・全温指定、静圧は外挿全変数を指定
出口静圧指定、他は外挿全変数を外挿
壁面法線速度=0(slip条件)法線速度=0
遠方場特性ベースNRBC全変数指定(流入側)
🧑‍🎓

遠方場境界の設定ミスで反射波が出るのは、特性の取り扱いが原因だったんですね。


🎓

そのとおり。Fluentのfar-field境界条件は特性ベースで実装されているから、Mach numberとflow directionを正しく指定すれば問題ない。OpenFOAMでは freestreamPressure / freestreamVelocity boundary conditionが対応するよ。


Coffee Break よもやま話

オイラー方程式で翼を計算するとき、境界層はどこへ行った?

オイラー方程式は粘性項を含まないため、翼まわりを計算しても「境界層」という概念が生まれません。それなのに実務ではオイラー計算で揚力係数の見積もりをすることがあります。なぜ使えるかというと、揚力は主に圧力分布で決まり、粘性の寄与は比較的小さいから。ただし抗力(特に摩擦抗力)はオイラーでは正確に出ません。航空機の初期コンセプト設計で「とにかく揚力とおおまかな衝撃波位置を速く掴みたい」というケースにオイラー計算が今でも現役で使われる理由がここにあります。

解析フローのたとえ

CFDの解析フローは「水族館の水槽を設計する」感覚で考えてみてください。まず水槽の形を決め(計算領域)、水の入り口と出口を設計し(境界条件)、ポンプの強さを設定する(流量条件)。魚がどう泳ぐか見たければ粒子追跡。水温が気になれば熱解析を追加。…どうですか? 意外と直感的ではありませんか?

初心者が陥りやすい落とし穴

「y+って何ですか?」——この質問が出たら要注意。壁面近くのメッシュ解像度を表すy+は、CFDの結果精度を左右する最重要パラメータの1つ。壁関数を使うなら30〜300、壁を完全に解像するなら1以下。これを確認せずに「摩擦抵抗が合わない!」と悩む人がとても多い。体温計の先端をちゃんと脇に挟まないで「熱がないのに37.5度って出た!」と慌てているようなものです。

境界条件の考え方

入口の境界条件は「蛇口をどのくらい開けるか」と同じ。ちょろちょろ出すか(低速)、全開にするか(高速)。でもCFDではもう一つ——「どのくらい暴れた水を出すか」(乱流強度)も指定する必要があります。蛇口の開け方を間違えると、下流のシンク全体の流れが変わりますよね? CFDでも入口条件のミスは下流全体に波及します。

ソフトウェア比較

商用ツールでのオイラーソルバー

🧑‍🎓

商用CFDソフトでオイラー方程式を解く場合、各ソフトの違いってありますか?


🎓

主要ソルバーでの設定方法と特徴を比較してみよう。


Ansys Fluent

🎓

Fluentでは粘性モデルを「Inviscid」に設定するとオイラー方程式が解かれる。

  • Solver: Density-Based を推奨(圧力ベースでも可能だがM>1では密度ベースが安定)
  • Flux Type: Roe-FDS がデフォルト。AUSM は低マッハ数に強い
  • Spatial Discretization: 2nd Order Upwind 以上
  • 2024R2以降、Mosaic meshingとAMRの組み合わせが強力

Simcenter STAR-CCM+

🎓

STAR-CCM+では物理モデルの選択で「Inviscid」を指定。結合型ソルバーが標準で、陰的時間積分のため大きなCFL数が使える。

  • Convection scheme: 2nd Order, MUSCL 3rd Order Reconstruction が選択可能
  • Flux Function: Roe, AUSM+, HLLC
  • Mesh morphing と overset mesh が超音速飛翔体解析で有用

OpenFOAM

🧑‍🎓

OpenFOAMでオイラー方程式を解くにはどのソルバーを使うんですか?


🎓

rhoCentralFoam が最適だ。KNP(Kurganov-Noelle-Petrova)スキームベースで、人工粘性不要のcentral-upwindスキームを採用している。粘性項を計算しないようにtransportPropertiesでmuを0に設定すればオイラーソルバーとして動作する。


チュートリアルの shockTube がSod問題に対応しているから、まずはこれを動かしてみるといい。


🧑‍🎓

オイラーソルバーとNavier-Stokesソルバーの使い分けの判断基準はありますか?


🎓

粘性効果が結果に与える影響の大きさで判断する。

  • オイラーで十分: 衝撃波の位置・強度、圧力波の伝播、爆風解析
  • N-Sが必要: 抗力(摩擦抗力成分)、熱伝達、剥離を伴う流れ、境界層効果

設計初期段階でオイラー解析を回して衝撃波パターンを把握し、その後N-S解析で詳細評価するのがワークフローの定石だ。Eulerで出した圧力分布は、衝撃波が支配的な流れ場ではN-S解とかなり一致するからね。


Coffee Break よもやま話

なぜ宇宙機開発ではオイラー専用ソルバーが今も生き残るのか

粘性ありのNavier-Stokes計算が主流の今でも、宇宙機・ミサイル設計の初期フェーズではオイラー専用コードが使われ続けています。理由はシンプルで「速い」から。NASAのCART3DやEuler3Dのようなオイラーソルバーは、Navier-Stokesコードの10〜50倍速く計算できます。設計初期に100以上の形状バリエーションを流したいとき、1形状数分で終わるオイラー計算は非常に重宝します。完全な精度は求めず「衝撃波の位置と大まかな圧力分布を掴む」という用途に絞れば、今でも現役で十分な道具なのです。

選定で最も重要な3つの問い

  • 「何を解くか」オイラー方程式圧縮性)に必要な物理モデル・要素タイプが対応しているか。例えば、流体ではLES対応の有無、構造では接触・大変形の対応能力が差になる。
  • 「誰が使うか」:初心者チームならGUIが充実したツール、経験者ならスクリプト駆動の柔軟なツールが適する。自動車のAT車(GUI)とMT車(スクリプト)の違いに似ている。
  • 「どこまで拡張するか」:将来の解析規模拡大(HPC対応)、他部門への展開、他ツールとの連携を見据えた選択が長期的なコスト削減につながる。

先端技術

先端トピック

🧑‍🎓

オイラー方程式の数値解法って、もう完成された分野じゃないんですか?


🎓

そう思われがちだけど、実はまだ活発に研究されている分野だよ。特に高次精度スキーム、全マッハ数対応、AMR(適応格子細分化)の3つが注目されている。


高次精度スキーム

🎓

WENO(Weighted ENO)スキームは5次精度で衝撃波近傍でも振動のない解を得られる。最近はWENO-Z、TENO(Targeted ENO)といった改良版が提案されていて、より少ない数値散逸で衝撃波と渦を同時に高精度に捕捉できる。


$$ \hat{f}_{i+1/2} = \sum_{k=0}^{r-1} \omega_k \hat{f}_{i+1/2}^{(k)} $$

$\omega_k$ が非線形重みで、滑らかな領域では最適な高次精度を回復し、不連続近傍では自動的にENO的な選択を行う。


🧑‍🎓

DG法(Discontinuous Galerkin法)も聞いたことがあるんですけど。


🎓

DG法は有限要素法の枠組みで高次精度を実現する手法で、要素間の不連続を許容するからGodunovスキームとの親和性が高い。$p$-refinement(多項式次数の向上)が容易で、h-p適応が可能。ただし自由度数が多くメモリと計算コストが課題だ。最近はFR(Flux Reconstruction)法というDGの効率的な再定式化が広まりつつある。


全マッハ数対応スキーム

🎓

従来のGodunovスキームは低マッハ数($M \ll 1$)で精度が低下する問題があった。圧力の数値散逸が $O(1/M)$ でスケールするため、非圧縮極限で正しい解が得られない。


これを解決するのが全マッハ数スキーム(all-speed scheme)で、AUSM+-up、SLAU(Simple Low-dissipation AUSM)、Low-Mach preconditioned Roeなどがある。


🧑‍🎓

全マッハ数対応って、遷音速の翼まわりの流れみたいに局所的にM=0に近い領域とM>1の領域が混在する場合に重要ですか?


🎓

まさにそのとおり。旅客機の巡航条件($M_\infty = 0.85$)では、翼上面で局所マッハ数が1.2程度まで上がる一方、よどみ点近傍ではM→0になる。全マッハ数スキームならこの両方を正しく解ける。


AMRとimmersogeometric解析

🎓

AMR(Adaptive Mesh Refinement)はoctreeベースの格子で衝撃波近傍を動的に細分化する技術だ。AMReXやp4estといったライブラリが公開されていて、数十億セルの計算も可能になっている。


また、immersed boundary法やcut-cell法を組み合わせることで、複雑形状に対するメッシュ生成の手間を大幅に削減できる。Cartesian grid + AMR + cut-cellの組み合わせは「meshless」に近いワークフローを実現するんだ。


🧑‍🎓

メッシュ生成が楽になるのは嬉しいです。今後の方向性として、GPUの活用はどうですか?


🎓

GPU対応は急速に進んでいる。陽解法のオイラーソルバーは並列性が高いからGPUとの相性が非常に良い。JAXAのFaSTARやNASAのFUN3DもGPU対応版が開発されているよ。


Coffee Break よもやま話

オイラー方程式で「エントロピー生成」が起きる矛盾

オイラー方程式は粘性なし・熱伝導なしの「理想流体」を記述する。本来なら可逆過程だから、エントロピーは変化しないはずだ。ところが衝撃波を含む解を計算すると、衝撃波の通過後にエントロピーが不連続に増加する——これは物理的には正しいが、数式的には矛盾に見える。この謎の答えは「衝撃波がオイラー方程式の弱解(weak solution)であり、古典解が存在しない」という数学的事実にある。CFDの先端研究では今もエントロピー条件と弱解の扱いが議論のテーマになっており、数値スキームの設計に直結する。

トラブルシューティング

トラブルシューティング

🧑‍🎓

先生、オイラーソルバーで計算がうまくいかないときの対処法を教えてください。


🎓

よくあるトラブルをパターン別に整理しよう。


1. 膨張衝撃波(Expansion Shock)の発生

🎓

症状: 物理的にありえない膨張衝撃波が解に含まれる


原因: Roeスキームはエントロピー条件を自動的には満たさない。固有値がゼロに近い場合にentropy violationが起こる。


対策: エントロピー修正(Harten-Hyman fix)を適用する。


$$ |\hat{\lambda}| \to \max(|\hat{\lambda}|, \delta) $$

$\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方程式では粘性項が自然な散逸を提供するから安定化されるが、オイラー方程式では数値スキームの散逸だけが安定化要因になる。だからスキームの選択とパラメータ調整がより重要なんだ。


Coffee Break よもやま話

「計算が爆発する」——オイラー解析あるある発散の原因トップ3

オイラー方程式の計算が突然発散するとき、原因の大半は「初期条件の設定ミス」「CFL数の過大設定」「衝撃波とメッシュの位置関係」の3つに集約されます。特に多いのが初期条件問題で、「フリーストリーム一様流で初期化したらノズル喉部付近で即発散」というケース。喉部近傍でマッハ数が1に近づくと特性線が鋭くなり、わずかな不連続が増幅します。対策として現場では「マッハ数を0.1くらいから徐々に上げるランプアップ手法」や「局所的に圧力・密度を滑らかにするピーシング初期化」が使われます。CFL数は0.3〜0.5から始めるのが無難です。

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

  1. まず深呼吸——焦って設定をランダムに変えると、問題がさらに複雑になる
  2. 最小再現ケースを作る——オイラー方程式圧縮性)の問題を最も単純な形で再現する。「引き算のデバッグ」が最も効率的
  3. 1つだけ変えて再実行——複数の変更を同時に行うと、何が効いたか分からなくなる。科学実験と同じ「対照実験」の原則
  4. 物理に立ち返る——計算結果が「重力に逆らって物が浮く」ような非物理的な結果なら、入力データの根本的な間違いを疑う
関連シミュレーター

この分野のインタラクティブシミュレーターで理論を体感しよう

シミュレーター一覧

関連する分野

熱解析V&V・品質保証構造解析
この記事の評価
ご回答ありがとうございます!
参考に
なった
もっと
詳しく
誤りを
報告
参考になった
0
もっと詳しく
0
誤りを報告
0
Written by NovaSolver Contributors
Anonymous Engineers & AI — サイトマップ
プロフィールを見る