ANSYS Fluent バッチ チュートリアル

このチュートリアルでは、ANSYSのジョブをRescaleプラットフォームにバッチでサブミットする方法を紹介します。各ANSYSソフトウェアから入力ファイルを作成し、Rescaleジョブを開始し、投入し、結果をANSYSに転送します。

プリ処理(ジオメトリ、メッシュ/モデルなど)はすでに完了し、ソルバーやセットアップの設定もすべて決定しています。RSMによるジョブ投入とは異なり、Rescale Desktopsを起動する必要はありません。ANSYSのソフトウェアとライセンスを使用するか、または弊社に連絡してElastic License Units(ELU)を購入することができます。

Caseファイル、Journalファイルの作成

このセクションでは、ANSYS Fluent のジョブをバッチで解きます。このチュートリアルに従うために必要なファイルを入手するには、下のImport Job Setupリンクをクリックし、ファイルをホストしているジョブをクローンしてください。次に、ジョブのSaveをクリックして、Rescaleのクラウドファイルにファイルのコピーを用意します。

入力ファイルは以下の2つです。

tjunction_plot.cas.gz – 圧縮されたケースファイル

run_plot.jou – ジャーナルファイル

Caseファイル、Journalファイルの作成

チュートリアルでは,ANSYS Fluent Ver.18を用いて,異なる温度での2流体のT字合流を例題とします.ケースファイル tjunction_plot.cas.gz は既にお渡ししています。ケースファイルを作成するための手順は以下の通りです。

  • Fluent で、File タブを開き、Export > Case… を選択すると、ウィンドウブラウザが開きます
  • .casまたは.cas.gzの拡張子を持つファイル名を付け、このファイルのエクスポート先を選択します。

このファイルには、標準的なワークフローに従って、GUIで設定されたすべてのプリプロセッシング設定、およびソルバーと物理のセットアップが含まれています。

また、Fluent を使ってバッチ実行するために必要なコマンドをすべて含むジャーナルファイルが必要です。ジャーナルファイルrun_plot.jouはすでに利用可能です。ジャーナルファイルを作成する手順は以下の通りです。

  • Windowsのエクスプローラで、マウスの右クリック→新規作成→テキスト文書(他のOSでも同様)を作成します。
  • ファイル名に拡張子.jouをつけます。ファイル拡張子の変更を受け入れる。
  • ファイルをダブルクリックして開き、ジャーナルコマンドを入力した後、ファイルを保存します。

ジャーナルファイルは次のようになります。

/file/set-batch-options no yes yes no
/file/read-case tjunction_plot.cas
/solve/initialize/initialize/
/solve/iterate 500
/file/write-case-data tjunction_plot%i.cas.gz
/exit yes

上記のジャーナルファイルは、ケースファイルの読み込み、バッチオプションの設定、初期化、500回の反復計算を行い、最後に解が収束した時点でケースファイルとデータファイルを書き込見ます。

このファイルは、ANSYS Fluent Text User Interface (TUI)を使用して記述されています。特定のテキストインターフェースコマンドの使用方法については、こちらのANSYS Online Documentationを参照してください。

Rescaleジョブのセットアップ

必要なANSYS Fluentのファイルを入手したら、今度はRescaleでBasicジョブを投入します。Basicジョブの投入については、こちらのチュートリアルをご参照ください。

セットアップ:入力ファイル(複数可)

  • Rescaleプラットフォームに移動し、左上の+New Jobをクリックします。ジョブに名前を付け、ジョブタイプがベーシックに設定されていることを確認します。
  • 次に、入力ファイルとしてジャーナルとケースファイルをアップロードします。

セットアップ:ソフトウェア設定

Nextをクリックして、セットアップの Software Settings セクションに進みます。

  • 下にスクロールするか、検索バーでANSYS Fluentを選択することができます。解析オプションが表示されるので、バージョン18.0を選択します。
  • コマンドウィンドウで、角括弧の下にジャーナルファイル名を指定する必要があります。また、解の残差を見たいと思います。そのために、-guオプションを使ってグラフィックウィンドウを維持するようにコマンドします。
  • 次に「Licensing Options」で「Use Existing License」を選択し、「License」と「ANSYS License Interconnect」にそれぞれANSYSサーバーの接続ポート番号を入力します。

