こんにちは(@t_kun_kamakiri)
本記事では、以下の内容のように球体周りの流れをOpenFOMAでシミュレーションするための解説をしていきます。
複数回に分けて記事を書いていくため流体解析に興味があり、自宅PCで解析してみたいという方は最後までお付き合いください_(._.)_
本記事は球体周りの流れを解析するにあたって、球体のモデルを作成するにあたってベースとなるメッシュをOpenFOAMのユーティリティのblockMeshを使って作成する手順を解説します。
今回作成するベースメッシュはこんな感じです。
ただ、OpenFOAMで球体周りの流れをシミュレーションするだけではなく、文献値がある抗力係数との比較もおこなうことで数値シミュレーションの妥当性検証も行います。
今のモデルだと高レイノルズ数領域で厳しくなりますね。 https://t.co/MrIWrC6FM2 pic.twitter.com/2nIrm4ZC8I
— カマキリ🐲Python頑張る昆虫 (@t_kun_kamakiri) February 10, 2022
高レイノルズ数領域はノートPCでの計算負荷が大きいため再現することを断念しましたが、おおむね広い範囲でレイノルズ数と抗力係数の傾向をとらえています。
本記事のシリーズは流体解析のスペシャリストを対象にしておらず、むしろ初学者でOpenFOMAを触り始めた人が「まずは自身で触りながら解析をしたい」と思ったときに使う題材としたいと考えています。
こんな方はどうぞ
- 商用流体解析ソフトは触ったことがあり境界条件の意味などの説明は必要ない方
(CFD歴1か月以上) - Linuxでターミナルを立ち上げてCUI上でディレクトリ間を移動できる方
- 上記の経験はないが資料をもとに自分でコツコツやることが出来て分からないことがあっても心を折られない方
逆にこんな方は向いていないかもしれません
- 1~10までわかりやすく教えてもらいたい方
- 自分の質問には全部答えてほしい方
- 自分で資料などを見て勉強する気はない方
- 進行に間違いがあったときに気分が悪くなる方
過去にXsimというWeb上で解析設定が行えるサービスを使って球体周りの流れを解析するという記事をアップしました。
本記事よりももっと「ポチポチ」とボタンを押すだけでかいせきができるので不安な方はこちらの記事から始めてください。
使用環境
- FreeCAD0.19(Windows11)
- Paraview5.19(Windows11)
- OpenFOAMv2006(WSL2)
- Python 3.8.1(WSL2)
OpenFOAMとPythonはWSL2で行い、モデル作成(FreeCAD)と可視化(Paraview)はWindows上にインストールして使用しています。
blockMeshでベースメッシュを作成
今回はこちらの寸法でメッシュ作成します。
こちらの資料の手順に従えば、メッシュ作成後は以下のようになります。
これでベースメッシュができました。
今回編集したblockMeshDictはこちらです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v1912 | | \\ / A nd | Website: www.openfoam.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object blockMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // scale 1; xmin -4.0; xmax 7.0; ymin -2; zmin -2; ymax #calc "-1.0*$ymin"; zmax #calc "-1.0*$zmin"; vertices ( ($xmin $ymin $zmin) //0 ($xmax $ymin $zmin) //1 ($xmax $ymax $zmin) //2 ($xmin $ymax $zmin) //3 ($xmin $ymin $zmax) //4 ($xmax $ymin $zmax) //5 ($xmax $ymax $zmax) //6 ($xmin $ymax $zmax) //7 ); blocks ( hex (0 1 2 3 4 5 6 7) (46 16 16) simpleGrading (1 1 1) ); edges (); boundary ( XMin { type patch; faces ( ( 7 3 0 4) ); } XMax { type patch; faces ( ( 5 1 2 6) ); } YMin { type patch; faces ( ( 4 0 1 5) ); } YMax { type patch; faces ( ( 6 2 3 7) ); } ZMin { type patch; faces ( ( 0 1 2 3) ); } ZMax { type patch; faces ( (4 5 6 7) ); } ); |
次回はOpenFOAMのsnappyHexMeshを使って球体周りのメッシュや境界層を作成します。
参考書
PENGUINさんサイトを体系的に学べる書籍となっています。ネット記事でも十分勉強できるのですが、OpenFOAMの初学者でOpenFOAMをインストール済みであれば一冊持って置き、体系的に学ぶのが良いでしょう。
あとは初心者向けに丁寧に解説がされているこちらの書籍もお勧めです。最後の章にはオーバーセットメッシュ(重合メッシュ)の機能を使った解析を最後まで丁寧に解説しているので挫折することはないでしょう。