公式サイトの DCUMENTATION の「Quick Guide」を用いた、プロジェクトを作る操作方法の情報2

以下の説明では、公式サイトの DCUMENTATION の「Quick Guide」http://simvascular.github.io/docsQuickGuide.html において、「Project Management」からの操作手順に従って、SimVasucular の操作方法を学びます。ここでは、Windows10 の環境を用いて説明しますが、インストール手順SimV-Install1で導入された解析環境では、ファイルの扱いなどを読み替えれば、MacOSX や Ubuntu でも同様に操作できます。

公式解説文書「Quick Guide」を用いた操作手順

まず、SimVascular の操作手順を学ぶために、公式解説文書「Quick Guide」に従って行いますが、SimV-UsageInfo1で利用した例題「SVProject」のファイルを部分的に利用してみます。まず参考にする操作手順の資料の「Quick Guide」を開いて、ある程度大きなウインドウにすると、左側に目次が表示されます。なおツールのウインドウの各部分の名称などは、目次の最初にある「GUI Layout」で確認してください。

ここで説明する操作手順は、目次の「Project Management > Geometric Modelling > Meshing > Simulation > Visualizing Results」の内容を、この手順で進めてゆきます。

SimVascularの起動と準備

インストール手順SimV-Install1により、Windows10 に導入済みの環境では、デスクトップ上の「SimVascular」ショートカットから起動します。なお、色々なツールが並ぶウインドウ「SimVascular 2020.04.06」と黒いログコンソール「mbilog」の2つが表示されますが、ログコンソールも必要です。

準備として、作業フォルダ C:\WorkSV の中に、例題ファイル「DemoProject.zip」があることを確認します。次に、このファイルを展開して「SVProject」フォルダを作業フォルダ内に用意します。ここで説明する操作手順では、この中の設定ファイルの内容を部分的にを流用します。(SimV-UsageInfo1で既に準備されていれば、それを利用します)

Project Management:解析プロジェクトの管理

⇒ウエブ資料リンク:Project Management

まず操作手順のウエブ資料「Quick Guide」の「Project Management」を開きます。以下の説明では、設定の項目な操作を文章でしますので、画面など表示は、この資料を参考にしてください。なおこの操作手順は、この資料の完全な翻訳ではなく、操作を簡略化した部分もあります。また逆に用語などの補足説明は追加しています。資料の灰色の囲みの中が、実際の操作手順になっています。

プロジェクトの新規作成

メニューバーで「File>Create SV Project」を選択すると、「Create New Projct」パネルが表示されます。まず「Project Name:」で、操作方法の練習用プロジェクト名「ExTest1」(資料ではSVProjectとしていますが展開した情報を流用する例題プロジェクトの名前が同じなのでここでは変更)を入力し、「Create in:」に、この練習用プロジェクトを保存する作業フォルダ「C:\WorkSV」をBrowseから選択します。

設定したら「OK」で進めて、作業フォルダを確認すると、「ExTest1」フォルダが新たに作成され、内容は以下に示す9個のフォルダと.svprojファイルが用意されています。
[Images]・[Meshes]・[Models]・[Paths]・[Repository]・[Segmentations]・[Simulations]・[Simulations1d]・[svFSI]

同時に、SimVascular のウインドウ左側の「SV Data Manager」タブには、練習用プロジェクト「ExTest1」の下に、フォルダに対応する9個の項目が作られています。それぞれのフォルダに、設定情報やファイルが保存されます。

ウエブ資料では、この後に「プロジェクトの保存方法」「プロジェクトの終了方法」「操作の取り消し/やり直し」などの、コマンド操作の説明があります。

Add Image to Project:プロジェクトへの医用画像の登録

活用する SimVascular は、公式ウエブの最初に「医療画像データのセグメンテーションから患者固有の血流シミュレーションおよび分析までの完全なパイプラインを提供する唯一の完全にオープンソースのソフトウェアパッケージ」と書かれているように、充実した医療画像のモデリング機能が大きな特徴です。

この練習では、独自の医用画像を準備せずに、例題ファイル「DemoProject.zip」を展開した「SVProject」フォルダにある画像ファイル「sample_data-cm.vti」を使います。このVTI形式のファイルは、可視化ツールParaViewで利用するVTKデータの仲間で、VTK ImageDataファイル(vti)形式とのことです。

そこで、ParaView でこのファイルを開いて、Scalars_データをSurface 表示すると、人体内部の画像が見えます。なお Clip 機能で断面を作ると、内部の様子もわかります。この表示では、青色>白色>赤色と変化に対して、水分量が比例しているため、血液が流れる結果などが白く見えます。(門外漢の聞きかじり情報です)

