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
460
【技術書典18】OpenFOAM 自宅で深める流体解析の基礎と応用 (1)
kamakiri1225
0
480
OpenRadiossSafetyダミーモデルの紹介
kamakiri1225
0
320
20230518数値流体解析の基礎
kamakiri1225
0
110
20241109_OpenRadiossを用いたエアバッグ 解析のモデル構築
kamakiri1225
0
870
【技術書典17】OpenFOAM(自宅で極める流体解析)2次元円柱まわりの流れ
kamakiri1225
0
2.9k
20201205_final_report_水の物性_光の速度計算.pdf
kamakiri1225
0
66
20201208_final_report_光の速度計算.pdf
kamakiri1225
0
45
第100回オープンCAE勉強会@関西
kamakiri1225
0
470
Other Decks in Science
See All in Science
なぜエネルギーは保存する? 〜自由落下でわかる“対称性”とネーターの定理〜
syotasasaki593876
0
180
20260220 OpenIDファウンデーション・ジャパン ご紹介 / 20260220 OpenID Foundation Japan Intro
oidfj
0
360
あなたに水耕栽培を愛していないとは言わせない
mutsumix
1
340
白金鉱業Vol.21【初学者向け発表枠】身近な例から学ぶ数理最適化の基礎 / Learning the Basics of Mathematical Optimization Through Everyday Examples
brainpadpr
1
750
Physical AIを支えるWeights & Biases
olachinkei
1
370
白金鉱業Meetup_Vol.20 効果検証ことはじめ / Introduction to Impact Evaluation
brainpadpr
2
1.9k
人生を変えた一冊「独学大全」のはなし / Self-study ENCYCLOPEDIA: The Book Which Change My Life #独学大全 #EM推し本
expajp
0
160
不動産業界における業界特化のデータ整備とAI活用 ─Vertical DataとVertical AI─
estie
1
540
医療 LLM ベンチマークの現在地:多面的評価 と日本ローカライズ
analokmaus
1
500
ダメな自分の育て方―性格タイプの「劣等機能」から理解するニガテ克服術
ppillc
0
150
Inside the Mind of an LLM
baggiponte
0
180
イロレーティングを活用した関東大学サッカーの定量的実力評価 / A quantitative performance evaluation of Kanto University Football Association using Elo rating
konakalab
0
270
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Automating Front-end Workflow
addyosmani
1370
210k
Designing for Performance
lara
611
70k
sira's awesome portfolio website redesign presentation
elsirapls
0
280
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
850
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
160
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
390
Code Review Best Practice
trishagee
74
20k
The SEO identity crisis: Don't let AI make you average
varn
0
490
A Modern Web Designer's Workflow
chriscoyier
698
190k
30 Presentation Tips
portentint
PRO
1
320
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層あるか確認
おわり