OpenFOAM DOE チュートリアル
このチュートリアルでは、OpenFOAMでの基本的な翼の実験計画法(DOE)と、ParaViewでのポスト処理を使って、Rescaleのプラットフォームを紹介します。
お困りの方はRescaleサポートにご連絡ください。
この解析では、様々な対気速度と迎角において、翼の最適な揚抗比を計算します。その過程で、このチュートリアルでは、Rescaleのポスト処理機能の一部を紹介し、並列処理を実行する方法を紹介します。
ポスト処理による結果の可視化(ParaViewを使用)
所要時間:チュートリアルで約20分、計算で25分弱です。また、上の「Get Job Results」リンクをクリックすると、OpenFOAMによるDOE解析のフルセットアップと結果を即座に確認することができます。
問題:NACA2412翼(キャンバー付き12%厚翼)の迎角(AoA)と対気速度の範囲における揚抗比を計算する。
- 独立変数は x_velocity と y_velocity のクロスプロダクトである。
x_velocity:毎秒20〜30m(1刻み)。
y_velocity:3〜6m/s(1刻み)。
- 出力は揚抗比であり、揚力係数が抗力係数を上回ったものに相当する
ワークフロー:このチュートリアルでは、2変数のパラメータスイープ(DOE)を使用し、44回の実行で評価します。このチュートリアルを実行する前に、Matlabスクリプトを使用して、特定の迎え角のNACA 2412翼の.stlファイルに含まれるモデルを生成しました。このチュートリアルのワークフローは2つのパートで構成されています。
- Rescaleは、カスタマイズされたテンプレートを使って、風の環境設定を変化させます。
- OpenFOAM の simpleFoam は,定常解を生成します.このプロセスでは,自由対流速とメッ シュ化されたジオメトリを使用して抗力と揚 力係数を計算し,解析コードがメリット関数を評 価するために使用します.
シミュレーションソフトウェア: OpenFOAM
- Rescaleを使い始めるには、platform.rescale.comにアクセスし、アカウント情報を使ってログインしてください。Rescaleの使用には、追加のソフトウェアのダウンロードや導入は必要ありません。Rescaleはブラウザベースなので、仕事場や自宅のコンピュータから安全に分析にアクセスすることができます。
- プラットフォームのメイン画面から、画面左上にある「+New Job」ボタンをクリックします。これにより、セットアップページが表示されます。
- まず、Job Typeのドロップダウンメニューで、DOEを選択します。
- 現在、7つのSetupステージをクリアすることができます。
セットアップ入力ファイル(複数可)
まず、ジョブに名前を付ける必要があります。Rescaleはすべてのジョブを保存するので、後で識別しやすいようにユニークな名前をつけることをお勧めします。(例:Tutorial 1: OpenFOAM DOE)。プロジェクト名を変更するには、ウィンドウの左上隅にある現在のジョブ名の横にある鉛筆をクリックします。
次に、Choose File ボタンをクリックして、zip ファイル airfoil2D_DOE.zip をアップロードします。
入力ファイルの設定画面が以下のように表示されます。
セットアップ:並列設定
並列処理を実装するには、並列設定ボタンをクリックして、解析に並列処理を追加します。ここで、解析のパラメータを設定するための2つのオプションがあります。すべての情報を含むCSVファイルをアップロードするか(ラン定義ファイルを使用)、または “Specify your variables here “オプションを使用して変数をRescaleに手動で追加することができます。このチュートリアルでは、Specify your variables here(ここで変数を指定)オプションを選択します。
次に、「Cross Product」ラジオボタンが選択されていることを確認し、2つの変数を追加します。
最初の変数は x_velocity で、最小値は 20、最大値は 30、増分は 1 であるべきです。
2番目の変数はy_velocityで、最小値は3、最大値は6、増分は1でなければなりません。
完了すると、「並列設定」画面は以下のように表示されます。
セットアップ:テンプレート
テンプレート」アイコンをクリックし、「テンプレート」の設定に移ります。
Specify Templatesセクションで、この解析を実行するために必要なファイルをアップロードできます。
テンプレートは、実行するたびに変更される入力ファイルです。これらのテンプレートは、すでに割り当てた変数、xとyの速度を使用して、揚力と抗力の比を評価します。今回の解析では、このジョブ用のテンプレートをアップロードします。これを行うには、Choose Fileボタンをクリックし、以下のテンプレートをアップロードします。
U.inp_template
処理されたファイル名を設定する。
airfoil2D_DOE/0/U
テンプレートの設定段階は、以下のようになります。
セットアップ:ソフトウェア設定
次へ」をクリックして、解析の「ソフトウェア設定」セクションに進みます。ここで、分析に使用するソフトウェアモジュールを選択する必要があります。下にスクロールするか、検索バーを使ってソフトを検索します。このデモの場合は、下にスクロールしてOpenFOAMをクリックします。
次に、解析オプションの設定が必要です。
- ドロップダウンのセレクタで、ユーザーは好みのOpenFOAMのバージョンを選択することができます。
- このチュートリアルで使用する入力ファイルは、OpenFOAM のバージョン 17.06+ でテストされているので、そのオプションを選択します。
次に、プロジェクトに応じた解析実行コマンドを追加する必要があります。これは、各ソフトウェアパッケージと使用する各入力ファイルに固有のコマンドです。この入力ファイルとOpenFOAMの場合、実行コマンドは以下のようになります。
cd airfoil2D_DOE./Allrun
このコマンドは、ローカル端末で使用するものと同じである必要があります。
完了すると、以下のような「ソフトウェア設定」画面が表示されます。
セットアップ:ハードウェアの設定
使用する解析コードが決まったら、次は作業に必要なコンピューティングハードウェアを選択します。ハードウェアの設定]アイコンをクリックします。
- このページでは、希望する Core Type と、このジョブで使用するコアの数を選択する必要があります。コア」とは、仮想化された計算単位で、各コアは物理コンピュータの1つのコアを表します。このデモでは、Emerald を選択します。
- このDOEジョブの各子プロセスを1つのコアで実行するため、「Number of Cores / Slot」は「1」に設定する必要があります。
- Number of Task Slots]は、DOEタスクの並列実行数を表します。この場合、Number of Task Slotsを「1」に選択します。
ハードウェアの設定画面はこのようになります。
セットアップ:ポスト処理
ポスト処理アイコンをクリックし、[ポスト処理]画面に移動します。今回のデモでは、解析結果を可視化するための後処理を追加します。Choose File ボタンをクリックし、先ほどダウンロードした extract.py ファイルをアップロードします。
また、後処理スクリプトの実行に必要なコマンドを入力する必要があります。今回の解析では、以下のコマンドを追加してください。
python extract.py airfoil2D_DOE/log.simpleFoam Cd Cl
このポスト処理スクリプトは、各ランニングの最後に実行され、OpenFOAMの出力ファイルから揚力と抗力の係数を抽出します。ポスト処理スクリプトを使用するための詳しい情報は、こちらをご覧ください。
完成したポスト処理画面は、このようになります。
セットアップ:レビュー
最後に、セットアップのレビュー段階に移り、DOEジョブサマリーの表を確認してセットアップが正しいかどうかを確認します。以下のように表示されるはずです。
これで、Statusタブからジョブの進捗を監視することができます。ジョブを実行するために、Rescaleは定義されたとおりにクラスタを起動し、シミュレーションを実行し、完了したら直ちにクラスタをシャットダウンします。このプロセス全体は完全に自動化されており、安全であるため、ユーザからの入力は必要ありません。すべての分析にかかる時間は30分未満です。
解析の実行中は、Rescaleのライブテーリング機能により、解析の進捗をリアルタイムで確認することができます。ライブテーリングでは、個々の実行を選び、実行中のコードを見て、解析が正しく実行されているかどうかを評価することができます。
ライブテーリング機能を使用するには、ライブテーリングセクションにマウスを移動し、Runs(ラン)リストでアクティブなランをクリッ クします。アクティブなランを選択すると、2つ目のボックスにファイルのリストが表示されます。これらのファイルのいずれかを選択すると、そのファイルが何をしているのかがリアルタイムで表示されます。同時に最大5000行まで見ることができ、Refreshを押すと分析中の最新のアクティビティが表示されます。
ライブテール機能付きのStatusウィンドウは以下のように表示されます。
結果]タブには、ジョブに関連するすべての結果ファイルが表示されます。解析の結果、多くのファイルが生成されることがありますが、Rescaleでは、必要に応じてすべてのファイルを同時に、または個別にダウンロードすることができます。
個々のランが完了すると、このページに結果が表示されます。Refresh Resultsをクリックすると、完了した結果がすべて表示されます。Downloadをクリックすると、ファイルをダウンロードすることができます。StatusページのJob LogセクションにCluster stoppedが表示される前にDownloadをクリックすると、一部のランのデータのみを含むZIPファイルをダウンロードすることができますのでご注意ください。
以下は、ジョブ実行中の「結果」ページのスクリーンショットです。個々の実行の情報は、完了するごとに表に追加されます。
さらに、Rescaleには、ユーザーがデータをダウンロードする前に、このデータをチャートで表示する機能があります。チャート]タブでは、分析結果のデータをグラフで表示することができます。変数の設定を変えて、データがどのように見えるか試してみることができます。
チャート例を以下に示します。
Rescaleの「実験計画法」(DOE)ジョブタイプでは、これらのオプションによってランと変数を指定することができます。
- ラン定義ファイル(CSV)を使用:各行はケースで、ランまたは子ランとも呼ばれる
- ここで変数を指定する:変数の範囲はブラウザで指定する
これらのオプションは、指定した変数がDOEの各実行で入力として使用されるように変換される方法を柔軟に提供します。これは、テンプレート変数のフォーマットによって行われます。
テンプレートファイルには、実行時に各子羊ランに適用される値で置換される変数への参照が含まれています。テンプレートファイル内の “x “などの変数の基本的なプレースホルダーは、次のようになります。
${x}
この構文を使ってCSVファイルで変数を指定すると、プレースホルダーをCSVの値でそのまま置き換えます。これは、使用するシミュレーション・コードが固定幅のテキスト入力ファイルである場合に便利です。また、数値以外のデータを特定のファイルに含めたい場合にも有効です。例えば,入力ファイルに各ケースの説明をコメントとして含めると,我々が自動的にそのケースに割り当てる識別子よりも意味のあるものになる可能性があります.ですから、あなたのCSVが次のようなものだとしたら。
description, v, zcase 1a, 2.2, 3.4case 1b, 2.3, 3.4case 2a, 3.1, 3.2
そして、入力ファイルのテンプレートは次のようになります。
# ${description} vel: ${v}z: ${z}
そうすると、最初のケースの処理済みテンプレートは次のようになります。
# case 1a vel: 2.2z: 3.4
CSVでどのように変数が指定されたか、あるいはブラウザでどのように指定したかに関係なく、ファイル内で特定の一貫した数値フォーマットを持つことが望ましい場合があります。このような場合、桁に「0」または「#」を使用し、「#」記号を使用する場合は末尾のゼロがない追加のフォーマット命令を提供することができる。以下はその例である。
x | ${x?string(“0”)} | ${x?string(“0.0”)} | ${x?string(“0.00##”)} |
---|---|---|---|
0.9 | 1 | 0.9 | 0.90 |
1.49 | 1 | 1.5 | 1.49 |
-55.123 | -55 | -55.1 | -55.123 |
9810 | 9810 | 9810.0 | 9810.00 |
フォーマット文字列の小数点以下の桁数が値より少ない場合、値はそれに応じて丸められることに注意してください。科学的記数法は、以下のように使用することができます。
x | ${x?string(“0E0”)} | ${x?string(“000E00”)} | ${x?string(“0.0## E0”)} |
---|---|---|---|
0.9 | 9E-1 | 90E-02 | 9.0E-1 |
1.49 | 1E0 | 15E-01 | 1.49E0 |
-55.123 | -6E1 | -55E00 | -5.512E1 |
9810 | 1E4 | 98E02 | 9.81E3 |