このデータの座標値を確認するために、XZ面で見る状態(体の正面でZが身長方向)として、画像が表示された上の「Hover Points On」ボタンより、画像の上端と下端のZ座標を見ると、上16.98・下-22.95なので全体で33.93の長さがありますから、人間の体を考えるとcm単位だと思われます。

まず、ウインドウ左側の「SV Data Manager」タブで、練習用プロジェクト「ExTest1」下の、「Images」項目を右クリックして、メニューから最後の「Add/Replace Image」を選択します。「Open Image FIle」のパネルで「C:\WorkSV\SVProject\Images」を見つけて、この中の「sample_data-cm.vti」を選択して開きます。

ここで「Do you want to copy the image as vti into the project?」と確認されます。画像データをプロジェクトフォルダに複製を作る場合には「Yes」です。共有データを参照する場合には「No」ですが、ここでは「Yes」で複製をImageフォルダに作ります。

この場合にはさらに「Do you want to scale the image?」と確認されます。これは元の画像データがmm単位でcm単位で解析する場合に、係数0.1を掛けて変換するときに設定します。

先のParaViewの確認で、このVTIデータはcm単位であり、SimVascularの「Image Navigator」を見ると「Loc.(mm)」となっているので、先の機能を使ってScaling Factor の数値を「10.0」として変換できるのですが…結果としてダメでした。ウエブ資料ではどうもLoc.の数値もcm単位ですし、もしmm単位で進めるには、パスの設定やセグメンテーションで設定を全て見直す必要がありそうです。

そこで表示のズレは気にせず、ウエブ資料の通りcm単位で行くので、データの単位を変更せず「No」で進めます。次に、画像の名前を設定するので、ウエブ資料のファイル名を参考に「sample_data-cm」として「OK」で進めます。(よく見ると画像データのファイル名に「cm」となってました)

少し待つと、「Images」項目の下に「sample_data-cm」が追加され、右側の Display Area の、「Display」タブ内に、黒い背景に4つの医用画像が表示されます。ここで練習用フォルダ「ExTest1/Images」を確認すると、「sample_data-cm.vti・sample_data-cm.transform.xml」の2つのファイルがあります。

なお画像ファイルを参照ではなく複製で持つことより、プロジェクトは移動可能になり、他の解析専用PCなどに移動できます。

この「Display」タブ内に4つの表示がありますが、左上赤色枠が「Axial断面(体に水平な体軸断面)」、左下青色枠が「Coronal断面(正面から見た冠状断面)」、右上緑色枠が「Sagittal断面(側面から見た矢状断面)」、右下黄色枠が3次元表示です。図示説明はここを参考にしてください。

画像を読めたので、PCのトラブルに備えるために、プロジェクトを保存します。ウインドウの2段目のツールバーで「Save SV Project」を押して上書き保存します。

これで SimVascular で医用画像の読込が確認できました。次に右下の「3D」表示の右上にマウスカーソルを移動すると、水色■ボタンが表示されるので押すと、大きな 3D 表示1つになります。同様に右上にマウスを持ってゆくと水色4分割ボタンがあるので、これで最初の表示に戻ります。

ここで左下の「Image Navigator」で、身長の軸ZはAxialで赤色なので、このスライダーを動かすと「左端:0:-22.95:画像下端」「右端:511:16.98:画像上端」で、画像が示す領域のAxial-Z軸は、高さ39.93cmが511刻み(1step=0.078cm=0.78mm)で調整できます。ちなみに、両手を左右水平にした方向の緑色Sagittal-Y軸でも「左端:-20.40・右端:19.53」で同じ1step=0.078cmです、体の前後方向の青色Coronal-X軸は12.6cmが63刻みで1step=0.2cmです。なお最後の Time は時間ステップの調整ですが、この医用画像は静止画なので変化しません。

最後に大切なヒントとして、医用画像では「DICOM形式」がよく使われますが、SimVascular をこれを利用することもでき、フォルダ内にある複数の画像ファイル全体を読み込むことができます。

Geometric Modeling:解析形状のモデリング

⇒ウエブ資料リンク:Geometric Modeling

統合血流解析システム SimVascular では、まずは読み込んだ医用画像から、3次元形状の解析モデルを作る必要があります。その手順は以下の通りです。
1:解析対象となる血管部分に対して、中心軸となるパス(path)を、血管断面の中心点(制御ポイント)を連結して定義します。
2:パスを構成する各制御ポイントにおいて、パスに直交する血管の断面の画像において、血管部分の丸い形状を選択(segmentation)します。
3:これらの血管断面をパスに沿って連続させることで、対象とする血管の棒状の3次元の解析形状が作られます。
4:血管は1本の棒状な構造だけではなく、複雑に分岐し結合するので、その時は上記の解析形状を一体化して解析モデルとします。

