*[[表面メッシュからプリズムメッシュの作成(enGrid)]] [#a59dbce3]

オープンソースのメッシュ生成ソフトウェア[[enGrid:http://engits.eu/en/engrid]](ver 1.4.0)を使用して、表面の三角形メッシュからプリズムメッシュを作成し、OpenFOAM形式に出力します。
オープンソースのメッシュ生成ソフトウェア[[enGrid:http://engits.eu/en/engrid]](ver 1.4.0)を使用して、表面の三角形メッシュからプリズムメッシュを作成し、テトラメッシュで埋めてからOpenFOAM形式に出力します。

**表面メッシュの読み込み [#ae349bf2]

ここでは、下図のような小さな管状の表面メッシュ(vessel_surf.vtp(本ページ一番下からダウンロード))を読み込みます。ここで、拡張子のvtpは[[VTK:http://www.vtk.org]]のVTK Poly Data (vtp)です。

enGridを起動しましたら、メニューバーから

Import >> VTK >> vtkPolyData

と進みます。ファイル指定ダイアログボックスでvessel_surf.vtpを指定しますと、下図のような管状の表面メッシュが表示されます。

以降、境界名は、図のように"inlet"、"outlet"、"wall"とします。

#ref(vessel_surf.png,center,nowrap,40%,vessel_surface);

**境界名の指定 [#l36f077f]

enGridでは、境界にboundary codeという番号を割り振り、各境界を区別します。

まず、inlet面にboundary codeを設定します。画面上でカーソルをinletになる面に合わせ、キーボードの"p"を押します。すると、下図のように、カーソルに一番近い三角形の中心に赤い球が表示されます。

#ref(boundary_code_inlet1.png,center,nowrap,40%,boundary_code_inlet);

メニューバーの

Mesh >> set boundary code

から、"set boundary code"ダイアログボックスを開きます。下図のように、"Boundary Code"に1を指定して"OK"します。

#ref(set_boundary_code_inlet.png,center,nowrap,80%,set_boundary_code_inlet);

3Dビューア上で左クリックすると、boundary codeを指定した面が非表示になります。

#ref(boundary_code_inlet2.png,center,nowrap,40%,boundary_code_inlet_after);

同様にして、outletとwallにもboundary codeをそれぞれ"2"、"3"で設定します。"set boundary code"のダイアログボックスの設定はそれぞれ下図のようにします。

#ref(set_boundary_code_other.png,center,nowrap,80%,boundary_code_others);

inlet、outlet、wallに全てboundary codeが割り振られますと、画面からすべての面が見えなくなります。

次に、各boundary codeに対応する境界名をつけます。メニューバーから

Simulation >> Edit Boundary conditions

へと進み、"edit boundary conditions"ダイアログボックスを開きます。"Boundary conditions"タブ内のテーブルに下図のように、"inlet"、"outlet"、"wall"を書き込みます。

#ref(set_boundary_names.png,center,nowrap,60%,set_boundary_names);

また、流体領域にも名前を付けます。"edit boundary conditions"ダイアログボックスの"new volume"にfluidと記入し、"add"ボタンを押します。

#ref(set_fluid_name.png,center,nowrap,60%,set_boundary_names);

最後に、"OK"ボタンを押して、"edit boundary conditions"ダイアログボックスを閉じます。

**境界面の表示 [#cbbf4718]

境界面にboundary codeを指定しますと、画面から表面メッシュが見えなくなります。これらを再表示するためには、3Dビューア上で左クリックした後、キーボードから"v"を押し、"select boundary codes"ダイアログボックスを開きます。

"select boundary codes"ダイアログボックス上で表示したい境界にチェックを入れ、"OK"します。"outlet"と"wall"にチェックを入れてると下図のようになります。

#ref(select_boundary_codes.png,center,nowrap,35%,select_boundary_codes);

**プリズムメッシュの生成 [#yf2b2dcc]

wallから内側に向かって境界層となるプリズムメッシュを一層だけ作成します。メニューバーから

Mesh >> create prismatic boundary layer

に進み、"create prismatic boundary layer"ダイアログボックスを開きます。下図のように、"wall"にチェックを入れ、volumesリストから"fluid"をクリックします。デフォルトの設定のまま"OK"ボタンをクリックすると、プリズムメッシュの生成が開始されます。

#ref(prismatic_boudary_settings.png,center,nowrap,60%,prismatic_boudary_settings);

プリズムの生成が終了しましたら、GUIの右の"Display options"の"enable volume elements"にチェックを入れ、"enable surface elements"のチェックを外し、"redraw"ボタンを押すと、画面に作成されたプリズムメッシュが描画されます。

#ref(prismatic_boudary.png,center,nowrap,35%,prismatic_boudary);

**テトラメッシュの生成 [#kcf6746e]

押し出されたプリズムメッシュの面と"inlet"、"outlet"で囲まれた流体領域をテトラメッシュで埋めます。メニューバーから

Mesh >> create/improve volume mesh (NETGEN)

と進み、ダイアログボックスを開き、"fluid"を選択し、"OK"ボタンを押すと、テトラメッシュが生成されます。

#ref(tetra_prism_mesh.png,center,nowrap,35%,tetra_prism_mesh);

**プリズムメッシュの分割 [#e0263a7f]

作成されたプリズムメッシュは一層しかないので、内部を分割します。メニューバーから

Mesh >> divide prismatic boundary layer

と進み、"divide boundary layer"ダイアログボックスを開きます。"volumes"リストで"fluid"を選択し、下図の設定になっていることを確認してから、"OK"ボタンを押します。

#ref(divide_prism_mesh.png,center,nowrap,60%,divide_prism_mesh);

プリズム内の分割が終了しますと、下図のようになります。


#ref(divided_prism_mesh.png,center,nowrap,35%,divided_prism_mesh);

**OpenFOAM形式への出力 [#a63062ed]

作成されたメッシュをOpenFOAM形式に出力します。メニューバーから

Export >> OpenFOAM >> OpenFOAM (grid only)

へと進み、出力するディレクトリを指定しますと、作成したメッシュが保存されます。

出力されたメッシュは[[ParaView:http://www.paraview.org]]でも、可視化することができます。そのためには、ダミーの.foamファイルを作成します(例えば、vessel_surf.foam)。

ParaViewからvessel_surf.foamを指定すると、作成されたメッシュを確認できます。

#ref(paraview_prism_mesh.png,center,nowrap,50%,paraview_prism_mesh);

**ダウンロード [#uf5cec30]
データファイル:
#ref(vessel_surf.zip)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS