対流拡散(Convection-Diffusion) — CAE用語解説

カテゴリ: 用語集 | 2026-03-28
CAE visualization for convection diffusion - technical simulation diagram

対流拡散方程式とは

🧑‍🎓

対流拡散方程式って、流体解析でどういう位置づけなんですか? Navier-Stokes方程式とは別物ですか?


🎓

実は別物じゃなくて、むしろNavier-Stokes方程式の「骨格」そのものだよ。運動量方程式の各成分も、温度の輸送方程式も、濃度のスカラー輸送も、全部「対流 + 拡散 = ソース」という同じ形をしている。だから対流拡散方程式を理解するのは、CFD全体の数値手法を理解する近道なんだ。


🧑‍🎓

なるほど! じゃあ、もう少し具体的にどんな式なのか教えてください。


🎓

例えば川に温水を流し込む場面を想像してみて。温水は川の流れに乗って下流に運ばれる(これが対流)。同時に周りの冷水との温度差で熱が広がっていく(これが拡散)。この2つの効果を1つの式にまとめたのが対流拡散方程式だ。


支配方程式

スカラー量 $\phi$ に対する定常対流拡散方程式は次の形をとる:

$$\nabla \cdot (\rho \mathbf{u} \phi) = \nabla \cdot (\Gamma \nabla \phi) + S$$

ここで、左辺が対流項、右辺第1項が拡散項、$S$ がソース項である。$\rho$ は密度、$\mathbf{u}$ は速度ベクトル、$\Gamma$ は拡散係数を表す。

非定常の場合は時間微分項が加わる:

$$\frac{\partial (\rho \phi)}{\partial t} + \nabla \cdot (\rho \mathbf{u} \phi) = \nabla \cdot (\Gamma \nabla \phi) + S$$

1次元定常・ソース項なしの最もシンプルな形に限定すると:

$$u \frac{d\phi}{dx} = \Gamma \frac{d^2\phi}{dx^2}$$

この単純な式が、数値解法の安定性を議論する出発点になる。

Peclet数と対流拡散のバランス

🧑‍🎓

対流と拡散のどっちが強いかって、どうやって判断するんですか?


🎓

それを表すのがPeclet数(Pe)だ。Reynolds数が慣性力と粘性力の比だったのと同じように、Peclet数は対流輸送と拡散輸送の比を表す無次元数だよ。実はPe = Re × Pr(プラントル数)という関係があって、Reynolds数とも密接につながっている。


Peclet数の定義:

$$\mathrm{Pe} = \frac{UL}{\alpha} = \frac{\text{対流輸送の強さ}}{\text{拡散輸送の強さ}}$$

ここで $U$ は代表速度、$L$ は代表長さ、$\alpha = \Gamma/\rho$ は拡散率。有限体積法の文脈では、セル幅 $\Delta x$ を用いたセル・Peclet数(格子Peclet数)が極めて重要になる:

$$\mathrm{Pe}_{\text{cell}} = \frac{\rho u \Delta x}{\Gamma}$$
🧑‍🎓

Pe が大きいと何が起きるんですか? 小さいとどうなりますか?


🎓

Pe が小さい(Pe ≪ 1)と拡散支配で、情報が全方向に均等に広がる。熱伝導だけの問題みたいなイメージだね。逆に Pe が大きい(Pe ≫ 1)と対流支配で、情報は流れの方向に一方的に運ばれる。煙突の煙が風に流される様子がまさにそれだ。問題は、この対流支配のケースで中心差分を使うと数値的に不安定になることなんだ。


数値拡散の問題

🧑‍🎓

中心差分で不安定になるって、具体的にどういうことですか? 中心差分は2次精度で良い方法だと習ったんですけど…


🎓

確かに中心差分は2次精度で拡散方程式なら問題ない。でも対流項を中心差分で離散化すると、セル・Peclet数が2を超えたときにwiggle(非物理的な振動)が出るんだ。例えば0°Cの部屋に100°Cの温風を送り込むシミュレーションで、温度が −20°C になったり 120°C になったりする。物理的にあり得ないよね。


🧑‍🎓

えっ、温度がマイナスに!? なぜそんなことが起きるんですか?


🎓

直感的に言うと、対流が強い流れでは上流側の情報が圧倒的に重要なのに、中心差分は上流と下流の情報を同じ重みで使ってしまう。これが離散化の係数行列で対角優位性を壊し、アンダーシュートやオーバーシュートを生む。数学的には、離散化が有界性(boundedness)を満たさなくなるということだ。


中心差分による1次元対流拡散方程式の離散化で、係数行列の対角優位条件は:

$$|\mathrm{Pe}_{\text{cell}}| = \left|\frac{\rho u \Delta x}{\Gamma}\right| \leq 2$$

この条件に違反すると解が振動する。実際の工業的CFDでは Pecell ≫ 2 になるケースが多いため、安定化が不可欠となる。

風上差分と安定化手法

🧑‍🎓

振動を抑えるにはどうすればいいんですか?


🎓

一番シンプルなのが1次風上差分(First-Order Upwind)だ。セル界面の値を、上流側のセルの値で近似する。対流の方向を考慮するから振動は完全に抑えられる。でも代償として数値拡散(numerical diffusion)が発生する。


🧑‍🎓

数値拡散って具体的にはどういう影響ですか? 実務ではどれくらい問題になりますか?


🎓

