前回SALOMEで作成した.MEDファイルをCode_Satuneに読み込む。
まずCode_Saturne GUIを起動する。Ubuntuのメニューから起動できる。
Ubuntu Menu-Applications-CAELinux-Code-Saturne Wizard
Code_Saturne CFD Study window
が開いたらスタディ名、ケース名、ベースディレクトリ、メッシュファイルの場所、を指定する。
Study Name:KarmanVortex2D
Case Name:case1
Base directory:/home/(User Name)/Documents
MED Mesh File:home/(User Name)/Documents/Mesh_1.med
New parameters set - Code_Saturne GUI window
File-New file
続いて一旦ファイルを保存する
File-Save as
File Name:boundarys
Click Save
この時点で
New parameters set - Code_Saturne GUI window
が
boundarys - Code_Saturne GUI window
に変わる。続いてメッシュの自動チェックを行う。
-Calculation environment
-Mesh quality criteria
Post-processing format:EnSight Gold
Click Check mesh
デフォルトはSALOMEのポストプロセッサ用のMEDフォーマットになっているが、EnSight Goldフォーマットに変更することで、ParaViewで読むことが出来る。
Run mesh quality criteria window
が開いて、色々メッセージが表示される。これは後で見れば良いので、とりあえずSaveする。
Save File As window
File Name:checkmesh
Click Save
Run mesh quality criteria window
に表示されたメッセージは、メシュ品質に関する情報で、この後の解析が走らなかったり結果がおかしかった場合には見返す事になる。とりあえずこれはこれで良いので次に進む。
Click OK
ここから先はCode_Saturneのデフォルト値を少しずつ変更していくだけなので、変更箇所のみを書いていく。CAELinux2011はCode_Saturne2.0.2なので、バージョンが違う場合はデフォルト値が異なるので注意。
-Thermophysical models
-Turbulance models:Nomodel(i.e. laminar flow)
-Physical propaties
-Fluid propaties
Density:1000
Viscosity:0.000894
Specific heat:4217
ちなみにCode_Saturneの流体物性値のデフォルトは空気の値みたいです。ここでは水の例として書き換えました。今回は熱計算をさせないので、比熱は適当な値でも結果は変わりません。
-Physical propaties
-Gravity,hydrostatic pressure
Gravity:X9.8
今回の例は閉じた流路の中の流れなので重力もあまり影響が無い。空気の熱対流などを計算させると場合は影響が出やすいと思う。
-Volume conditions
-initialization
Velocity initialization:Velocity:Y1.0
初期条件は非常に重要で、この値が大き過ぎたり、最終的に到達する流れとかけ離れた方向に与えたりすると計算が発散しやすい。小さすぎても計算に時間を要したりする。
-Boundary conditions
-Definition of boundary regions
Add from preprocessor listing
Import groups and reference from Preprocessor listing
ここで、先ほどCheck meshで保存したファイルを参照させる。
フォルダマークのアイコンをクリックすると参照するファイルを求められる。
Select a Code_Saturne Preprocessor listing window
が開くが、デフォルトのPreprocessor listingをAll Filesにすると、先ほど保存したcheckmeshファイルが参照できる。
Click Open
するとSALOMEで定義したグループ名が列記される。
NatureをSelection criteriaの名前に揃えていく。
-Boundary conditions
-Boundary conditions
inlet;Velocity:1.0m/s
入力速度を設定する。マスフローやボリュームフローで指定することもできるが、今回は2D解析なので速度で指定する。
-Numerical parameters
-Time step
Reference time step:0.002
Number of iterations:2000
非定常解析場合、解析1ステップあたりの進行秒数と、それを何回繰り返すかを指定する。掛け算すると総解析時間になる。タイムステップは小さいほど良いが、それだけ計算負荷も上がるので程々の値にするのが良い。大きくし過ぎると計算の収束性に影響する。一般的には1タイムステップでセル1個を通過するかしないか程度の値にするのが良いらしい。今回はあまり考えずに適当に短めにしている。
-Calculation control
-Output control
-Output control TAB
Post-processing
Post-processing every 'n' time steps:10
コンタマップを描画させる為のポストプロセスファイルを出力する頻度をしていする。全てのタイムステップで出力すれば一番解像度が良いが、PCのディスク容量と相談しつつ決める。
-Caluculation management
-Prepare batch caluculation
Prepare batch caluculation
Number of processors:1 to n
最後に計算に使うプロセッサ数を指定する。
PCのプロセッサスペックにしたがって決める。
本例はVMwareを使っているので、仮想マシンを作る時点でコア数を何個割り当てるか決めていた値が上限値となる。
私の場合はCore-i3なので2個使う事にする。
これで設定が完了。
run Code_Saturne batch job
をクリックすると、計算がスタートするが、Saveしてからクリックしないとエラーメッセージが出る。
Terminal windowを見ると、エラーメッセージが出ているが気にしなくて良い。
自動的に計算領域分割がされ、並列計算が実行される。
領域分割を行なう標準のパーティショナーは機能している。
並列計算を最適化するオプションのパーティショナーがあるようだが、本家のユーザーフォーラムを見てみると、大して変わらないから気にするなというような事が書いてあった。
数割早くなるイメージらしいので、計算規模が大きい時はきちんとした最適化がされるパーティショナーを導入すれば良いだろう。これは今後の研究課題。
計算が走っている間、何もする事が無いが、きちんと動いているのかどうか、モニタリングする方法を紹介しておく。
Ubuntuのメニューなにもない所で右クリックすると出てくるメニューから、
Add to Panel...
System Monitor
を選択するとCPU、メモリの使用率が判るようになる。
さらに
Terminal window
を開いて
listingファイルを参照する事で計算の進行具合が詳細に把握できる。
使うコマンドは、
less listing
grep "CPU TIME" listing
grep "v Pressure" listing
grep "c Pressure" listing
これは以前にもメモとして以下に記事を書いておいた。
http://himawarimemo.blogspot.jp/2014/01/convergence-httporangain.html
あれこれしている内にCode_SaturneのTerminal windowに
normal simulation finish
と表示されれば無事終了。
もし
Error in caluculation stage
と表示されたら、その際は色々見直す作業をしていくが結構ストレスになる。
このソフトがおかしいんじゃないのか、と思いたくなるが、ぐっとこらえて
「シミュレーションは、設定した条件の下で、常に正しい結果を返す。」
事を念頭に置いて自分の間違いを探す作業をしなければならない。
結構根気と忍耐が要る作業だが、理由が判ると馬鹿馬鹿しいミスをしている事が多いので、
その都度、見るべき所が身に付いて行く。