このチュートリアルの場合、ソフトウェアの設定画面は以下のようになります。

セットアップ:ハードウェアの設定

次のステップでは、ジョブに必要なハードウェアを選択します。ハードウェアの設定]アイコンをクリックします。

  • ご希望のコアタイプと、このジョブで使用するコアの数を選択します。このチュートリアルでは、Emeraldと4コアを選択します。

ハードウェアの設定画面はこのようになります。

セットアップ:レビュー

このチュートリアルでは、ポスト処理に関する設定はありません。Reviewアイコンをクリックします。Basic Job Summaryテーブルを確認し、セットアップが正しいことを確認します。このように表示されるはずです。

ジョブ投入とモニター

セットアップを確認したら、ジョブを送信する準備ができています。Submitをクリックすると、RescaleプラットフォームのSetupページからStatusページに移動します。ここでは、ガントチャートのような形式でジョブの進捗を監視し、日付と時間のスタンプが付いたログを確認し、Live-tailウィンドウを使用してジョブのステータスと出力をライブテールすることが可能です。Rescaleの「ステータスの監視」についてのガイドはこちらです。

この例では、シミュレーションが反復毎に残差プロットを出力するように設定し、Live Tailingウィンドウの下にresidual.jpegファイルとして表示されるようにしました。このグラフはLive Tailingウィンドウの下にresidual.jpegファイルとして表示され、いつでも開いて解の収束の進捗をモニターすることができます。

結果の表示

ジョブが完了したら、ローカルのワークステーションまたはRescaleデスクトップで結果を見ることができます。どちらの方法も以下に紹介します。

ローカルワークステーションで

ジョブが完了すると、ダウンロードしたいファイルを選択することができます。

注:大きな出力ファイルがある場合、WindowsユーザはRescale Transfer Manager(RTM)を使用して、オンプレミスのワークステーションにファイルを高速にダウンロードすることをお勧めします。RTMの詳細については、こちらをご覧ください。LinuxまたはMacユーザは、Rescale CLIを使用して、より大きな出力ファイルをダウンロードすることができます。

  • 完了したジョブの結果ページに移動し、tjunction_plot0245.dat.gzを検索して選択します。
  • ActionsからDownload selected filesをクリックし、コンピュータにダウンロードされるまで数秒お待ちください。
  • Fluent を起動します。File タブを開き、Import > Data… を選択します。を選択し,ソリューションデータファイルを読み込みます.

Rescaleデスクトップ上

ジョブが完了したら、以下の手順でRescaleデスクトップ上に結果を表示します。

デスクトップセッションを設定する。

  • 1.Choose Configurationドロップダウンで、デスクトップセッション用のハードウェアを選択します。
  • 2.Add Softwareドロップダウンで、ANSYS Fluids Desktop を選択します。
  • 3.Jobsのドロップダウンで、名前を入力したり、リストを参照したりして、追加したい仕事を探します。追加]をクリックすると、デスクトップにジョブが追加されます。
  • Desktop セッションが開始されたら、Fluentを起動します。
  • Fluent で、File タブを選択し、Import > Data… を選択します。マップされたディレクトリに移動します。Z:ドライブにマップするのが一般的ですが、設定によっては、添付のジョブがX:またはY:ドライブにある場合もあります。tjunction_plot0245.dat.gzファイルをクリックしてソリューションデータファイルをロードし、Openをクリックします。

この時点で,Ansys Fluent シミュレーションをインタラクティブに解いた後,通常行うポストプロセッシングの作業に進むことができます.

ANSYS Fluent には、物理およびソルバーのセットアップの動作をユーザーが変更または拡張することができる機能もあります。ユーザー定義関数(UDF)を使用して、境界条件の付与、物理・化学プロセス、熱伝導、相変化などのアクションを実行することが可能です。

