PyFluentを使ってみた(その2)
By M.Sato
はじめに
今回は、PyFluentを使ってパラメトリック解析を行ってみます。
まず、Ansys Fluentのパラメトリック解析について簡単にまとめておきます。
-
パラメトリック解析とは
任意のパラメータを指定して、パラメータ値を変化させて解析を行うこと。 パラメータには入力パラメータと出力パラメータがある。 例えば、Fluentでは、named-expressionを使い、入力パラメータを指定し、 report機能を使い出力パラメータを評価することができる。 -
パラメトリック解析の利点
系統的にパラメータを変化させた場合の挙動を容易に把握できる -
パラメトリック解析の欠点
条件によっては、解析が必ずしも収束しない場合がある。 このような場合は手動で解析を行う必要がある。
ここでは、Fluentソルバー内部に組み込まれたパラメータ機能を使ってパラメトリック解析を行いました。
従ってモデルの形状変更は行いません (形状変更を伴うパラメトリック解析は、Discovery Modelingなどと組み合わせてWorkbench環境から実施することになります)。
解析の実行手順は以下のようになります。
以下ではまず、TUI(テキストユーザインターフェース)を使い、 パラメトリック解析を実施した例を示します。
その後、同様の操作を PyFluent-parametric で実行した例を示します。
準備
Fluentには標準パラメトリック解析を行う機能が入っていますが、 Fluentをインストールした時点では、使えない状態になっています。
そのため、パラメトリック解析を行う場合は、予め設定でパラメトリック解析をオンにしておきます。
- 手順
-
FluentをGUIで起動
-
File > Preference > General > Enable Parametric Study をオンにします。
- Fluentを再起動し、GUIのリボンにParametricが表示されていることを確認します。
次に、Pythonモジュールをインストールします。
ansys-fluent-coreおよび ansys-fluent-parametricモジュールを pipコマンドでインストールします。
> pip install ansys-fluent-core
> pip install ansys-fluent-parametric
パラメトリック解析
解析モデルはmixing elbowを使いました。
この解析では、高温流体の流入速度(hot_velo)、および低温流体の流入速度(cold_velo)を 入力パラメータとして変化させて、平均流出温度(avetemp)を出力パラメータとして評価します。
パラメトリック解析を行う場合、まず変数パラメータを含むFluentのcas/datファイルを作成します(基準ケース)。
その後、適当に設定点(design point)を追加設定しパラメトリック解析を行います。
パラメータを定義する操作は、GUI画面を見ながら設定を行う方が簡単です。 まず、パラメータ設定を含む基準(Base)ケースを作成し、計算を行っておきます。
基準ケース(Base)
以前のブログPyFluentを使ってみた(その1) で紹介した、mixing elbowの計算結果(raw.cas、raw.dat)を基準にします。
入力パラメータを指定
出力パラメータを指定
- Solution (リボン) > Definition > New > Surface Report > Area-Weighted Average
パラメータを使い境界条件を設定
定義済みのパラメータを確認
解析の実行
基準ケース(Base)の計算を実行しておきます。
数値で指定していた境界条件をパラメータに置き換えただけなので、問題なく計算できるはずです。
計算で得られた温度コンター図を示します。
これで入出力パラメータを埋め込んだFluentのcas/datファイルが作成されました。
この結果ファイルをelbow.cas、elbow.datとして保存します。
このファイルを元にして次項のパラメトリック解析を実施します。
パラメトリック解析の実行
次に流入速度を変えた場合の計算を行います。
これらの流速値は設計点(Design Point)と呼ばれます。
ここでは以下に示す4個の設計点(DP1~DP4)について計算を行いました。
ジャーナルファイルを使った実行
FluentのGUIで操作する場合は、GUI画面のParametricメニューから適当に操作を行うことになりますが、 ここでは、GUIを使わずにTUIで実行します。
以下に示すジャーナルファイルを読み込むことで、上記の設定点に対する出力パラメータが自動的に計算され、 計算結果がcsvファイルとして保存されます。
> fluent 3ddp -t4 -gu -driver null -i parametric.jou
- parametric.jou
;
; 基準ケースのデータを読み込む
rcd elbow.cas
;
; パラメトリック解析を elbowという識別子で初期化する
parametric-study study initialize y elbow y
;
; 設計点を定義する
parametric-study design-points add 0.4 1.5 n y q q
parametric-study design-points add 0.4 0.9 n y q q
parametric-study design-points add 0.3 1.2 n y q q
parametric-study design-points add 0.5 1.2 n y q q
;
; 全ての設計点の計算を実行する
parametric-study update update-all
;
ジャーナルファイルの実行が終了した時点でFluentは終了していますが、FluentをGUIで起動し
File > Parametric Project > Open > elbow.flprjを選択
により、パラメトリック解析の結果を表示することができます。
計算結果は以下のようになりました。
計算結果一覧の最後に、Statusが表示されています。 各設定点の計算が収束して終了したかどうかは、ここで確認することができます。
また、各設定点の結果ディレクトリには収束履歴データがcsvファイルとして保存されているため、 収束の状況を確認することができます。
3.2.2. PyFluent-parametricでの実行
前項で作成したジャーナルファイルと同等のFluent実行を行うPythonスクリプト(parametric.py)を作成しました。
以下に示します。
- parametric.py
from pathlib import Path
import ansys.fluent.core as pyfluent
from ansys.fluent.parametric import ParametricProject, ParametricStudy
# fluentを起動 (倍精度、4コア、GUI不使用)
solver_session = pyfluent.launch_fluent(
precision="double", processor_count=4, mode="solver", show_gui=False
)
# 基準ケースのデータを読み込む
solver_session.tui.file.read_case("elbow.cas.h5")
solver_session.tui.file.read_data("elbow.dat.h5")
# 最大反復回数を 150回に設定
solver_session.tui.solve.set.number_of_iterations("150")
# 設計点(DP2)を定義
design_point_2 = study.add_design_point()
design_point_2_input_parameters = study.design_points["DP2"].input_parameters
design_point_2_input_parameters["hot_velo"] = 0.9
study.design_points["DP2"].input_parameters = design_point_2_input_parameters
# 設計点(DP3)を定義
design_point_3 = study.add_design_point()
design_point_3_input_parameters = study.design_points["DP3"].input_parameters
design_point_3_input_parameters["cold_velo"] = 0.3
study.design_points["DP3"].input_parameters = design_point_3_input_parameters
# 設計点(DP4)を定義
design_point_4 = study.add_design_point()
design_point_4_input_parameters = study.design_points["DP4"].input_parameters
コマンドプロンプロトを開き、pythonスクリプトを実行します。
> python parametric.py
PyFluent-parametricの実行が終了した時点でfluentは終了していますが、fluentをGUIで起動し、
File > Parametric Project > Open > elbow.flprjを選択
により、パラメトリック解析の結果を表示することができます。
まとめ
Fluentを使ったパラメトリック解析について、ジャーナルファイルを使い実行する例と Fluent-parametricを使い実行する例を示しました。
いずれの場合も、Fluentの実行はスクリプトファイル(コマンドを記述したテキストファイル)を作成して行うことになります。
PyFluent-parametric用の pythonスクリプトは、例題やAPIマニュアルを使い推定することになりますが、正確な記述を見出すのはかなり大変です。
実際に使ってみた感想ですが、現時点ではあえてPyFluent-parametricを使う必要はなく、普通のジャーナルファイルで十分有用ではないかと感じました。 使いやすさを含めて、今後の PyFluent-parametric の開発に期待したいと思います。
なお、ここでは紹介しませんでしたが、実験計画法に基づき適切な設計点を選択し、その結果に基づき応答曲面(近似式)を作成するといった高度な利用方法も考えられます。 興味がある方は一度トライして見てはいかがでしょうか?
👉
本記事で使用したデータをご希望の場合は、弊社までお問い合わせください。
お問い合わせ
弊社の解析事例
弊社の流体解析事例については、下記のリンクからご覧ください.