decxsチュートリアル on CfdOF(2) snappyHexMesh

はじめに

DEXCSワークベンチ(DEXCS-WB)のDEXCS2024では、何とかsnappyHexMesh(SHM)にも対応したいと考えているが、ハック元であるCfdOFにおいてDexcsチュートリアルをSHMでメッシュ作成したらどうなるのか・・・調べてみた。

Table of Contents

まずはやってみる

先の記事で作成したDexcsチュートリアル用に再構築したモデルのメッシュコンテナにおいて、Mesh utility を❶「cfMesh」から❷「snappyHexMesh」に変更する。

そうすると、❸の赤枠で囲った部分が新たにメニューに加わり、snappyHexMeshの設定パラメタとして、

  • Point in mesh
  • No of cells between levels
  • Relative edge refinment
  • Edge detection

を指定するよう促される。Point in mesh 以外はデフォルト値をそのまま使えそうだが、Point in meshの値も「Search」ボタンを押せば自動で探してくれるようだ。

とりあえずこのまま❹「Write mesh case」以下cfMesh作成した時と全く同じ手順でメッシュ作成できた。

これもとりあえず「Paraview]で確認したメッシュ外観とチェックメッシュ結果を、以下にcfMeshで作成したものと対比して掲載しておく。

cfMesh SHM 

Mesh stats
points: 232198
faces: 674090
internal faces: 644256
cells: 220448


Max aspect ratio = 43.1038203379999 OK.
Minimum face area = 1.58702108954268e-06. Maximum face area = 0.0793436908293332. Face area magnitudes OK.
Min volume = 4.73722714834394e-09. Max volume = 0.0218234393078285. Total volume = 127.891483721544. Cell volumes OK.
Mesh non-orthogonality Max: 82.5410716770282 average: 13.3112147080959
*Number of severely non-orthogonal (> 70 degrees) faces: 77.
Non-orthogonality check OK.
<<Writing 77 non-orthogonal faces to set nonOrthoFaces
***Error in face pyramids: 1 faces are incorrectly oriented.
<<Writing 1 faces with incorrect orientation to set wrongOrientedFaces
***Max skewness = 5.79675377020383, 12 highly skew faces detected which may impair the quality of the results
<<Writing 12 skew faces to set skewFaces
Coupled point location match (average 0) OK.

Failed 2 mesh checks.
Mesh stats
points: 190691
faces: 506569
internal faces: 489345
cells: 159376


Max aspect ratio = 13.8859709808372 OK.
Minimum face area = 4.53661105948369e-06. Maximum face area = 0.107234939172893. Face area magnitudes OK.
Min volume = 4.4710773967466e-08. Max volume = 0.0224180323212859. Total volume = 127.83752381305. Cell volumes OK.
Mesh non-orthogonality Max: 64.9797548876519 average: 10.8427010820256
Non-orthogonality check OK.
Face pyramids OK.
Max skewness = 3.8287323119933 OK.
Coupled point location match (average 0) OK.

Mesh OK.

わかったこと、気になった点

とりあえずやってみてわかった結果は概ね、一般的に云われるところの両者の得失比較、すなわち、

  • レイヤー
    圧倒的に cfMesh が優れている.SHM では多くの箇所で欠損があるのに対し,cfMesh ではほとんど見つからない.
  •  生成メッシュ数
    細分化レベルの指定を同一に設定した場合に cfMesh の方が 2〜5 割程度多くなる.
  •  メッシュ品質
    SHM の方が良い.ただし,品質悪化部のレイヤーを欠損させることでこれを実現している.欠損させない設定では,cfMesh の方がまだ良い.

といったあたりがそのままあてはまって、まぁ、こんなものか・・・という反面、いくつか気になった点を列記しておく。

設定パラメタが物足りない

そもそもSHMのパラメタ設定方法について、Mesh utilty のプルダウンメニューを切り替えるだけで良いというのは嬉しいが、反面物足りなさも大きい。つまり、

  • マルチリージョン指定できない
  • エッジを個別に細分化指定できない

といったあたりである。

 

デフォルトパラメタも今一つ