たとえば煙の輸送シミュレーションで、本来はシャープな煙の境界が数値拡散のせいでボケてしまう。自動車の排気ガスの拡散シミュレーションだと、濃度のピーク値が実際より低く見積もられて、影響範囲が広く見えてしまう。メッシュを粗くするほどこの偽拡散は大きくなるから、1次風上差分を粗いメッシュで使うのは実務ではかなり危険だ。


1次風上差分の打切り誤差をTaylor展開で調べると:

$$u \frac{d\phi}{dx} \approx u \frac{\phi_i - \phi_{i-1}}{\Delta x} + \underbrace{\frac{u \Delta x}{2} \frac{d^2\phi}{dx^2}}_{\text{数値拡散項}} + O(\Delta x^2)$$

数値拡散項は実質的に $\Gamma_{\text{false}} = \rho u \Delta x / 2$ という偽の拡散係数を追加していることに相当する。つまり、メッシュが粗いほど、また対流が強いほど、偽拡散は大きくなる。

SUPG法とその仲間たち

🧑‍🎓

有限要素法だと風上差分と違う方法があるって聞いたんですけど、SUPG法ってどういう仕組みなんですか?


🎓

SUPG法(Streamline Upwind Petrov-Galerkin)は、BrooksとHughesが1982年に提案した有限要素法の安定化手法だ。ガラーキン法の重み関数に、流線方向の摂動項を追加する。ざっくり言うと「重み関数を少しだけ上流側に偏らせる」ことで、風上効果を得るんだ。


SUPG法では、標準的なガラーキン重み関数 $w$ に対し、修正された重み関数 $\tilde{w}$ を用いる:

$$\tilde{w} = w + \tau \, \mathbf{u} \cdot \nabla w$$

ここで $\tau$ は安定化パラメータで、要素サイズ・速度・拡散係数から決まる:

$$\tau = \frac{h}{2\|\mathbf{u}\|} \left( \coth \mathrm{Pe}_e - \frac{1}{\mathrm{Pe}_e} \right)$$

$\mathrm{Pe}_e = \|\mathbf{u}\| h / (2\Gamma)$ は要素Peclet数、$h$ は要素の流線方向サイズである。

🧑‍🎓

SUPG以外にも安定化手法はあるんですか?


🎓

たくさんあるよ。有限要素法ではGLS法(Galerkin/Least-Squares)がSUPGの一般化として知られている。ソース項がある場合にも一貫性が保たれるのが利点だ。さらに非定常の非圧縮性流れではPSPG法(Pressure-Stabilizing Petrov-Galerkin)を組み合わせて、速度と圧力の両方を安定化することが多い。有限体積法の世界ではTVD(Total Variation Diminishing)リミッターやENO/WENOスキームが主流だね。


🧑‍🎓

TVDリミッターって何をしてるんですか? 名前がカッコいいですけど…


🎓

TVDは「Total Variation Diminishing」の略で、解の全変動が時間とともに増加しないことを保証するスキームだ。具体的には、勾配の復元に「リミッター関数」を挟むことで、新しい極値(振動)が生まれるのを防ぐ。Van Leer、Minmod、Superbeeなどいろいろな種類があって、リミッターが強いほど振動は抑えられるけどその分数値拡散が増える。この匙加減がCFD屋さんの腕の見せ所だね。


実務での使い分けガイド

🧑‍🎓

いろいろありすぎて混乱してきました…。実務ではどう使い分ければいいんですか?


🎓

まずRANSで定常計算なら、2次風上差分(Second-Order Upwind)から始めるのが鉄板だ。収束しにくいときだけ1次風上で初期解を作ってから切り替える。LESの場合は数値拡散がSGSモデルと干渉するから、中心差分系を使うのがセオリー。圧縮性の衝撃波がある流れだとTVD系のリミッター付きスキームが安全だね。


🧑‍🎓

メッシュを細かくすれば、どのスキームでも結果は一致するんですか?


🎓

理論的にはその通り。メッシュを十分に細かくすれば Pecell → 0 に近づいて、全スキームで一致する。でも実務では計算リソースの制約があるから、「許容されるメッシュの粗さで最も精度の良いスキーム」を選ぶのがポイントだ。だからこそ離散化スキームの選択はCFD解析者の腕の見せ所なんだよ。


🧑‍🎓

OpenFOAMだとどのスキームがデフォルトなんですか?


🎓

OpenFOAMではfvSchemesファイルのdivSchemesで設定するよ。デフォルトのチュートリアルではGauss linearUpwind grad(U)(2次風上)がよく使われる。Gauss linearが中心差分、Gauss upwindが1次風上だ。TVD系はGauss linearUpwindGauss vanLeerなど。設定1行でスキームが切り替わるから、結果の差を比較するのも簡単だよ。


関連用語

CAE用語の正確な理解は、チーム内のコミュニケーションの基盤です。 — Project NovaSolverは実務者の学習支援も視野に入れています。

対流拡散の離散化で困っていることを教えてください

Project NovaSolverは、CAEエンジニアが日々直面する課題——セットアップの煩雑さ、計算コスト、結果の解釈——の解決を目指しています。あなたの実務経験が、より良いツール開発の原動力になります。

お問い合わせ(準備中)
この記事の評価
ご回答ありがとうございます!
参考に
なった
もっと
詳しく
誤りを
報告
参考になった
0
もっと詳しく
0
誤りを報告
0
Written by NovaSolver Contributors
Anonymous Engineers & AI — サイトマップ
プロフィールを見る