OpenFOAMのチュートリアル実施


前提

この解説は、VirtualBoxおよびDEXCSを使ってOpenFOAMを実行する人向けです。次の作業が終わっているものとします。

  • VirtualBoxとDEXCSをインストールし終わっている。DEXCSを起動できる。
  • DEXCSで共有フォルダを設定している。
  • DEXCS上で、OF-v1906Terminalを起動できる。
  • OF-v1906Terminal上で、Linuxのコマンド(例えばls)を実行できる。

実行したいチュートリアルを探す

チュートリアルとは、OpenFOAMの事例紹介である。

ネット上には、OpenFOAMチュートリアルの紹介がいくつもあるので、まずは自分が興味を持てそうなページをGoogleなどで探す。キーワードは「OpenFOAM チュートリアル一覧」など。
例えば次のサイト:
https://www.xsim.info/articles/OpenFOAM/Tutorials.html

チュートリアルの予備知識

チュートリアルは、FOAM_TUTORIALSというフォルダにまとめられている。1つのフォルダに1つの事例が保管されている。

多くのチュートリアルフォルダには「Allrun」というファイルがある。このファイルはチュートリアルの自動実行ファイルなので、まずはこのファイルがある事例を実施してみると良い。

なお、チュートリアルのファイル構成、フォルダ構成は、バージョンによって大きく変わっているので、実行したいチュートリアルのフォルダがどこにあるのか探す必要がある場合もある。

チュートリアルの実行例

まずは実行したいチュートリアルのフォルダを、WindowsとVirtualBoxの共有フォルダにコピーしてから実行するのが便利。OpenFOAMを実行すると、フォルダの中に新しいフォルダやファイルが作成されるので、必ずコピーしたフォルダで実行すること。

私の場合は/media/sf_OpenFOAMというフォルダを共有フォルダにしているので、次のようにしてショートカットを作成しておくと便利。そして、共有フォルダに移動する。

共有フォルダへのパスの設定と移動
export myhome=/media/sf_OpenFOAM
cd $myhome

この共有フォルダにチュートリアルファイルの一つをコピーする。次の例は、porousBlockageというチュートリアルをコピーする例。末尾の「.」を忘れないこと。このピリオドは、カレントフォルダを意味する。

共有フォルダへの事例コピー
cp -r $FOAM_TUTORIALS/incompressible/pisoFoam/laminar/porousBlockage .
cd porousBlockage

このとき、「そのようなファイルやディレクトリはありません」というエラーが出たら、チュートリアルのフォルダの位置が間違っている(参照したWebサイトとあなたの環境とでフォルダ構成が異なる)ので、まずは次の方法で、そのフォルダを探す。(「porousBlockage」の箇所は、探したい事例に置き換える。)

チュートリアルフォルダを探す例
cd $FOAM_TUTORIALS
find -name porousBlockage

私の環境下では、次のような結果が表示された。
./incompressible/pisoFoam/laminar/porousBlockage

ちなみに、これをpitzDailyにした場合には次の結果が表示される。
./basic/potentialFoam/pitzDaily
./basic/scalarTransportFoam/pitzDaily
./compressible/rhoPimpleFoam/LES/pitzDaily
./incompressible/adjointShapeOptimizationFoam/pitzDaily
./incompressible/pimpleFoam/RAS/pitzDaily
./incompressible/simpleFoam/pitzDaily
./incompressible/pisoFoam/LES/pitzDaily
この中から、最も近いものを探してコピーする。(これらは、ほぼ同じ流路条件で、それぞれ別の解法あるいは別の条件での事例フォルダである。)

コピーが終わったら、lsコマンドを実行して、「Allrun」のファイルがあることを確認する。

lsの実行
ls

私の環境では、次のファイルが表示された。

lsの実行
custom@custom-VirtualBox /media/sf_OpenFOAM/porousBlockage $ ls
0  Allrun  constant  system

チュートリアルにAllrunが入っていれば、それを実行すれば結果が得られる。ただし、最初に「./」を付ける。

Allrunの実行
./Allrun

私の環境では、次のような結果が得られる。

Allrunの実行結果
custom@custom-VirtualBox /media/sf_OpenFOAM/porousBlockage $ ./Allrun
Running blockMesh on /media/sf_OpenFOAM/porousBlockage
Running topoSet on /media/sf_OpenFOAM/porousBlockage
Running pisoFoam on /media/sf_OpenFOAM/porousBlockage
custom@custom-VirtualBox /media/sf_OpenFOAM/porousBlockage $