なおここでの解析モデルは、血管壁によって作られる血管において、血液の流れる血管の内部空間の形状をモデリングしています。血管の厚さを考慮した外形ではありません。

Creating a Path:パスの作成

ここからの操作では、右側の Display Area の「Display」タブ内にある、黒い背景の4つの医用画像を利用します。まず確認ですが、左上の赤色枠Axial断面、左下の青色枠Coronal断面、右上の緑色枠がSagittal断面で、右下の黄色枠が3D表示で先の3つの断面が立体的に交差して表示されます。

現在の表示は縦横2X2の4分割で、これが標準表示形式です。どこかの断面表示の右上の工具の×印をクリックすると、様々な表示形式が選択できます。例えば「2D images left, 3D right」を選択すると、左側に縦3つの断面表示で右側に大きな3D表示となります。以下では標準表示形式とします。

この画像内でのマウス操作が大切なので、以下にまとめておきます。(中ボタンはスクロールホイール)
「Axial断面・Coronal断面・Sagittal断面」
左ボタン:見ている断面以外の直交する断面の位置を交点で移動させる。クリックやドラッグで移動させる。
中ボタン:ドラッグで移動可能な方向へ画像を水平移動させる。ホイールの回転で見ている断面の軸に沿って移動させる。
右ボタン:画面の上方向にドラッグすると画像を拡大して、下方向では縮小します。
「3D表示」
左ボタン:ドラッグで3次元表示の中心を基準に回転させる。
中ボタン:ドラッグで3次元表示を水平移動させる。ホイールの回転で3次元表示を拡大縮小させる。
右ボタン:画面の上方向にドラッグすると画像を拡大して、下方向では縮小します。

マウス操作の結果は、左下の「Image Navigator」と連動している。そこでLocで示される3つの断面の交点の位置を数値で設定したり、下の3つの断面軸のスライダーを移動させてステップを調整することで、交点の位置を移動させて表示を変更することもできる。

それでは、血管の解析モデルを作ってみます。まずは血管の中心線となるパスを定義します。この例題では、大動脈(aorta)をモデル化するので、この血管は体の身長方向(Axial軸)で縦にあり、体の左右方向(Sagittal軸)の中心にあるので、Axial断面の中央部にあるはずです。よって左上の赤色枠のAxial断面に注目してパスを作成します。

ウインドウ左側の「SV Data Manager」タブの下「Paths」項目を右クリックして、メニューの「Create Path」を選択します。「Create New Path」パネルで、Path Name として「aorta」とし、Subdivision Type は「Spacing Based」を選択すると、最小の画像解像度をSpaceingに設定すると表示され、3つ目の設定が Spacing となり値が「0.078125」となるので「OK」で進めます。この値は、先に求めた「Axial-Z軸:高さ39.93cm/511刻み(1step=0.078cm)」に対応します。

「SV Data Manager」の「Paths」項目の下に、パス「aorta」項目が新しく作られます。これをダブルクリックすると、画像表示が半分になり、ツール「SV Path Planning」が表示されます。もし画像が小さくなったら、ツールと表示の境界をドラッグすると配分が変わります。また注目するAxial断面が小さくなったら、Sagittal断面との境界を移動できます。

最初ですので、パスを構成する制御ポイントのリスト「Control Point List」には、何もありません。

それでは、制御ポイントを追加してゆきます。場所を指定するときは、左下の「Image Navigator」のスライダーの値を「Axial軸:A・Sagittal軸:S・Coronal軸:C」として、「A:511,S:255,C:30」のように表示します。

まずスライダーを上記の位置にして、Axial断面を横に拡げると全体が見えます。この表示では大動脈は明確ではなく、中央下部に別の白い場所があり、表示を下にずらし(A:475)とします。方法としてはAxialスライダーをずらすか値を入力するか、Axial断面上でスクロールホイールを動かして、「A:475」とします。

もしAxial断面の表示が小さいならば、表示の中で、右ドラッグで拡大してください。制御ポイントを指定する方法は、以下の2つがあります。
方法1:Axial断面表示中の白く丸い血管断面の中心をクリックして、青線と緑線の交点を移動させて、キーボードのCtrl+Aを押す、ツールの「Add」ボタンを押す、です。
方法2(直接指定):マウスを白く丸い血管断面の中心にドラッグして、Ctrl+左クリックです。

これで「(0)A:475,S:226,C:14」の位置に、パスの制御ポイントが追加され、0番目としてリストにLoc(mm)で示された3次元の座標値「0:-2.7399,-2.3100, 14.1633」が表示され、3つの断面表示に赤色の十字とひし形が表示されます。

