OpenFOAM

【gnuplot実験の水面高さデータ比較(OpenFOAM)】3次元ダムブレイクの解析(8)

こんにちは(@t_kun_kamakiri

今回も前回に引き続きCAE解析結果と実験データとの比較を行います。

今回の内容

3次元ダムブレイクの実験の指定した座標位置での水面の高さの時刻歴をOpenFOAMの結果と比較する。
時刻歴の重ねはgnuplotを使います。

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

DEXCS2020
OpenFOAM v2006
gnuplot 5.2

3次元ダムブレイクの実験データ

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

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

前回の記事では圧力の時刻歴データと実験とOpenFOAMで比較を行いました。

本記事ではH1~H4の水面の高さの時刻歴をOpenFOAMで計測し実験データとの比較を行います。

解析実行

解析設定はこちらをご参考ください。

設定ファイルは再度こちらにも記載しておきます。

constant/turbulenceProperties

今回乱流モデルは使いません。

今回こちら「$FOAM_TUTORIALS/multiphase/interFoam/laminar/damBreakWithObstacle/」のチュートリアルを利用していますが、乱流モデルなしのケースファイルでも「k,nut,omega」ファイルがありますが、こちらは乱流モデルの際に使うので今回は特に設定をしなくも良いです(使っていないので)。

0.org/U

0.org/p_rgh

0.org/alpha.water

constant/dynamicFvMeshDict

チュートリアルは空気と水の界面でのメッシュを時刻歴で再分割するようにdynamicMeshが採用されています。

今回このような設定では解析時間がとてもかかるのと、結果処理がものすごく重いためノートPCで耐えられる計算ではないため、「dynamicFvMesh staticFvMesh;」を使って無効にしておきます。

constant/g

重力加速度はz方向の下向きに設定します。

system/probes

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

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

probesをsystem/controlDictで読み込みます。
水面高さを計測するためinterfaceHeight1を設定します。

system/controlDict

「direction (0 0 -1);」は重力の方向を正しく指定する必要があります。
今回はz方向下向きに重力がはたらいているためこのような設定としました。

また、「postProcessing/interfaceHeight1/0/height.dat」には一つの座標に対して以下の出力結果が出されます。

  • # hB : Interface height above the boundary:水面の高さ
  • # hL : Interface height above the location:波の高さ

いずれも重力の方向を正しく指定することが重要です。

system/decomposeParDict

計算時間もかかるため4並列にして計算を実行します。

scotchを使えば適当に最適化して分割してくれます。

その他の設定は特に触っていないのでそのままでいきます。

※並列計算で実行すると水面高さのデータが出力されませんでした。
原因は調査中ですので今回は並列計算は諦めて並列なしで計算実行します。
(追記:OpenFOAM v2106で改善されていましたので、v2106以降をお使いの方は並列計算でも水面高さは出力されます。)

設定が終わったので以下のコマンドで解析を実行しましょう。

計算実行中に圧力データの時刻歴を見ることができます。
別のターミナルを開き以下のコマンドを打ちます。

計算が終わったらParaviewで結果を確認しましょう。

このように水が崩れて障害物で水しぶきを上げている結果が得られました。

解析結果

指定した位置での水面の他高さはの時刻歴の記事同様gnuplotスクリプトで可視化します。

以下の記述を「gnuplot_run_H.plt」というファイル名で保存しgnuplotを起動してスクリプトを読み込みみます。

gnuplot_run_H.plt

  • 1行目で変数nを初期化
  • rereadが実行されてスクリプトの最初に戻る

ターミナル上で以下のコマンドを打ちます。

gnuplotが起動したら以下のように打ってスクリプトを実行します。

各位置での水面の高さについて実験データとOpenFOAMを比較すると以下のようになります。概ね良い結果ですね。

まとめ

今回は実験データの指定した位置での水面の高さとOpenFOAMの結果を比較を行い、概ね良い結果を得ることができました。

しかし、実は解析上は問題がありなぜか並列計算をした際にinterfaceHeight1を認識してくれませんでした。

なので、仕方なく今回はシングルで計算を行ったため物凄い計算時間がかかってしまいました。

どなたか原因がわかる方いましたらご教授いただければ幸いです_(._.)_

参考書

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

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

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

3,520円(04/26 10:19時点)
Amazonの情報を掲載しています

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

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

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

川畑 真一
1,100円(04/26 14:22時点)
発売日: 2021/02/26
Amazonの情報を掲載しています
関連記事もどうぞ

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です