バッチモードでのParaViewの実行
これらのチュートリアルでは、Rescaleプラットフォーム上でParaViewのポスト処理操作をバッチモードで実行する方法を説明します。最初のチュートリアルでは、既存のOpenFOAMタイプのソリューションと、Batchモードに適応させたいParaViewのワークフローがあることを想定しています。2番目のチュートリアルでは、複雑なワークフローと、ParaViewとOpenFOAMを1つのジョブで実行することについて説明します。
なお、本書では、OpenFOAM+、FOAM Extend、Caelus、その他のOpenFOAMベースのパッケージを含めてOpenFOAMという用語を使用します。
お困りの方はRescaleサポートにご連絡ください。
ParaView Pythonスクリプトの作成
ParaViewをバッチで利用するためには、まずParaViewに必要な可視化操作をすべて実行するためのPythonスクリプトを開発する必要があります。ゼロから開発することもできますが、ParaViewのPythonベースのスクリプト言語に慣れていない場合は、GUIで開発された手順の作業「トレース」から始めることができます。その後、適切と思われるようにスクリプトを修正し、一般化することができます。ここでは、ParaViewの「トレース」をテンプレートスクリプトとして構築するために必要な手順について簡単に説明します。
- まず、OpenFOAMのケースディレクトリに、メッシュ(constant/polyMesh)と少なくとも1つの解法セット(time-step/iteration)があることを確認します。
- OpenFOAMのケースディレクトリに拡張子が.foamのファイルを作成します。
- この拡張子を持つファイルにより、ParaView はケースのソリューションファイルフォーマットとディレクトリ構造を OpenFOAM のものとして識別できます(Caelus ソリューションには .foam も使用します)。
- この.foamファイルの名前も内容も重要ではありません
- ここでは、OpenFOAMのケースディレクトリで以下のコマンドを実行し、cylinder.foamという空のファイルを使用することにします。
touch cylinder.foam
- このソリューションの ParaView Pipeline オブジェクトはこの名前で識別されるので、任意のタイプの説明的なモノサシを自由に使用できることに注意してください (例: 0.foam, bike_Re1e6.foam, airfoil_alpha10.foam, etc.)。ただし、このモノカーはスクリプトに埋め込まれるため、常に.foamファイル名と一致させる必要があります。
- GUIからのコマンドを記録して、ParaView Pythonの “トレース “のテンプレートを作成する
- ParaViewをローカルまたはRescaleデスクトップで起動する
- ファイルメニューから「ツール」→「トレース開始」を選択します。
- トレースオプションの選択
- 作成時にトレースするプロパティはどのレベルでも十分ですが、変更されたプロパティまたはユーザーが変更したプロパティは、より読みやすく、簡単に編集できるスクリプトになります。
- Show Incremental Traceは、GUI入力からどのような対応コマンドが生成されるかを確認するのにも良いオプションです
- OKをクリックすると、トレースが開始されます
- ツールバーの「ファイルを開く」アイコンか、「ファイル」→「開く…」でソリューションを開きます。
- OpenFOAM のケースディレクトリにある、先ほど作成した cylinder.foam ファイルを選択します。
- 必要な可視化および後処理をすべて実行する
- スクリーンショットを保存するには、「ファイル」>「スクリーンショットを保存…」を選択し、適切なファイル名を入力します。
- 画像のエクスポートは、画像を生成する可視化ステップの間に行う必要があります。
- ここでは、圧力と速度の大きさの流線とフィールドコンターを作成します。
- ツール>トレース停止を選択し、トレース記録を停止します。
- 先ほど Show Incremental Trace を選択しなかった場合、ParaView はトレースまたは Python スクリプトコマンドを配置したテキストエディターを起動するはずです。
- このファイルをテンプレートスクリプトとして保存します。ここでは、pv_paraview.pyを使用します。
- このファイルを適宜修正・編集してください。
- スクリプトでファイルの絶対パスを相対パスに変更する
- 出力画像を含むすべてのパスが有効な相対パスで書き込まれることを保証すること
- 例えば /OpenFOAM-4.1/cases/cylinder/run01/cyl_pressure.png を cyl_pressure.png に変更する場合。
- caseディレクトリの名前を変更し、絶対パスがすべて削除されたことを確認して、スクリプトをテストします。
- スクリプトを十分に修正したら、必ずローカルでテストして、正しく動作することを確認してください。
- ParaViewで「Python Shell」に移動します。ツール > Python Shell
- スクリプトの実行]ボタンを選択します
- 作成したPythonスクリプトファイルを選択します。
- 作成された出力ファイルが期待通りのものであることを確認する
ここでも、記録されたトレースParaViewを絶対ファイルパスから相対パスに修正することが重要です(入力ファイルと出力ファイルの両方について)。
ゼロタイム・ステップ
注意点としては、バッチモードのParaViewは、スクリプト内で*.SkipZeroTime = 0を設定しても、0フォルダに存在するソリューションを無視するようです。もしこれが問題であれば、これを他のタイムステップ(1、20、1000など)にリネームしてください。これは、レンダリング結果の画像にフローソリューションデータが含まれないことで証明されます。
ParaViewのバッチランを送信する
ParaView Python スクリプトの準備ができたので、バッチジョブとして投入します。ジョブの投入についてもっと詳しく知りたい場合は、Basic Job Tutorial を参照してください。
- Rescaleプラットフォームで+新しいジョブを作成する
- OpenFOAMソリューション(cylinder_results.tgz)とParaView Pythonスクリプト(pv_rescale.py)をInput Filesとしてインクルードする。
- ソフトウェア設定ページでParaViewを選択
- 解析オプションコマンドで
touch cylinder.foam pybatch pv_rescale.py
- ここで、cylinder.foam ファイルが作成されていることに注意してください。すでにOpenFOAMのソリューションファイルに含まれている場合は、これをスキップしてもかまいません。
- 適切なコアタイプとコア数を選択します。今回はEmeraldのシングルコアを選択します
- ジョブ設定を見直す
- ジョブを送信する
- 結果ページで、ファイル名の横にあるスクリーンアイコンをクリックすると、出力画像をプレビューすることができるはずです。
- 詳しくは「ステータスの監視」と「ジョブリザルトの管理」のガイドを参照してください。
前回のチュートリアルでは、ParaViewのポスト処理ステップを実行する前にOpenFOAMのケースが実行されていることを想定していました。Rescaleプラットフォームでは、複数のソフトウェア解析手法を1つのジョブに含めることで、より複雑なワークフローを実現することができます。この機能を使用すると、1つのRescaleジョブ投入でOpenFOAMソリューションとParaViewポスト処理(またはin-situ)解析を実行することができます。
- 入力ファイル
- ParaView Pythonスクリプトと一緒にOpenFOAMを実行するためのファイルをインクルードする。
- ソフトウェアの設定
- ソフトウェアの設定ページで、まず OpenFOAM を選択し、通常通りコマンドを設定します。
- 基本的なジョブのチュートリアルを参照することができます。
- 次に、「ソフトウェアの設定」タイトルの横にある「+ソフトウェアの追加」ボタンを選択します。
- これで、元の OpenFOAM タブの隣に、さらに Select Software タブが作成されるはずです。
- Search software here… “欄にParaViewと入力し、ParaViewを選択します。
- ParaView用のコマンドを前述と同様に設定します。
- ソフトウェアの解析手法は、左のタブから始まり、右に向かって進んでいくので、ここでは、ParaView タブが OpenFOAM タブに続いていることを確認します。
- In-situ分析では、ソフトウェアに関連するコマンドを、ワークフローを実行する単一のスクリプトまたは一連のコマンドに置き換えます。
- ソフトウェアの設定ページで、まず OpenFOAM を選択し、通常通りコマンドを設定します。
- お好みのハードウェア設定を選択し、設定を確認します。
- ジョブを送信する
- 正しく設定されていれば、OpenFOAMコマンドの後に、ParaViewバッチが1つのジョブとして実行されるはずです
- その場での解析であれば、一度画像を生成すれば、ジョブの実行中に結果をプレビューすることができるはずです
- ジョブステータスページで、出力ファイルにフィルターをかけ、適切な画像ファイルを選択します。