OpenFOAM

【cfMesh入門】cfMeshを使った境界層メッシュの検討

こんにちは(@t_kun_kamakiri

前回の記事ではsnappyHexMeshを使って境界層メッシュの検討を行いました。

しかし、結論から言うとsnappyHexMeshでは境界層がきれいに入らず、これ以上手の施しようがありませんでした。

そこで、今回はcfMeshを使って前回時の記事と同じモデルで境界層について検討したいと思います。

本記事の内容
  • cfMeshでの境界層メッシュの設定方法
  • cfMeshでメッシュ作成の注意点

cfMeshでの基本的な設定方法は以下の記事に書きましたのでご参考ください。

cfMeshでの境界層設定について考えるため、本記事ではこのような形状の場合を考えます。
※形状に特に意味はありません。

後ほど面でのメッシュ再分割をしたいので、FreeCADで面に名前を付けておきました。

FreeCADを使ったモデル作成は動画を用意しましたので、再現したい方はこちらをどうぞ。

面に名前を付けた際にstlを掃き出す便利なマクロは以下の記事をご参考ください。

ParaViewを起動してみましょう。

単純な形状ですが太い円柱と細い円柱など、強弱があるためメッシュ再分割境界層をどのように入れるかが肝になりそうです。

  • OpenFOAMv2012(WSL2)
  • cfMesh(OpenFOAMv2012にインストール済)

cfMeshでのチュートリアルをコピー

cfMeshで対応のメッシュ生成のコマンドは以下のものがあります。

  • tetMesh
    テトラメッシュ(四面体メッシュ)
  • cartesian2DMesh
    四分木法による2Dメッシュ
  • cartesianMesh
    八分木法によるメッシュ
  • pMesh
    ポリヘドラルメッシュ

チュートリアルごとにフォルダがわかれていますが、設定項目は同じでどのチュートリアルから持ってきて使用しても良いです。
設定項目が多いチュートリアルを持ってくるのが使いやすいでしょう。

cfMeshのチュートリアルをコピーします。

フォルダ構成は以下のようになっています。

この中で使うのは「system/meshDict」だけです。

cfMeshの基本設定

「system/meshDict」の基本的な構成はこちらです。

デフォルトでは以下のようになっています。

system/meshDict

stlファイルは自身で用意したものを使いますので、前回作成した「model_m.stl」をコピーしてきます。

再度フォルダ構成を見ておきます。

model_m.stlが追加されただけです。

Case1:最大メッシュサイズと境界面メッシュサイズだけ指定

もっとも基本的な設定だけでcfMeshでメッシュ生成を行います。
指定するのは最大のメッシュと境界面のメッシュサイズのみ。

基本的にこれだけでメッシュ生成ができます。
ただし、maxCellSizeとboundaryCellSizeだけではΦ10の細い円柱の形状変化を表現できず、メッシュが生成されていません。

少し修正が必要ですね。

Case2:最大メッシュサイズの修正

最大のメッシュサイズを変えることで形状変化が大きい部分のメッシュも生成してくれます。

メッシュは形状変化をとらえてメッシュ生成してくれています。
しかし、めちゃくちゃメッシュが細かくなってしまいました。でも、きれいに境界層メッシュが入っていますね。
今は、「maxFirstLayerThickness 0.001;」なので境界層の1層目が1mmなのでとても細かい設定です。

Case3:最小のメッシュサイズも決める

最大メッシュサイズだけの指定だと細かい形状変化の部分でメッシュが生成されません。
それを防ぐために最小のメッシュサイズのデフォルト値も決めておきます。

「minCellSize 0.001;」を指定します。

minCellSizeを指定すると最小のメッシュを判定してくれますが、所々ムラがあるメッシュになりました。

境界層も入っていますがかなりムラがある結果になりました。

Case4:特定の境界面のメッシュサイズを指定する

「minCellSize 0.001;」と「boundaryCellSize 0.01;」などを設定すると意図しない面でminCellSizeによって細かいメッシュが生成されるときがあります。
個人的には特定の境界面でのメッシュサイズは個別で決めた方が思った結果になってくれるように感じます。なので、minCellSizeは設定しないようにしています。
boundaryCellSizeは境界のメッシュサイズのデフォルト値ですので、残しておくと良いでしょう。
もし、特定の面のメッシュサイズを変えたい場合は「localRefinement」で指定すると良いです。

 

もう少し境界面のメッシュサイズを調整します。

これでどうでしょうか。

表面のメッシュは良いのですが、境界層メッシュが大きすぎたりしますね。 形状変化が比較的大きいΦ40からΦ10のつなぎ目では境界層のメッシュサイズが極端に変わっているのがわかります。

特定面のメッシュサイズはlocalRefinementのcellSizeでメッシュサイズの絶対値をしている方法もありますが、additionalRefinementLevelsとして分割数を指定する方法もあります。

1 2

COMMENT

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