また、全体外形エッジ部の局所的な欠落が気になって、GUIメニューのオプション(例えばEdge ditection の implicit/explicit)を変更してみたが、変化は無かった。これもかつての経験や、TreeFoamのSHM設定ツールを使用した場合にはそうなっていなかったので、CfdOFをDEXCS標準ツールとして採用するには、GUIメニューに現れないデフォルトパラメタの一部を変更したいところであり、引き続きデフォルトパラメタについて調査した。

パラメタのおさらい

ひとくちにSHMのパラメタといって、その全貌もよくわかっていなかった。色々調べたところ、OpenFOAM:User Guide のページにわかりやすく取りまとめたページがあったので、これをベースに、デフォルト値がどうなっているのかを整理した。その際に、CfdOFのデフォルト値に対して、TreeFoamのSHMメッシュツールでの値も比較参照できるようにした。

また、トップレベルエントリーとして、以下16項目あるが、

  1. castellatedMesh
  2. snap
  3. addLayers
  4. singleRegionName
  5. mergePatchFaces
  6. mergeTolerance
  7. keepPatches
  8. debug
  9. geometry
  10. Castellated mesh controls
  11. Snap controls
  12. Layer controls
  13. Mesh quality controls
  14. Debug flags
  15. Write flags
  16. Output flags

これらの全項目でない(ページ内リンクを使える項目のみ)である点、おことわりしておく。

Castellated mesh controls

Keyword Value type CfdOF TreeFoam
maxLocalCells
label
100000000
100000
maxGlobalCells
label
2000000000
2000000
minRefinementCells
label
maxLoadUnbalance
scalar
0.1
nCellsBetweenLevels
label
3
1
features
dictionary
features.file
string
features.level
label
features levels
scalar label
refinementSurfaces
dictionary

refinementSurfaces.<geometryName>

dictionary

refinementSurfaces.<geometryName>.level

label

refinementSurfaces.<geometryName>.regions

dictionary
resolveFeatureAngle
scalar
gapLevelIncrement
label
30
30
planarAngle
scalar
refinementRegions
dictionary
limitRegions
dictionary
locationInMesh
point
locatiosnInMesh
llist of (point word)
allowFreeStandingZoneFaces
boolean
TRUE
TRUE
faceZoneControls
dictionary
locationsOutsideMesh
list of points
((100 100 100))
handleSnapProblems
boolean
useTopologicalSnapDetection
boolean
interfaceRefine
boolean
nCellZoneErodeIter
label

snapControls

Keyword Value type CfdOF TreeFoam
nSmoothPatch
label
3
3
nSmoothInternal
label
tolerance
scalar
1
2
nSolveIter
label
100
30
nRelaxIter
label
5
5
detectNearSurfaceSnap
boolean
nFeatureSnapIter
label
10
10
implicitFeatureSnap
boolean
TRUE
FALSE
explicitFeatureSnap
boolean
FALSE
TRUE
multiRegionFeatureSnap
boolean
FALSE
nFaceSplitInterval
label
detectBaffles
boolean
releasePoints
boolean
stringFeatures
boolean
avoidDiagonal
boolean
concaveAngle
scalar
minAreaRatio
scalar
strictRegionSnap
boolean
baffleFeaturePoints
boolean

addLayersControls

Keyword Value type CfdOF TreeFoam
relativeSizes
boolean
TRUE
TRUE
nBufferCellsNoExtrude
label

0

0

nLayerIter
label
50
50
nRelaxedIter
label
additionalReporting
boolean
expansionRatio
scalar
1.0
1.0
finalLayerThickness
scalar
0.3
0.3
thickness
scalar
minThickness
scalar
0.1
0.1
layers
dictionary

layers.<patchName>

dictionary

layers.<patchName>.nSurfaceLayers

label

layers.<patchName>.expansionRatio

scalar

layers.<patchName>.finalLayerThickness

scalar

layers.<patchName>.firstLayerThickness

scalar

layers.<patchName>.thickness

scalar

layers.<patchName>.minThickness

scalar
nGrow
label

0

0