チュートリアルの実行結果表示

結果を表示するにはparaFoamというコマンドを実行する。

paraFoamの実行
paraFoam

するとparaViewというアプリケーションが起動される。左中央付近にある「Apply」というボタンをクリックする。

すると、真ん中の画面に立体っぽい画像が出る。続いて、速度分布をみるために、上の方にある「Solid Color」というボタン(リストボックス)から「・U」を選ぶ。(ここで「・T」を選ぶと温度が、「・p」を選ぶと圧力が見られる。チュートリアルによっては、どれかが無い場合もある。)

すると、初期の速度分布が色で表示される。続いて「Play」(再生)ボタンをクリックすると、速度の経時変化がアニメーションで表示される。

しばらく待つと(Time 60ぐらいまで)、カルマン渦っぽいものも観察できる。

もう少しだけ高度なParaFoamの使い方。

ParaFoamで、立体の断面を見たり、流線を書いたりもできる。

事例として、「ビル街の風の流れのシミュレーション」を見る。

実行フォルダに移動して、

ビルディング
cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/windAroundBuildings Buildings
cd Buildings
./Allrun

を実行して計算完了するまで待つ。(私のパソコンだと15分ぐらい。)
最後にparaFoamを実行して、「Apply」→「・U」を表示すると、

「ビル群」の上空(地上から70m)の気流が表示される。これだとよくわからないので、地上から10mの位置の気流を見たい。

断面の表示

その場合、左上の「slice」のアイコンをクリックすると(前図の赤矢印、マウスポインタを合わせて1秒ほど待つと、sliceの文字が表示されるからわかる。)、sliceの設定画面になるので、

さらに、「Z normal」をクリックし、Originを(70.0025から)10に変えて、「Apply」ボタンを押すと(上図の赤矢印)、

地上から10mの位置の気流が表示される。この断面画像は「Play」ボタンでアニメーション表示もできる。

流線の表示

さらに、左上のGlyphボタンをクリックすると(上図の赤矢印)、

Glyphの設定画面になるので、「Glyph Type」を「2D Glyph」に、「Orientation Array」を「・U」に、「Maximum Number Of Sample Points」を「500」ぐらいに設定して、「Apply」をクリックすると(上図の赤矢印)、

流線が表示される。ただし、Glyphはアニメーションでは更新されないので、流線を引きたい画面にしてから設定する必要がある。

おすすめのチュートリアル

個人的(アニメーション的)にお勧めなのは、次のチュートリアル。
「実行時間」はIntel Core i5-7300U CPU @ 2.60GHz 2.70GHzを使っての結果。

Allrunがあるもの

  • $FOAM_TUTORIALS/compressible/rhoPimpleFoam/RAS/mixerVessel2D
    • 実行時間:31秒
    • 内容:丸い水槽の中でプロペラが回る。ただし見た目にはプロペラではなく水が回る。
  • $FOAM_TUTORIALS/compressible/sonicLiquidFoam
    • 実行時間:3分50秒
    • 内容:タンクの下のノズルから水が出る。
    • 注意:./Allrunの後、cd decompressionTankで下位フォルダに移ってからparaFoamを実行する必要がある。
  • $FOAM_TUTORIALS/incompressible/simpleFoam/mixerVessel2D
    • 実行時間:6秒
    • 内容:邪魔板が付いた水槽の中でプロペラが回る。
  • $FOAM_TUTORIALS/incompressible/simpleFoam/windAroundBuildings
    • 実行時間:14分29秒
    • 内容:ビル街の風の流れのシミュレーション。
    • 注意:z=10ぐらいでsliceしないと結果がよく見られない。
  • $FOAM_TUTORIALS/basic/laplacianFoam/flange
    • 実行時間:14秒
    • 内容:複雑な形状の金属部品の熱伝導。
  • $FOAM_TUTORIALS/incompressible/icoFoam/elbow
    • 実行時間:5秒
    • 内容:曲がった2股配管の流れ。
  • $FOAM_TUTORIALS/heatTransfer/buoyantSimpleFoam/circuitBoardCooling
    • 実行時間:20秒
    • 内容:回路基板の空冷。

次のステップ

チュートリアルを何例か実行したら、次は、チュートリアルファイルの立体形状や初期条件を変えて、実行結果がどのように変化するか確かめてみるのがお勧め。その方法は別ページで解説する(予定)。