5. DEXCS-OFの活用シーン2:アプリレベル
本章ではDEXCS-OFに搭載してある独自アプリケーションの使い方を解説するが、5-3.項(簡単な構造解析)以外はDEXCS-OFに同梱したスライドショー資料(下図参照)にも説明があるので、併せて参照されたい。
5-1. DEXCSランチャーの使い方
ひとくちにCFDといって、様々な活用シーンが考えられるが、DEXCSランチャーは仮想風洞試験を想定し、これをOpenFOAMの知識もない初心者が、面倒なコマンドライン入力なしでボタンを順番に押していくだけで、それなりに本格的なCFDが体験できる事を狙いとして開発したものである。
第2章(DEXCS-OFとは)で紹介したが、実際にこのツールを使って仕事(仮想風洞試験)しておられる方もいるようだが、ブラックボックス的な使用を推奨するものではない。CAEの要諦(メッシュを変えたり境界条件次第で計算結果が異なるなど)はちゃんと理解して使ってもらう必要がある。要諦変更のスタディも簡単に実施できるようになっているので、これをちゃんと実感(知識として知っている事と、実際に自分の手で動かして感じる事は大きく異なる)して活用頂きたい点をまずお願いしておく。
さらに云えば、OpenFOAMの計算に必要なパラメタファイルを直接編集できる仕組みは開示されており、見れば判ると思うがOpenFOAMの設定パラメタは凡そ英文を理解する感覚でその役割を推察できる。それでも良く判らないパラメタは、同梱されたマニュアルを読むなり、具体的にその値を変更して結果の違いを見る事により、そのパラメタの意味を知ることも出来たりする。つまり本当の初心者には、かようにOpenFOAMを使いながら勉強するツールとして使って頂きたいという事である。
なお、DEXCS2009からDEXCS2018までは、ランチャーの起動画面はヴァージョンに応じて、僅かに異なる箇所はあったものの、ほぼ一貫していた(2-項参照)。しかしDEXCS2019からは一新しており、本書ではDEXCS2019に搭載したランチャーについて説明する。またこれらを区別して説明が必要な箇所では、旧ランチャーと新ランチャーという表記で使い分けている。
ランチャーを一新した事により、従来は仮想風洞試験だけを想定したものが、それ以外のCFDにも対応できるようになった。その応用例として、DEXCS2018以前では無かった、5-1-3.項の説明を追加した。
5-1-1. まずは使ってみる
ここでは、DEXCS-OFの標準チュートリアル問題を、全てデフォルト設定のパラメタを使って実行する手順について説明するが、その前に「DEXCS-OFの標準チュートリアル問題」とは何かについて説明しておく。先に、DEXCS2019にてランチャーが一新したと記したが、この解析課題はDEXCS2009以来一貫している。
まず解析モデルであるが、下図のように直方体の解析領域(仮想風洞)があって、風は左側から流入して右側から流出する。風洞のほぼ中央に解析対象として、DEXCSという文字フォントを3次元化した物体が置かれている。さらにこれを取り囲む形で直方体領域があり、この範囲ではメッシュを細分化するとして、以上の各パーツモデルがFreeCADのモデル(DEXCS2012以前はBlenderのモデル)として収納されている。
このFreeCADモデルは、ユーザーが自由に改変可能(改変方法は次節で紹介する)であるが、ここではそのまま使って、下図のようなメッシュを作成する。
メッシュサイズなども、自由に変更可能であるが、ここでは推奨パラメタを使う。特に、境界の名前(inlet, Dexcs, 等)をこのまま使うのであれば、別途用意してあるパラメタセットを使って、即計算できるようになっている。
なお、OpenFOAMのパラメタセットというのは、下図に示すように、「0」「constant」「sysytem」というフォルダ下に収納され、これらフォルダの親フォルダ(本例ではdexcsTutorial)以下に収納されるフォルダを含むファイル一式(ここで説明しなかったものもあれば含む)をケースファイルと称するのが習わいである。
上図中には本例での具体的なパラメタも例示してあるが、もちろんこれらの値も自由に変更可能である。
以下、上述の解析モデルやパラメタセットを変更無し(確認方法は説明する)でそのまま使った計算手順と、その結果を用いた後処理方法について説明する。
5-1-1-1. 解析モデル
デスクトップ上のDEXCSのアイコンをダブルクリックすると、ファイルマネージャが立ち上がる。中には2つのフォルダがあり、解析モデルはdexcsTutorialのフォルダ下に収納されている(下図参照)。
これは、DEXCS-OFに搭載のCADツールであるFreeCADで作成したモデルであり、これをダブルクリックすれば、下図のようにFreeCADが起動してモデルを確認・変更作業も可能になる。
ここでは、解析モデルをそのまま使用するだけなので、FreeCADのCAD機能についての概要説明は後述(5-2-1項で説明)とするが、形状を確認する為のマウスの操作方法についてだけは説明しておく。マウス操作のデフォルト設定は、
- 視方向回転:マウスホイールボタンを先に押し、右(または左)ボタンを押しながらドラッグ
- 視方向移動:マウスホイールボタンを押しながらドラッグ
- 拡大・縮小:マウスホイール回転
となっている。問題は、特に「視方向回転」で戸惑う方が多いと思われる点である。一般的な3Dを取り扱うソフト(後述のParaViewを含む)では、左ボタンをクリックすることが多いからである。ちなみにこの設定を、一般的な使い方と同様にカスタマイズして使うことは可能であるが、表示以外の操作(モデル作成等)をする際には、却って使い難くなるという面もあって、DEXCSではあえてカスタマイズはしていない。
なお一般に公開版として入手できるFreeCADとは異なり、画面左端にツールアイコン群が存在する点に留意されたい。これがDEXCS2019から一新された「DEXCSランチャー」である。これらのアイコンを順番に押していけば、一連の解析が実施できるようになっている。
5-1-1-2. メッシュ作成
ここで上から2番目のアイコン(図5-1-6)をクリックすれば、マクロが起動して、cfMeshを作成する為のパラメタ設定画面(図5-1-7)が現れる。
この設定画面の使い方も別項(4-2-2)で詳細に説明するが、ここでは推奨設定値で使用する際の最小限必要な設定項目だけを取り纏めておく。
必要な設定項目は、中段以下の表形式でリストアップされた個別パラメタで、このままでは適切なメッシュを作成できない(やってみれば判るので、そういうことも試して頂きたい)。ObjectName欄にFreeCAD中で区分けされた各パーツ名がリストアップされているので、それぞれのパーツの役割を考えて、必要な変更を実施せよ、ということである。具体的には、
- Dexcs(解析対象)は、静止壁なので、TypeをwallとしBoundaryLayerを付加。CellSizeはデフォルト値(0.28)の1/10程度で0.02
- regionBox(細分化領域)はTypeをregionとし、CellSizeは0.1
- wall(仮想風洞の外周)はTypeをwallとしても良いが、ここではpatchのままにしておく。
ここに記した数値は、あくまで推奨値であって、異なる値であっても構わないが、一点だけ、regionBox(細分化領域)のTypeをregionとすることだけは必須である。さもないと、肝心のDexcs(解析対象)はメッシュ化されない。
設定が完了したら、画面最下段の左端②「Export」ボタンを押す。実行確認のダイヤログが現れ③「Yes」ボタンを押せば、数秒後に作成完了のダイヤログが表示される。④「OK」ボタンを押して設定ファイル(fms形式の形状データとmeshDictファイル)の作成が完了である。
続いてメッシュ作成である。
①「MakeMesh」ボタンを押すと実行確認ダイヤログが現れ、②「Yes」ボタンを押せば端末画面が現れて、cfMeshメッシュ作成(cartesianMesh)実行中の計算ログが表示される。上図では、③あたりに、ClockTime = 79 s と表示されており、1分強で計算が終了したと云っている。
このあたりの数字が使用している計算機次第で大きく変わる点はご承知願いたい。またその左には、ExecutionTime = 253.62 s という数字もあり、これはこの計算がマルチスレッド処理にて計算が実行され、全スレッドの計算時間の総和がここに表示されている。本例の場合4スレッド計算になっており、1スレッド当たりにすると、60 s 強となり、ClockTime = 79 s と大凡合致する。
引き続き、メッシュ確認もこの画面で出来る。
①「ViewMesh」ボタンを押すと実行確認ダイヤログが現れ、②「Yes」ボタンを押せばparaFoamが(ParaViewをOpenFOAMの専用リーダーを使って)起動して下図の画面が現れる。
起動直後の状態で、Pipeline Browser 上で、「dexcsTutorial.OpenFOAM」が選択されている点に着目されたい。
ここで、そのまま緑色の「Apply」ボタンを押しても構わないが、個々のメッシュの形状を正確に見たいのであれば、①VTK Polyhedra にチェックを入れてから②「Apply」ボタンを押すと良いだろう。
上図では、③表示方法をデフォルトの「Surface」から「Wireframe」に変更している。3D画面(Layout #1 / RenderView1)上のマウス操作方法は、
- 視方向回転:マウス左ボタンを押しながらドラッグ
- 視方向移動:マウスホイールボタンを押しながらドラッグ
- 拡大・縮小:マウスホイール回転
と、視方向回転の方法がFreeCADの操作方法とは異なっている。こちらの方が一般的で操作しやすいと感じているが、これだけではパッチ表面の分割状況がわかるだけである。
メッシュの内部状態を調べるには、「Clipフィルター」を使う(図5-1-13.参照)。
①「Clipフィルター」をクリックすると、Clip位置を示す赤色の断面位置が表示されるので、これを所望の位置に変更する。デフォルトでは「X Normal」(X方向の中心位置を通る垂直(YZ)平面)で切断されるので、上の例では、「Z Normal」を選択した。中心位置の値や法線方向は任意に変更することも可能。
「Apply」ボタンを押す前に、③「Crinkle clip」にチェックマークを付けておくことがポイントになる。そうしないと、断面位置でメッシュの要素まで切断され、切断線が入るなどして、メッシュの正確な形状がわからなくなってしまう。
Pipeline Browser で表示されるコンポーネントの左端には⑤目玉様のアイコンがあり、これをクリックすればアイコンの表示色が替る。グレー(見え消し)状態になると3D画面上のモデルも非表示となる。⑥表示方法をデフォルトの「Surface」から「Surface With Edge」とすれば、要素の形状がよりクリアーに分り易くなるだろう。
図5-1-14.では、3D画面上のマウス操作と、視範囲Box拡大ツールを駆使して、解析対象回りのメッシュを詳細に表示したもので、特にレイヤー層が指定通りの3層きっちりと付加されていることが確認できている。なお、マウス操作する際に、Clip断面を間違えて動かしてしまうことのないよう、②「Show Plane」のチェックマークを外しておくことを推奨する。
以上、メッシュの確認で問題無いとなれば、ParaViewの画面を閉じる(File⇒Exitもしくは、画面右上隅の「x」をクリック)。
引き続きマクロ画面(図5-1-7)の最下段右端の「exit」ボタン、もしくは画面右上隅の「x」をクリックして、マクロを終了する。
メッシュがの作成が完了して、とにかく計算出来る事をすぐにでも確認したいのであれば、以下読み飛ばして、5-1-1-6. 計算実行 の項に進んで頂いて構わない。
なお、以上のマクロ操作により、ケースファイル(dexcsTutorial)のファイル構成の変化を整理したのが図5-1-15.である。
マクロ実行前は、FreeCADのモデルファイル(dexcsInWindtunnel.fcstd)が存在していただけであったが、「Export」で図5-1-3.に示したデフォルトのパラメタセットが組み込まれ、形状データも所定の形式(dexcsInWindtunnel.stl ⇒ dexcsInWindtunnel.fms)に変換される。「MakeMesh」が終了すれば、cfmesh.logという実行ログと、constantフォルダ下のpolyMeshというフォルダが作成され、このフォルダ内にメッシュデータが収納される。「ViewMesh」では、dexcsInWindtunnel.OpenFOAMという空ファイル(内容は何も無い)が作成され、paraFoamによるメッシュ表示が出来るようになるという仕組みである。
始めて使う人には、それぞれのファイルが何であるのか、チンプンカンプンであるかもしれないが、後にモデルやパラメタ変更した際にうまく動かない場合が生じた時には、まずこれらのファイルがちゃんと正しく構成されているかどうかがポイントになるという事を留意されたい。
5-1-1-3. 流体特性パラメタ
解析対象の形状が同じであっても、取り扱う流体の種類(たとえば、空気と水の違い)によって、流れの様相は異なったものになる。また、圧縮性や乱流モデルをどうするかといった選択もある。OpenFOAMでは、これらの特性を定義するファイルをconstantフォルダーの下に収納する決まりになっている。また、どういう名前のファイルを使うのかは、使用するソルバー次第で決まっており、本例の場合はsimpleFoam という定常非圧縮乱流ソルバーであるので、
- trasnsportProperties という粘性特性を定義したファイル
- turbulentProperties という乱流モデルを定義したファイル
2つのファイルが必要になるが、後述する異なるソルバーでは異なるPropertiesファイルが必要になる。
そこでDEXCSランチャーでは、constantフォルダ下のパラメタファイルをまとめて簡単に編集できるGUIを用意している(図5-1-16)。
①から順に③「OK」ボタンを押せば、ubuntu標準のテキストエディタ(gedit)が立ち上がって、パラメタの内容を確認・変更が可能になる(図5-1-17)。
Linuxでエディタというと、viエディタという普通人にはたいへん使い難いツールの先入観をお持ちの人もあるかと思うが、そういう人にもこれなら許容範囲でないか。
なお、パラメタ変更といって、数値やon/offの変更は出来るとして、用語(たとえばkEpsilon の代替モデル名)が判らない場合どうするんだ?という心配もあるだろう。もちろんマニュアルが同梱されているのでそれを調べるのも方法だが、OpenFOAMでは簡単に候補リストを得る方法(後述)もあるので、何はともあれ使ってみることをお薦めする。
なお、この図5-1-16で現れるGUI画面そのものは、TreeFoamのサブモジュールともいうべきもので、DEXCS独自ツールでない点はお断りしておく。
5-1-1-4. 計算制御パラメタ
ケースファイルのsystemフォルダ下には、計算の時間進行を指定したり、数値解法の手法を定義するパラメタや、ポスト処理の為のデータ出力を指定するなど様々な制御ファイルを収納できる。これらも使用するソルバーに応じて、また個別のケースに応じてカスタマイズすることになるので、前項と同様にsysytemフォルダ下のファイルを、TreeFoamのサブモジュールを使って、一括して確認・変更できるようになっている。
パラメタファイルはたくさん(全13個)あるが、このうち
- controlDict
- fvSchemes
- fvSolution
の3つのファイルだけは特別で、これらが存在しないと、計算そのものが成り立たなくなってしまう点は留意されたい。
ここで個々のファイルの説明までには立ち入らないが、内容は英文を読む感覚である程度理解できるのでないかと思う。もちろん、マニュアルを読めばもっと正しく理解できる。
その他のファイルは、本チュートリアル問題に特化してカスタマイズされた計算結果の後処理の為の設定ファイルで、仮想風洞問題以外でも比較的良く使われるものである。自身の活用課題を実施するにおいて、これらをコピーして、自身の課題に適合カスタマイズして使って頂くことを想定して収録したもので、5-1-1-8項にて、もう少し具体的に説明する。
5-1-1-5. 初期・境界条件
通常のOpenFOAMだけで境界条件を定義・変更したりするのはかなり厄介な作業になる。基本的には「0」フォルダ下の求解したいField変数毎にファイルを用意して、下図のように、境界(inlet, outlet,…)毎に境界条件を記述する。これらをField変数毎に用意する必要のある点と、境界の名前をconstant/polyMeshフォルダ下のboundary(このファイルはメッシュ作成プログラムによって作成されたものである)というファイル中に記載の境界名とそのTypeに整合させる必要があるという点である。
つまり、境界の数×Field変数の数 だけの境界条件を指定する必要があり、これをField変数毎のファイル編集で、間違えないよう整合させるのは相当に根気が必要な作業となる。
この作業を省力化すべく、TreeFoamにはgridEditorというツールがあるので、DEXCSランチャーは、これも使えるようにしている(図5-1-21)。
②Field変数の選択においては、全ての変数を選択することも可能だが、上例のように個別に見たいものだけを選択することも可能である。③「開く」ボタンを押すと、以下の画面(gridEditor)が現れる。
最左列が境界名、最上行にField変数がリストアップされ、境界の数×Field変数の境界条件が表形式で一覧できるということである。ここで各セル内に表記された境界条件の詳細な説明までには立ち入らないが、図5-1-3.で説明した境界条件が組み込まれていることは確認できるであろう。変更したい場合は変更したいセルをダブルクリックして直接変更できる。また通常の表計算ソフトを使う感覚で、セル単位のコピーも可能となっているので、図5-1-20の個別のファイル編集と比べて作業効率は格段に向上する。
5-1-1-6. 計算実行
計算実行は、①「solverの起動」ボタンを押すだけでよい。
ただちに②端末画面が現れて、計算途上のログが出力される。数分すれば、Endという表記とともに、計算が終了するはずである。計算ログには様々な情報が出力されており、詳細説明は割愛するが、画面中でマウスホイール操作でスクロールバックすれば、計算時間に係る情報などは容易に見つけられるであろう。
なお、Time = … という表現が諸所に見られると思うが、本計算は定常計算なので、時間の概念は含まれない。定常解に収束するまでのイタレーション(繰り返し)回数(ステップ数)と思って読み替えてもらいたい。
本例で、デフォルトのパラメタ設定を使った場合には120ステップくらいで収束するはずであるが、パラメタを変更した場合にはその限りでない。場合によってはいつまで経っても終わらず、収束しそうにないのであれば、一刻でも早く計算を中断してパラメタ変更したいのに、端末上で流れる計算ログを眺めているだけでは、計算が収束の方向にあるのかどうかの判断にも悩まされる。
計算ログ中には初期残渣情報、すなわちイタレーションの各ステップ前後で計算結果がどれほど変化したのかを、各変数毎に出力してくれている。変化がなければ定常解になったという事である。したがって収束判定は、この初期残渣の値が一定値(本例では1.0E-3)以下となったら収束したと見なして計算が終了する。
計算ログを慎重に観察すれば、変化傾向を推定できない事もないが、こういうものはグラフ化して眺めれば一目瞭然である。これもTreeFoamに、plotWatcherという、ログファイルを解析して初期残渣情報等をグラフ化してくれる機能があるので、DEXCSランチャーでもこれを起動できるようになっている(図5-1-24)。
なお、初期残渣以外のプロット図も出力されており、確認後これらのプロット図を各画面上右上隅の「x」ボタンで個別に消去しても良いが、plotWatcherを起動した際に現れた端末画面の③「x」ボタンで一括消去できる。
5-1-1-7. 後処理1:流れ場の可視化
計算が終了したらいよいよ結果の確認。まずは流れ場を可視化する。FreeCADの操作画面が狭い場合、DEXCSランチャーの操作アイコンは一部が非表示状態となっているので、左下隅の①「下向き矢印」アイコンをクリックすると、ツールバーが拡がって、②「paraFoamの起動」アイコンが現れる(図5-1-25)。
これをクリックすれば、「paraFoamの起動option」を選択する画面が現れるので、デフォルト(paraFoam)のまま、③「OK」ボタンを押す。
流れ場の可視化には、様々な表示方法があって、詳しくは同梱のParaViewマニュアルを参照されたい。ここではよく使われる表示例を作成する為の手順を例示しておくに留める。
5-1-1-8.後処理2:解析結果のプロット
もう一つの後処理例として、実際の解析の現場では計算結果を時系列や座標軸に対してプロットして解析する事が多い。そこでこのチュートリアルには4つのプロット例が収納されている。実際の解析の現場で何をプロットするかは問題に固有だろうが、これらを参考にして改変利用してもらいたいという狙いである。
まずは、プロット結果を見てみよう。少々回りくどい方法で見ることになるが、その理由は後で説明する。
②「jgp ファイルの適合」アイコンをクリックすると、ファイル選択画面が現れる。これは当該ケースファイルのsystemフォルダ下を参照している。この中にpostPlot.jgpというファイルが収納されているので、これを選択し、④「開く」ボタンを押すと、確認ダイヤログが現れるので、⑤「OK」ボタンを押す。すると、以下の「JGNuplot」なる画面が現れる。
プロットサンプルが何もない場合には、本画面の中央あたり、「add」ボタンを押して、プロットしたいデータの収納されたデータファイルを指定して、以下、データの切り出し方を指定、横軸、縦軸に対する割当データの指定など、面倒な作業が必要になるが、本例では図5-27で選択したpostPlot.jgpというプロジェクトファイル中に、それらのプロット方法が定義済であるのでこれが使える。
但し、このpostPlot.jgpを選択するのに、普通に「File」⇒「Load project…」のメニューを使うと、
/opt/jgp というプログラムの収納ディレクトリへ誘導されてしまう。そこから、実際のpostPlot.jgpの在り処までたどり着くのはなかなか面倒な作業になる。その面倒な作業をしないで済むよう、上述の少し回りくどい方法でpostPlot.jgpを選択したのである(他にも理由があるが後述)。
これにより、Load Project… のすぐ下の行に、postPlot.jgpがフルパス表記でリストアップされているはずであり、これを選択すれば一発でプロジェクトファイルをオープンできて、下図のようになるという事である。
何はともあれ、画面左下にある「plot」ボタンを押してみよう。下図のようなプロット図が得られるはずである。
図5-1-30でリストアップされた各行は一系列のグラフの描き方を指定するもので、各行の右端にチェックボックスがあり、チェックマークのついた行だけがプロットされるという事である。
何をプロットしたのか、プロット内容の物理的な意味の説明も必要であろうが、その前に計算結果データをどういう仕組みでプロットしているのかの説明をしておく。
①調べたい行を選択して、②「Edit」ボタンを押すと、Edit dataset…の画面が現れ、設定内容を参照・変更できる。
これによれば、③プロット対象ファイルは、postProcessinf/forceCoeffs/0フォルダ下のcofficient.dat であることがわかる。このファイルを別途ファイルマネージャからダブルクリックして内容を確認されたい。13行目まではコメント行(冒頭に#)で、14行目以降に時系列データが記録されている。1列目がTimeで、2列目がCd、3列めがCs,…となっており、本例の④「1:2」の意味は、1列目(Time)を横軸、2列目(Cd)を縦軸にしてプロットせよの意味である。
ちなみに、このcofficient.datのデータ内容の物理的意味は、解析対象(Dexcsフォント)に加わる流体力を空力係数として正規化したものである。もう少し具体的には、systemフォルダ中に、forceCoeffsというファイルがあって、以下のように具体的な計算パラメタを指定している。
一方、system/controlDict(下図)中、
51行目に
#include “forcesCoeffs”
となっているので、forceCoeffs(図5-1-33)を取り込んで解釈し、毎ステップ計算して、postProcessinf/forceCoeffs/0/cofficient.dat に出力されていたという事である。
プロットサンプル2例目は、4行目と5行目が対象である。
これは、仮想風洞の流入面(inlet)と流出面(outlet)において、ステップ毎に流量を計算してプロットしたものである。計算初期には一致せず、流出量が変動しているが、定常計算であるので最終的には流量が一致していることが確認できている。
これは、system/controlDict(図5-1-34)中、53行目の
#include “massflow”
に基づいて計算された postProcessinf/inletMassFlow/0/surfaceFieldValue.datと、postProcessinf/outletMassFlow/0/surfaceFieldValue.datを図化したものである。
流入量と流出量は符号が異なる(流入はマイナス)ので、図化する際には、流入量の符号を反転している。反転させる方法 Datastring[ 1:(-$2) ] に着目されたい。
プロットサンプル3例目は、6〜8行目が対象である。
これは、流れ場中特別に指定した箇所(プローブ)における、magU(流速の絶対値)、p(圧力)、k(乱流エネルギー)を時系列に対してプロットしたものであり、system/controlDict(図5-1-34)中、52行目の
#include “probes”
に基づいて計算されたpostProcessinf/probes/0フォルダ下の、U, p, k を図化したものである。
ここで、7、8行目は同一スケール上で表示させるべくスケーリングしている点と、6行目のmagUをプロットするには、少々面倒な処理になっている点にも着目されたい。
Datastringの意味は速度の各コンポーネント成分の2乘和の平方根(=速度の絶対値)であることは推察できると思う。問題は、Preprocess external program であろう。
U(速度)はベクトルデータである。OpenFOAMでは、ベクトルデータの出力は通常、下図のように、括弧()付きで出力される。これだとこのファイルから数値列を切り出す際に、()を分離できず、$2(2列目)と$4(4列目)は数値として解釈できない。したがって、この()を除去するのが、Preprocess external program という訳である。programは、sedというコマンドを使うもので、ここでその詳細説明は割愛するが、括弧()付きデータの処理に際しては、これをひな型にしてそのまま使えると考えて良い。
プロットサンプル4例目は、9、10行目が対象である。
これは、流れ場中特別に設定したサンプル線上における、Uxをサンプル座標位置に対してプロットしたものであり、system/controlDict(図5-34)中、54行目の
#include “sampleDict”
に基づいて計算されたpostProcessinf/sample1/50/lineX1_U.xy と postProcessinf/sample1/100/lineX1_U.xyを図化したものである。
先の3例は、時系列に対するプロットであったが、そうでないものであっても同様に使えるということである。
また、OpenFOAMにはここで取り上げた以外にも様々な後処理コマンドを使えるようになっており、これらのコマンドで作成したデータをプロットするのに活用頂けると考えている。
具体的には、ここで使ったプロジェクトファイル(postPlot.jgp)を応用したいケースファイルのsystemフォルダ下にコピーして、図5-1-27の手順を経由(ここが重要)してLoadした後、図5-1-32や、図5-1-37のようにエディット画面を立ち上げ、所望のグラフを描けるよう設定を変更すれば良い。
図5-1-27の手順を経由するのが重要であるのは、プロット対象のデータファイル名が絶対パス名で記述されているので、単純にコピーしただけではコピー元のデータを対象とした処理になってしまう。コピー先のデータを対象にすべくプロジェクトファイルの内容を書き換える必要があり、図5-1-27の手順を経由すれば、これをやってくれるということである。
以上、DEXCSの標準チュートリアル例題を使った解析作業の一連のステップについて説明した。
5-1-1-9.計算の初期化
これまでの説明を読めば、dexcsTutorialフォルダ下のFreeCADモデルデータ(dexcsInWindtunnel.fcstd)だけを残して、その他の全てのファイルを消去して最初からやり直す事が出来る事は判って頂けると思う(完全初期化)。
一方、モデルは変更しないでも、メッシュの方案を変えたり、解析条件を変更したい場合には、全てを消去しないで途中からやり直したい。本項では、これを初期化と呼んでいる。
初期化の方法にも様々な方法というかレベルがあるが、DEXCSランチャーでは、TreeFoamの初期化ツールを採用している(実はTreeFoamには、もう一つ計算結果のみ削除ツールがある)。図5-1-40.に示すよう、ボタンを順番に押して行くだけで良い。
これにより、ケースファイル中のファイル構成は以下のように変化する。
メッシュデータは残ったままなので、解析条件のパラメタ変更計算は直ちに取り掛かる事が出来る。メッシュ変更は、単純にメッシュデータが上書きされるだけなので、これも問題ない。もちろん計算前のデータが必要であれば、別途バックアップの必要はある。
次項では、この初期化した後、計算を並列計算でやり直してみる。
5-1-1-10.並列処理
OpenFOAMでは、ほとんどのソルバーで並列計算が可能になっている。但し、ここでいう並列処理はMPIによる領域分割による並列処理である。実はメッシュ作成においても並列計算が実行されていたが、こちらの並列処理はOPEN-MPによるスレッド分割による並列処理であった。
後者の並列処理では、ユーザーは特に何もする必要がなく、使用している計算資源に応じてシステムが勝手にスレッド分割してくれる(複数ノードを駆使する計算資機の場合はそうもいかないが・・・)。
しかし前者(OpenFOAM)の領域分割には様々な方法があって、これはユーザーが実行する必要があるという点で全く使い方が異なる。これにも基本はコマンドラインツールを、色んなオプションを駆使して使う必要があるので、新DEXCSランチャーではこれをGUIボタンで実行可能とした、TreeFoam の「並列計算」メニューを使って実行できるようになっている。
図5-1-42、①「並列処理」のボタンを押せば、treeFoam の「並列計算」メニューが立ち上がる。
ボタンがたくさんあって、全ての説明は出来ない(詳しい説明は同梱のTreeFoamマニュアルに譲る)が、ここでは簡単に実行手順を説明しておく。
領域分割というのは、具体的にはメッシュを分割する事であり、下図の順に実行する。
①で領域分割の方法を指定する。-nCPU は使用するプロセッサの数。値はいくつであってもメッシュ分割してくれるが、使用計算機の搭載プロセッサ数より大きくしても意味は無い。却って計算速度が低下するだけである。-methodが領域分割の方法指定となり、メニューバーから選択できるようになっている。OpenFOAMでは特殊な問題以外は、この「scotch」を使っている例が多い。
上記分割方法を変更すると、②のボタンが有効になるので、これを押して確定させる。確定すれば見え消し状態になる。
分割方法が確定したら、③「mesh分割」ボタンを押す。④端末上でメッシュ分割処理(decomposePar)のログが流れ始まる。本例では10秒程度で完了し、確認ダイヤログが現れるので⑤「OK」ボタンを押して終了である。
メッシュ分割が完了したら、引き続き下図の①「並列計算開始」ボタンを押す。そうすると、新たに②端末画面が現れ、計算ログが流れるようになる。
なお、この計算中(計算終了後でもOK)図5-1-24.のplotWatcherアイコンをクリックすれば、単体計算の時と同様に収束状況をモニターできる。
単体計算で実行した場合と比べて、計算速度がそれなりに向上するのを確認して頂けると思うが、イタレーションの回数を含め、計算結果は微妙に異なっているはずである。これは計算原理を考えれば当然の事なので、そういうものだと思って使っていただきたい。
並列計算結果の後処理については、単体計算の場合に比べて、後処理2(解析結果のプロット)は同じでやり方で良いが、後処理1(流れ場の可視化)において、使用方法の異なる点があるので以下に記しておく。
paraFoamの起動方法は、図5-1-25の②までは同じで良いが、paraFoamの起動option画面(下図)では、起動コマンド(option)で、下段(paraFoam -builtin)を選択しなければならない。
このオプションで起動すると、以下のParaView画面が立ち上がる。図5-1-25で立ち上げた画面と、左画面が微妙に異なっている点に着目されたい。Pipeline Browser 上のコンポーネントの名前で、拡張子(.foam)が異なっているのと、Properties 画面の内容が微妙に異なっている。これが、3-2 ParaView で説明したParaView側で開発したリーダーでデータを読んでいるという事である。
②「Apply」ボタンを押す前に、Case Type で、①「Decomposed Case」を選択することが重要である(デフォルトは「Reconstructed Case」となっている。
こうすれば、④表示Field選択にて、様々な変数を選択できるが、そうでないと選択欄にField変数が出てこない。つまり、図5-44の並列計算が終わっただけの状態では、「Decomposed Case」であって、「Reconstructed Case」ではないという事である。
OpenFOAM側が開発したリーダーでは、この「Decomposed Case」を読むことができないので、ParaView側で開発したリーダーで上述の手順となる訳である。
但し、この方法で可視化する際の問題(これを問題と見做すかどうかは用途次第であるが・・・)は、⑥に示すように、並列計算時の領域分割境界まで表示されてしまう点である。これを表示させない為には、並列計算処理として、もう一ステップ必要である。
図5-1-42.で立ち上げた「並列計算」メニューで、下図最下段の①「結果の再構築」ボタンを押す。
「並列計算」メニューを立ち上げた際に現れた②端末上に、再構築(reconstructPar) の実行ログが流れ始め、およそ1分程度で完了し、ダイヤログが現れるので③「OK」ボタンを押して完了である。
この手続きが済んだ後であれば、単体計算の際の手順(図5-1-26)と同じやり方で良いし、図5-1-46.のCase Type 選択で、デフォルトの「Reconstructed Case」であっても良い。
計算結果の再構築をファイルレベルで見ると、下図のように取り纏めることが出来るので確認されたい。
なお、このチュートリアル例題をデフォルトパラメタで実行している限りにおいては、再構築しないままParaView表示するメリットを感じられないかもしれない。
5-1-2. 解析モデルの変更方法
5-1-3. 解析ソルバーの変更方法
5-2. 推奨メッシュ生成法
5-2-1. FreeCADの基本
5-2-2. FreeCADマクロの使い方
DEXCS2018以前では、この後別画面でメッシュ作成を実施していたが、DEXCS2019では、このマクロ画面から、そのままメッシュ作成、メッシュ確認出来るようになったので、確認の結果メッシュが適切でないとなったら、直ちにパラメタ変更して