concaveAngle
scalar
featureAngle
scalar
120
90
mergePatchFacesAngle
scalar
maxFaceThicknessRatio
scalar
0.5
0.5
meshShrinker
word
solver
word
nSmoothSurfaceNormals
label
1
1
minMedialAxisAngle
scalar
90
90
minMedianAxisAngle
scalar
90
maxThicknessToMedialRatio
scalar
0.3
0.3
nSmoothNormals
label
3
3
nSmoothThickness
label
10
10
nMedialAxisIter
label
nSmoothDisplacement
label
layerTerminationAngle
scalar
slipFeatureAngle
scalar
30
nRelaxIter
label
3
5

Mesh quality controls

Keyword Value type CfdOF TreeFoam
maxNonOrtho
scalar
65
65
maxBoundarySkewness
scalar
20
20
maxInternalSkewness
scalar
4
4
maxConcave
scalar
80
80
minVol
scalar
1e-13
1e-13
minTetQuality
scalar
-1
1e-15
minArea
scalar
-1
-1
minTwist
scalar
0.01
0.02
minDeterminant
scalar
0.001
0.001
miniFaceWeight
scalar
0.05
0.05
minVolRatio
scalar
0.01
0.01
minTriangleTwist
scalar
-1
-1
minVolCollapseRatio
scalar
minFaceFlatness
scalar
relaxed
dictionary
nSmoothScale
label
4
4
errorReduction
scalar
0.75
0.75

こうやって眺めて見ると、CfdOFにしろTreeFoamのメッシュツールにせよ、組み込んでいないパラメタも多く存在し、SHM用のパラメタの多いことに驚かされる。組み込んでいないパラメタは多分、大勢に影響ないと思われるが・・・

SHMパラメタ変更結果

CfdOFとTrrFoamのSHMパラメタの相違部を、試行錯誤で変更した結果、外形エッジ部の欠落を解消しすることが出来た。以下にTreeFoamの結果と併せて掲載しておく。因みに、変更した(TreeFoamの値に合致させた)パラメタは、addLayersControl/featureAngle であった。

CfdOF(改) TreeFoam

Mesh stats
points: 190724
faces: 506743
internal faces: 489443
cells: 159432


Max aspect ratio = 14.2852 OK.
Minimum face area = 7.37847e-07. Maximum face area = 0.082732. Face area magnitudes OK.
Min volume = 3.74542e-08. Max volume = 0.022418. Total volume = 127.891. Cell volumes OK.
Mesh non-orthogonality Max: 64.9502 average: 10.8391
Non-orthogonality check OK.
Face pyramids OK.
***Max skewness = 13.4705, 3 highly skew faces detected which may impair the quality of the results
<<Writing 3 skew faces to set skewFaces Coupled point location match (average 0) OK.

Failed 1 mesh checks.
Mesh stats
points: 141166
faces: 360909
internal faces: 344481
cells: 111307


Max aspect ratio = 13.5655 OK.
Minimum face area = 9.14709e-06. Maximum face area = 0.138991. Face area magnitudes OK.
Min volume = 4.79693e-08. Max volume = 0.0274373. Total volume = 127.881. Cell volumes OK.
Mesh non-orthogonality Max: 64.7429 average: 12.3645
Non-orthogonality check OK.
Face pyramids OK.
Max skewness = 3.706 OK
. Coupled point location match (average 0) OK.

Mesh OK.

TreeFoamで最外周のメッシュがやや歪んでいるのは、ベースとしたblockMeshの設定に起因するものと考えられる。どちらもベースメッシュサイズを規定(本例では0.28としてある)すれば、全体寸法を読み取って、全体+余裕分をオーバーラップするblockMeshDictを作成してくれるが、余裕の持ち方に違いがあって、具体的なblockMeshDictパラメタの違いは以下の通りであった。

パラメタ CfdOF TreeFoam
xMin
-8.4
-8.4
xMax
2.4
2.52
yMin
-6.9
-7
yMax
-0.1
0
zMin
-3.2
-3.08
zMax
3.6
3.64
cellsX
39
39
cellsY
25
25
cellsZ
25
24

まとめ

  • Dexcsチュートリアル問題をCfdOFのSHMでメッシュ作成することが出来た。
  • CfdOFのSHM作成機能は、cfMeshで作成できるメッシュを、単にSHMでも作成できるというものでしかなかった。
  • CfdOFをDEXCSランチャーとして採用するには、デフォルトパラメタの変更も必要になる。
Share

コメントする

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

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