非圧縮性流れ(Incompressible Flow) — CAE用語解説
非圧縮性流れとは
非圧縮性流れって、流体が圧縮されないってことですか? 水は圧縮できないから水の流れは全部そうなりますか?
厳密に「圧縮できない流体」は存在しないよ。水だって深海1万mでは密度が5%くらい上がる。ただ、実用上は密度変化が無視できるほど小さければ「非圧縮性」として扱える。判定基準はマッハ数で、$\mathrm{Ma} < 0.3$ ならOK。水の日常的な流れはほぼ全部 $\mathrm{Ma} \ll 0.3$ だから、非圧縮として問題ない。
Ma < 0.3 の判定基準
$\mathrm{Ma} = 0.3$ って、空気だと秒速100mくらいですよね。じゃあ空気の流れでも非圧縮で計算していい場合があるんですか?
その通り。自動車の空力なんかが典型例で、高速道路の時速100kmでも $\mathrm{Ma} \approx 0.08$ くらいだ。建築物の風荷重もそう。これらはわざわざ圧縮性で解く必要がない。逆にジェットエンジン内の流れや超音速機のまわりは $\mathrm{Ma} > 0.3$ で、密度変化が効いてくるから圧縮性の計算が必要になる。
なんで0.3なんですか? 0.5とか0.1じゃなくて。
等エントロピー関係式から導ける話でね。$\mathrm{Ma} = 0.3$ のとき密度変化は約4.5%。工学的に「5%以内なら無視してよい」という経験則がベースになっている。$\mathrm{Ma}^2$ のオーダーで密度変化が入るから、$\mathrm{Ma}$ が小さいうちは影響が急速に減るんだ。具体的には:
$\gamma = 1.4$(空気)で $\mathrm{Ma} = 0.3$ を代入すると $\rho/\rho_0 \approx 0.956$、つまり密度変化4.4%。これが「0.3基準」の根拠だよ。
連続の式 div(u) = 0
非圧縮だと連続の式が $\nabla \cdot \mathbf{u} = 0$ になるって聞いたんですけど、それってどういう意味ですか?
一般的な連続の式は質量保存を表していて、こう書ける:
ここで非圧縮($\rho = \mathrm{const.}$)を仮定すると、$\rho$ を外に出せるから:
$$\rho \, \nabla \cdot \mathbf{u} = 0 \quad \Rightarrow \quad \nabla \cdot \mathbf{u} = 0$$つまり「任意の微小体積から出入りする流体の体積流量が常に釣り合う」という意味だ。水を入れたバケツの底に穴を開けたら、入る量と出る量が同じ——そのイメージだね。ホースの先を潰すと水が速くなるのも、断面積が減った分だけ流速が上がって $\nabla \cdot \mathbf{u} = 0$ を満たしているわけだ。
圧縮性流れだとこの式がもっと複雑になるんですか?
圧縮性だと密度 $\rho$ が時間と空間で変化するから、$\partial \rho / \partial t$ の項が残る。さらに状態方程式 $p = \rho R T$ でエネルギー方程式も連立する必要がある。非圧縮の $\nabla \cdot \mathbf{u} = 0$ は方程式系を大幅に簡略化してくれるから、CFDの計算コストが大きく下がるんだ。
圧力ベースソルバーとSIMPLE法
CFDで非圧縮性流れを解くとき、「圧力ベースソルバー」とか「SIMPLE法」ってよく聞くんですけど、なぜ圧力がそんなに問題になるんですか?
これが非圧縮性流れの最大の数値的課題なんだ。圧縮性流れなら密度は状態方程式 $p = \rho R T$ から求まるけど、非圧縮では $\rho = \mathrm{const.}$ だからこの道が使えない。圧力は独立変数として残り、$\nabla \cdot \mathbf{u} = 0$ を満たすように圧力場を決める必要がある。
SIMPLE法ってどういうアルゴリズムなんですか? ざっくり教えてもらえますか。
SIMPLE(Semi-Implicit Method for Pressure-Linked Equations)は、Patankarが1972年に提案した反復法で、こんな流れだ:
- 運動量方程式を仮の圧力 $p^*$ で解く → 仮の速度場 $\mathbf{u}^*$ を得る
- 速度場の発散を計算する → $\nabla \cdot \mathbf{u}^* \neq 0$(まだ連続の式を満たさない)
- 圧力補正方程式(Poisson型)を解く → 補正量 $p'$ を得る
- 速度と圧力を補正する → $p = p^* + p'$, $\mathbf{u} = \mathbf{u}^* + \mathbf{u}'$
- 収束するまで繰り返す
OpenFOAMの simpleFoam、Ansys Fluentの圧力ベースソルバー、STAR-CCM+のSEGREGATEDソルバー——全部このSIMPLE系のアルゴリズムが基盤になっている。派生としてSIMPLEC(Consistent)やPISO(非定常向け)もあるよ。
圧力補正方程式がPoisson型っていうのは、$\nabla^2 p' = \text{(発散のソース項)}$ みたいな形ですか?
まさにそう。離散化すると大規模な連立一次方程式になって、これを解くのがSIMPLE法の計算コストの大部分を占める。だからCFDで「収束が遅い」と感じるときは、この圧力方程式の解法(AMG前処理とか)を見直すのが定石だよ。実務でFluent使ってるなら、AMGのサイクル回数やクーラン数の調整で体感的に計算時間が変わるのを経験した人も多いはず。
Boussinesq近似と自然対流
Boussinesq近似って非圧縮性流れの拡張なんですか? 自然対流で使うって聞いたことがあります。
Boussinesq近似は「密度変化は浮力項にだけ考慮し、それ以外は非圧縮として扱う」という近似だ。運動量方程式の浮力項に:
を代入する。ここで $\beta$ は体膨張係数。例えばエアコンの暖かい空気が天井付近に溜まる現象、PCケース内の自然対流による冷却——こういうのをシミュレーションするとき、わざわざ完全圧縮性で解く必要がなくて計算コストを大幅に節約できる。
この近似が使えない場合もあるんですか?
温度差が大きいときは破綻する。目安としては $\beta \Delta T \ll 1$ が必要で、空気だと $\beta \approx 1/T_0$ だから $\Delta T / T_0 \ll 1$。例えば室温300Kで温度差が30Kなら $\Delta T / T_0 = 0.1$ で適用可能。でも火災シミュレーションで $\Delta T = 700\mathrm{K}$ とかになると、$\Delta T / T_0 > 2$ で完全にアウト。その場合は低マッハ数近似か完全圧縮性で解く必要があるよ。
実務での判断ポイント
実際のCFDプロジェクトで、非圧縮で解くか圧縮性で解くか、最初にどう判断すればいいですか?
チェックリスト的にまとめるとこうなる:
- 代表流速と音速からMa数を計算 → $\mathrm{Ma} < 0.3$ なら非圧縮でOK
- 温度変化があるか? → 小さい温度差ならBoussinesq近似を追加
- 密度変化が5%を超えるか? → 超えるなら圧縮性ソルバーへ切替
- 音波・衝撃波の伝播が重要か? → 重要なら密度ベースソルバーを検討
例えば自動車の外部空力なら迷わず非圧縮、F1のリアウィングまわりの空力でもMa ≈ 0.25くらいだからギリギリ非圧縮でいける。配管系の水撃(ウォーターハンマー)は音速が関わるから圧縮性が必要——こういう具体例で覚えておくと迷わないよ。
CAE用語の正確な理解は、チーム内のコミュニケーションの基盤です。 — Project NovaSolverは実務者の学習支援も視野に入れています。
非圧縮性流れの実務で感じる課題を教えてください
Project NovaSolverは、CAEエンジニアが日々直面する課題——セットアップの煩雑さ、計算コスト、結果の解釈——の解決を目指しています。あなたの実務経験が、より良いツール開発の原動力になります。
お問い合わせ(準備中)関連トピック
なった
詳しく
報告