指定を間違えて削除するときは、以下の2つの方法で削除できます。
方法1:リスト内で削除しようとする制御ポイントをクリックして、リスト右のの「Delete」ボタンを押す、です。
方法2(直接指定):断面内の削除しようとする制御ポイントを、マウスでCtrl+右クリックです。

最初の制御ポイントが出来たので、続けてAxial断面において大動脈の下方に向けて進むために、「Image Navigator」のAxialスライダーの値を「25〜50」の範囲で動かして小さくして、同様な方法で血管断面の中心部の制御ポイントを選択し、パスに追加します。

この練習では、次に示すように制御ポイントを(1)から(11)まで追加しています。この値はスライダーの値でリストにある座標値とは別です。
「(1)A:450,S:240,C:18」「(2)A:425,S:253,C:22」「(3)A:400,S:258,C:24」「(4)A:375,S:260,C:25」「(5)A:350,S:260,C:28」「(6)A:325,S:261,C:29」「(7)A:300,S:259,C:31」「(8)A:275,S:258,C:34」「(9)A:250,S:257,C:37」「(10)A:225,S:264,C:40」「(11)A:200,S:272,C:41」

実はAxial軸のスライダーを見ると、まだ200ですから先があるのですが、ここから進むと、大動脈(aorta)が腸骨動脈(iliac artery)に分岐して、血管が水平に動くので、モデリングが難しくなるので、この最初の練習ではここまでにします。

ウエブの解説資料では、制御ポイントを追加してゆき、大動脈が2つの腸骨動脈に分かれる分岐に到達したら、まず左側の腸骨動脈に進むように指示があります。さらに出来るだけ血管のモデリングを進めようとすると、血管の識別が難しくなるAxialスライダー値が10になるまで進められるとのことです。

ここまでの作業を失わないために、プロジェクトのデータの追加や変更を行ったときは、忘れずに次の手順で保存してください。
ウインドウの2段目のツールバーで「Save SV Project」を押して上書き保存します。これでパスの情報が、例題プロジェクトフォルダー「ExTest1」の「Paths」フォルダー内に、「aorta.pth」ファイルとして保存されています。(ちなみにこのファイルはXML形式で大量で複雑な情報になっています)

ここで3D表示を見ると、黄色の線分でパスが表示されています。見やすくするために、3D表示のみとして、「SV Data Manager」の「Images」項目の下にある「sample_data-cm」のチェックを外すと、モノクロの医用画像の表示がなくなります。

3D表示の中で、黄色のパスの中に制御ポイントが青色と赤色の小さな立方体で表示されます。パスを構成する制御ポイントのリストの中で、最初をクリックすると赤色が選択された制御ポイントで青色がその他のポイントです。これでリストと3次元表示の対応を確認することができます。

もし表示が小さいと感じるならば、「Paths」項目の下にある「aorta」項目を右クリックして、メニューの「3D Point Size」を選択して、Sizeを「2.0」で「OK」で進めて、表示を大きくすることができます。通常は初期設定で大丈夫です。

2-D Segmentation:2次元セグメンテーション

セグメンテーションとは、画像のなかで目的とする特定の部分を取り出すことで、領域分割とも言います。ここでは医用画像の中で血管の断面を取り出して、筒状の解析モデルを作成します。具体的な手順は、先に作ったパスに沿って、パスに直交する画像データ上で、特定される大動脈の血管壁の輪郭のグループを作ることです。

最初に、血管壁の輪郭のグループを作ります。まず「SV Data Manager」の「Segmentations」項目を右クリックして、メニューから「Create Contour Group」を選択します。設定パネルが表示されたら、Select Path には先に作ったパス名「aorta」が出ているので、輪郭グループの Group Name は、通常はパス名と同じ「aorta」として、「OK」で進みます。

「Segmentations」項目の下に、新しい輪郭グループ「aorta」が作られます。このグループをダブルクリックすると、「SV 2D Segmentation」ツールが右側に表示されます。ここでウインドウの表示の分割が変わります。なお、ツール「SV Path Planning」がタブで表示されていますが、×印で削除しても構いません。必要なら「SV Data Manager」の項目をダブルクリックで再び表示できます。

この2次元領域分割(SV 2D Segmentation)ツールの状態では、左上がパスの軸に直交する断面で作られた(リスライス:reslice)された医用画像で、左下が画像の微分値(変化の値)で境界つまり血管の輪郭を表しています。右の3D表示はパスに直交する赤色枠のプローブ断面(斜めの検討断面)を表示しています。なお左側の表示の「Axial・Sagittal」の表示は無視してください。

最初は輪郭グループは空ですので、パスのポイントに対応して、輪郭の作成し追加します。手順は次の通りです。

