CAE

【圧力時刻歴データ(OpenFOAM)】ParaViewとPythonを使って自動化する方法(10)

こんにちは(@t_kun_kamakiri

今回は下記の記事で解説した圧力時刻歴データをParaViewとPythonを使って自動化する方法について解説を行います。前回の記事でも圧力の時刻歴データのグラフ化を行いましたが、指定した座標に節点がない場合にデータを出力できないという問題点がありました。

↑こちらの記事で紹介した通り、指定した座標の圧力の時刻歴データはOpenFOAMの設定「system/controlDict」ファイル内でfunctionObjectでprobesを設定することででも出力可能です。

system/probes

こちらの実験データの圧力計測点と同じ位置の圧力データを取得する設定を行います。

  • 「fields (p p_rgh);」で出力する物理量を指定します。
  • probeLocationsで出力したい座標位置を指定します。
  • 「interpolationScheme cellPoint」はセル値による線形重み付け補間スキーム

probesをsystem/controlDictで読み込みます。

system/controlDict

本来はこちらの設定の方が結果処理の手間が省けて良いのですが、計算実行後に設定し忘れて(もしくは後で見たくなった)などの理由で可視化ソフトで表示させたいということは稀にあります。

今回の内容

3次元ダムブレイクの実験の指定した座標位置での圧力をParaViewで表示する方法について解説を行います。

OpenFOAM初心者でチュートリアルを動かしたことがある方を対象にしています。

DEXCS2020
OpenFOAM v2006
gnuplot 5.2

3次元ダムブレイクの実験データと解析モデル

実験データ

こちらの実験データのより以下の時刻歴データを計測しています。

  • 圧力計測点P1~P8←今回OpenFOAMと比較する対象
  • 水面の高さH1~H4

ちなみに「system/controlDict」ファイル内でfunctionObjectのprobeで特定座標の圧力を取得し、実験データと比較したものが下記となります。

そこそこ実験とOpenFOAMの結果が合っていますね。

解析モデル

OpenFOAMでの解析モデルの設定方法は下記の記事に書いています。
※追々ファイルもモデルファイルも公開します。

ParaViewで圧力の時刻歴表示

操作方法はこちらに記載しています。

今回は自動化をさせたいのでPythonスクリプトに操作を記録しています。
ただし、この資料内ではP1の座標のみのデータを取得しています。

最終的には「probe_main_Alltime.py」には以下の記述がされています。

probe_main_Alltime.py

ターミナル上で以下のコマンドを打つことでPythonスクリプトを実行することができます。

今回はP1座標の結果のみを取得しましたが、以下でprobe_main_Alltime.pyの中身を編集してP1~P8の座標のデータを自動で取得するプログラムにします。

Pythonスクリプトの編集

P1~P8の座標の圧力の取得するプログラムに編集したのがこちらです。

probe_main_Alltime.py

まずP1~p8の座標を辞書型で定義しました。

そしてその辞書型をfor文で繰り返しています。
probe_points[point]とすることでpointにキーが格納され(p1~p8)、probe_points[point]がキーに対応する値(座標)になります。
probeLocation1.ProbeType.Center = probeで座標を代入しています。

以下の部分で位置を区別したcsvファイルを出力しています。

pvpythonはバージョン2.7なので、最新のPythonのバージョン3系とは書き方が異なることに注意する必要があります。

これでもう一度はターミナル上で以下のコマンドを打ちます。

このように「p*.csv」がずらっと出ていればOKです。
p1~p8の座標の1~8秒までのステップ(0.1秒刻み)で出力しています。

Pythonでデータを繋げる

「p1.0.csv」の中身を見ると以下のようにp1座標の0ステップ目(0秒)での物理量が入っているだけです。

これをPythonを使って各ステップのデータを繋げる作業が必要です。

jupyter labを使ってデータを繋げます。
※ここでのPythonは3系です。

まとめると以下のようになります。

こちらを実行すると「point.jpg」という画像ファイルが出力されます。
画像の余白など修正が必要ですが、今はあまりこだわらずにいます。

#subprocess.run([‘pvpython’,’probe_main_Alltime.py’])のコメントアウトを外すと、「pvpython probe_main_Alltime.py」が実行されてp1~p8の各ステップの物理量のcsvファイルが出力されます。
はじめてcsvファイルを出力する場合はこちらを使えば良いです。

まとめ

今回は圧力時刻歴データをParaViewとPythonを使って自動化する方法について解説を行いました。計算を実行した後にどうしてもデータが欲しいという場合は、ParaViewとPythonを使うことでデータ処理を行うことができます。

今回はPythonを使いましたが、理由はPythonが簡単で慣れているからであることと、ParaViewのマクロがPythonで記述されているのでその延長でPythonのみを使いました。グラフ化の部分はgnuplotを使ってもいいですし、その他の言語や有料のソフトを使っても良いでしょう。

参考書

PENGUINさんサイトを体系的に学べる書籍となっています。ネット記事でも十分勉強できるのですが、OpenFOAMの初学者でOpenFOAMをインストール済みであれば一冊持って置き、体系的に学ぶのが良いでしょう。

OpenFOAMによる熱移動と流れの数値解析(第2版)

OpenFOAMによる熱移動と流れの数値解析(第2版)

3,520円(06/30 20:09時点)
Amazonの情報を掲載しています

あとは初心者向けに丁寧に解説がされているこちらの書籍もお勧めです。最後の章にはオーバーセットメッシュ(重合メッシュ)の機能を使った解析を最後まで丁寧に解説しているので挫折することはないでしょう。

OpenFOAMの歩き方 (技術の泉シリーズ(NextPublishing))

OpenFOAMの歩き方 (技術の泉シリーズ(NextPublishing))

川畑 真一
1,100円(06/30 20:40時点)
発売日: 2021/02/26
Amazonの情報を掲載しています

【プロフィール】

カマキリ
(^^)

大学の専攻は物性理論で、Fortranを使って数値計算をしていました。
CAEを用いた流体解析は興味がありOpenFOAMを使って勉強しています。

プロフィール記事はこちら

 

大学学部レベルの物理の解説をします 大学初学者で物理にお困りの方にわかりやすく解説します。

このブログでは主に大学以上の物理を勉強して記事にわかりやすくまとめていきます。

  • ・解析力学
  • ・流体力学
  • ・熱力学
  • ・量子統計
  • ・CAE解析(流体解析)
  • note
    noteで内容は主に「プログラミング言語」の勉強の進捗を日々書いています。また、「現在勉強中の内容」「日々思ったこと」も日記代わりに書き記しています。
  • youtube
    youtubeではオープンソースの流体解析、構造解析、1DCAEの操作方法などを動画にしています。
    (音声はありません_(._.)_)
  • Qiita
    Qiitaではプログラミング言語の基本的な内容をまとめています。
関連記事もどうぞ

COMMENT

メールアドレスが公開されることはありません。