こんにちは(@t_kun_kamakiri)(‘◇’)ゞ
この記事では、前回作ったモデル(バックステップ流れ)をSalomeというオープンソースを使ってメッシュ作成をしていきたいと思います。
本日、作成するメッシュはこちらです。
操作動画も用意しました。
線ごとに分割数を変えて、z方向は1層のメッシュ作成を行います。
後ほど、2次元のバックステップ流れをOpenFOAMで行おうと考えているのでz方向は1層としています。
※今回作成するモデルのメッシュ数はモデル的に良いのかどうかという判断はしません。
あくまでSalomeを使ってメッシュ作成を行うというオペレータ的な解説の記事となっています。
【使用環境】
- Windows10
- Salome9.3.0
2020年3月現在のSalomeの最新バージョンは9.4.0(バグが若干修正)なので最新版をお使いください。
前回作成したモデルを引き続き使いますのでお読みでない方はこちらからお読みください。
Shaperで作成したモデルをGeometoryに送る
前回の記事で「Shaper」で作成したモデルを読み込みます。
そして、わかりやすくするために、左にあるツリーで「Part_1」→「Results(1)」のモデルの名前を「Backstep」に変更しておきます。
ここからは「Geometory」に移ってメッシュ作成の下準備をします。
「Export to GEOM」としてから「Geometory」に変更します。
「Geometry」でモデルを線で区切る
今回作成したいメッシュは以下です。各領域ごとにメッシュ数が異なるモデルです。
そのために、Geometryモデルを線で区切る必要があります。ここでは、「パーティション」を使います。
まずは、Geometryモデルに線を入れたい部分に面を用意していきます。
今回は、↓こんな感じでパーティションを作ります。
「面を用意」→「パーティションで区切る」・・・・という手順でパーティションを作成します。
では、やっていきましょう。
「面(アイコン)」を選択
- 高さ:10
- 幅:50
- 方向:OZX面にチェック
「適用して閉じる」を押して面を作成します。
もうひとつ面を作成します。
「面(アイコン)」を選択
- 高さ:10
- 幅:100
- 方向:OYZ面にチェック
面の位置が思わしくないので平行移動をさせます。
「操作」→「変形」→「変換」を選択
- Dx:2
- コピーを作成:チェックを外す
「適用して閉じる」を押して面の平行移動をさせる。
以上です。
次に用意した面でGeometryモデルにパーティション(区切り)を入れます。
「操作」→「パーティション」を選択
- オブジェクト:Backstep
- ツールオブジェクト:作成した2つの面を選択
「適用して閉じる」を押すとパーティションがされます。
完成したものがこちらです。
Geometryに線が入っているのが確認できますかね。
流体解析のために面に名前をつける
ここでは、後ほど「バックステップ流れ」の流体解析をしたいので、面に名前を付けていきます。
今回、以下のように面に名前を付けました。
- inlet(流入条件のための面)
- outlet(流出条件のための面)
- wall(壁条件)
- FrontANdBack(境界条件は特になし。2次元計算のための面)
では、さっそくやっていきましょう。
ツリーの「Partition」の上で右クリックをして「グループを作成」を選択します。
- オブジェクトの種類:面を選択
- グループの名前:inlet
- メインオブジェクト:Partition_2(Geometryモデル)
- 面を選択:「ここの面を選択」と書いている面を選択→「追加」を押す
「21」というのが選択された追加された面です。
この面が今回は「inlet」という名前にしました。
「適用」を押すと連続して面に名前を付けることができますので、同様のことを「FrontAndBack」「wall」「outlet」にも行います。
これで面の名前付けは終了です。
メッシュ数を変えるため「線」をグループ化しておく
メッシュ作成する際に、線をグループ化しておくとメッシュ数を線ごとに決めることができます。今回、メッシュ数はいかのようにしたいので線をグループ化しておきます。
面を作成した時と同じように、「Partition_2」の上で右クリックして「グループ作成」を選択します。
そして、今度は
- オブジェクトの種類:線を選択
- グループの名前:Group_1
- メインオブジェクト:Partition_2(Geometryモデル)
- 線を選択:白色になっている部分の線→「追加」を押す
同様に「Group_2」「Group_3」「Group_4」として線のグループ化を行います。
作成した線のグループがこんな感じです。グループ化した線ごとに色付けをしておきました。
わかりやすく面にも色付けを行っています。
「Mesh」に移ってメッシュ作成
ここからいよいよメッシュ作成を行います。
ここでは、メッシュ作成の練習のために3パターンのメッシュパターンを紹介します。
今回使いたいメッシュパターンは「メッシュ作成その3」です。
「メッシュ作成その1」「メッシュ作成その2」はSalomeでのメッシュ作成の練習として紹介しておきます。
ではまず、「Geometory」から「Mesh」に切り替えます。
メッシュ作成その1
最初にどのエッジも同じ分割数が切られているメッシュパターンからやっていきましょう。
↓完成がこれです。
z方向にも分割されているので2次元的ではないですね・・・
では、メッシュ作成を行います。
- 名前:Mesh_1
- ジオメトリ:Partition_2
- 3D
アルゴリズム:Hexahedron(i,j,k)
詳細設定セット:3D: Automatic Hexahedralization
セグメント数を「15」とします。
これはどのエッジも分割数15にするという意味になります。
「詳細設定セット:3D: Automatic Hexahedralization」としているので、ヘキサメッシュでメッシュが作成されます。
メッシュ作成には、ツリーの「Mesh_1」の上で右クリック→「メッシュを作成」を選択します。
これでメッシュ作成が行えました(^^)/
これは、3次元のモデルの解析に使えますが、今回「バックステップ流れ」は2次元の解析をしたいのでz方向は1層のメッシュ作成を行いたいです。
次に、z方向が1層のメッシュ作成方法を示します。
メッシュ作成その2
ツリーから「Partition_2」を選択して・・・
- 名前:Mesh_2
- ジオメトリ:Partition_2
- 3D
アルゴリズム:Hexahedron(i,j,k)
詳細設定セット:3D: Automatic Hexahedralization
セグメント数を「1」とします。
これはどのエッジも分割数1にするという意味になります。
このようにしておくとz方向は1層にすることができます・・・・が、すべて分割数が1になっていますので、「サブメッシュ」で面の分割数を指定してやります。
ツリーの「Mesh_2」の上で「サブメッシュ作成」を選択します。
- 名前:SubMesh_1
- メッシュ:Mesh_2
- ジオメトリ:FrontAndBack
- 2D
アルゴリズム:Quadrangle: Mapping
詳細設定セット:2D: Automatic Hexahedralization
先ほどと同様「メッシュ作成」を選択してメッシュ作成を行います。
これでz方向は1層のメッシュになりましたね(^^)/
でも、2次元の面のどの領域も分割数(15)が同じになっています。
線ごとに分割数を変えたい場合もありますよね。
というわけで次に「線のグループ化」を行ったものを使って線ごとに分割数を変える方法を示します。
メッシュ作成その3
ツリーから「Partition_2」を選択して・・・
- 名前:Mesh_3
- ジオメトリ:Partition_2
- 3D
アルゴリズム:Hexahedron(i,j,k)
詳細設定セット:3D: Automatic Hexahedralization
セグメント数を「1」とします。
これはどのエッジも分割数1にするという意味になります。
ここは先ほどと同じでz方向を1層にするためです。
次に、線ごとに分割数を変えていきます。
ツリーの「Mesh_3」の上で「サブメッシュ作成」を選択します。
- 名前:SubMesh_1
- メッシュ:Mesh_2
- ジオメトリ:Group_1
- 1D
アルゴリズム:Wire Discretisation
詳細設定(歯車マーク):Number of Segment
セグメント数を「200」にします。
こうすることで選択した線のグループは分割数が200になります。
同様にしてその他の線のグループ(「Group_2」「Group_3」「Group_4」)の分割数も指定していきましょう。
これで先ほどと同様「メッシュ作成」を選択してメッシュ作成を行います。
これでz方向は1層でありながら、線ごとに分割数を指定することができましたね(^^)/
Geometryで作成した面(名前付き)をメッシュに割り当てる
先ほど、面に名前を付けましたよね・・・・
しかし、先ほどはGeometryに面に名前を付けただけです。
後ほど流体解析をする際には、メッシュの要素に名前を割り当てなくてはいけません。
ツリー「Mesh_3」(先ほど作成したメッシュ)の上で右クリックして、「ジオメトリのグループ作成」を選択します。
- Mesh:Mesh_3
- ジオメトリ:「inlet」「FrontAndBack」「wall」「outlet」
を選択します(ツリーから「Shift+選択」や「Ctrl+選択」で連続して選択できます)
「適用して閉じる」を押すと、Geometryの面がメッシュに割り当てられたことになります。
正しく、メッシュに名前が割り当てられているかを確認してみましょう。
ファイルの保存
作成したメッシュのファイルは保存しておきましょう。
※作成したものは、「stl」ファイルでも何でもよいです。
ここでは、OpenFOAM用のファイルにしたいので「unvファイル」で保存をします。
「ファイル」→「エクスポート」→「UNVファイル」を選択して適当な場所にファイルを保存しましょう。
OpenFOAM用のメッシュファイルに変換する
【OpenFOAMの環境】
OpenFOAM ver.6(WIndos10(Windows Subsystem for Linux))
適当なチュートリアルファイルを持ってきておきます。
今回、適当なチュートリアルとしては「tutorials/incompressible/simpleFoam/motorBike」を使っています。
そして、以下のコマンドを実行します。
1 | $ideasUnvToFoam backstep_Mesh.unv |
これでOpenFOAM用のファイルに変換されました。
paraviewがインストールされていればモデルを確認することができます。
操作動画はこちら
やっぱり動画での説明の方がわかりやすいかもしれないと思って動画も作成しました。
操作動画(※本記事のと手順や名前の付け方がじゃっかん異なります)
では、次回は今回作成したモデルを使って流体解析をしたいとおもいます。
OpenFOAMで流れの可視化までやってみた系#OpenFOAM pic.twitter.com/nazK1wSuFh
— カマキリ🐲@物理ブログ書いている (@t_kun_kamakiri) 2020年3月22日