こんにちは(@t_kun_kamakiri)
前回の記事で2つの異なるメッシュのmesh001とmesh002の境界を結合するという内容を書きました。
円筒形状だと元のの境界の面が残ってしまい、境界でうまくつながっているのかどうかよくわからない状態になってしまいました。
いちおう節点はつながっているようなので、この結合した状態で円筒内の流れを解析したいと思います。
異なるメッシュを境界で結合させたモデルで円筒内の流れを解析
OpenFOAM-v2212(WSL)
モデルの準備
前回の記事で作成したモデルを修正する必要があります。
まずは、モデルをコピーします。
1 | cp -r stitchMesh001_002 stitchMesh001_002_laminar |
そして、モデルの状態を説明しておきます。
mesh001で作ったモデルのoutlet_inletとmesh002で作ったモデルのinlet_outletをstitchMeshで結合したのですが・・・
constant/polyMesh/boundary
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 | 5 ( sideWall { type wall; inGroups 1(wall); nFaces 18000; startFace 1677679; } inlet { type patch; nFaces 1125; startFace 1695679; } outlet_inlet { type patch; nFaces 0; startFace 1696804; } inlet_outlet { type patch; nFaces 120; startFace 1696804; } outlet { type patch; nFaces 4500; startFace 1696924; } ) |
inlet_outletの面が120個残っている状態です。
とはいえ、inlet_outletは側面のメッシュの状態となっているので、境界条件として壁条件を与えれば解析ができるではないかと思われます。
境界面の条件の修正
メッシュ情報を修正します。
まずは、outlet_inletの面は0なので消す必要があります。
手動で以下を消しても良いです。
constant/polyMesh/boundary
1 2 3 4 5 6 | outlet_inlet { type patch; nFaces 0; startFace 1696804; } |
createPatchを使っても良いです。
例えば以下のファイルをsystemに準備します。
system/createPatchDict
1 2 3 4 5 6 7 8 9 10 | // Do a synchronisation of coupled points after creation of any patches. // Note: this does not work with points that are on multiple coupled patches // with transformations (i.e. cyclics). pointSync false; // Patches to create. patches ( ); |
そして以下のコマンドで、
1 | createPatch -overwirite |
constant/polyMesh/boundary
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 | 4 ( sideWall { type wall; inGroups 1 ( wall ); nFaces 18000; startFace 1677679; } inlet { type patch; nFaces 1125; startFace 1695679; } inlet_outlet { type wall; nFaces 120; startFace 1696804; inGroups 1 ( wall ); } outlet { type patch; nFaces 4500; startFace 1696924; } ) |
このようにoutlet_inlet面の情報が消えます。
そして、inlet_outletは境界条件として壁条件を与えないといけないので、changeDictionaryDictを使います。
system/changeDictionaryDict
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 | boundary { inlet_outlet { type wall; inGroups 1(wall); } } U { boundaryField { inlet_outlet { $sideWall; } } } p { boundaryField { inlet_outlet { $sideWall; } } } k { boundaryField { inlet_outlet { $sideWall; } } } omega { boundaryField { inlet_outlet { $sideWall; } } } nuTilda { boundaryField { inlet_outlet { $sideWall; } } } nut { boundaryField { inlet_outlet { $sideWall; } } } |
これinlet_outletの境界条件はsideWall(壁条件の境界面)と同じ設定になりました。
円筒内流れの解析
では、メッシュと境界条件ができたので解析を実行します。
今回は↓こちらの記事で書いた層流・乱流の2つの条件で解析をします。
粘性係数でレイノルズ数を変えることで層流状態と乱流状態を作っています。
simpleFoamソルバで解析を実行します。
1 | simpleFoam > log.simpleFoam & |
結果の確認
では、ParaViewで結果を確認してみましょう。
メッシュのつなぎ目(z=100mm)で層流の条件と乱流で比較しています。
まとめ
今回はmergeMesh+stitchMeshで異なるメッシュでの境界面「outlet_inlet」と「inlet_outlet」面の節点を結合し、円筒内の流れを解析を行いました。
円筒形状は節点がうまくつながらなかったのですが、解析はできました。
おすすめ参考図書
☟こちらは、OpenFOAMの日本語書籍として重宝しているわかりやすい参考書だと思います。
☟こちらもOpenFOMの古いバージョンでの和訳になります。さすがにこちらはバージョンに対する日本語でのケアはしていないので、OpenFOAMに慣れている方は購入しても良いかと思います。僕は「日本語でまとまっている内容」なので少し重宝しています。
☟以下に、もっと初心者向けの同人誌を紹介しておきます。
初心者は「ってか、まずどうやってOpenFOAMをインストールするの?」というところからつまずきがちです。
そんな時は、以下の書籍をおすすめします。
改訂新版 OpenFOAMの歩き方 (技術の泉シリーズ(NextPublishing))
インストール方法とチュートリアルで流体解析を体験・・・ちょっと高度な解析まで解説があります。著者曰くOpenFOAMのバージョンの追跡を行いながら、書籍をアップデートするようなので安心ですね。