OpenFOAMのチュートリアル改変1 - 流路の小変更、初速の変更


前提

  • VirtualBoxとDEXCSを使ってOpenFOAMを実行していること。(それ以外の環境でも、多少読み替えれば以下を理解できなくもないが、初心者にはお勧めしない。それよりも、自分と同じ環境の人が作った解説ページを探すか、あるいはVirtualBoxとDEXCSを使ってOpenFOAMをインストールしなおすのがよいと思う。)
  • 前節の「OpenFOAMのチュートリアル実施」を読んだか、またはOpenFOAMのチュートリアルの実行の仕方が分かること。

まずはチュートリアルをそのまま実施

チュートリアルの「porousBlockage」を例に説明する。以下の命令は、(1) チュートリアルからporousBlockageフォルダをコピーし、(2) コピーしたporousBlockageフォルダの中に入り、(3) Allrunを実行し、(4) 結果を表示する、というもの。

チュートリアルporousBlockageをそのまま実施
run
cp -r $FOAM_TUTORIALS/incompressible/pisoFoam/laminar/porousBlockage .
cd porousBlockage
./Allrun
paraFoam

paraViewの画面になってから、Play(再生)ボタンを押すと、結果がアニメーション表示される。Time=60ぐらいでカルマン渦っぽいものが発生する。

確認出来たら、一度paraViewを終了する。つまり、paraView画面右上のクローズボタン(赤い×ボタン)をクリックする。)

流路形状の小変更

まずは流路(周囲の形)を変える。この流路は、平面に見えるが、実際には薄い板である。つまり、8つの頂点がある。

上の図を見てわかるように、点0が、原点になっている。点6が原点から最も遠い。点6と、点6の下(xy平面の反対側)にある点2のX座標を、すこし増やしてみる。なお、上の図は、見やすいように実際より少し厚みを増やしてあります。

この座標の定義は、porousBlockageフォルダの中のsystemフォルダの中にある、blockMeshDictというファイルに書かれている。このファイルを編集するには、xdg-openというコマンドを使用する。

blockMeshDictの編集
xdg-open system/blockMeshDict

開いたファイルの最初にvertics、blocksと書かれた箇所があり、これが流路の形状を表している。

verticsが、頂点の座標を意味する。一番上の(-2, -2, -0.1)が点0の座標、次の行の(6, -2, -0.1)が点1の座標である。以下、点2, 点3...と続き、最後が点7である。番号が0から始まることを覚えておくこと。blocksで、頂点同士のつながり(つまり立体形状)を定義しているが、今回はこれは変更しない。

前述したとおり、点2と点6の座標を変えてみる。点2の座標は、このファイルであれば23行目の(6, 2, -0.1)である。これを(7, 2, -0.1)に変える。点6の座標は、このファイルであれば27行目の(6, 2, 0.1)である。これを(7, 2, 0.1)に変える。ファイルを閉じてSaveする。その後に再びAllrunを実行する。

ログの削除と再実行
rm log*
./Allrun
paraFoam

最初の行の「rm log*」は、前回の実行結果の記録の削除コマンド。前回の記録が残っている場合は、削除しないとAllrunをした時にエラーになる。(チュートリアルによってはlogファイルを削除するだけでは不十分だが、porousBlockageの場合はlogを削除すれば大体問題ないと思う。)

paraFoamの結果は次の通り。

点2と6の座標が変わっていることが分かる。アニメーションで流れの変化を見てみると、元とは少し変わっており、左右対称形状でなくなっているためか、渦ができる時間が早くなる。

なお、OpenFOAMの全ての流路がblockMeshDictで定義されているわけではない。チュートリアルにblockMeshDictファイルがあっても、実際の流路は別のファイルで定義されている場合もある。単純な形状のチュートリアルは、blockMeshDictだけで定義されている場合が多い。

blockMeshDictの定義を大きく変えることで、もっと複雑な流路を作ることもできるが、少し話がややこしくなるので、これは少し後に説明する(予定)。

初速の変更

(前の節でblockMeshDictを書き換えた場合は元に戻しておく)

初期条件の多くは「0」フォルダに保管されている。チュートリアル「porousBlockage」の場合は、「p」と「U」のファイルで定義されている。まずは初速を変えてみる。

0/Uの編集
xdg-open 0/U


上のファイルで「inlet」で定義されているのが入口の流速である。なお、「inlet」が「入口」であることは別のファイル(porousBlockageの場合は先ほどのblockMeshDict)で定義されている。

入口の流速は「type fixedValue;」(27行目)、つまり時間が経っても変化しないと定義されている。この定義を変えて、例えば流速をだんだん早することもできるが、これをいじるのはもう少し勉強してからがよい。(定義を1か所だけ変えても大抵うまくいかないから。)まずは値だけを変えてみよう。値は、次の行「value \$internalField;」となっている。この$internalFieldというのは、19行目で「internalField uniform (1 0 0);」と定義されている。(1 0 0)の値はx, y, z方向の速度を意味している。上のグラフでは、x軸が水平方向、y軸が上下方向になっているので、(1 0 0)だと水は右方向に流入することを意味する。これを(1 1 0)に変えたら、右上へ流入することになる。次の図で示す(色だけでは分からないので流線も加えている)。

この値を(2 0 0)にしたら、元の(1 0 0)と向きは同じだが倍速で流れることになる。この値を(0.5 0 0)にしたら、元よりも低速で流れることになる。なお、(2 0 0)に変えても、(0.5 0 0)に変えても、Time=100までの間に明瞭な渦は発生しなくなる。

次のステップ

頂点の数を増やして、流路の形を変える方法を説明する(予定)