「SV 2D Segmentation」ツールの、「LevelSet」ボタンを押すとLevelSetパラメータ設定用パネルが表示されます。殆どは標準設定を用いますが、「Convert to Spline」にチェックを入れて、輪郭線を分割する制御ポイントの数を12に変更して、再度、「LevelSet」ボタンを押します。

これより領域の輪郭が自動的に作成され、「SV 2D Segmentation」ツールの輪郭リスト(Contour List)に0番目が追加されました。左上画像の血管部分の領域の外側が、左下画像の微分値の最大部分の輪郭に対応していることが分かります。

また左側上下の表示では、先に設定した輪郭を構成する12個の緑色の小さな□が並び、中心部と右斜め上にも同じ四角があります。

輪郭の四角は制御点でマウスで移動して微調整できます。マウスを制御点に近づけると、選択され赤色表示なるので、左ボタンでドラッグすると、輪郭上の制御点は形状の調整、中心部の四角は輪郭全体の移動、斜め上の四角は全体の大きさの変更、ができます。

この領域の輪郭の作成と輪郭リストへの追加を、先に設定したパスに沿って続けてゆきます。この時はパスに直交する検討断面(Reslice)に従って、「SV 2D Segmentation」ツールのResliceスライダーを、現在の0から初めて、5から25ステップで増分させながら、最後の303まで進めます。なおウエブ資料では、途中の約285で止めています。

もし「LevelSet」で作られた輪郭に問題があり、特定の輪郭をさらにスムーズにしたい場合は、輪郭を選択して「Smooth」ボタンをクリックします。もし作成や修正に失敗したら、リスト右の「Delete」で削除して、再び「LevelSet」で作成できます。

ウエブ資料では、「Smooth Fourier Number」の設定では、フーリエ数の6〜10の値は、大動脈のこの部分の断面に適しています。 検討断面が血管分岐領域にあるために輪郭が異常な場合は、この輪郭を削除してパスを下に移動するだけで、より適切な輪郭が得られるとのことです。

役立つヒント:輪郭リストの1つを選択すると、この輪郭に関するいくつかの幾何学的な情報がメインウィンドウの下部にあるステータスバーに表示されます。この情報は「面積(Area)・周長(Perimeter)・中心点の座標(Center Point)」が、cm単位で含まれます。

それでは輪郭の作成を進めてゆきます。この練習では比較的単純な形状なので、Resliceのスライダーを20ずつ増分させることにします。まずReslice=20として、3D表示の検討断面が正しいことを確認したら、「LevelSet」を押します。これで1番の輪郭が追加されます。

このような調子で、スライダーの右端Reslice=303まで進めるのですが、この輪郭作成は検討断面の画像が適切ならば、ほぼ自動的に進めることができます。そこでモデリングを高速化するために、SimVascularはバッチセグメンテーション(パス全体の自動輪郭作成)を実行できます。

それでは、Resliceの40から300までを20増分で、バッチセグメンテーションを実行する方法を以下に示します。
まずツールのリストの上にあり、「Batch Mode」にチェックを入れて、次のListに「40:20:300」と入力、「LevelSet」ボタンを押します。

これで輪郭の番号2から15までの新しい輪郭が作成され、Reslice位置は40,60,80,…,300となり、輪郭グループに追加されます。 それぞれの輪郭をリストから選択して、異常がある場合は削除してください。解析データの作成や修正など、作業の段階ごとに必ず「Save SV Project」で上書き保存してください。

以上で輪郭のグループができたのですが、この輪郭をパス方向につないて立体としての解析モデルを確認するために、滑らかに接続した血管の表面を表示することを「ロフティング(Lofting)」と言います。これより作成した輪郭の品質をチェックアウトすることができます。手順は以下の通りです。

まずツールの「Lofting Preview」にチェックを入れます。これより「SV Data Manager」の「Segmentaitons/aorta」項目の下に「Lofted」が作成され、3D表示には灰色の輪郭を滑らかにつないだ血管の解析形状が表示されます。作業の段階ごとに必ず「Save SV Project」で上書き保存してください。

ウエブ資料では、同様に右腸骨動脈のパスと輪郭のグループを作成し、パスが大動脈パスに接続されていることを確認してください(最初のノードは大動脈パスの最後の2つのノードの間にあります)とありますが、この練習では省略します。

3-D Segmentation:3次元セグメンテーション

ウエブ資料では、セグメンテーションのもう1つの方法として、3次元的な方法が紹介されていますが、この練習では省略します。

Creating a Model (with PolyData):PolyDataによる解析モデルの作成

ウエブ資料を簡略化して、この練習では、血管領域の輪郭グループaortaのみを作成したので、PolyDataを用いて解析モデルを作成することができます。手順は以下の通りです。

