この記事の目的は、クーラン数とは何かを定義し、クーラン数に問題がある場合のメッシュと時間ステップの設定方法のベストプラクティスを提供することです。
CFL条件 - クーラン数
CFL条件(Courant-Friedrichs-Lewy)は、時間ステップ中にメッシュ内を移動する情報の距離に関係します。CFL条件の導出により、クーラン数に関する以下の式が導かれます:
$$C = u \frac{\Delta t}{\Delta x} \tag{1}$$
ここで、\(C\) はクーラン数、\(u\) は速度の大きさ、\(\Delta t\) は時間ステップサイズ、\(\Delta x\) はメッシュ要素間の長さです。
推奨されるクーラン数
クーラン数は与えられたタイムステップで移動したメッシュセルの数を表す無次元値です。
計算領域のあるセルに流体粒子があるとすると、クーラン数が1以上の場合、粒子はタイムステップ後に隣のセルを完全にスキップする可能性があります。同じロジックで、クーラン数が1より小さい場合、粒子は1タイムステップ後に隣のメッシュセルを完全にスキップすることはありません。下の図はこれらのシナリオを示しています。
ほとんどの解析タイプでは、使用される時間積分スキームが陰解法であるため、精度/安定性の観点から1より大きなクーラン数を使用することは可能です。しかし、非定常混相流シミュレーションでは、位相分率に陽解法的な時間積分が適用されるため、最大クーラン数を1より小さく保つことが強く望まれます。
上記の式 1 を振り返ると、クーラン数を小さくするには、以下の方法があります:
- 時間ステップを小さくする\(\Delta t\) 、または
- メッシュを粗くする、すなわち、メッシュを大きくします。\(\Delta x\)
Simulation controlの設定
Simulation controlでは、Adjustable run time (時間ステップの調整)の項目を True または Falseに 設定することができます。 Falseに 設定すると、 Delta tの値はシミュレーション全体を通して一定になります。
Adjustable time step が True の場合、シミュレーション実行時に許容されるMaximal run time (最大クーラン数)を入力するよう求められます。この設定では、 Delta tは最初のタイムステップでのみ使用され、その後はSimScaleが許容される最大クーラン数に応じてタイムステップを自動で調整します。
ベストプラクティス
Simulation controlでタイムステップや最大CFL数を選択する際には、主に以下の内容を考慮することが求められます:
- 精度: メッシュとシミュレーション設定が一定であれば、時間離散化誤差は時間ステップとその結果のCFL数とともに増加します。また、時間離散化スキームは時間ステップ内で一定の時間勾配を想定しています。時間離散化スキームは、時間ステップ内で一定の時間勾配を想定しています。原則として、過渡効果は少なくとも100の時間ステップで解決する必要があります。量に関する時間離散化誤差を定量化するには、例えば100、1000、10000の時間ステップで過渡効果を分解する3つのシミュレーションに基づいた研究を行うことができます。
- 安定性: 大きすぎる時間ステップとその結果生じるCFL数は、シミュレーションの安定性に影響を与え、発散につながる可能性があります。時間分解能が精度に対して十分であれば、さらに外側で反復を行うことで安定性を得ることができます。これは Numerics のNumber of outer correctorsで調整できます。
- 非定常混相流の場合、最大クーラン数を1より小さくしてください。他の解析タイプでは、精度と安定性のベストプラクティス(上記)が守られている限り、最大クーラン数を1より大きくすることは可能です。
- Adjustable time step (時間ステップの調整)を使用する場合でも、非常に小さな Delta t 値でシミュレーションを開始します。これにより、シミュレーションが最初のステップをスムーズに計算できるようになります。
クーラン数の調整例
混相流シミュレーションを例にとると、クーラン数は1以下が最適です。
- メッシュの要素サイズが大きく異ならないようにしてください。メッシュの平均セルサイズを測定します。ここでは約1.7e-3\(m\) の場合を考えてみましょう。
- 次に流速を見てください。仮に30\(m/s\) とします。したがって、粒子が1つのセルに滞在する平均時間は 1.7e-3 / 30 = 5.67e-5\(s\) となります。
- これが時間ステップを定義する基礎となります: 時間が長くなりすぎないように、初期時間ステップをこの計算値の10%に設定します(この例では5.6e-6\(s\) )。
- この時間に終了時間の値を求める時間ステップ数を掛けます。