【科学技術計算講座ミニ】対流項の差分スキーム(風上差分、中心差分)

今回は有限体積法の流体解析における対流項の差分スキームについてお話しします。

対流項の離散化

簡単のために、拡散のない定常の移流方程式を考えます。次式のように対流項のみの式となります。

$$\nabla \cdot (\rho \phi {\bf u}) = 0 \tag{1}$$

ここで、$\rho$:密度、$\phi$:物理量、${\bf u}$:流速ベクトル

積分系で表すと、

$$\int_V \nabla \cdot (\rho \phi {\bf u}) dV = 0 \tag{2}$$

となります。ガウスの発散定理より、面積積分にすると、

$$\int_S \rho \phi {\bf u} \cdot d {\bf S} = 0 \tag{3}$$

と変形できます。

面積積分はセルの面$f$の和で表し、次式のようになります。

$$\sum_f (\rho \phi {\bf u})_f \cdot {\bf S}_f = 0 \tag{4}$$

ここで、${\bf S}$:面の面積ベクトル(セルから外に向かう方向が正)

ここで、さらに簡単のために1次元の有限体積メッシュを考えます。

1次元の有限体積メッシュ

セル$C$について考えると、(4)式は面$e$と面$w$の和となり、

$$(\rho \phi u S)_e - (\rho \phi u S)_w = 0 \tag{5}$$

と書けます。

ここで、面での物理量$\phi$の値が必要になります。面での値をどのように計算するかは、いろいろな方法が考えられます。

風上差分スキーム

まず、面での$\phi$は上流(風上)の値をそのまま使って外挿するという、単純な方法を考えます。物理量は流体に乗って移流してくることを考えれば、風上の値を使うことは理にかなっているといえます。

1次風上差分スキーム

いま、図のように、流体は左から右に一定流速$u$で流れているとします。面$e$を考えると、風上はセル$C$となるので、$\phi_C$が面$e$での値となります。

流速の方向が決まっていなければ一般的に、

$$\phi_e = \begin{equation} \begin{cases} \; \phi_C & \dot{m_e} > 0 \\ \; \phi_E & \dot{m_e} < 0 \end{cases} \end{equation} \tag{6}$$

ここで、$\dot{m_e}=(\rho {\bf u} \cdot {\bf S})_e$:面$e$での質量流束

と書けます。面$w$も同様に、

$$\phi_w = \begin{equation} \begin{cases} \; \phi_C & \dot{m_w} > 0 \\ \; \phi_W & \dot{m_w} < 0 \end{cases} \end{equation} \tag{7}$$

ここで、$\dot{m_w}=(\rho {\bf u} \cdot {\bf S})_w$:面$w$での質量流束

となります。

ここで、(5)式の左辺第一項は、(6)式をひとつの式で書き表して、

$$\begin{split} (\rho \phi u S)_e &= \dot{m_e} \phi_e \\ &= \max (\dot{m_e}, 0) \phi_C + \min (\dot{m_e}, 0) \phi_E \end{split} \tag{8}$$

と書けます。同様に左辺第二項は、

$$\begin{split} -(\rho \phi u S)_w &= \dot{m_w} \phi_w \\ &= \max (\dot{m_w}, 0) \phi_C + \min (\dot{m_w}, 0) \phi_W \end{split} \tag{9}$$

となります。

(8)、(9)式を(5)式に代入して整理すると、次の線形方程式ができあがります。

$$a_C \phi_C + a_E \phi_E + a_W \phi_W = 0 \tag{10}$$

ここで、

$$\begin{split} a_E &= \min (\dot{m_e}, 0) \\ a_W &= \min (\dot{m_w}, 0) \\ a_C &= \max (\dot{m_E}, 0) + \max (\dot{m_w}, 0) \\ &= -\min (\dot{m_e}, 0) - \min (\dot{m_w}, 0) + \dot{m_e} + \dot{m_w} \\ &= -(a_E + a_W) \end{split} \tag{11}$$

なお、最後の$a_C$の計算には、質量保存$\dot{m_e} + \dot{m_w} = 0$の関係を使用しています。

このスキームは、次数精度は1次となり、1次風上差分(First Order Upwind)スキームと呼ばれています。CFDソフトにより呼び方は異なりますが、単にUpwindと言えばこのスキームのことを指すことが多いようです。

これは、1次精度のため解がなまってしまう(数値拡散が強い)傾向がありますが、数値振動がなく安定に計算できるため、安定性重視で使われるスキームです。

当サイトのオンライン流体解析ツールCATCFDzeroでは、デフォルトのスキームは1次風上差分になっています。

中心差分スキーム

続いて、別の補間方法を考えてみます。面の値を面を挟むセルの値を使って線形補間で表してみます。

$$\phi_e = (1-g_e) \phi_C + g_e \phi_E \tag{12}$$

ここで、$g_e = (x_e - x_C) / (x_E - x_C)$、$x$は位置

中心差分スキーム

もし、セル幅が一定であれば、単純に

$$\phi_e = \frac{\phi_C + \phi_E}{2} \tag{13}$$

と両サイドの平均値となります。

(11)式と同様に整理すると、

$$\begin{split} a_E &= \dot{m_e} g_e \\ a_W &= \dot{m_w} g_w \\ a_C &=  -\dot{m_e} g_e -\dot{m_w} g_w + \dot{m_e} + \dot{m_w} \\ &= -(a_E + a_W) \end{split} \tag{14}$$

と係数が決まります。

このスキームは、中心差分(Central Difference)スキームと呼ばれています。(ただし、面の値を線形補間で求めることから、OpenFOAMでは linear と表記されています。)

このスキームは2次精度です。精度は高いですが、数値振動が起こりやすく、発散しやすくなることから、通常の流れでは使うことはありません。ただし、LES乱流モデルのように空間精度を重視する場合は、中心差分が使われます。

まとめ

今回は、有限体積法による流体解析で使われる、対流項の差分スキームのうち、風上差分と中心差分について解説しました。

次回は、2次の風上差分と勾配制限、それぞれのスキームの結果の違いについてお話ししたいと思います。


全体の目次

スポンサーリンク
科学技術計算のご相談は「キャットテックラボ」へ

科学技術計算やCAEに関するご相談、計算用プログラムの開発などお困りのことは「株式会社キャットテックラボ」へお問い合わせください。

お問い合わせはこちら

フォローする