まず「SV Data Manager」の「Models」項目を右クリックして、メニューから「Create Model」を選択します。設定パネルが表示されたら、Model TypeはPolyDataで、Model Nameは「aorta」と入力して、「OK」で進めます。

解析形状のPolyDataモデル「aorta」の項目が、「SV Data Manager」の「Models」項目の下に作られます。これをダブルクリックすると、ツール「SV Modeling」が表示されます。現時点では何も設定がないですが、ここに実際の解析モデルを、滑らかな血管面と境界条件を設定して作ります。

まずツールの「Create Model…」ボタンを押します。対象となる輪郭グループを選択しますが、ここでは「aorta」のみなので、Use欄にチェックを入れて、Number of Sampling Pointsの指定では、PolyDataのオプションとして「40」を入力し、「OK」で進めます。

作成された解析モデルのすべての面が「Face List」タブにリストされます。この練習では「wall_aorta・cap_aorta・cap_aorta_2」の3つです。操作が見やすいように3D表示のみとし、Imagesの「sample_data-cm」とSegmentationの「aorta/Lofted」の表示を外します。

面の名前と位置を明確にするために、リストの項目「C」で色を設定できるようなので、Cの欄を右クリックしてメニューの「Change Color」を選択し、色を選択して表示を変更できるはずなのですが、方法がよくわかりません。

このリストの表示で面のNameを修正します。1番のwall_aortaはこのままで分かります。3D表示の上部の丸い断面をクリックしてキーボードでSを押すと、リストの2番目「cap_aorta」が選択されます。つまりこれが上部の流入部分なので、Nameをダブルクリックして「inflow_aorta」変更し、3番目「cap_aorta_2」を「outflow_aorta」に変更します。

次に面の属性(wall:壁・cap:キャップつまり断面)を確認すると、この設定で正しいです。解析データの作成や修正など、作業の段階ごとに必ず「Save SV Project」で上書き保存してください。

Creating a Model (with OpenCASCADE or Parasolid):OpenCASCADEやParasolidによる解析モデルの作成

ウエブ資料では、解析モデル作成のもう1つの方法として、OpenCASCADEやParasolidによる方法が紹介されていますが、この練習では省略します。

Meshing:メッシュ作成

⇒ウエブ資料リンク:Meshing

計算格子またはメッシュ生成とも呼ばれる解析モデルの離散化は、複雑な解析形状をより小さな単純な要素に分割する手順として定義されます。血流解析の流体解析を実現するためには解析モデルの離散化が必要です。 SimVascularは、メッシュ作成に2つの方法を提供してるのですが、ウエブ資料では次の「TetGen」を用いた方法のみが提示されてます。

この「TetGen」は、たぶん Tetra Element Mesh Generation の意味だと思われ、三角形4面で作られた四面体要素(Tetra Element)を使用したメッシュ作成手法です。先の手順で解析形状モデル「aorta」が用意できているので、TetGenを使用してこの解析モデルのメッシュを作成できます。

手順としては、「SV Data Manager」の「Meshes」項目を右クリックして、メニューから「Create Mesh」を選択します。設定パネルが表示されたら、Select Modelはaortaで、Mesh TypeはTetGenで、Mesh Nameには通常はパス名と同じ「aorta」と入力して、「OK」で進めます。

解析形状のTetGenメッシュ「aorta」の項目が、「SV Data Manager」の「Meshes」項目の下に作られます。これをダブルクリックすると、ツール「SV Meshing」が表示されます。現時点では何も設定がないですが、ここにTetGenメッシュを設定して作ります。

まずツールの Global Max Edge Size の「Estimate」ボタンをクリックして、「解析モデル全体の最大エッジサイズ」の推定値を入力すると、ここでは「0.3242(cm)」となりました。後の設定は全て標準のパラメーター値を使用することにします。

そこでツール右上の「Run Mesher」ボタンを押すと、少し時間がかかる注意があるので、承知して「Yes」で進みます。

少し待つとメッシュが作られ統計情報(Nodes:7578・Elements:38758・Edges:8496・Faces:5664)が表示されるので「OK」で進めます。なおこの統計情報はモデル作成の微妙な違いで変化します。メッシュを確認するために、「Models」項目の「aorta」のチェックを外すと、灰色の面の上に青色の網の目のメッシュが表示されます。

役立つヒントとして、先に推定される最大エッジサイズは、モデル内の最小の断面の半径の約半分とのことです。

これでメッシュも作成できました。解析データの作成や修正など、作業の段階ごとに必ず「Save SV Project」で上書き保存してください。

Simulation:血流解析の実行

⇒ウエブ資料リンク:Simulation

やっと「SimVascular+Solver」を使用して、3次元の血流の数値シミュレーション(血流解析)、つまり血流領域を対象としてナビエストークス方程式を解くことができます。以上の準備での解析モデル「aorta」と解析メッシュ「aorta」の準備が整ったら、血流解析のジョブ(数値解析実行の設定)を作成できます。

