snappyHexMesh addLayersControls

OpenFOAM-v.2.0 以降、snappyHexMeshがフィーチャー対応になったので、DEXCS for OpenFOAM の標準モデル(DEXCSフォントの周りの流れ解析)でも、当然これを使えるようにsnappyHexMeshDictのパラメタを変更しています。基本的に旧ヴァージョンと共通する部分は旧ヴァージョンで使っていた値をそのまま流用するというポリシーでやってきましたが、このままでは、レイヤーメッシュの作成が出来ないということが判明。

DEXCS for OpenFOAM の標準モデル(DEXCSフォントの周りの流れ解析)

  • https://ocse2.com/wp-content/uploads/2011/09/00.png
  • z方向の中央断面で比較してみます

OF-2.0.x

  • https://ocse2.com/wp-content/uploads/2011/09/01.png
  • 一見、レイヤーと見間違えそうなセルもありますが、単に断面位置の取り方でそのように見えているだけです。ちなみにsnappyHexMesh実行を実行した時の、ログの最後のあたり・・・
    Writing 0 added cells to cellSet addedCells 
    Writing 0 faces inside added layer to faceSet layerFaces
    Layer mesh : cells:133143  faces:414528  points:149474

    となっていて、最終的にaddedCellsが0、つまり、レイヤは挿入できなかったという事です。

一方、OF-1.7.xですが、こちらは上位ヴァージョンのDictをそのまま使ってもエラーにならない(不必要なものは無視されるだけ?)なので、上で使ったsnappyHexMeshDictをそのままでメッシュ作成してみました。

OF-1.7.x

  • https://ocse2.com/wp-content/uploads/2011/09/021.png
  • フィーチャーエッジは効かないので、形状のでこぼこ感はお馴染みの通りですが、レイヤーもちゃんと挿入されています。ログを見ても確認できます。
    Writing 8874 added cells to cellSet addedCells
    Writing 4449 faces inside added layer to faceSet layerFaces
    Layer mesh : cells:142017  faces:443361  points:160647

で、この違いは一体何だ?・・・ということで、あれこれ試行錯誤して、ようやく原因がわかりました・・・nGrow というパラメタでした。

nGrowとは

Number of layers of connected faces that are not
grown if points get not extruded; helps conver-
gence of layer addition close to features
点がなければ生成されない面に結合されたレイヤの数.輪郭
に近いレイヤ追加の収束に役立つ.

和文マニュアルの日本語訳が今ひとつ意味不明でしたが、

レイヤを生成出来なかった点につながる面の数で、この間はレイヤーを生成しない

ということだと思います・・・と書いてみたところで、それでも意味不明だと言われそうですが(・_・;)

これまではnGrow=1 としてきましたが、nGrow=0 とすると

OF-2.0.x, nGrow=0

  • https://ocse2.com/wp-content/uploads/2011/09/031.png

となって、一応それなりのレイヤが挿入されることになりました。ログを見ても、

Writing 4468 added cells to cellSet addedCells
Writing 0 faces inside added layer to faceSet layerFaces
Layer mesh : cells:137611  faces:427756  points:153796

addedCellsの数(4468)がOF-1.7.xの場合(8874)に比べてかなり減っていますが、フィーチャーエッジによる形状フィッティングが効いた反面、境界面に接するセル形状が複雑になって、レイヤを生成できなかった面が増えた為だろうと推察されます。

ちなみに、OF-1.7.xでは、nGrow=1の場合と全く変化がありませんでした。

どうも、OF-1.*では、このパラメタが機能していなかったみたいで、OF-2.0以降、ちゃんと機能するようになった、というのが本当のところでないかと想像しています。

但し、nGrow=1 とした場合に、「レイヤを生成出来なかった点につながる面の数」として、削除されたレイヤー数が多すぎるんでないかという感触であり、「ちゃんと」効いているのかどうかは疑問が残っています。

因みにOF-2.0.xに標準搭載のチュートリアルケースを調べてみましたが、すべてnGrow=0となっていたので、これを変更したもので比較してみました。

iglooWithFrides で比較

  • https://ocse2.com/wp-content/uploads/2011/09/041.png

nGrow=0 (OF-2.0.x)

  • https://ocse2.com/wp-content/uploads/2011/09/051.png
Writing 6871 added cells to cellSet addedCells
Writing 2368 faces inside added layer to faceSet layerFaces
Layer mesh : cells:20035  faces:66605  points:27311

nGrow=1 (OF-2.0.x)

  • https://ocse2.com/wp-content/uploads/2011/09/061.png
Writing 3140 added cells to cellSet addedCells
Writing 357 faces inside added layer to faceSet layerFaces
Layer mesh : cells:16304  faces:55047  points:23203

nGrow=0, 1 (OF-1.7.x)

  • https://ocse2.com/wp-content/uploads/2011/09/071.png
Writing 6602 added cells to cellSet addedCells
Writing 2243 faces inside added layer to faceSet layerFaces
Layer mesh : cells:19766  faces:65766  points:27010
Share

コメントする

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください