有限体積法について 今までは有限差分法

非圧縮性流体

いろいろな近似方法について

これまで、Taylor展開を使って、微分を差分にして、微分方程式を解いてみようというアプローチでやってきましたが、この方法を「有限差分法による離散化近似」といいます。もちろんのことですが、有限差分法以外にも方法が存在します。代表的なものだと、「有限体積法」「有限要素法」「スペクトル法」などです。スペクトル法以外はそこまで大きな違いはなく、似ています。これから示しますが、有限差分法と有限体積法はほとんどの場合、思想が違うだけでやっていることは全く同じです。有限要素法は少し別です。スペクトル法はかなり流体計算を正確に出せる方法だが、周期境界条件じゃないと使えません。こちらは、乱流とは何か?といった、応用ではなく理学チックな研究に用いられていたりします。すごく厳密に解くものです。工学の応用目的は、計算速度と適用がしやすいことなので、ほとんどは、有限体積法、有限差分法、有限要素法の3つのどれかです。

簡単に特徴を上げておくと、有限差分・有限体積法は基本的にわかりやすく、境界条件の設定がしやすい反面、メッシュの設定を自由にやりずらいです。それに対して、有限要素法は重み付けをする方法を取っているので、メッシュの形状の自由度が高い反面、境界条件の設定がしにくい印象です。また、全体として物理量が保存しているか少し怪しいところがあります。有限要素法の重み付けを全て均等にしたものが有限体積法でもあります。つまり、これらはだいたい同じです。なんだそれ、わかわかんねえってならずに、ほぼ同じかー、と思っていてほっしいです。ここでは、細かいことは触れないが、だいたいの内容を把握してもらえたらと思います。


有限体積法について

有限体積法の思想自体は、非常に分かりやすいです。微分方程式を解く?じゃあ積分してやりゃいいか。積分できない?じゃあ近似すりゃいいじゃん。といった感じです。

1次元で考えるとこんな感じです。fは各項の関数だと思ってください。下の図のような格子幅の範囲で積分することを考えます。

$$
\begin{align}
\int \frac{\partial f}{\partial x} dx &= f_{i+1/2} – f_{i-1/2} \\\\ &\simeq \frac{f_{i+1}+f_i}{2} – \frac{f_i+f_{i-1}}{2} \\\\ &=\frac{f_{i+1}-f_{i-1}}{2} \tag{1} \label{eq:scale-factor-1} \\\\
\end{align}
$$

これは、最初の\(f_{i+1/2} – f_{i-1/2}\)まではきちんとした積分で、その先から近似が入っています。真ん中の値は隣の値たちの平均だろうという形です。こういった近似を中点公式と言ったりします。
同じように3次元でやることを考えます。すると、

$$
\begin{align}
\iiint_V \frac{\partial f}{\partial x} dV &= (f_{i+1/2} – f_{i-1/2})\Delta y \Delta z \\\\ &\simeq (\frac{f_{i+1}-f_{i-1}}{2})\Delta y \Delta z \tag{2} \label{eq:scale-factor-2} \\\\
\end{align}
$$

こんな風にやってしまいました。ごまかし近似がたくさん入っています。まず、yとz方向に関する分布まで解くのは不可能なので、「yとz方向に関しては一様で分布していないとする」という仮定の元で積分しました。

そして、この考え方で、全ての項を空間について積分していきます。

$$
\begin{align}
&\iiint_V (\frac{\partial u_i}{\partial t} + \frac{\partial u_i u_j}{\partial x_j}) dV =\iiint_V (-\frac{1}{\rho} \frac{\partial P}{\partial x_i} + \nu \frac{\partial^2 u_i}{\partial x_j^2}) dV \tag{3} \label{eq:scale-factor-3} \\\\
\end{align}
$$

みたいにやります。めんどくさいので省略しますが、時間項だけは\(\frac{\partial u_i}{\partial t} \Delta x \Delta y \Delta z\)になり、他の項は\(\frac{f_{i+1} – f_{i-1}}{2}\Delta y \Delta z\)となり、全体を\(\Delta x \Delta y \Delta z \)で割ってやると、\(\frac{f_{i+1} – f_{i-1}}{2 \Delta x}\)となります。

こうすると、式は中心差分の差分近似と全く同じです。

ただ、\(\iiint_V \frac{\partial f}{\partial x} dV = (f_{i+1/2} – f_{i-1/2})\Delta y \Delta z\)が中心差分という訳ではない。i+1/2や、i-1/2は定義されていないので、どうとでも近似できます。この近似の仕方が中点だと、中心差分と同じになります。この近似の仕方を差分法の3次精度の近似にすることもできます。

有限体積法と有限差分法は、近似の仕方によっては全く同じになります。

有限体積法は、物理としては、微分方程式だから積分するという考え方がわかりやすいので、割と好まれています。あとは、一個一個の格子の領域で考えているため、格子の領域で物理量が保存されていて、全体として物理量が保存されているということが分かるという利点があります。

有限差分法は、近似の精度が明確に分かるのが利点です。

しかし、式としてはどうせ同じになるのだから、行き来すればいいと思います。有限体積法で近似する時に、有限差分法だったらこうなるよなって精度を出してあげればいいし、有限差分法でも有限体積法だとこうなるから、物理量は保存されてるよなと思っときゃいいと思います。あとは好みです。僕は差分法の方が数学的で好きですね。


有限要素法

有限要素法も、どこかで詳しくやれたらいいと思うが深入りするのは面倒なので簡単な説明だけにしておきます。有限要素法では、有限体積法のような考え方に加え、各メッシュで重み付けをしてやって計算します。一言で言うと、重み付き残差法で重みをかけて、各要素で合計した残差が全体で0になるように解いています。でこのようなやり方によって、メッシュが複雑でも計算上簡単に扱うことができたり、非構造メッシュと呼ばれる、4面体などを敷き詰めたような変わったメッシュでもうまく計算ができます。しかし、直接的に境界条件を指定するのが難しかったり、条件周りで面倒だと思います。構造物の応力計算等ではこっちの方が使われることが多いと思います。一長一短なので、両方できるのが理想です。

スペクトル法についてはまだ勉強不足なので、いつかどこかできちんとやりたいと思います。
超厳密に解ける方法なのですが、周期境界条件でしか適用できないようですね。



[
前の記事へ]  [非圧縮性流体の目次へ]  [次の記事へ]