*[[出入口の延長(vmtk)]] [#a59dbce3]

管の内部流のような流体計算を行う場合は、入口・出口の境界条件の影響を流れに与えないように、流体領域を管状に伸ばすことがよくあります。

ここでは、入口・出口が開いた状態の表面メッシュがある場合に、管の中心線から求まる菅の径に基づいて、流体領域を延長します。

使用するツールは、オープンソースの血管モデリング・ツール[[vmtk:http://www.vmtk.org/index.html]](ver 1.2)です。

**表面メッシュ [#f371650d]

使用する表面メッシュは、以下のような血管の一部のメッシュです。(メッシュデータは、このページの一番下のvessel_surf_without_capping.zipにあります。)流体計算用の境界条件として、inletとoutletの位置は絵のように仮定します。

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

図から分かる通り、入口、出口は閉じていません。

**vmtkのコマンド実行 [#b0d8e541]

以下、vmtkはインストールされているものと仮定します。

vmtkを起動し、PypePadのコマンド編集欄に以下のコマンドを打ち込みます。

>vmtksurfacereader -ifile vessel_surf_without_capping.vtp --pipe vmtkcenterlines -endpoints 1 -seedselector openprofiles --pipe vmtkdistancetocenterlines -useradius 1 --pipe vmtkmeshgenerator -elementsizemode edgelengtharray -edgelengtharray DistanceToCenterlines -edgelengthfactor 0.3 -boundarylayer 1 -thicknessfactor 0.1 -sublayers 4 -sublayerratio 0.5 -boundarylayeroncaps 0 -ofile result.vtu

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

メニューバーから

Run > Run all

をクリックしてコマンドを実行します。

**境界番号の指定 [#l36f077f]

コマンドが実行されますと、メッセ―ウィンドウに

Cappint surface.

のメッセージがでて、ビューアが立ち上がります。ビューアを見ますと、血管の入口、出口にそれそれ"1"と"0"が表示されているのが分かります。

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

vmtkでは、基本的に、ビューアの左下にある指示にしたがって進みます。ここでは、下のようにして、入口に"1"と出口に"2"を指定します。

① 表面メッシュの絵に問題がないようでしたら、キーボードから"q"をたたきます。

② "Please input list of inlet profile ids:_"と出ますので入口の番号として、"1"を記入して、Enterします。

③ "Please input list of outlet profile ids(leave empty for all all available profiles):_"とでますので、"0"を記入して、Enterします。

**テトラメッシュ [#w5a52a43]

境界番号を指定すると、入口、出口がキャッピングされ、プリズム層の最も内側と出入口からなる閉じた領域が生成されます。さらに、[[TetGen:http://wias-berlin.de/software/tetgen/]]がこの閉じた領域にテトラメッシュを埋めます。
結果のメッシュは、result.vtuファイルに出力されます。

この結果ファイルは、ParaViewで表示することができます。プリズム層のあるテトラメッシュが作成されたことがわかります。境界番号のつき方がやや変ですが、、

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

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

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS