OpenFOAM

【3次元ダムブレイク(OpenFOAM)】クーラン数違いによる結果比較

こんにちは(@t_kun_kamakiri

本記事では、気液混相流においてクーラン数による結果に違いが出るのかを検証します。
流体解析ツールOpenFOAMのinterFoamソルバを使います。

本記事の内容

クーラン数による結果の違いを確認する。

OpenFOAM v2312(WSL2)

解析対象

解析の対象はこちらです。

3次元ダムブレイクの実験

右(実験)、左(数値計算)

こちらをOpenFOAMを使って再現します。
モデルの作り方は下記の記事に詳しく書いていますので、ご参考ください。

実験では初期状態で青斜線で囲まれた領域に水をセットし、時刻0秒で開放します。
その後水はBoxと書かれた障害物に当たり、水しぶきをあげます。

この時に実験データとして、

  • p1~P8の座標で圧力の時刻歴
  • H1~H4の座標での水面の高さの時刻歴

という時刻歴データを測定しています。

クーラン数について

interFoamソルバのクーラン数は、以下の2つの設定があります。

  • maxAlphaCo
  • maxCo

違いがよくわからなかったので、調べます。

OpenFOAMユーザーガイド(翻訳)

どうやら、

  • maxAlphaCo(相の場についてのクーラン数)
  • maxCo(その他の場についてのクーラン数)

があり、どちらも0.5を超えないようにすることが推奨されているような記述があります。

しかし、クーラン数の大きさはそのまま時間刻みの大きさを決めるため、時間刻みが小さすぎる場合はメッシュを大きくするなど対応しないといけません。
差分法におけるクーラン数$C=\frac{u\Delta t}{\Delta x}$を考えるとイメージしやすいと思います。

$\Delta t$が小さくなりすぎる場合、

  • 精度を無視してクーラン数$C$を大きくする
  • メッシュサイズ$\Delta x$を大きくする

などが考えられます。

方程式の解き方として陽解法で解く場合は、クーラン数を1以下にしなければ、計算自体が不安定で発散を招きます。

一方、陰解法であればクーラン数による縛りはなく安定(発散しないわけではない)なので、クーラン数を大きくとるのもひとつの手です。
$\Delta t$を1より大きくとるのため、精度が悪くなります。また、発散する可能性も含んでいるので注意が必要です。

クーラン数違いによるスタディ

system/controlDict

 

実験(右の動画)と比較するとOpenFOAMによるシミュレーションは全然水しぶきが立っていません。
interFoamはVOF法なので、メッシュによる解像度がかなり効いてくるので、これ以上水志簿記の挙動を合わせるのは厳しそうです。

水しぶきの挙動は全然違いますが、圧力と水位はどうでしょう。

case000(maxCo 0.5、maxAlphaCo 0.5)
圧力と水位の時刻歴

圧力と水位はそこそこ合っていそうです。

上記「case000(maxCo 0.5、maxAlphaCo 0.5)」をベースにクーラン数を以下のように変えてみます。

case001(左上)maxCo           5.0;
maxAlphaCo      0.5;
case002(右上)maxCo           10.0;
maxAlphaCo      0.5;
case003(左下)maxCo           5.0;
maxAlphaCo      5.0;
case004(右下)maxCo           10.0;
maxAlphaCo      10.0;

こちらが結果。

あまり結果に違いがなさそうですね。
水しぶきは相変わらず実験と違います。

圧力と水位をそれぞれ見てみます。

case001(maxCo 5.0、maxAlphaCo 0.5)
圧力と水位の時刻歴

それほど違いが見られません。

case002(maxCo 10.0、maxAlphaCo 0.5)
圧力と水位の時刻歴

これも違いなしですね。

case003(maxCo 5.0、maxAlphaCo 5.0)
圧力と水位の時刻歴

圧力P1に違いがわずかですが出ているように見えます。

case004(maxCo 10.0、maxAlphaCo 10.0)
圧力と水位の時刻歴

明らかに圧力P1に違いが出ていますね。

case000と比較すると、case003とcase004は結果に違いが出ました。
しかし、case001とcase002で結果に違いが出ません。

おそらくクーラン数縛りの設定をしてますが効いておらず、$\Delta t$が変わっていないからと考えられます。

以下で、クーラン数を時刻歴で確認してみます。

クーラン数の確認

クーラン数の時刻歴変化を見てみます。
クーラン数の出力方法はこちらに書いていますので、ご参考ください。

case001(maxCo 5.0、maxAlphaCo0.5)
MaxCo

設定は「maxCo 5.0」のはずがずっと1くらいです。

case002(maxCo 10.0、maxAlphaCo 0.5)
MaxCo

こちらも設定は「maxCo 10.0」のはずがずっと1くらいです。

maxAlphaCo 0.5縛りによって、maxCoを大きくとれていないですね。
それゆえに、時間刻みも小さいままです。
だから、圧力や水位の時刻歴においてcase000との違いが出なかったということです

case003(maxCo 5.0、maxAlphaCo 5.0)
MaxCo

maxAlphaCo 5.0にすることで、maxCoを大きくとれています。
それゆえに、時間刻みも大きめになっています。
時間刻みが大きくなっているので、精度が落ちて圧力P1の時刻歴が実験データと合わなくなってきたということですね。

case004(maxCo 10.0、maxAlphaCo 10.0)
MaxCo

こちらもクーラン数については設定どおりです。
時間刻みが大きいですね。

クーラン数のソースコードの確認

OpenFOAMはオープンソースゆえにコードの中身を覗くことができます。
今回はsystem/controlDictのこちらの2つの設定から、どのようにクーラン数を計算しているのかを確認します。

CourantNoに詳しく式が書いているので確認。

$$Co=\Delta_{t} \tau$$

$\Delta_{t}$は時間刻みで、$\tau$は局所セルの流れのスケールに基づいた特徴的な時間スケールです。

$$\tau=\frac{1}{2V}\sum_{faces}|\phi_{i}|$$

ここで、$V$はセルの体積、$\phi$面の体積フラックスであり、$\sum_{faces}$のセル面の合計です。

クーラン数は、フラックス場の影響下で情報が輸送される速度の尺度を提供し、 数値スキームの性能の限界要因となります。

OpenFOAMは有限体積法なので、差分法のクーラン数$C=\frac{u\Delta t}{\Delta x}$の式と異なりますが、お気持ちは何となくわかりますね。

ソースコードを見ると確かにそのようになっています。

maxCoについて

maxAlphaCoについて

合わせて確認しておくと良いでしょう。

まとめ

本記事は気液混相流ソルバinterFoamのクーラン数違いによる結果の比較を行いました。

  • 時間刻みを大きくすると精度が落ちるが計算時間は短縮できる。
  • 時間刻みを小さくすると、精度は高まるが計算時間が延びる。

彼方立てれば此方が立たぬ。

手元のPCのスペック次第で、どこまで精度を見るか、どれだけ解析時間に工数を割けるかに依って上手く対応する必要がありそうです。

interFoamで$\Deltat=1e-7$とかになったら、他にどんな対処方法があるだろうか?

参考書

PENGUINさんサイトを体系的に学べる書籍となっています。ネット記事でも十分勉強できるのですが、OpenFOAMの初学者でOpenFOAMをインストール済みであれば一冊持って置き、体系的に学ぶのが良いでしょう。

OpenFOAMによる熱移動と流れの数値解析(第2版)

OpenFOAMによる熱移動と流れの数値解析(第2版)

3,520円(10/30 04:54時点)
Amazonの情報を掲載しています

あとは初心者向けに丁寧に解説がされているこちらの書籍もお勧めです。最後の章にはオーバーセットメッシュ(重合メッシュ)の機能を使った解析を最後まで丁寧に解説しているので挫折することはないでしょう。

OpenFOAMの歩き方 (技術の泉シリーズ(NextPublishing))

OpenFOAMの歩き方 (技術の泉シリーズ(NextPublishing))

川畑 真一
1,980円(10/30 15:28時点)
発売日: 2021/02/26
Amazonの情報を掲載しています

こちらはFoundation版によるOpenFOAMの辞書的役割を担う参考書ですが、非常に参考になります。

OpenFOAMライブラリリファレンス

OpenFOAMライブラリリファレンス

株式会社テラバイト, 人見 大輔
16,500円(10/30 16:56時点)
Amazonの情報を掲載しています
関連記事もどうぞ

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です