2. olaFlow のインストール
ここでは、olaFlow のインストールを行う。OpenFOAM のバージョンは KEYSIGHT(旧ESI)版の v2406 とする。
2.1 OpenFOAM v2406 のソースコードのダウンロード、インストールおよび動作確認
次のページを参考にして OpenFOAM v2406 のソースコードのダウンロードおよびインストールを行う。
https://develop.openfoam.com/Development/openfoam/-/blob/master/doc/Build.md
なお、ここではインストールディレクトリを $HOME/OpenFOAM と想定している。
2.2 olaFlow のソースコードのダウンロード、インストールおよび動作確認
次のページよりソースコードのダウンロードができる。
https://github.com/phicau/olaFlow
olaFlow は OpenFOAM v2406 で動作保証がされていない。$^1$ そのため、ここでは olaFlow と OpenFOAM v2406 の interFoam および VoF の差分を取り、マージする方法を記し、最後にインストール方法を記す。
2.2.1 interFoam と olaFlow の差分の反映
ソースコードの階層を以下に示す。マージが必要なファイルには、節番号をつけている。
$HOME/OpenFOAM/OpenFOAM-v2206/applications/solvers/multiphase
├── VoF
│ ├── alphaCourantNo.H 2.2.1.5
│ ├── alphaEqn.H 2.2.1.6
│ ├── alphaEqnSubCycle.H
│ ├── createAlphaFluxes.H 2.2.1.7
│ ├── setDeltaT.H
│ └── setRDeltaT.H 2.2.1.8
├── interFoam
│ ├── Make
│ │ ├── files
│ │ └── options
│ ├── UEqn.H 2.2.1.4
│ ├── alphaSuSp.H
│ ├── correctPhi.H
│ ├── createFields.H 2.2.1.2
│ ├── initCorrectPhi.H
│ ├── interFoam.C 2.2.1.1
│ ├── interMixingFoam (omit)
│ ├── overInterDyMFoam (omit)
│ ├── pEqn.H
│ └── rhofs.H
└── olaFlow
├── Make
│ ├── files
│ └── options
├── UEqn.H 2.2.1.4
├── allMake
├── alphaCourantNo.H 2.2.1.5
├── alphaEqn.H 2.2.1.6
├── alphaEqnSubCycle.H
├── alphaSuSp.H
├── correctPhi.H
├── createAlphaFluxes.H 2.2.1.7
├── createFields.H 2.2.1.2
├── createPorosity.H 2.2.1.3
├── initCorrectPhi.H
├── olaFlow.C 2.2.1.1
├── pEqn.H
├── rhofs.H
├── setDeltaT.H
└── setRDeltaT.H 2.2.1.8
2.2.1.1 interFoam.C
olaFlow では olaFlow.C である。変更点は次の通り。
- 看板の変更は任意とする
- incompressibleInterPhaseTransportModel はインクルードしない
- setRootCaseLists.H ではなく setRootCase.H をインクルードする
- 乱流モデル turbulence の validate() メソッドを実行する
- runTime++ は interFoam.C のままとする
- 空隙率スカラー場を更新する
2.2.1.2 createFields.H
変更点は次の通り。
- createPorosity.H をインクルードする
- 乱流モデル turbulence は incompressible::turbulenceModel クラスでインスタンス化する
- サーフェススカラー場 alphaPhiUn をインスタンス化する
2.2.1.3 createPorosity.H (新規)
- 空隙率スカラー場を生成する
2.2.1.4 UEqn.H
変更点は次の通り。
- 運動方程式で使用する粘性係数 $\mu$ をサーフェススカラー場でインスタンス化する
- $\mu$ の計算で $\nu_t$ を使用する
- $\nu_t$ は乱流モデル turbulence の nut() メソッドで取得する。
- 運動方程式を VARANS のものに置き換える
2.2.1.5 VoF/alphaCourantNo.H
変更点は次の通り。
- system/controlDict の maxAlphaCo の取得方法を変更する
2.2.1.6 VoF/alphaEqn.H
変更点は次の通り。
- MULESCorr が TRUE の場合、空隙率が考慮されない計算になるとの警告を出す
- alpha の流束に対する Crank-Nicolson 係数の効果を考慮する
- MULESCorr が FALSE の場合、MULES の陽解法を用いる
- MMLES の explicitSolve メソッドの第一引数を 1 で固定のスカラー場から空隙率スカラー場に変更する
2.2.1.7 VoF/createAlphaFluxes.H
変更点は次の通り。
- サーフェススカラー場 alphaPhiUn をインスタンス化を createFields.H に移動する
2.2.1.8 VoF/setRDeltaT.H
変更点は次の通り。
- PIMPLE の設定値の取得メソッドを getOrDefault から lookupOrDefault に変更する
2.2.1.9 Make/files
次のように変更する。
olaFlow.C
EXE = $(FOAM_USER_APPBIN)/olaFlow
2.2.1.10 Make/options
変更の必要なし。
2.2.2 Allwmake の実行
interFoam と同じ階層に olaFlow のディレクトリがあることを確認して、再度 Allwmake を実行する。
2.2.3 動作確認
olaFlow にヘルプオプションをつけて正常に動作すれば問題なし。
$ olaFlow -help
Usage: olaFlow [OPTIONS]
Options:
-case <dir> Case directory (instead of current directory)
-decomposeParDict <file>
Alternative decomposePar dictionary file
-dry-run Check case set-up only using a single time step
-dry-run-write Check case set-up and write only using a single time step
-parallel Run in parallel
-postProcess Execute functionObjects only
-doc Display documentation in browser
-help Display short help and exit
-help-full Display full help and exit
Solver for two incompressible, isothermal immiscible fluids using VOF
phase-fraction based interface capturing.
With optional mesh motion and mesh topology changes including adaptive
re-meshing.
Using: OpenFOAM-v2406 (2406) - visit www.openfoam.com
Build: _630d60de3b-20240620
Arch: LSB;label=32;scalar=64
なお、上述と同じ方法でオーバーセット法を用いる overInterDyMFoam と overOlaDyMFlow をマージすることも可能である。
チュートリアルケースの動作確認はこちら(工事中)
注記
1 : ダウンロードして展開した olaFlow ディレクトリで次のコマンドを実行して olaFlow のインストールをすることも可能ではある。筆者が検知する限りでは、コンパイル時に次のエラーが発生した。
pEqn.H:13:18: fatal error: interpolatedFaces.H: No such file or directory
13 | #include "interpolatedFaces.H"
| ^~~~~~~~~~~~~~~~~~~~~
ここで問題となるpEqn.Hは solvers/olaFlowOFv_com_latest/overOlaDyMFlow/pEqn.H である。このファイルの13行目までをコメントアウトして再コンパイルすれば、olaFlow は一応動く。