OpenFOAM

【OpenFOAM】レイリー・テーラー不安定性の流体解析

流体力学の不安定性現象のひとつであるレイリー・テイラー不安定性の流体解析をOpenFOAMを使ってやってみました。
他に不安定性現象として有名なものとしてケルビンヘルムホルツ不安定性というのがありますが、そちらは以前記事にまとめましたのでご参考ください。

参考にした記事は以下です。

作り方として2つあります。

  1. 液体領域をstlファイルで作成しておきsetFiledsで液体領域を作成
  2. 0/alpha.waterのinternalField(内部領域)の領域をプログラムで埋め込む

今回の記事ではどちらの方法についても解説を行います。

OpenFOAMv2012(WSL)

チュートリアルのコピー

チュートリアルをコピーしてモデルを作りましょう。

まずは気液混相流ソルバのinterFoamのdamBreakのチュートリアルを自身の計算フォルダにコピーします。

ベースのファイルを作っておきます。
今回2つの方法で液体領域を作成するので共通部分を「base」というフォルダに作ります。

cd ..そしてフォルダ移動をします。

damBreakのチュートリアルのメッシュと境界条件を変更して解析を行うことにします。

ベースメッシュの作成

ベースのメッシュはsystem/blockMeshDictで行います。

system/blockMeshDict

blockMeshを実行します。

空の.foamファイルを作成してParaViewで読み込んでメッシュ状態を確認しておきましょう。

これでベースのメッシュができました。

次に境界条件を作成します。

物性値

物性値は「constant/transportProperties」で設定します。

constant/transportProperties

境界条件

damBreakのチュートリアルは初期状態の設定ファイルを元に戻せるように「0.orig」ファイルで境界状態を作成します。
あとで、setFieldsをすると内部領域の値が書き換わるので元に戻したい場合に「0.orig」で設定ファイルを作っておくと便利です。

0.orig/U

0.orig/p_rgh

ここまでは共通部分ですね。

ここから液体領域の初期状態を作る必要があります。
以下液体領域を作る方法を2つ紹介します。

  1. 液体領域をstlファイルで作成しておきsetFiledsで液体領域を作成
  2. 0/alpha.waterのinternalField(内部領域)の領域をプログラムで埋め込む

液体領域を作る(alpha.water)

液体領域をstlファイルで作成しておきsetFiledsで液体領域を作成

まずは液体領域をstlファイルで作る方法を試します。
共通部分のファイルをコピーして新たに作ったフォルダで設定をしていきます。

modelというフォルダを作ってそちらに液体部分のモデルを保存しましょう。

stlファイルはFreeCADで作ります。

今回は青色の領域をFreeCADで作りました(灰色部分はblockMeshで作った部分をFreeCADでも作成し、全体の位置関係の基準にしています。)

界面を拡大すると以下のように寸法を決めました。

液体領域をモデリングで決めることができるのはこの設定のメリットですね。

ではこれを「Mesh Design」>「メッシュ(M)」>「シェイプからメッシュを作成」として作成されたメッシュをエクスポートします。以下のようにするとstlファイルがbinary形式で保存されます。
ものモデルを「model.stl」という名前で「model」というフォルダに保存しましょう。

ではこのmodel.stlファイルを使ってsystem/setFiledsから読み込んで液体領域を作ります。

system/setFileds

境界条件「0/alpha.water」は以下のようにします。

0/alpha.water

では、「0.orig」を「0」としてコピーして、

以下のコマンドで液体領域を作成します。

 

こんな感じでできました。

今回のような境界条件では圧力の固定値がどこにもないため参照する圧力の固定値が必要なので、fvSolutionで指定します。

system/fvSolution

では、計算させてみましょう。

なんかあまりきれいにできませんでしたね・・・
界面の形がカクカクしているからでしょうか。

もうちょっと界面を滑らかにして再度試してみました。

先ほどよりは滑らかな界面にしてみました。
これもあまり変わらない結果でした。

次はこちら・・・

こちらもあまりきれいじゃないですね。

0/alpha.waterのinternalField(内部領域)の領域をプログラムで埋め込む

次に流体領域を「0/alpha.water」に直接コードを埋め込んで設定したいと思います。

0/alpha.water

コードの埋め込みに関してはまた別の記事で解説をします。

このようにinternalFieldに直接値を代入することでalpha.waterの分布ができるので、setFieldsで設定しなくても良くなります。

同様にinterFoamで計算させてParaViewで可視化します。

界面が不安定になる現象ができましたね。
さきほどのstlファイルから界面を作るよりもきれいな結果になりました。

物性値をの変更

物性値を変えてみました。

constant/transportProperties

 

物性値って結構影響するんですね。
このように界面が変化する様子の違いを作る因子をパラスタで調査したくなりますね。
それは追々やるとして本記事はこの辺で終わります。

まとめ

今回は流体力学の不安定性現象のひとつであるレイリー・テイラー不安定性をOpenFOAMでやってみました。
ケルビンヘルムホルツ不安定と並んで面白い現象ですよね。

液体と気体の界面の初期状態が曲線になるように設定するには以下の2つの方法があります。

  1. 液体領域をstlファイルで作成しておきsetFiledsで液体領域を作成
  2. 0/alpha.waterのinternalField(内部領域)の領域をプログラムで埋め込む

今回は試していませんが、interFoamは界面がぼやけてしまうという問題があり、いくつかの改善点が必要です。

  • 界面圧縮項を大きくする
  • メッシュを細かくする
  • Adaptive mesh refinement(界面のメッシュのみ細かく)
  • interIsoFoamソルバを使う

interIsoFoam
気液混相流に対してisoAdvector位相分率ベースの界面捕捉アプローチを用いたinterFoamから派生したソルバーで、適応的再メッシュを含むメッシュの動きやメッシュトポロジー変更を任意に行うことができます。

interIsoFoamを使うと界面のぼやけるのがinterFoamと比べるとかなり改善されています。

おすすめ参考図書

☟こちらは、OpenFOAMの日本語書籍が無い中唯一わかりやすい参考書だと思います。

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

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

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

☟こちらもOpenFOMの古いバージョンでの和訳になります。さすがにこちらはバージョンに対する日本語でのケアはしていないので、OpenFOAMに慣れている方は購入しても良いかと思います。僕は「日本語でまとまっている内容」なので少し重宝しています。

OpenFOAMプログラミング

OpenFOAMプログラミング

Mari´c,Tomislav, H¨opken,Jens, Mooney,Kyle
8,250円(12/06 16:36時点)
Amazonの情報を掲載しています

☟以下に、もっと初心者向けの同人誌を紹介しておきます。
初心者は「ってか、まずどうやってOpenFOAMをインストールするの?」というところからつまずきがちです。
そんな時は、以下の書籍をおすすめします。

改訂新版 OpenFOAMの歩き方 (技術の泉シリーズ(NextPublishing))

改訂新版 OpenFOAMの歩き方 (技術の泉シリーズ(NextPublishing))

川畑 真一
1,320円(12/06 21:39時点)
発売日: 2022/04/15
Amazonの情報を掲載しています

インストール方法とチュートリアルで流体解析を体験・・・ちょっと高度な解析まで解説があります。著者曰くOpenFOAMのバージョンの追跡を行いながら、書籍をアップデートするようなので安心ですね。

関連記事もどうぞ

COMMENT

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