Youtube登録者5000人突破!!

【CFD/格子法】CFL条件とクーラン数について解説

流体解析(CFD)において、クーラン数は基本中の基本です。そして、非常に重要です。クーラン数を低くするというのがCFL条件です。ちなみに、CFL条件はCourant Friendrichs Lewy Condition の略ですが、これは覚えなくて大丈夫です。

CFL条件を学ぶ前にクーラン数を理解しないといけないので、まずはクーラン数について説明します。

クーラン数とは?

クーラン数とは、速度と時間によって決まる変数です。具体的には下記のような値になります。

$$v \frac{\Delta t}{\Delta x}$$

ここで、vは速度、△tは時間刻み幅(時間ステップ)、△xはセル(メッシュ)の大きさを表します。

なぜこのような式が重要になるのでしょうか?それは、ナビエストークス式に戻って考えると理解できます。

$$\frac {\partial v}{\partial t}+(v \cdot \nabla )v=\frac {1}{\rho} \nabla p + { \nu \triangle v}+{g}$$

ナビエストークス方程式は、右辺の非定常項と移流項、左辺の圧力項、粘性項、重力項で構成されます。今回のクーラン数は左辺の否定条項と移流項だけに関する制限値です。

$$\frac {\partial v}{\partial t}+(v \cdot \nabla )v=0$$

わかりやすくするために、非定常項と移流項だけにしました。偏微分の形ではPCで解けませんので、これを離散化しましょう。

$$\frac{\Delta v_t}{\Delta t} = -\frac{\Delta v_x}{\Delta x}$$

移流項は右辺に移動させました。速度vは空間xと時間tの関数なので、どちらでも微分できます。まぎらわしいので、xで微分した時は$v_x$ tで微分した時は$v_t$で表しています。

最後に両辺に△tをかけます。

$$\Delta v_t= -\frac{\Delta t}{\Delta x} \Delta v_x$$

左辺は速度vの時間微分となっています。これは、速度vの時間変化を意味するので、つまり解析で予測している未来の流れになります。一方で左辺では先ほど紹介したクーラン数が現れていることがわかります。$v \frac{\Delta t}{\Delta x}$。$\Delta v_x$と$v$が一見異なるように見えますが、$\Delta v_x$は速度の空間差分ですので、隣接したセルの差分値を使うだけで、速度という実態は一緒です。

以上で、ナビエストークス方程式の非定常項と移流項の二つの項を使った式の変形によって、クーラン数が得られることを説明しました。

CFL条件とは?

次にCFL条件について説明します。CFL条件は下記のとおりです。

$$v \frac{\Delta t}{\Delta x} < 1$$

つまり、クーラン数が1以下になるような条件のことをCFL条件といいます。わかりやすくするために少し式変形します。

$$v \Delta t < \Delta x$$

$v \Delta t$は速度と時間の掛け算なので、1ステップでの流体の移動量を意味します。一方で右辺はセルの大きさを意味します。つまり、これは物理的な意味としては、1ステップ間での流体の移動量が1セル以下であることを意味します。

なぜCFL条件を満たす必要があるのか?

このクーラン数を満たさない場合、流体解析において欲しい解が得られなくなります。なぜこのようなことが起こるかというと、流体計算では1ステップ前の隣の点までしか参照していないからです。

クーラン数が大きい場合は、遠くの点から瞬時に流れが伝わってくることを意味します。しかし、前ステップの隣の点の値しか参照しないので、2つ以上離れた点から来た情報はキャッチすることができません。その結果、情報が失われ、速度が消え失せてしまいます。

陰解法という解決策

クーラン数を満たせるならそれが一番良いですが、そうもいかない場合があります。例えば、計算時間を早くしたい場合だとか、大規模な計算などの場合です。

そんな時は陰解法という方法を使えば、クーラン数を満たす必要がなくなります。

実は今まで解説してきた式は、陽解法という方法です。これは、古い時間の値を参考にして新しい時間の値を解くという方法です。陽解法では1ステップの計算は1回です。

一方で陰解法は、新しい時間の値を参考にして新しい時間の値を解きます。当然新しい時間の値はわかりませんので、仮の値を適当に入れて計算します。そして式が成り立つまで収束計算を行います。

ここでポイントが、陰解法は収束計算をしているということです。収束計算の過程で、2つ以上離れたセルの情報も伝達してくるので、陰解法ではクーラン数を満たす必要がなくなるというわけです。

おわりに

今回はクーラン数とCFL条件について解説しました。クーラン数とは、非定常項と移流項によって決まる値でした。そして、CFL条件はクーラン数が1以下となる条件であり、物理的には1ステップ間での流体の移動量が1セル以下であるというじょうけんでした。また、陽解法と陰解法の違いについても説明しました。

一応注意として、陰解法だと計算量が増える、収束判定が難しいなどの課題があります。ただし、非常に強力な武器なので、メリットデメリットを理解して上手く付き合っていくのが大事です。

youtubeでもCFDに関する情報を発信してます。そちらもどうぞ。