Help us understand the problem. What is going on with this article?

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」というボタンをクリックする。
無題.png

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

無題2.png

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

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

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

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

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

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

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

を実行して計算完了するまで待つ。(私のパソコンだと15分ぐらい。)
最後にparaFoamを実行して、「Apply」→「・U」を表示すると、
無題5.png
「ビル群」の上空(地上から70m)の気流が表示される。これだとよくわからないので、地上から10mの位置の気流を見たい。

断面の表示

その場合、左上の「slice」のアイコンをクリックすると(前図の赤矢印、マウスポインタを合わせて1秒ほど待つと、sliceの文字が表示されるからわかる。)、sliceの設定画面になるので、
無題6.png
さらに、「Z normal」をクリックし、Originを(70.0025から)10に変えて、「Apply」ボタンを押すと(上図の赤矢印)、
無題7.png
地上から10mの位置の気流が表示される。この断面画像は「Play」ボタンでアニメーション表示もできる。

流線の表示

さらに、左上のGlyphボタンをクリックすると(上図の赤矢印)、
無題9.png
Glyphの設定画面になるので、「Glyph Type」を「2D Glyph」に、「Orientation Array」を「・U」に、「Maximum Number Of Sample Points」を「500」ぐらいに設定して、「Apply」をクリックすると(上図の赤矢印)、
無題10.png
流線が表示される。ただし、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秒
    • 内容:回路基板の空冷。

次のステップ

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

holdingtomato
プログラマーではありませんが、プログラム歴は30年以上です。今はVisual Basic for Application専門ですが、昔はC, Pascal, Delphiなどを主に数値計算に使っていました。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away