OpenFOAM

【setFieldsコマンド(OpenFOAM)】3次元ダムブレイクモデル作成(3)

こんにちは(@t_kun_kamakiri

今回は3次元ダムブレイクの実験と同じ状況を再現するためOpenFOAMユーティリティであるsetFieldsコマンドについて解説をします。
メッシュ作成は前回までの記事で終わっているので下記をご参考ください。

setFieldsコマンドは物理量の初期状態の分布を作るときに便利なOpenFOAMのユーティリティです。

今回の内容

setFieldsコマンドコマンドを使って空気と水の初期状態を作る。

OpenFOAM初心者でチュートリアルを動かしたことがある方を対象にしています。

DEXCS2020
OpenFOAM v2006

解くべき方程式

OpenFOAMの2相流のソルバ”interFoam”を用いて3次元ダムブレイクの解析を行います。

ツール

  • OpenFOAM:v2006
  • ソルバ:inerFoam

解くべき方程式

  • 運動方程式(2次元)
  • 体積分率の保存
  • 表面張力
    ※VOFによる界面の表現

今回使っている「interFoam」のソルバはVolume Of Fluid(VOF)法による、二相流ソルバーです。

相の区別を各相の体積分率(0~1)で行い、密度や粘性を体積分率をかけて、ナビエストークス方程式を解いています。

ナビエストークス方程式

\begin{align*}\frac{\partial \rho_{b}\boldsymbol{u}}{\partial t}+\nabla\cdot\big(\rho_{b}\boldsymbol{u}\boldsymbol{u}\big)=-\nabla p+\nabla\cdot\mu_{b}\big(\nabla \boldsymbol{u}+\nabla \boldsymbol{u}^{T}\big)+\rho_{b}\boldsymbol{f}+\boldsymbol{F}_{s}\end{align*}

密度

\begin{align*}\rho_{b}=\alpha_{1}\rho_{1}+\alpha_{2}\rho_{2}\end{align*}

粘性

\begin{align*}\mu_{b}=\alpha_{1}\mu_{1}+\alpha_{2}\mu_{2}\end{align*}

表面張力

\begin{align*}\boldsymbol{F}_{s}=\gamma \kappa\big(\nabla \alpha\big)\end{align*}

\begin{align*}\kappa=\nabla\cdot\big(\frac{\nabla\alpha}{|\nabla\alpha|}\big)\end{align*}

非圧縮の条件

\begin{align*}\nabla\cdot \boldsymbol{u}=0\end{align*}

体積分率の移流方程式

\begin{align*}\frac{\partial \alpha}{\partial t}+\nabla\cdot \big(\alpha \boldsymbol{u}\big)=0\end{align*}

※\(\alpha_{2}=1-\alpha_{2}\)
※\(\kappa\):界面の曲率
※\(\gamma\):界面張力

setFieldsコマンド

空気と水の領域をVOF法で設定する場合はsetFieldsDictによって設定を行います。

setFieldsのオプションは以下があります。

  • -case dir
    Specify case directory to use (instead of cwd)
  • -decomposeParDict file
    Use specified file for decomposePar dictionary
  • -dict file
    Alternative setFieldsDict
  • -parallel
    Run in parallel [Parallel option]
  • -region name
    Specify alternative mesh region
  • -doc
    Display documentation in browser
  • -help
    Display short help and exit
  • -help-full
    Display full help and exit

defaultFieldValuesでデフォルトの各相の体積分率と速度を設定することができます。

  1. volScalarFieldValue alpha.water 0
  2. volVectorFieldValue U (0 0 0)

boxToCellでどの領域にどのような設定を行うかを指定します。

  1. box (1.992 -1 0) (3.22 1 0.55)
  2. volScalarFieldValue alpha.water 1

boxはメッシュからはみ出た部分でもエラーは出ないので、境界ギリギリの寸法にせず大きめに設定しても良いです。

ではsetFieldsコマンドを実行して空気と水の体積分率を作成しましょう。

paraviewで結果を確認しましょう。

これで空気と水の初期状態ができました。

(おまけ)ケルビンヘルムホルツ不安定性

setFieldsは体積分率だけではなく初期の速度分布も作ることができます。

例えば下記の記事でやったようにsetFieldsにすると初期の速度分布も作ることができます。

setFieldsDictだけ設定を載せておきます。

system/setFieldsDict

このような設定を行うことでケルビンヘルムホルツ不安定性の解析も行うことができます。

setFieldsは今回のような混相流だけではなく速度分布だけを変えたい場合にも使うことができます。

まとめ

今回はsetFieldsコマンドを使って空気と水の初期状態を作りました。

次回、3次元ダムブレイクの計算を実行してみましょう。
以下のように赤色の水が障害物にぶつかって飛び跳ねる様が見られます。

このような計算結果と実験データとの比較を行う予定ですので乞うご期待!

参考書

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

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

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

3,520円(11/23 08:06時点)
Amazonの情報を掲載しています

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

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

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

川畑 真一
1,100円(11/22 19:32時点)
発売日: 2021/02/26
Amazonの情報を掲載しています
関連記事もどうぞ

COMMENT

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