OpenFOAM

【3次元ダムブレイク流体解析(OpenFOAM)】圧力データと水面高さの実機比較

メッシュ作成

メッシュ作成は以下の手順で作成します。

  1. blockMesh:ベースメッシュの作成
  2. surfaceFeatureExtractDict:障害物の特徴線の抽出
  3. snappyHexMesh:ベースメッシュから障害物の切り抜き

以上、3つの手順でメッシュ作成を行います。

blockMesh ベースメッシュの作成

blockMeshによりベースとなるメッシュを作成します。

「system/blockMeshDict」ファイルを以下のようにします。

system/blockMeshDict

以下で直方体の各頂点の座標を設定しています。

各方向の分割数は↓こちらで設定しています。
※simpleGradingは各方向のメッシュの拡大率を指定できますが、今回は均等にするため(1 1 1)とします。

以下のboundaryで個々の側面のパッチ設定を行います。
例えば、facesで(0 4 7 3)は頂点の番号を意味し、4点作られる面の名前を「mixX」としています。

以上で、blockMeshの実行を行うとベースメッシュが作成できます。

ターミナルで以下のコマンドを実行しベースメッシュを作成します。

blockMeshが正常に行われると以下のフォルダにファイルが作成されます。

Paraviewでメッシュを確認してみましょう
ターミナルで以下のコマンドを実行するとParaviewが起動しメッシュ確認ができます。

カマキリ

ベースメッシュの作成が終わりました

blockMesh変数定義

blockMesh内で変数定義を行うことができます。

system/blockMeshDict

以下で変数定義を行っています。

変数定義した変数同士で演算を行うこともできます。

以上のような変数定義を使ってblockMeshを実行するとコンパイルからはじまるため少しだけ時間がかかりますが、モデル作成が楽でわかりやすくなるように上手く変数を定義しておくのが良いでしょう。

ファイルの説明

blockMeshによって生成されたファイルの簡単な説明を行います。
こちらの生成されたファイルは自身もあまり理解していない部分ではなりますし、普段意識する必要はないですが、OpenFOAMの理解のため書き記したいと思います。

メッシュは以下のようなセル要素で構成されています。
1つのセルに対して、

  1. 節点
  2. 面要素

があります。
節点は各座標とIDを持っており、面要素は節点IDで構成されています。

このような予備知識を持ったままファイルを眺めてみましょう。

constant/polyMesh/points

vectorFieldでメッシュの全ての点を定義
メッシュの全ての点の座標がリストとして定義されている。

constant/polyMesh/faces

pointsリスト中の点の位置を参照して、四つの点から面を構成。
vectorFieldにおいて定義したそれぞれの点から面を構成

constant/polyMesh/owner

どの面がどのセルに保有されているのかを定義。
(例)最初の3つの面はセル0に保有されている

constant/polyMesh/neighbour

どのセルがどの面と隣接しているセルなのかを保有しています。

constant/polyMesh/boundary

blockMeshで設定したメッシュ境界についての情報を含んでる。
※境界のパッチ名やパッチタイプは後述するOpenFOAMのユーティリティである「createPatch」を使うことで変更することができます。

続いて形状の特徴線の抽出を行います。

1 2 3 4 5
関連記事もどうぞ

COMMENT

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