OpenFOAM

【refineMesh(OpenFOAM)】メッシュの再分割(6)

こんにちは(@t_kun_kamakiri

前回の記事では指定した座標位置の圧力を出力する設定について解説を行いました。
しかし、メッシュが粗いために指定した座標に節点がなく値の出力に失敗しました。

今回は3次元ダムブレイクの障害物近辺のみメッシュの再分割を行うOpenFOAMのユーティリティであるrefimeMeshについて解説します。

使用しているベースとなるチュートリアルは「$FOAM_TUTORIALS/multiphase/interFoam/laminar/damBreakWithObstacle/」よりコピーして使っています。

今回の内容

障害物近辺のメッシュ再分割について解説を行う。

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

DEXCS2020
OpenFOAM v2006

refineMeshでメッシュの再分割

まずベースメッシュの障害物がある領域だけをメッシュの再分割を行います。

まず、設定をクリアするために以下のコマンドでフォルダ内をリセットします。

ちなみにAllcleanファイルには以下の記述が書かれています。

Allclean

では、以下のコマンドでベースメッシュを作成しましょう。

※「cp -r 0.org 0」は設定ファイルのコピーを行っているだけです。

メッシュの再分割を行うためにはセルセットを作成する必要があります。
その方法は2つありますので好きな方を使ってください。

個人的には方法2を使った方がわかりやすいので方法2を使っています。

方法1 Setsetコマンド

ここからSetsetコマンドによって再分割するセルセットを用意します。

このように打つと対話形式に変わります。

以下のように再分割したい領域のmin座標とmax座標を指定します。

※実際に書くのは「cellSet refineCells new boxToCell (0.55 -0.3 0) (0.9 0.3 0.2)」の部分のみ。

これにより「refineCells」という名前のセルセットができました。

このように書くことで対話形式が終了します。

refineMeshを実行するためにはsystem/refineMeshDictを作成して以下の記述を行います。
refineMeshの記述は下記の記事を参考にしました。

system/refineMeshDict

そしてsetSetで指定した領域を以下のコマンドでメッシュの再分割を行います。

ではベースメッシュの障害物近辺のメッシュの再分割ができたかどうかParaviewでy断面を切って確認してみましょう。

メッシュの再分割ができていますね。

ベースメッシュができたら前回の記事で行ったtopoSetとsubsetMeshを使って障害物だけを取り出すようにします。

今回は方法2で2種類のtopoSetDictを使いたいため「topoSetDict2」をいうファイルを用意して以下のように記述します。

system/topoSetDict2

詳しい解説は【topoSetコマンド(OpenFOAM)】3次元ダムブレイクモデル作成(1)をお読みください。

ファイルを指定してtopoSetを実行するためには以下のように書き、ターミナルで実行します。

これにて「c0」という名前のセルセットが作成されました。
このc0は障害物近辺のメッシュが再分割されたセルセットとなっています。

そしてベースメッシュからセルセットの「c0」を取り出します。

Paraviewで確認してみましょう。

障害物近辺のメッシュの再分割が行えていることと、圧力計測点に節点があることがかくにんできました。

方法2 topoSet

setSetのような対話形式だとスクリプトにしにくいため、topoSetを使って辞書形式で書くことができます。

まずメッシュの再分割用のセルセットのため「system/topoSetDict1」を作成します。

system/topoSetDict1

setSetと同様「refineCells」でセルセットを作成しています。

これを使ってrefineMeshを実行します。

これにてベースメッシュの障害物近辺のメッシュ再分割が行えたので、方法1同様に障害物のメッシュを取り除くようにします。

system/topoSetDict2

方法1と同じ記述内容です。

今までの流れをまとめると以下のようになります。

方法2では以下のファイルを準備し、

  • refineMeshDict
  • topoSetDict1
  • topoSetDict2

スクリプトで以下のように書いて置けば初期状態までが楽ですね

「run」という空ファイルを作成し、実行権限を与えます。
「run」ファイルの中身は以下のようにしておきます。

まとめ

今回は前回で問題になったメッシュの粗さによる指定した座標位置に節点が存在しないという問題点を改善するために、障害物近辺のメッシュの再分割を行いました。

これにより指定した座標位置に節点が存在することにより、圧力データを出力することができるようになっているはずです。

次回の記事では、指定した座標位置の圧力の時刻歴を取得し、実験データと比較してみます。

P1点での圧力データに対して実験とOpenFOAMでの結果を比較するためgnuplotを使って重ねてみました。概ね実験データと重なっており良い結果ではないかと思います。

参考書

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

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

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

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

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

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

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

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

COMMENT

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