openFoamを用いてある点の各種量の時系列データを出力させる方法

※当方勉強不足のため様々間違いや誤解を当記事中に含んでいるかもしれませんので、当記事を参考にしていただける方々にはその点ご了承いただけると幸いです。
※併せて、当記事を参考にした結果、何か失敗をして論文が通らなくって卒業できなかったあるいはその他もろもろの貴殿に被る被害に対して、私は一切の責任を負いかねますのでご了承ください(免責事項)。


特定の点について、各種の量を時系列データで出力させる方法について、2点紹介したいと思います。

以下ケースの様子。2D、laminar、interFoam。

f:id:niodachi:20190613145507j:plainf:id:niodachi:20190613145510j:plainf:id:niodachi:20190613145459j:plainf:id:niodachi:20190613145502j:plainf:id:niodachi:20190613145505j:plain

御覧のように、単純に水中崩壊させているだけです。


それではある点の時系列データを出力させましょう。

方法① openfoamで計算させる際に同時に計算させる

system/controlDict内に、以下functionを追記するだけ。

functions
{
probes
{
type probes;
libs ("libsampling.so");
writeControl writeTime;
probeLocations
(
(0 9.95 19.77)
(0 -9.95 19.77)
);
fixedLocations false;
fields
(
p
);
}

($FOAM_TUTORIALS/multiphase/compressibleInterDyMFoam/RAS/sloshingTank2D/systemから引っ張ってきました。)

probeLocationsに計算したい点の座標(複数可)を、fieldsのところに、出力したい変数を入力(このケースではpが設定されている、ほかにUとかp_rghとかも設定可)しておくと、計算実行後にpostProcessinngファイルが生成され、その中に時系列データがCSV形式で出力されます。
出力ファイルをコピーして、Excelなどで弄びましょう。

方法② paraviewを用いた方法

paraview(paraFoam)のGUIを用いて、特定の点の各変数の時系列データを求める方法です。

以下画像とともにお送りいたします。

f:id:niodachi:20190613155247j:plain
まずparaFoamを実行してもろもろ情報をAPPLYするとこんな画面になりますね。
ここでProbeを選択します。



f:id:niodachi:20190613155250j:plain
するとprobeに関するpropertyが表れるので、出力したい点の座標を入力します(もちろんxyzの順です)。それで、APPLY。



f:id:niodachi:20190613155312j:plain
ウィンドウが分割されて指定した点と、現在の時刻の各種量が表示されます。



f:id:niodachi:20190613155309j:plain
そしたらその表を選択した状態でPlot Selection Over Timeを選択します。さらにAPPLY。



f:id:niodachi:20190613155300j:plain
右下にさらにウィンドウが分割され、グラフが出力されます。エラーをたくさん吐いていますが、無視でいいはずです。



f:id:niodachi:20190613155303j:plain
グラフ右上、さらにウィンドウを分割させる機能があります。ここを選択して、



f:id:niodachi:20190613155254j:plain
続いてここを選択すると、



f:id:niodachi:20190613155257j:plain
グラフのもとになっていた表が出力されます。最後に右上にCSVで書き出すところがあるので、保存して弄びましょう。





以上2点が時系列データを出力させる方法です。

注意としては、方法②ではp_rghは出力されるが、pは出力してくれない点です。水理工学をやっている人にとっては、ちょっと残念な感じだと思います。
次回、paraviewを用いて水位の時系列データを出力する方法を紹介します。

是非読んでね。

※記事に関してご指摘がございましたら、是非コメントしてください。勉強になります。よろしくお願いいたします。