手順としては、「SV Data Manager」の「Simulations」項目を右クリックして、メニューから「Create Simulation Job」を選択します。設定パネルが表示されたら、Select Modelはaortaで、Job Nameには「aorta」と入力して「OK」で進めます。

新しいジョブ「aorta」が、「Simulations」項目の下に作成されます。 この項目ををダブルクリックすると、「SV Simlation」ツールが表示されます。 それでは次から、ジョブのパラメーターの設定を開始します

Basic Parameters:基本パラメータ

基本的なパラメータ(物理定数の設定)では、流体の材料特性、心周期期間、および初期条件が含まれます。この練習では、デフォルト値をそのまま使用してください。詳細は SimVascular の解説文書をよく読んで確認しますが、表にある数値では、血液の流体特性として「密度:1.06・粘性:0.04・初期圧力:0・初期速度:0.0001,0.0001,0.0001」となっています。

Inlet and Outlet Bcs:流入と流出の境界条件

ツールの下にある「Inlets and Outlet BC」を選択すると、パラメータ表が表示されます。 この解析モデルでは「流入:inflow_aorta・流出:outflow_aorta」の2つの境界条件の設定が必要です。

まず流入の境界条件を設定します。この「inflow_aorta」の設定では、事前に流入速度の時間変化の設定を定義した「steady.flow」ファイルが必要です。例題フォルダ「ExTest1」の中に、「flow-files」フォルダーを作り、この中に「steady.flow」ファイルを保存します。

この流入速度のファイルでは、流入量が一定とするため速度も一定となります。よって時間0.0から1.0において、流速が-100で一定の条件を設定するために、以下の2行を含むファイルsteady.flowをメモ帳などで作っておきます。速度は流入面の中に進む方向がマイナスっぽいです。
0.0 -100
1.0 -100

準備ができたので、「inflow_aorta」の流入条件を表の最初の行で設定するために、右クリックします。メニューの「Set BC」を選択すると、「Set Inlet/outlet BCs」パネルが表示されます。次のように設定します。

まずBC Type(境界条件の形式)は「Prescribed Velocities(指定速度)」、Analytic Shape(断面内の分析形状)は「parabolic(放物線)」、Point Number(速度指定の点数)は「2(一定流量の場合でファイルsteady.flowの行数)」、Fourier Modes(速度変化のフーリエ級数モード)は「1(一定流量の場合)」、Period(周期)はオプションだが「1.0」としておく。

ここで、Flow rate(from File)の…ボタンを押して、C:\WorkSV\ExTest1\flow-filesの中から、流量のファイル「steady.flow」を選択します。全て選択したら「OK」で進みます。表の中に設定が表示されました。

次に、流出の境界条件を設定します。この「outflow_aorta」では、次のようにします。表の2行目のBC Typeをダブルクリックして「Resistance(抵抗指定)」を選択します。次に2行目のValuesダブルクリックして抵抗値「16000」を選択します。

これで境界条件ができました。解析データの作成や修正など、作業の段階ごとに必ず「Save SV Project」で上書き保存してください。

Wall Properties:血管壁の特性

次に、血管壁の特性を指定します。ツールの下にある「Wall Properties」ボタンを押します。壁の設定としては、3つ「Rigid:固定・Deformable(Constant):変化可能(一定値)・Deformable(Variable):変形可能(変動値)」あるのですが、ここでは基本となる「Rigid」を選択します。作業の段階ごとに必ず「Save SV Project」で上書き保存してください。

Solver Parameters:解析ソルバーのパラメータ

この SimVascular で流体解析を実行する解析ソルバー SvSolver には、多くのパラメーターがありますが、明示的に設定する必要があるのはごく一部です。 高度なパラメータはオプションです。設定のために、ツールの下にある「Solver Parameters」ボタンを押します。表のValueの欄をダブルクリックして、以下の部分を設定します。

2行目 Number of Timesteps(解析ステップ数):100、3行目 Time Step Size(解析刻み幅の時間・秒単位):0.0004、5行目 Number of Timesteps between Restarts(結果出力での処理のステップ間隔):10、11行目 Step Construction(ステップ内での収束反復数):2(標準の設定で流速が一定の解析では2で十分とのこと)

これで解析条件が設定できました。作業の段階ごとに必ず「Save SV Project」で上書き保存してください。

役立つヒントとして、ステップ内での収束反復数と解析刻み幅の時間などの時間離散化、および有限要素メッシュによって与えられる空間離散化の品質は、流体解析ソルバーの解析時間や解析精度などの性能を支配的に決定します。 これらのパラメーターを適切に選択することで、血流解析はより高速かつ正確に実行されます。

