OpenFOAM

【OpenFOAM】円筒形状の異なるメッシュの境界を結合する

こんにちは(@t_kun_kamakiri

本記事では異なるメッシュの境界を結合する方法について解説します。
メッシュの結合には、OpenFOAMで用意されている以下のユーティリティを使います。

  1. mergeMesh:2つのメッシュ情報を合体する
  2. stitchMesh:2つの境界を結合する

円筒の場合

OpenFOAM-v2212(WSL)

モデルの準備

ベースとなる円筒モデルは下記からダウンロードできます。

モデルの簡単な説明をしておきます。

blockMeshで円筒モデルを作成しています。

system/blockMeshDict

 

層流と乱流の速度分布の違いを見るために、助走区間の距離を考慮してモデルを作っています。助走区間は層流において十分に発達するまでの距離が長いので、大きくとる必要があります。

乱流において
乱流状態と同じモデルにするために$Re=4000$での乱流状態での助走区間は$d=20$mmとすると$\frac{L}{d}=10$より、$L=200$mmとなります。

層流において
助走区間の距離$L=200$mmとすると$\frac{L}{d}=0.05Re$よりレイノルズ数$Re=200$なります。念のため助走区間をもっと短くするためにレイノルズ数を小さくして$Re=100$にして解析を行います(この方がより層流側の流れになるため理論値と一致した)。

これによりモデルの円筒の長さは最低200mmにすれば良いことがわかります。
層流の場合の円筒内の流れの近似式はこちらです。

\begin{align*}
u=2u_{b}\bigg(1-\big(\frac{r}{R}\big)^2\bigg)
\end{align*}

層流の近似式はOpenFOAMでの結果と良い一致を示しています。

フォルダを準備

解析を行うにあたって以下のようにmesh001とmesh002という名前のフォルダを準備します。

 

mesh001(左側)

blockMeshを以下に変えます。

system/blockMeshDict

z方向の分割数を100、z方向の長さを100(mm)に変更しています。

blockMeshを実行してメッシュを作成します。

ParaViewで結果を確認しましょう。

次に、mesh002フォルダに移動してmesh001とは異なるメッシュを作成します。

mesh002(右側)

mesh002はmesh001と比べて分割数を大きくするようにします。

system/blockMeshDict

こちらのメッシュはmesh001とz=100(mm)でつなぐため、z方向に100mm平行移動する必要があります。
メッシュを移動させるのは「transformPoints 」を使えば良いのですが、使い方がわからないのでhelpで確認します。

z方向に100(mm)移動させるには以下のようにします。

では、ParaViewで確認してみましょう。

ParaViewでmes001とmesh002を重ねてみます。mesh001とmesh002はまだ別のフォルダにメッシュ情報がある状態ですので、次にmesh001とmesh002を合体させます。

mesh001とmesh002を合体(mergeMesh)

では、mesh001とmesh002のメッシュを合体させましょう。
ひとつ上の階層にフォルダ移動して、

フォルダが以下のように見えていることを確認します。

mesh001をコピーしておきます。

以下のコマンドでメッシュ情報を合体させます。

メッシュ情報を合体させただけですので、つなぎ目はつながっていません。

メッシュを結合する(stitchMesh)

では、境界を結合させます。

まずは、先ほどの合体させたメッシュをコピーします。メッシュの結合は「stitchMesh001_002」フォルダで行うことにします。

フォルダを移動して、

以下の下準備をします。

境界条件ファイルを0/oldに移動させる(0, k, p…の境界の名前がboundaryと一致していないのでエラーになるため)

では、「outlet_inlet」面と「inlet_outlet」面を結合させます。

polyMesh/boundary

「outlet_inlet」の面は0になっていますが、「inlet_outlet」の面の数は120になっています。完全につながると面の数は両方0になるんですが、うまくつながらなかったようです。

間を強引につないでいますね。

例えばわかりやすく「mesh002」のz方向にz=105mm平行移動を以下のようにして境界面を結合させてみます。

outlet_inletが残っていますが、どちらかというとsideWallの一部になっているような感じですね。

モデルの作り方を変える

mesh002のメッシュからやり直します。
mesh002のblockMeshで生成後にz方向への平行移動は1mmとします。

あとは、mesh001のメッシュをmergeMesh001_002に移して、mesh001とmesh002を再度合体させ、合体させたmergeMesh001_002のメッシュをstitchMesh001_002にコピーしてから、stitchMeshを実行します。

※0フォルダに余計なファイルがある場合はとエラーになるので消してください。

相変わらず「inlet_outlet」面は残りますが壁条件として解析すればいいのではないかと思います。

直方体の形状ならどうなるか(結合できるか)

円筒形状だとstitchで結合できないサーフェスができましたが、以下のような直方体ならどうでしょうか。

円筒のときと同じ流れでメッシュを結合します。

 

どうやら直方体の場合はうまく面倒が結合しているみたいです。

まとめ

今回は異なるメッシュでの境界面の結合を試みましたが、円筒の場合だと上手く両方の面が消えてくれず残ってしまいました。しかし、直方体の場合は上手く境界の両方の面が消えて結合されました。

円筒の場合のような残った面は側面の面に変わっているようなので、壁条件として解析すれば円筒内流れとしては問題ないのではないかと思います。

気になるようでしたらmergeMeshしたあとに「outlet_inlet」と「inlet_outlet」面は周期境界 (格子の切り方が違う2面をつなぐ Cyclic Arbitrary Mesh Interface (cyclicAMI)タイプ)で設定した方が良いかもしれません。

次回、今回結合させたメッシュで円筒内の流れを解析してみます。
stitchMeshでつながない場合と違いが出るのか確かめます。

おすすめ参考図書

☟こちらは、OpenFOAMの日本語書籍として重宝しているわかりやすい参考書だと思います。

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

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

3,520円(11/21 07:56時点)
Amazonの情報を掲載しています

☟こちらもOpenFOMの古いバージョンでの和訳になります。さすがにこちらはバージョンに対する日本語でのケアはしていないので、OpenFOAMに慣れている方は購入しても良いかと思います。僕は「日本語でまとまっている内容」なので少し重宝しています。

OpenFOAMプログラミング

OpenFOAMプログラミング

Mari´c,Tomislav, H¨opken,Jens, Mooney,Kyle
8,250円(11/21 14:43時点)
Amazonの情報を掲載しています

☟以下に、もっと初心者向けの同人誌を紹介しておきます。
初心者は「ってか、まずどうやってOpenFOAMをインストールするの?」というところからつまずきがちです。
そんな時は、以下の書籍をおすすめします。

改訂新版 OpenFOAMの歩き方 (技術の泉シリーズ(NextPublishing))

改訂新版 OpenFOAMの歩き方 (技術の泉シリーズ(NextPublishing))

川畑 真一
2,376円(11/21 18:53時点)
発売日: 2022/04/15
Amazonの情報を掲載しています

インストール方法とチュートリアルで流体解析を体験・・・ちょっと高度な解析まで解説があります。著者曰くOpenFOAMのバージョンの追跡を行いながら、書籍をアップデートするようなので安心ですね。

関連記事もどうぞ

COMMENT

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