Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
20220217_球体周りの流れ抗力係数3_snappyHexMeshで球体周りのメッシュ作成
kamakiri1225
February 19, 2022
Science
0
160
20220217_球体周りの流れ抗力係数3_snappyHexMeshで球体周りのメッシュ作成
kamakiri1225
February 19, 2022
Tweet
Share
More Decks by kamakiri1225
See All by kamakiri1225
20220621_ParaView圧力時刻歴表示
kamakiri1225
0
32
ParaviewPython圧力時刻歴データスクリプト
kamakiri1225
0
53
20220617_ParaviewPython
kamakiri1225
0
74
FreeCAD障害物
kamakiri1225
0
120
20220423_オープンCAE関西_vtkFortran
kamakiri1225
1
170
20220220_球体周りの流れ抗力係数4_simpleFoamで球体周りの定常流れ
kamakiri1225
0
200
20220216_球体周りの流れ抗力係数2_blockMeshでベースメッシュ作成
kamakiri1225
0
180
20220216_球体周りの流れ抗力係数1_FreeCADで球体モデル作成
kamakiri1225
0
250
20220121_バスケットボール周りの流れ
kamakiri1225
0
260
Other Decks in Science
See All in Science
ウォンテッドリーにおける推薦システム開発事例 / recsys-in-wantedly-2021
yuya4
4
1.3k
Maybe it’s time to do something with all those 3D city models?
hugoledoux
0
780
深層学習による自然言語処理 輪読会#3 資料
tok41
0
260
Elix, CBI, 招待講演, ElixにおけるAI創薬と最新動向, 2021-10-26
elix
0
150
[勉強会資料メモ] Double/Debiased ML
masa_asa
0
190
(2013) Le problème des distances de Erdős
mansuy
0
110
CompilerGym CGO'22
chriscummins
0
220
時系列データ予測手法の宇宙天気予報への応用
hacarus
0
370
Bibliométrie & science ouverte
mlarrieu
0
450
Text Gestalt: Stroke-Aware Scene Text Image Super-Resolution
sansan_randd
1
940
実験ノートをどう取るべきか
rinabouk
PRO
1
1.7k
機械学習における評価指標~AUC&C-index~
taka88
0
290
Featured
See All Featured
Facilitating Awesome Meetings
lara
29
4k
Reflections from 52 weeks, 52 projects
jeffersonlam
337
17k
Designing for humans not robots
tammielis
241
23k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
4
500
The Web Native Designer (August 2011)
paulrobertlloyd
74
1.9k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
940
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
498
130k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
39
13k
Mobile First: as difficult as doing things right
swwweet
213
7.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
29
4.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
237
19k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
100
5.9k
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層あるか確認
おわり