5-3. OpenFOAM標準チュートリアルの調べ方
OpenFOAMの実践的活用法において記したように、標準チュートリアルは実践活用に際しての最初の足掛かりである。
DEXCS-OFの場合、標準チュートリアルは、
$HOME/OpenFOAM/OpenFOAM-v1906/tutorials
以下にジャンル/ソルバー別に収納されている(図5-3-1.)が、その数は300を超える。
ルートディレクトリには、Allで始まる名前のスクリプトが収納されており、これらのスクリプトを使って、全チュートリアルケースを対象にした処理が可能になっている。たとえば、OpenFOAM専用端末(dockツールバーのアイコンをクリックして起動)で以下のように入力すれば
$ run
$ cp -r ../../OpenFOAM-v1906/tutorials ./
$ ./Allrun
全チューチュートリアルケースの自動実行が始まる。
とは書いたものの、これを推奨するものではない。何しろ全部の実行を完了するには、1ヶ月以上にもかかる計算時間と、700GB以上のディスクスペースが必要になるからである。
Allrunでなく、Alltestであれば、これはチュートリアルケースを完全に実行するのではなく、メッシュ作成した後ソルバー計算の最初の1ステップだけ実行して終了する。これならば数時間で終了するので試してもらっても構わないが、ここでの狙い「OpenFOAM活用の足掛かりとして調べる」でなく、別途OpenFOAMを自力で更新作業した場合など「インストールがちゃんと出来ているかどうかの確認」を目的に使うのが妥当であろう。
それでは、これだけたくさんのチュートリアルケースがあって、自分がやりたい解析の参考になるようなケースをどうやって探したら良いのであろう。
ひとつには、ジャンル、ソルバー、ケースの名前であろう。ジャンルの名前に関しては工学知識、ソルバーの名前に関しては加えて数値計算に係る知識がある程度の前提とはなるが、後述のtreeFoamを使うと検索が容易になる。ケースファイルの名前は、図5-3-1.に示した例でも、airFoil2D, motorBike,..と具体的な物の名前でイメージが掴めるのでないかと思われる。
もうひとつは公開情報の活用である。幸いな事に現在では、公開事例がたくさん存在する。初心者にはどこから手を付けたら良いのかわからないほどに有り過ぎるかもしれない。以下に代表的な公開事例を紹介しておく。
- OpenFOAM本家チュートリアルガイド
- https://www.openfoam.com/documentation/tutorial-guide/
- 簡単な形状を題材とした基本的な事例が8つあるだけであるが、説明は詳しい。但しもちろんの事であるが英文。
- Onion Salad – OpenFOAMチュートリアルドキュメント作成プロジェクト
- https://sites.google.com/site/freshtamanegi/home/openfoam/tutorial
- オープンCAE勉強会@関西の有志メンバー(著者もその一人)によるまとめ情報の草分け的サイト。
- 事例数は約70ケースあり、解析対象、内容、結果例、主要パラメタ、実行コマンド等の説明があるが、コンテンツ毎に説明レベルのバラツキが大きい(作者が異なるので仕方ない)。
- Xsim:OpenFOAM付属チュートリアル一覧
- https://www.xsim.info/articles/OpenFOAM/Tutorials.html
- 現時点でもっとも内容が充実したサイトで、約200のケースファイルについての解説がある。但し、OpenFOAMのヴァージョンは4.x。
なお、実践活用でチュートリアルケースを足掛かりにするというのは、大きく2つの着眼点がある。つまり、
- ソルバーのパラメタセットを流用する
- メッシュの作り方を参考にする
といったところであろう。
前者の観点で、すでに自分が計算したいジャンルが判っている場合には探す事は比較的容易といえよう。しかし、メッシュという観点からは、詳しくは後述するが、ソルバーが異なっても使い回しできるのが基本である。したがって、後者の観点で参考ケースを探すのは探索範囲が広くなって探す手間は大きいものの、もし見つかった場合には仕事を進める上で余分な手間が不要になるというメリットも大きいので、効率良く探す工夫が必要ということである。
以上の手立てで、仮にケースファイルが見つかったからといって、では実際に本当に動くかどうか?自分がやりたい事が出来るようにするには、何処をどう変えたら良いのか?…このあたりの一部は上述の参考サイトから情報が得られる場合もあろうが、まずは自身の手で実際に動かしてみるのが一番だと思われる。
DEXCS-OFでは、このあたりのスタディーをtreeFoamを使って実施することを推奨している。後段でスタディー方法の手順を説明するが、その前に標準チュートリアルケースを動かす仕組みついて説明しておく。先にルートフォルダのAllrunで全ケースを自動実行できると記したが、各ケースをどうやって自動実行するのかはケースバイケースであるからだ。
実はルートフォルダだけでなく、サブフォルダや、ケースファイルそのものの中にもAllrunファイルが随所に存在する。ケースフォルダとAllrunファイルの関係を見比べて、大きく3つのケースに分類できる。
- ケースフォルダ中にAllrunファイルが存在
- Allrunファイルがケースフォルダ中には存在しないが、ケースフォルダと併存(親フォルダに存在)している
- Allrunファイルがケースフォルダ中に存在せす、併存もしない
自動実行の仕組みは、基本的に上述の優先順位で実行される。すなわち、ケースフォルダ中にAllrunファイルがあればそれを実行する。Allrunファイルがケースフォルダ中に無くても親フォルダ中にも存在すれば、そのスクリプト中に記載された手順で実行される。そうで無ければ、標準手番(blockMeshでメッシュ作成しソルバー実行)という事である。
ややこしいのは、2番目の方法であるが、幸いな事にこの仕組みで動くケースは以下の10数ケースほどだけである。
basic/overPotentialFoam/cylinder combustion/XiFoam/RAS/moriyoshiHomogeneous compressible/overRhoSimpleFoam/hotCylinder compressible/sonicLiquidFoam/decompressionTank incompressible/icoFoam/cavity incompressible/lumpedPointMotion/building incompressible/overPimpleDyMFoam/cylinder incompressible/overSimpleFoam/aeroFoil incompressible/pimpleFoam/RAS/wingMotion lagrangian/icoUncoupledKinematicParcelFoam/hopper multiphase/interFoam/RAS/damBreak multiphase/interFoam/laminar/damBreak multiphase/overInterDyMFoam/floatingBody
以上を念頭に置いて、以下、treeFoamを使ったOpenFOAM標準チュートリアルケースの調べ方について説明するが、予めデスクトップ上にOF-Tutorialというフォルダを作成しておき、そのフォルダ下での調査という前提とする。
TreeFoamはDockランチャーのアイコン「TreeFoam」をクリックすれば起動する(図5-3-2.)。
予め作成してあった②OF-Tutorialsのフォルダを選択し、③アイコン「選択したフォルダを解析caseに設定」をクリックすると、OF-Tutorialsのフォルダーアイコンにチェックマークが付いて「解析caseに設定」された事になる。
チュートリアルケースを探すには、先の③アイコンの右隣のアイコン「新規にcaseを作成、又はsolverやmeshを入れ替え」をクリックする。
「新しいcaseの作成」という画面が現れる。タブ画面が3つあるが「newCaseの作成」になっており、source(コピー元)がtutorialsになっている事を確認し、①「case取得」ボタンを押す。そうすると新たに「newCaseの作成」という画面が現れ、OpenFOAMの標準チュートリアルケースを探索、選択できるようになる。
区分名は日本語訳が併記され、solver欄で選択したソルバーに応じて、下段<solverの内容>に簡単な説明が表示されるものもあるで、これらも探索の手掛かりになるだろう。
ここでは、
incompressible/simpleFoam/pitzDaily
を選択している。調査対象ケースが決まったら⑤「OK」ボタンを押す。
「新しいcaseの作成」画面(図5-3-4.)に戻るので、case名欄に選択したケースファイルの名前を確認、必要であれば名前は変更しても良い。①「コピー開始」ボタンを押してコピーが成功すると、確認ダイヤログ画面「newCaseの作成」が現れるので、②「OK」ボタンを押して閉じる。
「新しいcaseの作成」画面で③「閉じる」ボタンを押せば、treeFoamの画面に戻るが、この時点では画面上で何も変化していないはずである。ここでアイコン「dirの再読み込み」をクリックすれば、OF-Tutorialsのフォルダが展開可能になって、展開するとコピーしたケースファイルが参照出来るようになる(図5-3-5.)。
また、このケースフォルダのアイコンは、通常のフォルダアイコンでなく、となっており、これはこのケースフォルダがOpenFOAMのケースファイルである事を示すもので、solver欄にinterFoamという表記があり、選択したチュートリアルケースのソルバー名が反映されている点も読み取れる。
調べたいケースフォルダ(damBreakWithObstacles)を選択して、アイコン「選択したフォルダを解析caseに設定」をクリック。
マウスポインタを破線で示したあたりに置いてダブルクリックすると、ファイルマネージャが立ち上がってフォルダの中味を確認できる(図5-3-6.)。
ここまでの手順は全チュートリアルケースで共通であるが、これ以降はチュートリアルケースのタイプに応じてやり方が異なる。手順の難易度は、3.⇒1.⇒2.の順で難しくなるので、説明もこの順番で行う。
タイプ3.Allrunファイルがケースフォルダ中に存在せす、併存もしない
これまでに説明してきたチュートリアルケース
incompressible/simpleFoam/pitzDaily
がこのタイプ3.に相当する。ケースフォルダの内容は「0」「constant」「system」フォルダがあるだけの、いたってシンプルな構成である。このケースでのメッシュはblockMeshでコマンドで作成される事になっているので、blockMeshコマンドを実行し、ソルバーコマンドを実行すれば、ほとんどのケースで現実的な待ち時間の範囲で計算は終了する。
具体的な実行方法は、いくつものやり方があって以下あげられる。
- 一般的には通常の端末(Dockランチャーの「端末」をクリックして現れる)を起動して、OpenFOAM環境をセットし、チュートリアルケースに移動してblockMesh, simpleFoamを実行する。
- Dockランチャーの「OF-v1906Terminal」をクリックして現れる端末上で、チュートリアルケースに移動してblockMesh, simpleFoamを実行する。
- TreeFoamのアイコン「FOAM端末の起動」をクリックして現れる端末上でblockMesh, simpleFoamを実行する。
- TreeFoamのメニュー「十徳ナイフ」⇒「blockMeshの実行」を選択してメッシュ作成が完了したら、アイコン「ソルバーを起動」をクリックする。
番号はユーザーの手間が少ない順に並べてあり、もちろん3.もしくは4.の方法で実行する事を推奨するが(注記2)、やっている実際の内容はすべて同じであり、その内容やDEXCS-OFにおけるカスタマイズの仕組みを理解してもらう為に記したものである。4番目の方法がLinuxについてほとんど知らない初心者がボタン操作だけで実行できる手段になる訳であるが、使っているうちに、LinuxやOpenFOAMのコマンドについての知識が身についてくるようになると、コマンドラインや、スクリプトで実行した方が効率的に作業の出来る局面も出てくるので、あえてここに記しておくことにした。
計算が終了したら流れ場の可視化である。これは、アイコン「parafoamの起動」をクリック、又は②の破線部あたりをダブルクリックすれば、「paraFoamの起動option」画面が現れ、そのまま③「OK」ボタンを押せば、ParaViewが立ち上がる。
この結果を見れば、本チュートリアルが2次元のバックステップ流れを計算している事がわかるであろう。
ちなみに、このpitzDailyというケースファイルの名前は、人名(NASAのRobert W. Pitz and John W. Daily)に由来するもので、彼らの有名な実験を模擬した検証計算という位置づけである。後にも述べるが、OpenFOAMの標準チュートリアルケースの中にはソルバーを変えて実施するものがいくつか存在する。
さて、標準チュートリアルを調べる際の着眼点には大きく分けて2つあるとしたが、それぞれの着眼点での調べ方についても記しておこう。
着眼点1.ソルバーのパラメタセット
これらは、すでにDEXCSランチャーの使い方の、5-1-1-3〜5.で記した方法と、起動方法がTreeFoamのアイコンをクリックするというだけで、使用方法は全く同一である。(DEXCSランチャーのアイコンをクリックして起動するマクロはTreeFoamのサブモジュールを利用しているので)
具体的には、
- 流体特性パラメタセット⇒アイコン「Propertiesの編集」をクリック
- 計算制御パラメタセット⇒アイコン「Dict(system)の編集」をクリック
- 初期・境界条件⇒アイコン「grideditor起動」をクリック
具体的な使用方法は、DEXCSランチャーの使い方の、5-1-1-3〜5.を参照されたい。
なお、これらのパラメタセットを確認するだけにとどまらず、是非ともパラメタを変更したらどうなるかを自分の眼で確認していただきたい。もちろん闇雲に変更せよと云っている訳ではなく、パラメタの意味を理解もしくは推定して、パラメタ変更による計算結果の変化を予測しながら実施する事が肝要である。こういうスタディーに慣れてくると、逆に意味不明のパラメタがあった場合にパラメタ変更の結果の相違を見比べて、パラメタの意味を逆推定できるような事があるかもしれない。
パラメタ変更して計算をやり直すには、大きく2つのやり方があるので、用途に応じて使い分けて頂きたい。
ひとつは、アイコン「計算結果のみクリア」をクリックする方法で、もうひとつの方法は、「計算結果を削除して、caseを初期化します」を使う方法である。
いずれもクリックした際に現れる確認ダイヤログで実行内容が表示される。ダイヤログ表示面での違いは「不要なファイル」の有無であるが、本例の場合、ログファイルとpostProcessingフォルダが該当する事になる。また並列計算時には、領域分割ファイル(processor*)も該当する。
また、メッシュファイルは削除の対象にはなっていないので、パラメタセットを変更したら、即計算実行も可能である。
着眼点2.メッシュの作り方
実際の工学の現場で実施されるCFD解析では、製品形状や現実の構造物を対象にするのがほとんどで、そういう場合にblockMeshでメッシュ作成は現実的でない。しかし従来経験のない解析を実施する際には、解析方法そのものが適切であるかどうかの判断が必要になる。そういう場合、いきなり本番の形状モデルで解析するのではなく、シンプルにモデル化した領域で実験や計算検証しておいた方が回り道ではあるが結果的に早く仕事を片付ける事が出来たりする。
その際に有効になるのが、blockMeshを使う方法である。blockMeshは単純な形状にしか適用できないものと思われがちで(注記3)、本例でも比較的簡単な形状で、これを作成する為のbolockMeshDictも比較的簡単に内容を読解できるであろう。
blockMeshDictファイルの記述方法については、OpenFOAMのマニュアル(/opt/DEXCS/launcherOpen/doc/UserGuideJa.pdf)が詳しいのでそちらを参照されたいが、基本は全体領域を複数の6面体ブロックに分割しているだけである。問題は、6面体の各頂点の座標値、頂点の定義順序やエッジ分割の整合性など、これらを間違えないよう、手作業で作らざるを得ない点にある。
DEXCS-OFでは、「十徳ナイフ」⇒「blockMeshの表示」メニューを使って、ブロック定義を可視化して表示確認する事も出来る(図5-)ので、blockMeshDictファイルと読み比べながら、blockMeshDictファイルの記述方法について理解を深めていただきたい。
タイプ1.ケースフォルダ中にAllrunファイルが存在する
ここでは、タイプ1.の例として、
multiphase/interFoam/laminar/damBreakWithObstacles
を取り上げる事にする。ファイルマネージャでの表示は以下の通り、Allrunを含んだ内容になっている。
ここで、Allrunファイルをダブルクリックしてみよう。Allrunファイルは実行権限が付与されたスクリプトファイルなので、以下のダイヤログ画面が現れるはずである。
ここで「端末内で実行する」あるいは「実行する」としたいところであるが、残念ながらこれらのボタンを押しても正常に実行はされない。TreeFoamを起動した際に、本体のGUI画面とは別に端末画面が立ち上がっているはずであるが、そちらの方にエラーメッセージが表示されているはずである。
これは、このスクリプトが、OpenFOAM用にセットされた環境で実行する事を前提に作られているからであり、ファイルマネージャーから実行する場合は通常の(OpenFOAM環境がセットされたていない)端末で実行する事になるからである。具体的に「表示する」ボタンを押して内容を確認してみよう。
1〜3行目はほとんどのAll*コマンドで使用されている、お決まりのフレーズである。特に3行目が重要で、これを実行することで5行目以下で使用するコマンドを使えるようにする訳だが、そもそもOpenFOAM環境がセットされたていない事には、この3行目の実行で失敗する。
OpenFOAM環境がセットされた端末で実行するには、大きく4つの方法がある。
- 一般的には通常の端末(Dockランチャーの「端末」をクリックして現れる)を起動して、OpenFOAM環境をセットし、チュートリアルケースに移動してAllrunを実行する。
- Dockランチャーの「OF-v1906Terminal」をクリックして現れる端末上で、チュートリアルケースに移動してAllrunを実行する。
- TreeFoamのアイコン「FOAM端末の起動」をクリックして現れる端末上でAllrunを実行する。
- TreeFoamのメニュー「十徳ナイフ」⇒「Allrunの実行」を選択する。
番号はユーザーの手間が少ない順に並べてあり、もちろん3.もしくは4.の方法で実行する事を推奨するものであり(注記2)、タイプ3.で複数のやり方があったのと、事は同じである。
何はともあれ、Allrun を実行してみよう。本例の場合は
となった状態から、計算終了まで1時間程度かかってしまう。もちろんほんの数秒で終了するケースもあれば、1日以上経っても終わらないケースも存在する。本項の冒頭あたりで説明した公開情報で予め計算時間情報が判る場合もあればそうでない場合もあろう。
計算の実行状況を知るには、ファイルマネージャーを見ればある程度把握できるであろう。途中計算結果の出力された時間フォルダが出来ているかどうか、log.[ソルバー名](本例では、log.interFoam)というファイルが出来ており、それをダブルクリックして内容が表示され、しばらくして内容更新のメッセージが表示されるようであれば、計算は順調に実行されているものと考えて良い。
また、systemフォルダ下のcontrolDictファイルを見れば、
本例では26行目に
endTime 2;
があるはずなので、その時間とその時点までに出力されている途中時間とを見比べて、計算終了までの時間を凡そ予測できるであろう。
計算の終了までとても待ちきれない場合は、図5-3-.の端末画面上で、Ctrl+C(Ctrlキーを押しながらCキーを押す)で途中終了しても良い。ある程度の結果が出ておればそれなりに流れ場を見ることはできる(下図)。
これを見れば、3次元のdamBreak(ダムの決壊)問題で、領域中央下部にobstacle(障害物)のあるケースを計算している事が読み取れよう。3次元問題なので、計算時間も相応にかかっているという事であった。
結果が出ていなくても、どんなメッシュでどんなパラメタ情報を使っているのかは、タイプ3.で見てきたのと同様の方法で調べることは出来るであろう。
重要な事は、Allrunの各ステップで何をやっているのかを理解する事にある。OpenFOAMはおろか、Linuxについても全くの初心者がこの内容を理解するのは容易ではないが、先に述べたお決まりのフレーズとかパターンを知っておけば、後は英語を読む感覚である程度の理解は出来ると思われるので、ここでは本例のスクリプト(図5-3-8)について、5行目以下について解説しておくので参考にしてもらいたい。
まずは、お決まりのパターンのようなもの、というかその実体は3行目の
. $WM_PROJECT_DIR/bin/tools/RunFunctions
を実行した事により、以下のコマンドが使えるようになっており、その意味を知っておくと理解しやすくなるであろう。
restore0Dir
これは文字通り、0 Dir(フォルダ)をrestore(復元)する操作を意味する。すなわち本チュートリアルでは、通常のケースフォルダに存在する「0」フォルダが存在しない。その代わりに「0.orig」が存在するので、これをコピーして「0」フォルダにする、というものである。何故このような回りくどい方法になっているのかは、この後で「0」フォルダの内容がメッシュに依存した形で変更された後に計算がスタートする仕組みになっているからである。変更された「0」フォルダを残したまま、メッシュ作成すると、メッシュ方案を変更した際にエラーになってしまう。これを回避する為の方法というわけである。
runApplication
6行目から最終行まで、runApplicationというコマンドで始まって、その後でまた別のコマンドが記述され、さらにはオプション(-)の付加されたものもある。これは、runApplicationの後に続くコマンド+オプションが処理の実体であって、runApplicationを介して実行する事により、実行時のログを自動生成してくれる事を意味する。
Allrunが始まった後にファイルマネージャでlog.で始まるファイル(log.[コマンド名])が生成されている事を確認でき、ダブルクリックしてこの内容も確認できるはずだ。
$(getApplication)
これは当該ケースフォルダのアプリケーション名を取得してその結果に置き換えるもので、本チュートリアルではinterFoamに置き換えられる。具体的には、system/controlDict 中、18行目に、
application interFoam;
があるので、これを読み取って解釈しているわけである。特に、runApplicationと、getApplicationは、ほとんどのAllrunスクリプト中で使用されているので重要であろう。
また、行頭に#がある7行目は、コメント行として解釈され、実行はされない。
以上を念頭に置いてAllrunの内容を見直すと、
cp -r 0.orig 0 //0.orig を コピーして、0フォルダを作成
blockMesh // blockMeshを作成(obstacle部分も含む立方体の全体メッシュ)
topoSet // obstacle部分を定義
subsetMesh -overwrite c0 -patch walls // 全体メッシュからobstacle部分を取り除く
setFields // field(alpha.water分率)の初期値をセット
interFoam // ソルバーの実行
を実行しているだけの事なんだとわかってくる。また本例ではblockMeshをベースとしたメッシュ作成に依っているので、obstacle部分を取り除くのにコマンドで実行されている訳であるが、実際の工業現場の解析でこの方法を使う事はほとんど無い。したがって本例の理解として、まずは
cp -r 0.orig 0 //0.orig を コピーして、0フォルダを作成
(メッシュ作成)
setFields // field(alpha.water分率)の初期値をセット
interFoam // ソルバーの実行
という手順で実行されている事がわかれば良い。つまり、メッシュの作り方を変えた場合は、こういう手順で実行せよ、ということである。
手順の概要を理解できたら、次は実際にステップ毎に実行して、何が起きているのか? また、計算パラメタを変更して、結果が予想通りに変化してくれるのか?、などを自分の眼で確認していただきたい。
計算を具体的にステップ実行するには、TreeFoamのアイコン「FOAM端末の起動」をクリックして現れる端末上で実行(コマンドを入力)すれば良い。
なお、これらのスタディーをするには、計算をやり直す(初期化)必要があり、やり直す方法としては、先に説明した、アイコン「計算結果のみクリア」または「計算結果を削除して、caseを初期化します」を使う方法があるが、これに加えてAllcleanスクリプトを使う方法が使える。
先の2つの方法では、メッシュデータまでは削除されなかったが、Allcleanスクリプトを使う方法では、メッシュデータも削除されるという違いがあるので、メッシュ作成の詳細手順をスタディーしたいのであれば、この方法を使う必要がある。
なお、Allcleanスクリプトを使うには、Allrunスクリプトの場合と同様、4つの方法があってどれも処理の内容は同じである。
タイプ2.ケースフォルダとAllrunファイルが併存する場合
タイプ2.の事例として、ここでは、
incompressible/icoFoam/cavity
を取り上げて説明しよう。
但し、通常は選択したケースがタイプ2.であるかどうかは、判っていない場合が多い(現実問題としてタイプ2.が総数で10数ケースと数が少ないと云っても、これを記憶しておくのは容易でない)ので、その前提でスタディーするとどうなるかを見ておこう。
これまでと同じように、アイコン「新規にcaseを作成、又はsolverやmeshを入れ替え」をクリックして、上記チュートリアルケースを探すと、
cavityのフォルダ下に3つのチュートリアルケースが見つかる。この2番目のケース
incompressible/icoFoam/cavity/cavityClipped
を選択すると、フォルダ内にはAllrunが無いので、タイプ3.の手順でメッシュ作成は出来るのだが、計算実行すると、以下のようにエラーで途中終了してしまう。
こうなった時点で、このチュートリアルケースはタイプ3.でなく、タイプ2.であったんだと思い起こし、ファイルマネージャなりで確認して貰えれば良いと思う。
確かに、3つのケースフォルダに併存してAllrunが存在するので、これらはこのAllrunで起動されるチュートリアルケースであることが判る。このcavityフォルダをコピーして、OF-Tutorialsのフォルダ下にコピーし、TreeFoam上で、「dirの再読み込み」「解析caseとして設定」しておこう。
タイプ3.の場合も基本はAllrunを実行すれば良いのであるが、但しこの場合Allrunを実行する4つの方法のうち、4番目の方法では、
となって実行できない。3番目の方法で実行すれば、計算はあっという間に終了する(図5-3-)。
計算が終わったら、改めてTreeFoam上で、「dirの再読み込み」にて以下のようになるはずである。
注目は、当初3つのケースフォルダが存在していたのに対して、Allrunの実行後は5つのケースフォルダに増えている点である。つまり本例でのAllrunスクリプトは、個別のケースの計算方法を指定しているだけでなく、途中の結果を再利用するなりしながら新たに別のケースを作成するという事までやっている。
実際にAllrunスクリプトの中味は、先にタイプ1.の事例で説明したもの比べて、かなり難解な内容になっているのは否めない。しかし先にも記したように、スタディの着眼点として、メッシュの作り方を不問にするのであれば、出来上がったこれら5つのケースの各々でパラメタスタディすれば良いのである。
メッシュの作り方を着眼点としてスタディしたいのであれば、自動化サンプルの好例にもなり、英語を読む感覚である程度の理解は出来ると思われるので、興味の有る方は解読に挑戦してもらいたい。
類似チュートリアルケースの比較方法
先にpitzDailyというケースファイル名で、OpenFOAMの標準チュートリアルケースの中にはソルバーを変えて実施するものがいくつか存在する(注記4)と記した。ここではこのpitzDailyというケースファイルを題材として、ソルバーによって構成ファイルの何が異なるのか(ソルバーを変更した際の要変更箇所)を、効率良く調べる方法について紹介する。
推奨ツールは、Dockランチャーの「KDiff3」をクリックすれば起動する。起動したら、「ディレクトリ」ボタンを押して、調べたいケースフォルダを選択する。図5-3-.には以下の2つのケースを選択した場合の画面イメージを表している。
- A:incompressible/pimpleFoam/pitzDaily
- B:incompressible/simpleFoam/pitzDaily
画面の見方は、ほとんど説明するまでもないであろう。ファイル構成、内容の違いの有無、具体的に違っている箇所が、視覚的に一目瞭然である。
注記1
スクリプト中でOpenFOAM環境をセットしていないのは、OpenFOAMのインストール場所はシステムによって異なる為である。
DEXCS-OFとして初心者向けには、通常の端末を起動する際に自動的にOpenFOAM環境をセットするようカスタマイズすることは可能であったが、将来的なOpenFOAMのヴァージョンアップや、他のアプリケーションとの連系も想定し、その際にはヴァージョンを切り替えて使用する事になるので、いわゆる通常の端末は起動できるようにしておく必要があった。
注記2
マウスで選択したケースでなく、解析caseとして設定してあるフォルダ(または)で起動する点には注意が必要。
注記3
OpenFOAMの標準チュートリアル中には、全部で60種ものblockMeshの作例が存在し、これらの中には用途次第で応用出来るものがありそうだ。しかも、スクリプトで作成するタイプのものもあって、サイズや分割数をパラメタで自在に変更も出来るので、基本的な検証用途には使えるようになっておきたい。
また、DEXCS2017まで同梱されていた、swiftBlockツールを使えば、実際の形状モデルをベースに、GUIでブロック定義して、blockMeshDictファイルを自動生成する事も可能であった。但し、CADはBlenderというハードルもあるんだが・・・。
注記4
pitzDailyという名前のチュートリアルケースは全部で8ケースあり、この他にもpitzDailyMappedという名前で、メッシュは全く同一のケースも2つ存在する。