Running Simulation:血流解析の実行

血流解析を実行するために、ツールの下にある「Create Files and Run Simulation」ボタンを押します。まずChoose Meshで「aorta」を選択し、「Create DataFiles for Simulation」ボタンを押して、もしメッシュが存在して有効だが作成するかの確認は「OK」で進めます。他には並列処理(Use MPI)などの設定がありますが、この練習では使いません。

やっと血流解析を実行するので、最後の「Run Simulation」ボタンを押します。SimVascular のウインドウの左下に、解析の進行が表示されます。エラーなく100%になって、血流解析ジョブ aorta が終了したメッセージが表示されたら、「OK」で完了です。

血流解析が完了すると、解析結果のファイルは、例題フォルダの「C:\WorkSV\ExTest1\Simulations\aorta」に保存されます。この中で「restart.**.1」が結果のファイルです。解析ソルバーの設定で、解析は初期条件0から10ステップで100ステップまで10ステップ毎に出力する設定なので、結果ファイルの番号は「10,20,…,100」の10個分です。

Runnning Simulation at Computer Clusters:血流解析の並列処理クラスターでの実行

ウエブ資料では、血流解析の並列処理クラスターでの実行方法が紹介されていますが、この練習では省略します。

Convert Results:解析結果の可視化データ変換

血流解析の結果ファイルを、ParaViewで可視化するための「vtp,vtu」ファイルに変換します。ツールの下段の「Convert Results」ボタンを押します。表示が変わります。まずResult Dirの設定を確認します。先に確認した「C:\WorkSV\ExTest1\Simulations\aorta」です。

次にStepsに変換するデータの情報として、先に確認した10個分が指定できるように「Start:10・Stop:100・Increment:10」と入力します。下のOptionsの設定はそのままでよくて、Sim unitsが「cm」単位であることが確認できます。

次に変換した結果を保存する場所をするので、最後の「Convert…」ボタンを押します。ここは表示の上の「Result Dir:」の場所「C:\WorkSV\ExTest1\Simulations\aorta」を選択して、「フォルダーの選択」をします。少し待つと、結果が変換できたことが表示されるので、「OK」で完了です。

この血流解析は、定常的なケースなので、最後のタイムステップのみが必要です。 新しいフォルダー「aorta-converted-results」が作成され、出力ファイルall_results_00010.vtp、…、all_results_00100.vtp、all_results_00010.vtu、…、all_results_00100.vtu、average_results.vtpが含まれます。

この他に4つのテキスト形式の結果ファイルがあります。これらは流入面と流出面での、定量的な結果を示しています。

これで、SimVascular での解析作業は終わりなので、ウインドウ上部のツールバーの「Save SV Projects」ボタンを押してプロジェクトの状態を保存してから、「Files>Exit」で確認には「Yes」で終了します。

Visualizing Results:解析結果の可視化

⇒ウエブ資料リンク:Visualizing Results

解析結果を表示されるために、ParaView を起動します。先ほど指定した変換したデータの保存場所「C:\WorkSV\ExTest1\Simulations\aorta」を「File>Open」で開きます。この中の「aorta-converted-results」フォルダを開きます。

定常解析なので最後の100ステップ目の結果「all_results_00100.vtu」を選択(+ボタンで展開すると見えます)して「OK」で開きます。「Apply」ボタンで表示します。まず画面には圧力が表示されています。

ここで血管内部の速度を可視化するには、ボリュームレンダリングの視覚化手法を使用する必要があります。これを行うには、速度の大きさを表すスカラー量を計算する必要があります。手順は次の通りです。

まずParaViewの、ツールバーの3段目の左端にある計算ツールのCalculatorボタンをクリックします。Pipeline BrowserにCalculartor1の項目が追加されます。下半分のPropertiesで、Result Array Nameの欄に「vel mag (cm/s)」と入力し、その下の欄に計算式「mag(velocity)」を入力し、緑色の「Apply」ボタンを押します。

最後に、ツールバー2段目の表現形式のメニューで「Volume」を選択すると、速度の大きさのボリュームレンダリングが実現します。

ここからの表示の方法は、ParaView の解説を参考にしてください。例えば以下の資料があります。

「ParaView講習」:中山 勝之(オープンCAE勉強会@富山)http://www.mech.iwate-u.ac.jp/~hirose/ockitatohoku/ref/nakayamasama-paraview.pdf
「The ParaView Tutorial」:Kenneth Moreland(Sandia National Laboratories)https://www.paraview.org/Wiki/images/6/6e/ParaViewTutorial54.pdf

AboutSimVascular

【このページの閲覧数:総計:265 今日:1】


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-08-03 (月) 15:09:35 (82d)