#前提
この解説は、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
私の環境では、次のファイルが表示された。
custom@custom-VirtualBox /media/sf_OpenFOAM/porousBlockage $ ls
0 Allrun constant system
チュートリアルに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
すると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秒
- 内容:回路基板の空冷。
#次のステップ
チュートリアルを何例か実行したら、次は、チュートリアルファイルの立体形状や初期条件を変えて、実行結果がどのように変化するか確かめてみるのがお勧め。その方法は別ページで解説する(予定)。