対流拡散方程式シミュレーター 戻る
流体解析

対流拡散方程式シミュレーター
(数値安定性の可視化)

中心差分・風上差分・QUICK法の定常解を解析解と比較。ペクレ数が増加すると中心差分が振動する様子をリアルタイムで確認できます。CFD数値スキームの直感的理解に。

流れ・拡散パラメータ
対流速度 u
m/s
正値(左→右方向)
拡散係数 D
m²/s
格子間隔 Δx
m
格子数 N = 1.0/Δx
安定 — Pe = 1.00
数値スキーム
境界条件
φ(0) = 1.0
φ(L) = 0.0
計算結果
ペクレ数 Pe = uΔx/D
数値拡散係数 Dnum
最大誤差 |φ_num − φ_exact|
定常解の比較 中心差分
理論・主要公式

$$\frac{\partial \phi}{\partial t} + u\frac{\partial \phi}{\partial x} = D\frac{\partial^2 \phi}{\partial x^2}$$

1次元移流拡散方程式:$u$ は流速(m/s)、$D$ は拡散係数(m²/s)、$\phi$ はスカラー量。

$$Pe = \frac{uL}{D}$$

ペクレ数:移流と拡散の比。$Pe \gg 1$ で数値拡散・振動が問題になる。

$$\phi(x,t) = \frac{1}{2}\mathrm{erfc}\!\left(\frac{x - ut}{2\sqrt{Dt}}\right)$$

解析解(初期ステップ関数):誤差関数補数 erfc を用いた厳密解。

対流拡散方程式と数値スキームとは

🙋
「対流拡散方程式」って何ですか?空気中を漂う煙の動きみたいなものですか?
🎓
その通り!大まかに言うと、物質や熱が「流れに運ばれる(対流)」と「広がる(拡散)」の両方を同時に表す方程式だ。例えば、工場の煙突から出た煙が風で流されつつ周りに広がっていく様子を計算するのに使うんだ。このシミュレーターでは、上のスライダーで「対流速度」と「拡散係数」のバランスを変えて、解の形がどう変わるか確認してみて。
🙋
え、シミュレーターで「中心差分」「風上差分」「QUICK」って選べますけど、答えは一つじゃないんですか?
🎓
いいところに気づいたね!方程式は一つでも、コンピュータで解くための「離散化」の方法がいくつかあるんだ。実務では「風上差分」が一番頑丈でよく使われるけど、精度に課題がある。対流を強くして「ペクレ数」を大きくすると、中心差分はグラフがガタガタ振動してしまうよ。実際にパラメータを動かして確かめてみよう。
🙋
「風上差分」に課題があるって、どういうことですか?振動はしないけど、答えが違ってしまうんですか?
🎓
そうなんだ。風上差分は安定だけど、余計な「数値拡散」が加わってしまう。つまり、実際より過度になだらかに広がった計算結果になる。QUICK法はその中間で、高精度を目指した方法だ。シミュレーターで「拡散係数」を0に近づけて対流を強くすると、3つの方法の差がくっきり分かるよ。風上差分の解が一番なだらかで、中心差分は振動する、ってね。

よくある質問

ペクレ数が大きいと対流項が支配的になり、中心差分では上流の情報を適切に反映できなくなります。その結果、数値振動(非物理的な波打ち)が発生します。風上差分やQUICK法を使うと、この振動を抑制できます。
中心差分は精度が高いがペクレ数が大きいと振動します。風上差分は安定ですが数値拡散が大きく解が鈍ります。QUICK法は両者の中間で、高次精度と安定性を両立し、実用的な選択肢です。
ペクレ数が大きすぎる、またはメッシュが粗すぎる可能性があります。ペクレ数を小さくするか、メッシュを細かくすると解析解に近づきます。また、スキームの特性上、風上差分は拡散項が過大評価される点にも注意してください。
x=0でφ=1、x=Lでφ=0のディリクレ境界条件を採用しています。この条件のもとで解析解が定義されており、数値解も同じ条件で計算されます。境界条件を変更したい場合は、コードを直接編集する必要があります。
メッシュを細かくするとセルペクレ数(Pe_h = u·Δx/D)が下がり、各スキームの安定条件を満たしやすくなります。中心差分は Pe_h < 2 が目安で、これを超えると振動が始まります。風上差分は Pe_h に制限はありませんが、Δxを半分にすると数値拡散も半分になるため、精度向上のためには十分細かいメッシュが必要です。シミュレーターでメッシュ数を増やして解析解との誤差が縮小していく様子を確認してください。
OpenFOAMでは `scalarTransportFoam` が対流拡散(移流拡散)の標準ソルバーです。`fvSchemes` ファイルで `divSchemes` に `Gauss linearUpwind`(風上差分)や `Gauss QUICK`(QUICK法)を指定して切り替えられます。Ansys Fluentでは「空間離散化」スキームで「Second Order Upwind」や「QUICK」を選択する操作が本シミュレーターの差分スキーム切替に対応します。
拡散係数 D→0 にするとペクレ数が無限大に近づき、純粋な移流問題(双曲型方程式)になります。解析解はx=0で急峻なステップ状プロファイルになりますが、中心差分では強烈な振動、風上差分では解がほぼ階段状に鈍る様子が現れます。QUICK法も収束が難しくなります。実務の高Re数流れではまさにこの状況で、TVD(全変動減少)スキームが使われる理由がよく分かります。
本ツールは1次元の定常対流拡散方程式を対象としており、多次元への直接拡張はできません。ただし各方向に分離して1次元問題の集合と見なすオペレータスプリッティング法の概念的理解に本ツールは有用です。実際の2D/3D解析ではOpenFOAMのscalarTransportFoamやAnsys Fluentを使用してください。

実世界での応用

環境工学・大気拡散シミュレーション:工場や自動車から排出される汚染物質(PM2.5、NOxなど)が、風によって運ばれ、大気中で拡散・希釈される過程を予測します。風上差分がよく用いられ、安定した計算が求められます。

電子機器の熱設計:CPUなどの発熱体で発生した熱が、ファンによる強制空冷(対流)で流され、基板内を伝導(拡散)する温度分布を計算します。高精度な熱対策にはQUICK法に近いスキームが検討されます。

化学反応工学・反応器設計:管型反応器内で、原料が流れに沿って移動(対流)しつつ、混合(拡散)しながら化学反応を起こす濃度分布をシミュレーションします。反応速度の正確な評価には数値拡散の少ない手法が重要です。

河川・水域の水質予測:生活排水などに含まれる栄養塩や化学物質が、河川の流れで運ばれ、渦拡散によって広がる過程をモデル化します。実務では風上差分をベースにした安定な解法が主流です。

よくある誤解と注意点

「中心差分法は常に高精度」と思いがちですが、実際はペクレ数(対流と拡散の比)が大きくなるにつれて数値振動が発生し、物理的にありえない解(オーバーシュート・アンダーシュート)を生じます。このツールでは、ペクレ数が2を超えると中心差分の解が解析解から乖離し始める様子を確認できます。実務では、この振動を避けるために風上差分やQUICK法を使いますが、「風上差分は常に安定」という点にも注意が必要です。風上差分は数値拡散(人工的な拡散)が大きく、ペクレ数が極端に高い場合でも解がなまってしまい、急峻な濃度勾配を正確に捉えられません。また、「QUICK法は常に中心差分より優れている」と誤解されがちですが、QUICK法もペクレ数が非常に大きい領域ではわずかな振動が残ることがあり、境界条件やメッシュ品質によっては不安定化する可能性があります。各スキームの特性を理解し、問題に応じた適切な選択が重要です。