Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20220217_球体周りの流れ抗力係数3_snappyHexMeshで球体周りのメッシュ作成
Search
kamakiri1225
February 19, 2022
Science
1.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20220217_球体周りの流れ抗力係数3_snappyHexMeshで球体周りのメッシュ作成
kamakiri1225
February 19, 2022
More Decks by kamakiri1225
See All by kamakiri1225
【技術書典20】OpenFOAM(自宅で深める流体解析)流れと熱移動(2)
kamakiri1225
0
570
【技術書典18】OpenFOAM 自宅で深める流体解析の基礎と応用 (1)
kamakiri1225
0
550
OpenRadiossSafetyダミーモデルの紹介
kamakiri1225
0
360
20230518数値流体解析の基礎
kamakiri1225
0
110
20241109_OpenRadiossを用いたエアバッグ 解析のモデル構築
kamakiri1225
0
920
【技術書典17】OpenFOAM(自宅で極める流体解析)2次元円柱まわりの流れ
kamakiri1225
0
3.2k
20201205_final_report_水の物性_光の速度計算.pdf
kamakiri1225
0
76
20201208_final_report_光の速度計算.pdf
kamakiri1225
0
53
第100回オープンCAE勉強会@関西
kamakiri1225
0
500
Other Decks in Science
See All in Science
機械学習 - pandas入門
trycycle
PRO
0
680
摂理と合理の肉体改造 — AI時代の減量を支える観測・制御・継続
kiyoshi
0
3k
機械学習 - ニューラルネットワーク入門
trycycle
PRO
0
1.2k
コーヒー豆様核 (Coffee-bean nuclei) における形態学的サブタイピングと精選・焙煎特性の同定
jagupath
PRO
0
140
データベース09: 実体関連モデル上の一貫性制約
trycycle
PRO
0
1.8k
データベース03: 関係データモデル
trycycle
PRO
1
790
ゲームと人工知能
miyayou
0
120
Cross-Media Technologies, Information Science and Human-Information Interaction
signer
PRO
3
32k
データベース06: SQL (3/3) 副問い合わせ
trycycle
PRO
1
1.1k
(CVPR2026) Back to Basics: Let Denoising Generative Models Denoise
shumpei777
0
300
チュートリアル:世界モデル
hf149
0
2.1k
俺たちは本当に分かり合えるのか? ~ PdMとスクラムチームの “ずれ” を科学する
bonotake
3
2.6k
Featured
See All Featured
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
210
Designing for Performance
lara
611
70k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.8k
The Spectacular Lies of Maps
axbom
PRO
1
910
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
530
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Docker and Python
trallard
47
4.1k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
240
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Scaling GitHub
holman
464
140k
Building AI with AI
inesmontani
PRO
1
1.1k
Statistics for Hackers
jakevdp
799
230k
Transcript
【OpenFOAM球体周りの抗力係数(3)】 snappyHexMeshで球体周りのメッシュ作成 2022年2月18日
バスケットボールのモデル作成 • FreeCAD メッシュ作成 • blockMesh • snappyHexMesh 解析設定 •
OpenFOAM 計算実行 • OpenFOAM 結果処理 • Paraview • PyFoam プリ処理 ソルバ ポスト処理 Python FreeCAD 0.19 Paraview 5.9.0 OpenFOAM v2006 Python 3.8.10(Jupyter lab) WSL2
今回のモデルは「20220216_sphere_coff_blog」というフォルダの中に作成します。 20220216_sphere_coff_blog model orgCase resultDir ←今回はこちらに球体周りのメッシュ作成 フォルダ構成
$mkdir constant/triSurface $cp -r ../model/ball.stl constant/triSurface/ snappyHexMeshDictをコピー $cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/motorBike/system/snappyHexMeshDict
./system/ (1) 「pitzDaily 」のチュートリアルにはsnappyHexMeshの設定ファイル がないため、 Terminal上で以下のように打ってls別のチュートリアル からファイルをコピーします。 「ls」コマンドでファイルがコピーされたかを確認できます。 (2) 【OpenFOAM球体周りの抗力係数(1)】FreeCADで球体モデ ルを作るで作成した球体モデルを使うため、「constant」 フォルダの中に「triSurface」というフォルダを作成し球体 モデル(ball.stl)を保存します。
フォルダ構成 ├── 0 │ ├── U │ ├── epsilon │
├── k │ ├── nut │ ├── old │ │ ├── nuTilda │ │ └── omega │ └── p ├── constant │ ├── transportProperties │ └── turbulenceProperties └── system ├── blockMeshDict ├── controlDict ├── fvSchemes ├── fvSolution └── snappyHexMeshDict ※treeコマンドがインストールされていない 場合はTerminalで「sudo apt install tree」と 打ってインストールしてください。 $tree (0)Terminal上で 「tree」と打ってフォルダ構成を確認します。 速度ベクトル 乱流消失率 乱流エネルギー 渦粘性係数 使わない 圧力場 物性値の設定 乱流モデルの指定 ベースメッシュの設定 実行制御 離散化スキームの設定 時間解法やマトリックスソルバの設定 メッシュ設定 ※blockMesh時に生成され たdynamicCodeなどは載せ ていません
次のような手順でメッシュを作成する。 STLなどのサーフェスを用意。 blockMeshでベースとなる メッシュを作成。 snappyHexMeshで境界近傍を 六面体で細分化する。図では 一部分だけ実施した。 サーフェイス全体に対 して行う。 領域外になる部分のセ
ルを取り除く。 領域外に飛び出た部分をサー フェイスに合わせる ("snap") snappyHexMeshの仕組み
snappyHexMeshの設定 system/snappyHexMeshDict を開いて編集を行う castellatedMesh true; snap true; addLayers true; geometry
{ ball.stl { type triSurfaceMesh; name ball; regions { ball { name ball; } } } box0 { type searchableBox; min (-2.0 -0.6 -0.6); max (4.0 0.6 0.6); } box1 { type searchableBox; min (-1.0 -0.41 -0.4); max (2.0 0.4 0.4); } } 境界層 境界の名前 境界層で使う (3)境界の名前を設定 stlファイル (4)メッシュ細分化領域の指定 ball.stl box0 box1 ball.stl stlファイル内の名前 に対応させる
castellatedMeshControls { maxLocalCells 100000; maxGlobalCells 2000000; minRefinementCells 10; maxLoadUnbalance 0.10;
nCellsBetweenLevels 3; features(); refinementSurfaces { ball { level (0 0); patchInfo { type wall; } } } system/snappyHexMeshDict を開いて編集を行う snappyHexMeshの設定 box0 box1 ball.stl (5)球体の境界面タイプを指定今回 は壁にしたいのでwallとする
// Resolve sharp angles resolveFeatureAngle 30; refinementRegions { box0 {
mode inside; levels ((3 2)); } box1 { mode inside; levels ((3 3)); } } locationInMesh (2.0 0.0 0.0); allowFreeStandingZoneFaces true; } system/snappyHexMeshDict を開いて編集を行う snappyHexMeshの設定 box0 box1 ball.stl ベースメッシュ レベル1 レベル2 レベル3 (6)メッシュの再分割 レベルの指定 再分割レベル 再分割レベル メッシュ生成部分 の指定 (7)球体周りにメッシュ作 成するため、球体より外側 の座標を指定
system/snappyHexMeshDict を開いて編集を行う snappyHexMeshの設定 // Settings for the snapping. snapControls {
nSmoothPatch 3; tolerance 2.0; nSolveIter 30; nRelaxIter 5; nFeatureSnapIter 10; implicitFeatureSnap false; explicitFeatureSnap true; multiRegionFeatureSnap false; } addLayersControls { relativeSizes true; layers { "ball" { nSurfaceLayers 5; } } expansionRatio 1.0; finalLayerThickness 0.3; minThickness 0.1; nGrow 0; featureAngle 60; slipFeatureAngle 30; nRelaxIter 3; nSmoothSurfaceNormals 1; nSmoothNormals 3; nSmoothThickness 10; maxFaceThicknessRatio 0.5; maxThicknessToMedialRatio 0.3; minMedianAxisAngle 90; nBufferCellsNoExtrude 0; nLayerIter 50; } (8)境界層メッシュを作成 する面の指定。 今回は5層にする。 レイヤーメッシュ 物体表面では流れが遅くなり、表面か ら離れるにしたがって流れが速くなる。 また、表面に沿って流れが分布される ため流体の速度変化をとらえるための メッシュの層を挿入することが推奨さ れる。
system/snappyHexMeshDict を開いて編集を行う snappyHexMeshの設定 meshQualityControls { #include "meshQualityDict" } cp -r
$FOAM_TUTORIALS/incompressible/simpleFoam/motorBike/system/meshQualityDict ./system/ (9)「system」の中の「meshQualityDict」ファイル読み込む。 meshQualityDictは別のチュートリアルからコピーしてくる。 Terminal上で以下のように打って、systemにコピーする。 // Include defaults parameters from master dictionary #includeEtc "caseDicts/mesh/generation/meshQualityDict" //- minFaceWeight (0 -> 0.5) minFaceWeight 0.02; vi $FOAM_ETC/caseDicts/mesh/generation/meshQualityDict さらにincludeしているので下記のように してファイルの中身を確認できる。 ここでは割愛。 system/meshQualityDict
並列計算の設定 cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/motorBike/system/decomposeParDict ./system/ system/decomposeParDict を開いて編集を行う numberOfSubdomains 4; method
scotch; //method hierarchical; // method ptscotch; simpleCoeffs { n (4 1 1); delta 0.001; } hierarchicalCoeffs (10)並列数を4にし、methodを「scotch」に変更。 scotchにすると適当に分割してくれるので methodをscotchにしたのでこ ちらは使っていない (11)ファイル名が「0」だとsnappyHexMeshでエ ラーが出るため「0.org」に変更しておく。 (9)「system」の中の「decomposeParDict 」がないため、別のチュートリアルから コピーしてくる。Terminal上で以下のように打って、systemにコピーする。
snappyHexMeshの実行 decomposePar $mpirun -np 4 snappyHexMesh -parallel $reconstructParMesh -latestTime -mergeTol
1e-6 $rm -r processor* (12)計算業域の分割を行う 並列数が4なのでフォルダが4つに分解されている ことを確認 (13)snappyHexMeshの実行 (14)分割した計算領域を結合 (15)分割したフォルダは使わないので削除 (15)までの操作後のフォルダ内
Paraviewで結果を確認 (16)Praviewを起動して「post.foam」を読み 込み「Apply」ボタンを押す (16)断面を見たいので「clip」を選択 Z軸方向の断面を見るため、「Z Normal」 を選択して「Apply」ボタンを押す 断面がこのようになっていればOK 境界層メッシュも5層あるか確認
おわり