実験計画法と書かれていますが、任意のパラメータスイープ機能と考えてもらって構いません。例えば、CSVのテンプレートをユーザが用意することで Taguchi Method (品質工学) のジョブも簡単に流すことが可能です。
- 事前準備
===================
この作業が面倒であれば以下のファイルをダウンロードし、"1. JOBの投入"に進んでください。
-
OpenFOAM用計算モデル一式
-
airFoil2D.zip
という名前で保存してください
-
-
パラメータスタディー用テンプレートファイル
-
U.inp_template
という名前で保存してください
-
-
ポスト処理用スクリプト
-
extract.py
という名前で保存してください。
-
0.1 OpenFOAM-2.3.xのダウンロード
github 上にある OpenFOAM 2.3.x をローカルのPCにダウンロードします。
0.2 ファイルの追加/修正
0.2.1 使用するサンプル(airFoil2D)
計算に使用するサンプルのディレクトリーを開きます。
OpenFOAM-2.3.x-master/tutorials/incompressible/simpleFoam/airFoil2D
0.2.2 Inputファイルの構成
"airFoil2D/Allrun" は計算実行スクリプトです。今回はこの "Allrun" と "controlDict" を修正し、新規にシェルスクリプト replace
の追加を行います。また必ず、下記構成になるようにファイルを追記/保存してください。
airFoil2D
├── 0/
├── Allclean
├── Allrun (修正)
├── replace (追加)
├── constant/
└── system
├── controlDict (修正)
├── fvSchemes
└── fvSolution
0.2.3 Allrunファイルの修正
シェルスクリプト "Allrun" を修正します。このリンク先と同じになるように "Allrun" ファイルを修正してください。'./replace' の行のみがオリジナルのAllrunから追記されています。
0.2.4 replaceファイルの作成
シェルスクリプト "replace" を新規作成します。このファイルの役目は、値がすでに入ったテンプレートから、数値を抜き出し、簡単な変換を行い、その値を "controlDict" に反映させることです。
- このリンク先から "replace" のソースコードをコピペしてファイルをローカルPCに作成してください。
- このファイルは、計算実行後、"Allrun" のスクリプトから呼び出されます。そのため必ず "airFoil2D/" のディレクトリ直下に保存してください。
0.2.5 controlDictファイルの作成
OpenFOAMのファイル controlDict
を修正します。
このリンク先と同じになるようにファイルを修正してください。functions {~省略~}
部分がオリジナルから追記されています。
0.2.6 ファイルの相互関係
パラメータスイープに関する今回の動作シーケンスは下図の通りです。ここで "並列設定"
temlateはRescale自体が持っている機能です。
0.3 計算モデルのzip化
修正/追記された Allrun
replace
含め、airFoil2D
を zip 化してください。
- JOBの投入
===============
1.1 Login to Rescale
Rescaleにログインします。
1.2 ジョブの作成
- 画面左上の黒い帯中にある
JOB投入
をクリックします。 -
ジョブ名
を入力します。今回は、Hands-on_OpenFOAM-DOE
と言う名前にしました。 - ジョブの種類として、
実験計画法
を選択します。 - 計算フローを表すポンチ絵が
基本
の時から下図のように変化したことを確認します。
1.3 入力ファイルのアップロード
- 事前準備で作成したAirFoil2D.zip を
ファイルをアップロードする
を クリックしアップロードします。 - 完了したら画面右下の
次へ
をクリックします。
1.4 並列設定
-
自分で変数を指定する
を選択します。 - 変数の種類を選択で
組み合わせ
を選択します。 -
変数を追加
の項目を下記表に従い入力します。x_velocity
が設定が終わったら追加ボタンを押して、変数一つ一つ設定していきます。 - 設定が終わったら、画面右下の
次へ
をクリックします。
項目 | 変数1 | 変数2 |
---|---|---|
変数名 | x_velocity | y_velocity |
最小 | 20 | 3 |
最大 | 30 | 6 |
刻み幅 | 1 | 1 |
1.5 テンプレートの設定
パラメータスイープ用テンプレートの作成
-
U.inp_templateがローカルマシンにあることを確認します(ソースコード)
-
テンプレートの画面に表示されている
ファイルをアップロード
をクリックし、先ほど作成したU.inp_template
を Rescale へアップロードします -
アップロードが完了すると、
ファイル名
を入力するテキストボックスが表示されます。以下のように入力します。ファイル名./airFoil2D/0/U
-
全て完了したら画面右下の
次へ
のボタンをクリックします。
1.6 ソフトウェアの選択
アプリケーションの選択
-
OpenFOAMを選択
-
バージョン2.3.1を選択
-
実行コマンドとして下記を入力してください
実行コマンド./airFoil2D/Allrun
-
全て完了したら画面右下の
次へ
のボタンをクリックします。
1.7 ハードウェアの選択
- インスタンスタイプを選択します。今回は "Nickel : Intel Xeon E5-2680 v2 (Ivy Bridge) " とします。
- ノードあたりのコア数として
2
を設定します。 - スロット(クラスタ数)として
4
を設定します。 - 完了したら、画面右下の
次へ
をクリックしてください
1.8 ポストプロセッシング
-
extract.py がローカルのマシンにあることを確認します(ソースコード)。
-
下図のように、
ファイルをアップロードする
から "extract.py" を アップロードします。 -
下図のように、ポストプロセッシングコマンドを入力します。
ポストプロセッシングコマンドpython extract.py airFoil2D/log.simpleFoam Cd Cl
-
完了したら、画面右下の
次へ
をクリックしてください
1.9 計算の開始/確認
1.8.1 実行ボタンのクリック
ジョブの概要を確認し、問題なければ実行ボタンを押して計算を開始します。
1.8.2 計算の進捗と標準出力内容の確認
画面が自動的に下記に切り替わります。
1.8.3 クラスタにログインして、状況を確認する時
下記赤枠にsshログインする方法が書かれているので、それをコピーして端末からログインできる。
- 結果確認
===========
2.1 値のソーティング
- 計算終了後、画面右
結果
のタブをクリックする - ポスト処理で抽出したパラメータである
Cd
をクリックし、ソーティングする事ができる
2.2 Postで抽出したデータの可視化
例として表面図を使って可視化を行います。
- 画面右
チャート
のタブを選択する - 表面図を選択する
- x, y, zに対して適当なパラメータを選択する