このセクションでは、Rescaleプラットフォーム上でFluentユーザー定義関数(UDF)をバッチモードで使用する手順を説明します。

このガイドでは、Fluentジョブでコンパイル可能なUDFがすでに開発されていることを前提に説明します。UDFの作成またはデバッグに関するサポートは、ANSYSサポートに直接お問い合わせください。ANSYSによるFluentでのUDFの使用に関するガイドはこちらです。

UDFの一括コンパイル

バッチ実行中にUDFを利用するには、まずUDFのソースコードがコンパイルされ、Fluentからアクセスできるようになっている必要があります。ここでは、メインの解答または反復処理の前に、ランタイムでUDFをコンパイルするワークフローを紹介します。これは、既存のサンプルジャーナルファイルにコマンドを追加することで実現します。ワークフローとコンパイル・ライブラリのサイズによっては、これらのUDFライブラリをあらかじめコンパイルしておき、バッチジョブの入力ファイルとして含めることも可能です。しかし、一般的にUDFはストレートなコードなので、ランタイム・コンパイルは短い操作で済み、プラットフォームの不整合も回避できます。

ジャーナルファイルの例

以下は、ユーザーが作成したcustom_UDF.cファイルをカレント・ディレクトリで(ジャーナル・ファイルと一緒に)コンパイルし、結果のUDFライブラリをロードするジャーナル・ファイルの例です。UDFはデフォルトのライブラリー名libudfでコンパイルされ、共有ライブラリーを含む対応する名前のディレクトリ構造が作成されます。

ここでは、コンパイルとロードのコマンド(太字で表示)は順次実行され、ソリューションの初期化の前に実行されます。しかし、これらの操作は、ワークフローに合った場所で実行することができます。

/file/set-batch-options no yes yes no
/file/read-case example.cas
/define/user-defined/compiled-functions compile libudf yes custom_UDF.c ""

/define/user-defined/compiled-functions load libudf
/solve/initialize/initialize
/solve/iterate 1000
/parallel/timer/usage
/file/write-case-data example-%i.cas
/exit yes

ここで注意すべきは、具体的な構文が2つあることです。1つ目は、UDFソースコードのファイル名の後に、2つのダブルクォート「”」が存在することです。もうひとつは、コンパイルコマンドの後に空白行があることです。これは、コンパイル機能が次の行をコンパイルに含める追加のファイル名として扱おうとしないようにするためです。空白行はコンパイルコマンドの後に必要ですが、loadコマンドの前にも後ろにも必要ありません。

明示的なUDFコールの作成

時には、境界条件の設定や何らかの後処理を行うために、解答プロセスの前または後にUDF関数を呼び出す必要がある場合があります。ジャーナルファイルの中で、必要に応じてexecute-on-demandコールでUDF関数を明示的に呼び出すことができます。

/define/user-defined/execute-on-demand "FunctionName::libudf"

複数ノードでの実行

もう 1 つの注意点は,UDF 関数呼び出しの性質上,すべてのノードがコンパイル済み UDF ライブラリにアクセスする必要があることです.デフォルトでは,ANSYS Fluent のジョブはヘッドノードのローカルディレクトリである ~/work ディレクトリで実行されるように設定されています.関数の動作によっては,ワーカーノードプロセスが共通のファイルやライブラリにアクセスする必要がある場合があります.この場合、ジョブはNFSマウントされたディレクトリである~/work/sharedから実行される必要があります。そのため、Fluentを起動する前に「ソフトウェア設定」のページで、ディレクトリの移動と変更のコマンドを前置するだけです(ジャーナルファイルではありません)。

mv * sharedcd sharedfluent 3ddp -gu -ssh -cnf=$FLUENT_HOSTS -t$RESCALE_CORES_PER_SLOT -i example.jou

つまり、繰り返しになりますが、1つのノード上の複数のコアで実行する場合、そのノード上のすべてのコアからローカルファイルシステムにアクセスできるため、このステップは不要です。