#author("2020-08-03T12:26:29+09:00","default:opencaewikistaff","opencaewikistaff")
#author("2020-08-08T13:49:45+09:00","default:opencaewikistaff","opencaewikistaff")
* 公式サイトの DOCUMENTATION の「Simulation Guide」を用いた、SvSolverの活用や設定に関する情報5 [#zff968d6]

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

以下の説明では、この例題を最初に行うことも想定して、[[SimV-UsageInfo2]]の内容と同じ内容も、重複して説明しています。

** 公式解説文書「Simulation Guide」を用いた操作手順 [#r9d79512]

まず、SimVascular の解析ソルバー SvSolver の設定手順を学ぶために、公式解説文書「Simulation Guide」に従って行いますが、[[SimV-UsageInfo4]]で利用した例題「CylinderProject」のファイルを参照し利用してみます。まず参考にする操作手順の資料の「[[Simulation Guide:http://simvascular.github.io/docsFlowSolver.html]]」を開いて、ある程度大きなウインドウにすると、左側に目次が表示されます。

ここで説明する操作手順は、目次の「Creating Job > Basic Parameters > Inflow BC > Outlet BC > Wall Properties > Solver Parameters > Creating Data Files > Running Job > Postprocessing > Examples」の内容を、この手順で進めてゆきます。

** Creating a Job for Simulation:血流解析のための解析ジョブの準備 [#y270077f]

⇒ウエブ資料リンク:[[Creating Job:http://simvascular.github.io/docsFlowSolver.html#creatingjob]]

準備として、作業フォルダ C:\WorkSV の中に、例題ファイル「CylinderProject.zip」があることを確認します。次に、このファイルを展開して「CylinderProject」フォルダを作業フォルダ内に用意します。[[SimV-UsageInfo4]]で既に準備されていれば、それを利用します。

ここで説明する操作手順では、このプロジェクトのファイルの途中から自分で設定を試みます。そこで「CylinderProject」フォルダをコピーして「CylinderTest1」フォルダフォルダを作成します。

まず操作手順のウエブ資料「Simulation Guidee」の「[[Creating Job:http://simvascular.github.io/docsFlowSolver.html#creatingjob]]」を開きます。以下の説明では、設定の項目な操作を文章でしますので、画面など表示は、この資料を参考にしてください。なおこの操作手順は、この資料の完全な翻訳ではなく、操作を簡略化した部分もあります。また逆に用語などの補足説明は追加しています。資料の灰色の囲みの中が、実際の操作手順になっています。

*** SimVascularの起動と準備 [#k823ec25]

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

ウエブ資料に従って、「Example1の作成」を試してみましょう。この作業のもとになるファイルは、先に準備した「CylinderTest1」プロジェクトです。SimVascular を起動して「File>Open SV Project」より、「CylinderTest1」フォルダを選択し、プロジェクトを読み込みます。

このプロジェクトは、単純は円筒形(Cylinder)なので、医用画像 Images や血管軸線 Paths や血管断面輪郭 Segmentation などの情報はなく、直接に、解析モデル Models と解析メッシュ Meshes が用意されています。これらはそのまま流用します。

以下では、血流解析 Simulations の各種の設定方法を確認するので、既にできている以下の4つの項目は削除 Remove しておきます。この資料で説明する手順で、以下の4つの解析設定の具体的な方法や条件などを確認してゆきます。~
steady:基本となる定常解析(流出部は単純な抵抗係数で設定)~
steady_rcr:定常解析でRCR流出条件で設定(血管壁の条件は固定設定)~
steady_rcr_deformable:定常解析でRCR流出条件で設定で、血管壁は固定量だけ変形する~
steady_rcr_variable:定常解析でRCR流出条件で設定で、血管壁は血流に対応して任意に変形する~
Example1:steady:基本となる定常解析(流出部は単純な抵抗係数で設定し血管壁の条件は固定設定)~
Example2:steady_rcr:定常解析でRCR流出条件で設定(血管壁の条件は固定設定)~
Example3:steady_rcr_deformable:定常解析でRCR流出条件で設定で、血管壁は固定量だけ変形する~
Example4:steady_rcr_variable:定常解析でRCR流出条件で設定で、血管壁は血流に対応して任意に変形する~

念のため以前の解析結果を完全に削除するために、この「CylinderTest1」の解析結果がある「C:\WorkSV\CylinderTest1\Simulations」のフォルダも全て削除します。以下の操作では、作業の段階ごとに必ず「Save SV Project」で上書き保存してください。

*** Example1:steady プロジェクトの新規作成 [#ub59c01e]

最初の「Example1」では、ジョブ名「steady」として基本となる定常解析で、流出部は単純な抵抗係数で設定するような、血流解析ジョブを設定します。まず「SV Data Manager」の「Simulations」項目を右クリックして、メニューから「Create Simulation Job」を選択します。Select Model は「cylinder」で、Job Name は「steady」と入力して、OK で進めます。

「Simulations」項目の下に、新しいジョブ「steady」が作られます。この項目をダブルクリックすると、「SV Simulation」ツールが右側に表示されます。現在は、標準の初期値があるだけで、具体的な設定はまだ未設定です。

** Basic Parameters:基本的なパラメータ設定 [#y63674e8]

⇒ウエブ資料リンク:[[Basic Parameters:http://simvascular.github.io/docsFlowSolver.html#basic]]

以下の説明を進める前に、SimVascular(プリ・ポスト)と SvSolve(ソルバ)との関係を確認します。まず「[[Simulation Guide / Overview:http://simvascular.github.io/docsFlowSolver.html#overview]]」の「Process Flow of SimVascular Simulation」を見ると、解析モデルが作成された後に、「svPresolver>svSolver」の順で処理が進むことがわかります。

ツール SV Simulation の「Basic Parameters」のタブ項目を見ます。基本的なパラメータには、「svPresolver・svSolver」で使用されるいくつかの基本的な設定情報となる、流体の材料特性と初期条件が含まれます。 ここでの単位は、標準設定(CSG単位:cm/gr/s:センチメートル/グラム/秒)を使用します。 なお SimVascular で用いる単位は上記の「[[Simulation Guide / Overview:http://simvascular.github.io/docsFlowSolver.html#overview]]」の「Units in Simulation」を確認してください。

流体の密度(Fluid Density)は「1.06」で、流体の粘性(Fluid Viscosity)は「0.04」です。初期圧力(Initial Pressure)は「0」で、 初期速度(Initial Velocities)は「vx=0.0001 vy=0.0001 vz=0.0001」です。

** Inlet Boundary Condition Specification:流入境界条件の設定 [#jf82820f]

ツール SV Simulation の「Inlet and Outlet BCs」のタブ項目を見ます。
⇒ウエブ資料リンク:[[Inflow BC:http://simvascular.github.io/docsFlowSolver.html#inflowbc]]

ツール SV Simulation の「Inlet and Outlet BCs」のタブ項目を見ます。この円筒形のモデルでは、3Dモデルの表示で Reset view したときに上と下に円形の端面があり、上が2行目の「流入面:inflow」で下が1行目の「流出面:outflow」に対応しますが、まだ何も設定されていません。

流入口の境界条件を設定する前に、最初に流入口の流量を提供する単純なファイルを作成しましょう。 あなたの問題には複数の流入波形ファイルがあるかもしれません。 この場合、フローファイルは1つしかありません(steady.flowと呼ばれます)。 ファイルをディスクのプロジェクトフォルダーの下のサブフォルダー「flow-files」に配置します。
流入面の境界条件を設定する前に、最初に流入面の流量を指定する単純なファイルを作成します。様々な血流解析に対応して、複数の流入波形ファイルがあると思いますが、この練習では最も基本となる定常解析用の流入条件ファイル(flow-file)として、「steady.flow」を用います。

[[AboutSimVascular]]
実はこのファイルは、例題「CylinderTest1」のフォルダー「flow-files」に、「steady.flow」が用意されています。フォルダ「C:\WorkSV\CylinderTest1\flow-files」を開いて、起動したメモ帳に
ファイル「steady.flow」をドラッグして内容を確認できます。

【このページの閲覧数:総計:&counter(total); 今日:&counter(today);】
この「stable.flow」ファイルの形式は次のとおりです。ただし用意されているファイルではコメントが省略されています。コメントは必須ではありませんが、解析で使用した単位を確認するときに役立ちます。折角なのでメモ帳で追記して上書き保存してください。

-----
次に2列の数値が続きます。 最初の列には時間の値があり、次の列にはFlow(毎秒当たりの流量:cc単位)の値が続きます。時間0秒から1秒で流量が「-100 cc/sec」で変化しないので、安定した一定の流量で、定常解析の設定になります。この流量については、次に詳しく説明します。

# Time (sec) Flow (cc/sec) ~
0 -100.0 ~
1 -100.0 ~

まず流量の正負の符号は、解析モデルの流入面から内部に流れ込む順流(フォワードフロー)の流量は、ここで検討した例 -100 のように「負の符号」です。逆に流入面から外にでる逆流(バックフロー)では、「正の符号」です。これは流入面の法線を示すベクトルが外向きを正とするため、順流では反対方向になるため負になります。

この設定のコメントにあるように、解析モデルの物理的寸法を確実に把握することは非常に重要です。分析のすべての単位(長さ、時間、流れ、密度など)は、単位として一貫している必要があります。この SimVascular にインポートする前に、Paraview でモデルのサイズを簡単に確認できるので試してください。

単位の標準設定は「CSG単位:cm/gr/s」なので、この場合に円柱の半径は r=2.0cm、長さは L=30cm です。流量の単位は、体積として考えると「cc = cm3 = ml」ですから対応しています。なお血流の流量は「[[WikiPedia:流量:https://ja.wikipedia.org/wiki/%E8%A1%80%E6%B5%81]]」を見ると、以下の通りです。

大動脈の場合: 断面積3〜5cm2で、流速40cm/s なので、流量で計算すると、120〜150 cm3/s = cc/s なので、上記の設定は桁数としては、それほど間違っていないです。逆に半径 r=2.0cm で、流量 100 cc/2 になるためには、流速が 7.9 cm/s になります。

*** 具体的な設定とその解説 [#cd70e295]

それでは、「Inlet and Outlet BCs」のタブ項目に関して、具体的な設定を行い、詳細な説明はそのあとにまとめます。この表には、境界条件を設定する流入面 inflow と流出面 outlet が既に並んでいます。

まず流入面 inflow を設定するので、この行 Name の「inflow」をダブルクリックします。パネルの各項目では次のように設定します。~

** Project Management:解析プロジェクトの管理 [#g6f810fb]
・BC Type(境界条件の形式)は「Prescribed Velocities(指定速度の指定)」 ・Analytic Shape(断面内の分析形状)は「parabolic(放物線)」 ・Point Number(速度指定の点数)は「2(一定流量の場合でファイルsteady.flowの行数)」 ・Fourier Modes(速度変化のフーリエ級数モード)は「1(一定流量の場合)」、と指定します。

まず操作手順のウエブ資料「Quick Guide」の「Project Management」を開きます。以下の説明では、設定の項目な操作を文章でしますので、画面など表示は、この資料を参考にしてください。なおこの操作手順は、この資料の完全な翻訳ではなく、操作を簡略化した部分もあります。また逆に用語などの補足説明は追加しています。資料の灰色の囲みの中が、実際の操作手順になっています。
次に、Flow rate(from Files)で、先に用意した流入条件ファイル「steady.flow」を設定するので、「…」のボタンを押してファイルを「C:\WorkSV\CylinderTest1\flow-files」より「steady.flow」を開きます。パネルにファイル名が表示されます。

*** プロジェクトの新規作成 [#x4edccb5]
なお、Period(周期)はオプションであり、「steady.flow」から設定を確認されるが、ここでは指定した時間の間隔(0〜1)で「1.0」としておく。以上で完了で、OK で進めます。作業の節目に「Save SV Project」で上書き保存しておきます。

メニューバーで「File>Create SV Project」を選択すると、「Create New Projct」パネルが表示されます。まず「Project Name:」で、操作方法の練習用プロジェクト名「ExTest1」(資料ではSVProjectとしていますが展開した情報を流用する例題プロジェクトの名前が同じなのでここでは変更)を入力し、「Create in:」に、この練習用プロジェクトを保存する作業フォルダ「C:\WorkSV」をBrowseから選択します。
この例題「CylinderTest1」では設定済みですが、解析モデルを作成するときには、面タイプ「wall / cap」を必ず指定してください。この cap 指定の面に境界条件を設定します。

設定したら「OK」で進めて、作業フォルダを確認すると、「ExTest1」フォルダが新たに作成され、内容は以下に示す9個のフォルダと.svprojファイルが用意されています。~
[Images]・[Meshes]・[Models]・[Paths]・[Repository]・[Segmentations]・[Simulations]・[Simulations1d]・[svFSI]
・Point Number(速度指定の点数)は、心拍1周期を規定する時間データポイントの数です。これは先に指定した「flowファイル」の時点の数とは限りません。この練習ではそれらは一致して両方の場合で2ですが、これは定常流を使用する非常に単純な例であり、2つの時点が一定の流れを規定するために必要な時点であるためです。

同時に、SimVascular のウインドウ左側の「SV Data Manager」タブには、練習用プロジェクト「ExTest1」の下に、フォルダに対応する9個の項目が作られています。それぞれのフォルダに、設定情報やファイルが保存されます。
一般に「flowファイル」には、心拍周期全体で約20データポイントが必要であり、そこから補間されたデータには100〜200ポイント程度になります。流入面での速度ベクトルへの流入波のマッピングをスムーズに表現するには、この程度になります。

ウエブ資料では、この後に「プロジェクトの保存方法」「プロジェクトの終了方法」「操作の取り消し/やり直し」などの、コマンド操作の説明があります。
・Fourier Modes(速度変化のフーリエ級数モード)は、フーリエ平滑化により流入流量曲線を平滑化し、指定した間隔で周期関数が定義できることになります。

*** Add Image to Project:プロジェクトへの医用画像の登録 [#jd9fdbba]
なお注意として、SimVascular は、 flowファイルで定義する流量データのフーリエ級数近似を行っています。この練習では定常流で一定の流れで、これを適切に表現するには1つのフーリエモードで可能です。一方変動する非定常の脈動流の問題では、 flowファイルの設定を正確に表すために、さらに多くのフーリエモードが必要になりますが、通常は脈動の問題では10個のフーリエモードで十分です。

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

この練習では、独自の医用画像を準備せずに、例題ファイル「DemoProject.zip」を展開した「SVProject」フォルダにある画像ファイル「sample_data-cm.vti」を使います。このVTI形式のファイルは、可視化ツールParaViewで利用するVTKデータの仲間で、VTK ImageDataファイル(vti)形式とのことです。
⇒ウエブ資料リンク:[[Inflow BC:http://simvascular.github.io/docsFlowSolver.html#outletbc]]

そこで、ParaView でこのファイルを開いて、Scalars_データをSurface 表示すると、人体内部の画像が見えます。なお Clip 機能で断面を作ると、内部の様子もわかります。この表示では、青色>白色>赤色と変化に対して、水分量が比例しているため、血液が流れる結果などが白く見えます。(門外漢の聞きかじり情報です)
流出面には弱く作用する圧力を想定しています。 この内容は、本練習で参考にしているウエブ資料の「[[Boundary Condition Specification: the Physical Side of the Problem:http://simvascular.github.io/docsFlowSolver.html#bcphysics]]」で、解説された式によって数学的に表現されます。

このデータの座標値を確認するために、XZ面で見る状態(体の正面でZが身長方向)として、画像が表示された上の「Hover Points On」ボタンより、画像の上端と下端のZ座標を見ると、上16.98・下-22.95なので全体で33.93の長さがありますから、人間の体を考えるとcm単位だと思われます。
この練習では、まず流出面の初期状態の圧力を p0 = 0 を設定します。 結果として流出面に設定された総圧力は、考慮された血流の圧力計算式の結果になります。つまり、抵抗値設定の方法、インピーダンス設定の方法、RCR設定の方法、冠状動脈の設定方法などです。

まず、ウインドウ左側の「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フォルダに作ります。
「Inlet and Outlet BCs」のタブ項目に関して、流出面 outlet を設定するので、この行 Name の「outlet」をダブルクリックします。境界条件の設定パネルが表示されたら、以下のように設定します。

この場合にはさらに「Do you want to scale the image?」と確認されます。これは元の画像データがmm単位でcm単位で解析する場合に、係数0.1を掛けて変換するときに設定します。
・BC Type(境界条件の形式)は「Resistance(抵抗値の指定)」 ・Resistance(抵抗値)は「1333」 ・Distal Pressure(初期状態の周囲の圧力)は「0(標準設定)」以上で完了で、OK で進めます。作業の節目に「Save SV Project」で上書き保存しておきます。

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

そこで表示のズレは気にせず、ウエブ資料の通りcm単位で行くので、データの単位を変更せず「No」で進めます。次に、画像の名前を設定するので、ウエブ資料のファイル名を参考に「sample_data-cm」として「OK」で進めます。(よく見ると画像データのファイル名に「cm」となってました)
*** Advanced Options for splitting BC:複数に分かれる境界条件のための詳細設定 [#a5c08ba5]

少し待つと、「Images」項目の下に「sample_data-cm」が追加され、右側の Display Area の、「Display」タブ内に、黒い背景に4つの医用画像が表示されます。ここで練習用フォルダ「ExTest1/Images」を確認すると、「sample_data-cm.vti・sample_data-cm.transform.xml」の2つのファイルがあります。
多くの臨床的な解析事例では、複数の分かれた流出面に対する抵抗値や蓄積容量を個別に明示的に設定する代わりに、複数の流出面の合計値を分割する方法を取ることが期待されます。この特性を用いた設定では、初めに流出面の全体として抵抗値や蓄積容量の初期値を0に設定します。

なお画像ファイルを参照ではなく複製で持つことより、プロジェクトは移動可能になり、他の解析専用PCなどに移動できます。
この練習では流出面が1つだけで、具体的にこの設定は用いないので省略します。

この「Display」タブ内に4つの表示がありますが、左上赤色枠が「Axial断面(体に水平な体軸断面)」、左下青色枠が「Coronal断面(正面から見た冠状断面)」、右上緑色枠が「Sagittal断面(側面から見た矢状断面)」、右下黄色枠が3次元表示です。[[図示説明:https://www.ipfradiologyrounds.com/hrct-primer/image-reconstruction/]]はここを参考にしてください。
** Wall Property Specification:壁面特性の設定 [#obef9a45]

画像を読めたので、PCのトラブルに備えるために、プロジェクトを保存します。ウインドウの2段目のツールバーで「Save SV Project」を押して上書き保存します。
⇒ウエブ資料リンク:[[Wall Property:http://simvascular.github.io/docsFlowSolver.html#wallproperties]]

これで SimVascular で医用画像の読込が確認できました。次に右下の「3D」表示の右上にマウスカーソルを移動すると、水色■ボタンが表示されるので押すと、大きな 3D 表示1つになります。同様に右上にマウスを持ってゆくと水色4分割ボタンがあるので、これで最初の表示に戻ります。
この練習では、先の流出面の境界条件を2種類想定し、ここでの壁面特性の設定を3種類想定しています。この組み合わせが最初に説明した以下の通りです。~
Example1:steady:基本となる定常解析(流出部は単純な抵抗係数で設定し血管壁の条件は固定設定)~
Example2:steady_rcr:定常解析でRCR流出条件で設定(血管壁の条件は固定設定)~
Example3:steady_rcr_deformable:定常解析でRCR流出条件で設定で、血管壁は固定量だけ変形する~
Example4:steady_rcr_variable:定常解析でRCR流出条件で設定で、血管壁は血流に対応して任意に変形する~

ここで左下の「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 は時間ステップの調整ですが、この医用画像は静止画なので変化しません。
最初の「Example1:steady」では、基本となる定常解析として、流出部は単純な抵抗係数で設定し、壁面の特性は、固定で滑りなし(no-slip)の境界条件として設定します。

最後に大切なヒントとして、医用画像では「DICOM形式」がよく使われますが、SimVascular をこれを利用することもでき、フォルダ内にある複数の画像ファイル全体を読み込むことができます。
それでは、具体的な流出口の境界条件の設定を始めます。ツール「SV Simulation」の「Wall Properties」タブに進みます。メニューより Type は「Rigid」とします。

** Geometric Modeling:解析形状のモデリング [#rd153a55]
なお SimVascular では、この他に「Deformable(Constant):変化可能(一定値)・Deformable(Variable):変形可能(変動値)」の選択肢もあり、これらは、それぞれ Examples 3 and 4 で設定します。

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

なおここでの解析モデルは、血管壁によって作られる血管において、血液の流れる血管の内部空間の形状をモデリングしています。血管の厚さを考慮した外形ではありません。
⇒ウエブ資料リンク:[[Solver Parameters:http://simvascular.github.io/docsFlowSolver.html#solverparameters]]

*** Creating a Path:パスの作成 [#we6e4198]
血流解析ソルバー SvSolver には、多数のパラメータ(設定項目)があります。しかしこの練習では、これらの中で数個を具体的に設定する必要があるだけです。全てのパラメータを確認するためには、付録を参照してください。まずここでは、以下の4つを設定します。ツール「SV Simulation」の「Wall Properties」タブに進み、パラメータの一覧表を確認します。

ここからの操作では、右側の Display Area の「Display」タブ内にある、黒い背景の4つの医用画像を利用します。まず確認ですが、左上の赤色枠Axial断面、左下の青色枠Coronal断面、右上の緑色枠がSagittal断面で、右下の黄色枠が3D表示で先の3つの断面が立体的に交差して表示されます。
・Number of Timesteps(解析タイムステップ数):200 ・Time Step Size(解析ステップ幅の時間・秒単位):0.03 ・Number of Timesteps between Restarts(結果出力での処理のステップ間隔):10 ・Step Construction(ステップ内での収束反復数):2(標準の設定で流速が一定の解析では2で十分とのこと)

現在の表示は縦横2X2の4分割で、これが標準表示形式です。どこかの断面表示の右上の工具の×印をクリックすると、様々な表示形式が選択できます。例えば「2D images left, 3D right」を選択すると、左側に縦3つの断面表示で右側に大きな3D表示となります。以下では標準表示形式とします。
*** Time Step Parameters Block:時間ステップパラメータのブロック(1〜3行) [#bf6f8272]

この画像内でのマウス操作が大切なので、以下にまとめておきます。(中ボタンはスクロールホイール)~
「Axial断面・Coronal断面・Sagittal断面」~
左ボタン:見ている断面以外の直交する断面の位置を交点で移動させる。クリックやドラッグで移動させる。~
中ボタン:ドラッグで移動可能な方向へ画像を水平移動させる。ホイールの回転で見ている断面の軸に沿って移動させる。~
右ボタン:画面の上方向にドラッグすると画像を拡大して、下方向では縮小します。~
「3D表示」~
左ボタン:ドラッグで3次元表示の中心を基準に回転させる。~
中ボタン:ドラッグで3次元表示を水平移動させる。ホイールの回転で3次元表示を拡大縮小させる。~
右ボタン:画面の上方向にドラッグすると画像を拡大して、下方向では縮小します。~
この例では、一覧表の2行目:解析タイムステップ数(Number of Timesteps):200、および3行目:解析ステップ幅の時間(Time Step Size):0.03として設定します。一覧表の対応する Value の欄をクリックしてに入力します。

マウス操作の結果は、左下の「Image Navigator」と連動している。そこでLocで示される3つの断面の交点の位置を数値で設定したり、下の3つの断面軸のスライダーを移動させてステップを調整することで、交点の位置を移動させて表示を変更することもできる。
これらの2行は、血流解析を実行する物理的な時間を定義します。つまりこの場合には、全体の解析時間(T)= 解析タイムステップ数(N)×解析ステップ幅の時間(Δt)となり、数式では、T = N × Δt = 200×0.03 = 6.0秒です。

それでは、血管の解析モデルを作ってみます。まずは血管の中心線となるパスを定義します。この例題では、大動脈(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)」に対応します。
しかしこの分析を6回の脈拍周期に対して実行したい場合、全体の解析時間を6秒間とした問題を実行する必要があります。もし解析ステップ幅の時間の設定を同じにした場合(Δt=0.03秒)、N=200の解析タイムステップ数が必要になります。

「SV Data Manager」の「Paths」項目の下に、パス「aorta」項目が新しく作られます。これをダブルクリックすると、画像表示が半分になり、ツール「SV Path Planning」が表示されます。もし画像が小さくなったら、ツールと表示の境界をドラッグすると配分が変わります。また注目するAxial断面が小さくなったら、Sagittal断面との境界を移動できます。
注意:この解析タイムステップ数 N は、以下で次の説明で定められた解析ステップ幅の時間 Δt を前提として、血流解析で必要となる特定の物理現象を再現するために必要なタイムステップの総数であることに注意してください。

最初ですので、パスを構成する制御ポイントのリスト「Control Point List」には、何もありません。
注意:ここで重要な問題は、解析ステップ幅の時間 Δt の妥当な値をどのように設定するかです。実は、これに対する簡単な答えはありません。まず Δt は、解析の時間に関する離散化を制御するパラメーターです。これは、解析モデルのメッシュによって与えられる空間に関する離散化と同様の方法で影響します。

それでは、制御ポイントを追加してゆきます。場所を指定するときは、左下の「Image Navigator」のスライダーの値を「Axial軸:A・Sagittal軸:S・Coronal軸:C」として、「A:511,S:255,C:30」のように表示します。
この2つのパラメータは、より細かくすればより正確な結果が得られますが、問題を解くための計算資源がより大きく、解析時間がより長くなります。ここではパラメータの設定方法について、厳密で理論的な詳細については詳しく説明しません。

まずスライダーを上記の位置にして、Axial断面を横に拡げると全体が見えます。この表示では大動脈は明確ではなく、中央下部に別の白い場所があり、表示を下にずらし(A:475)とします。方法としてはAxialスライダーをずらすか値を入力するか、Axial断面上でスクロールホイールを動かして、「A:475」とします。
その代わり、このパラメータを評価し設定するための合理的な手順を紹介します。妥当な解析ステップ幅の時間 Δtを推定する手順は、「CFL数」と呼ばれる無次元パラメーターに基づいています。

もしAxial断面の表示が小さいならば、表示の中で、右ドラッグで拡大してください。制御ポイントを指定する方法は、以下の2つがあります。~
方法1:Axial断面表示中の白く丸い血管断面の中心をクリックして、青線と緑線の交点を移動させて、キーボードのCtrl+Aを押す、ツールの「Add」ボタンを押す、です。~
方法2(直接指定):マウスを白く丸い血管断面の中心にドラッグして、Ctrl+左クリックです。
この「CFL数」は、流体領域で発生する速度(v)、時間的な解析ステップ幅の時間(Δt)、およびメッシュの空間的な離散化パラメーター(つまりメッシュサイズ)(h)に関して、次式のように関連付けます。CFL = vΔt / h(分子のvΔtは1解析ステップで流体が移動する距離/分母はメッシュの寸法)

これで「(0)A:475,S:226,C:14」の位置に、パスの制御ポイントが追加され、0番目としてリストにLoc(mm)で示された3次元の座標値「0:-2.7399,-2.3100, 14.1633」が表示され、3つの断面表示に赤色の十字とひし形が表示されます。
有限要素法の解析では、物理現象がメッシュの寸法の中で、順番に流体が移動することが前提です。つまり流体の移動距離とメッシュの寸法は同等であるべきで、この「CFL数」は、約1.0にする必要があります。これは、流体空間での挙動の速度について、時間的および空間的離散化がバランスしていることを意味します。

指定を間違えて削除するときは、以下の2つの方法で削除できます。~
方法1:リスト内で削除しようとする制御ポイントをクリックして、リスト右のの「Delete」ボタンを押す、です。~
方法2(直接指定):断面内の削除しようとする制御ポイントを、マウスでCtrl+右クリックです。
例えば、平均予想速度が約 v=16.7 cm/s であるとして、空間的な離散化パラメーターつまり有限要素サイズは h=0.5 とすると、上記の考えに従い、1に近い「CFL数」を設定すると、次のようになります。 Δt = h v = 0.5 16.7 = 0.03秒

最初の制御ポイントが出来たので、続けてAxial断面において大動脈の下方に向けて進むために、「Image Navigator」のAxialスライダーの値を「25〜50」の範囲で動かして小さくして、同様な方法で血管断面の中心部の制御ポイントを選択し、パスに追加します。
もちろん、現実世界の問題では、評価がはるかに複雑になると想像できます。モデルの最大速度がどこにあるか、メッシュ要素のサイズはどこにあるかなどを推定することは、非常に困難です。この解析ステップ幅の時間 Δt は、流体解析の線形ソルバーの性能に非常に重要な影響を与えるパラメーターです。例えば小さくすると、ソルバーが解を見つけやすく(収束しやすく)なりますが、特定の時点に到達するまでに時間がかかります。

この練習では、次に示すように制御ポイントを(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」
*** Output Control Block:解析結果の出力制御のブロック(4〜9行) [#x56f710c]

実はAxial軸のスライダーを見ると、まだ200ですから先があるのですが、ここから進むと、大動脈(aorta)が腸骨動脈(iliac artery)に分岐して、血管が水平に動くので、モデリングが難しくなるので、この最初の練習ではここまでにします。
一覧表の5行目:Number of Timesteps between Restarts(結果出力での処理のステップ間隔)は、10 を設定します。この値は、解析ソルバーが結果ファイルを保存する頻度を示します。この練習では、実際には 200 の異なる時点(ステップ)で、数値解析の 200 の解を計算していますが、これは上記で検討した解析ステップ幅の時間 Δt から定まる解析タイムステップ数 N になります。

ウエブの解説資料では、制御ポイントを追加してゆき、大動脈が2つの腸骨動脈に分かれる分岐に到達したら、まず左側の腸骨動脈に進むように指示があります。さらに出来るだけ血管のモデリングを進めようとすると、血管の識別が難しくなるAxialスライダー値が10になるまで進められるとのことです。
しかし一般的には、すべての時間ステップごとに結果ファイルを保存する必要はありません。つまり2つの連続した解析結果は、Δt=0.03秒しか離れていないことに注意してください。この設定では、10 回の解析毎に1つの結果をファイルに保存するように、ソルバーに設定しています。

ここまでの作業を失わないために、プロジェクトのデータの追加や変更を行ったときは、忘れずに次の手順で保存してください。~
ウインドウの2段目のツールバーで「Save SV Project」を押して上書き保存します。これでパスの情報が、例題プロジェクトフォルダー「ExTest1」の「Paths」フォルダー内に、「aorta.pth」ファイルとして保存されています。(ちなみにこのファイルはXML形式で大量で複雑な情報になっています)
したがって、ソルバーの出力ファイルは次のようになります。restart.0.*、restart.10.*、restart.20.*、restart.30.*、…、restart.190.*、restart.200.* (ただし最初の0ステップは、初期状態であって解析結果ではありません)

ここで3D表示を見ると、黄色の線分でパスが表示されています。見やすくするために、3D表示のみとして、「SV Data Manager」の「Images」項目の下にある「sample_data-cm」のチェックを外すと、モノクロの医用画像の表示がなくなります。
*** Step Construction Block:増分計算の収束回数のブロック(10〜11行) [#wee2c11b]

3D表示の中で、黄色のパスの中に制御ポイントが青色と赤色の小さな立方体で表示されます。パスを構成する制御ポイントのリストの中で、最初をクリックすると赤色が選択された制御ポイントで青色がその他のポイントです。これでリストと3次元表示の対応を確認することができます。
この設定は、1解析タイムステップ内の非線形反復ループの収束回数を設定します。初期設定では、各タイムステップでは2回の非線形収束計算を行います。各収束によって、解析ソルバーは結果を更新して正しい結果を得られるようにします。

もし表示が小さいと感じるならば、「Paths」項目の下にある「aorta」項目を右クリックして、メニューの「3D Point Size」を選択して、Sizeを「2.0」で「OK」で進めて、表示を大きくすることができます。通常は初期設定で大丈夫です。
注意:数値解析の非線形収束計算の、適切な回数を決定することも、重要な問題です。原則として、数値解析の結果の残差(つまり、誤差)が、十分小さくなるまで繰り返す必要があります。しかし、各タイムステップで多くの非線形収束計算を行うと、非常に計算コストがかかります。

*** 2-D Segmentation:2次元セグメンテーション [#s680950c]
一般にこの練習のような定常流の問題では、1回または2回の非線形収束回数で十分です。拍動性の問題については、少なくとも3回の非線形反復が必要です。さらに変形可能な壁条件の問題では、4回以上の非線形収束計算が必要です。

セグメンテーションとは、画像のなかで目的とする特定の部分を取り出すことで、領域分割とも言います。ここでは医用画像の中で血管の断面を取り出して、筒状の解析モデルを作成します。具体的な手順は、先に作ったパスに沿って、パスに直交する画像データ上で、特定される大動脈の血管壁の輪郭のグループを作ることです。
この収束回数のパラメーターは、解析ステップ幅の時間 Δt および有限要素メッシュによって与えられる空間離散化の品質とともに、血流解析の性能に重要な影響を与えます。これらのパラメーターを適切に選択することで、シミュレーションはより高速かつ正確に実行されます。これについては後で詳しく説明します。

最初に、血管壁の輪郭のグループを作ります。まず「SV Data Manager」の「Segmentations」項目を右クリックして、メニューから「Create Contour Group」を選択します。設定パネルが表示されたら、Select Path には先に作ったパス名「aorta」が出ているので、輪郭グループの Group Name は、通常はパス名と同じ「aorta」として、「OK」で進みます。
ここで説明する一連の指示は、svSolver が取り得るすべての可能なパラメーターの非常に小さなサンプルを構成します。より詳細な議論はこの「[[セクション:http://simvascular.github.io/docsFlowSolver.html#solverinp]]」で見つけることができます。

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

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

最初は輪郭グループは空ですので、パスのポイントに対応して、輪郭の作成し追加します。手順は次の通りです。
血流解析を実行する前に、PreSolver と FlowSolver が必要となるデータファイルを作成する必要があります。以下の記述で「*」は解析ジョブ名です。

「SV 2D Segmentation」ツールの、「LevelSet」ボタンを押すとLevelSetパラメータ設定用パネルが表示されます。殆どは標準設定を用いますが、「Convert to Spline」にチェックを入れて、輪郭線を分割する制御ポイントの数を12に変更して、再度、「LevelSet」ボタンを押します。
 
これより領域の輪郭が自動的に作成され、「SV 2D Segmentation」ツールの輪郭リスト(Contour List)に0番目が追加されました。左上画像の血管部分の領域の外側が、左下画像の微分値の最大部分の輪郭に対応していることが分かります。
PreSolverに対して:~
= *.svpre: 入力スクリプトファイル:解析に用いるファイルや基本的なパラメータ設定など

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

輪郭の四角は制御点でマウスで移動して微調整できます。マウスを制御点に近づけると、選択され赤色表示なるので、左ボタンでドラッグすると、輪郭上の制御点は形状の調整、中心部の四角は輪郭全体の移動、斜め上の四角は全体の大きさの変更、ができます。
= geombc.dat.1: PreSolver によって作成され、解析問題を定義するための、メッシュ情報と境界条件で構成されます。~
= restart.0.1: PreSolver によって作成され、解析問題の初期条件を定義します。~
= numstart.dat: 最初の内容は数値0となり、この数値は、解析を実行するときに、出力する解析結果ファイルの番号として、初期条件として開始するステップ数を指定する値で、血流解析ソルバーによって使用されます。~
= bct.dat: 流入条件を定義する「*.flow」ファイルで指定された血流の時間変化に対応して、解析モデルの流入面で時間に依存する速度ベクトルを定義します。 この「[[セクション:http://simvascular.github.io/docsFlowSolver.html#bctfile]]」を参照してください。~
= solver.inp: 血流解析ソルバーの詳細情報を提供し、タイムステップサイズ、タイムステップの数、非線形収束の数、境界条件制御などのパラメーターを指定します。この「[[セクション:http://simvascular.github.io/docsFlowSolver.html#solverinp]]」では、詳細な説明を示します。~

この領域の輪郭の作成と輪郭リストへの追加を、先に設定したパスに沿って続けてゆきます。この時はパスに直交する検討断面(Reslice)に従って、「SV 2D Segmentation」ツールのResliceスライダーを、現在の0から初めて、5から25ステップで増分させながら、最後の303まで進めます。なおウエブ資料では、途中の約285で止めています。
これらの5つのファイルは、分析を実行するために最低限必要なものです。 ただし、より複雑な境界条件を含むより複雑なシミュレーションを実行する場合は、さらに多くの入力ファイルが必要になります。

もし「LevelSet」で作られた輪郭に問題があり、特定の輪郭をさらにスムーズにしたい場合は、輪郭を選択して「Smooth」ボタンをクリックします。もし作成や修正に失敗したら、リスト右の「Delete」で削除して、再び「LevelSet」で作成できます。
さらに、以下に示す4つの流出面での境界条件を用いる場合には、追加の入力ファイルが必要です。

ウエブ資料では、「Smooth Fourier Number」の設定では、フーリエ数の6〜10の値は、大動脈のこの部分の断面に適しています。 検討断面が血管分岐領域にあるために輪郭が異常な場合は、この輪郭を削除してパスを下に移動するだけで、より適切な輪郭が得られるとのことです。
【インピーダンス境界条件シミュレーション】:~
この5つの標準ファイル(geombc.dat.1、restart.0.1、numstart.dat、bct.dat、solver.inp)に加えて、各インピーダンスを定義する流出面における時間領域でインピーダンス関数を設定するする必要があります。 つまりは、各流出面の流量の履歴を定義することになります。そのため2つの追加のASCII形式のテキストファイルが必要になります。「impt.dat」(各流出面でのインピーダンス関数を含む)と「Qhistor.dat」(時間ごとの流量履歴を含む)です。 詳細は「[[こちら:http://simvascular.github.io/docsFlowSolver.html#impbcfile]]」。

役立つヒント:輪郭リストの1つを選択すると、この輪郭に関するいくつかの幾何学的な情報がメインウィンドウの下部にあるステータスバーに表示されます。この情報は「面積(Area)・周長(Perimeter)・中心点の座標(Center Point)」が、cm単位で含まれます。
【RCR境界条件シミュレーション【
この5つの標準ファイル(geombc.dat.1、restart.0.1、numstart.dat、bct.dat、solver.inp)に加えて、各流出面での圧力と流量の間の関係を設定するASCII形式のテキストファイルで、RCRパラメータを設定する必要があります つまりは、各流出面に圧力を定義することになります。そのため、このようなパラメーターを含む「rcrt.dat」という名前のファイルを定義することが必要になります。詳細は「[[こちら:http://simvascular.github.io/docsFlowSolver.html#rcrtfile]]」。

それでは輪郭の作成を進めてゆきます。この練習では比較的単純な形状なので、Resliceのスライダーを20ずつ増分させることにします。まずReslice=20として、3D表示の検討断面が正しいことを確認したら、「LevelSet」を押します。これで1番の輪郭が追加されます。
【冠動脈境界条件シミュレーション】:~
この5つの標準ファイル(geombc.dat.1、restart.0.1、numstart.dat、bct.dat、solver.inp)に加えて、ASCII形式のテキストファイルで冠動脈モデルパラメータを指定して、各流出面の流れと圧力を定義します。このためには、各パラメーターを含む「cort.dat」という名前のファイルを定義することによって行われます。 詳細は「[[こちら:http://simvascular.github.io/docsFlowSolver.html#cortfile]]」。

このような調子で、スライダーの右端Reslice=303まで進めるのですが、この輪郭作成は検討断面の画像が適切ならば、ほぼ自動的に進めることができます。そこでモデリングを高速化するために、SimVascularはバッチセグメンテーション(パス全体の自動輪郭作成)を実行できます。
【閉ループ境界条件】:~
これには、患者を想定した血液循環を表現するための集中パラメーターネットワークモデルが必要で、さらにこれを実現する実行可能ファイルの実装が必要です。これについては現時点では実装されておらず、このチュートリアルの今後のバージョンで取り上げます。 乞うご期待!

それでは、Resliceの40から300までを20増分で、バッチセグメンテーションを実行する方法を以下に示します。~
まずツールのリストの上にあり、「Batch Mode」にチェックを入れて、次のListに「40:20:300」と入力、「LevelSet」ボタンを押します。
設定ファイル名の番号に関する説明: 例えば「geombc.data.1」と「restart.0.1」の両方のファイルでは、ファイル名の最後についた番号「.1」は、並列処理で領域分割したパーティション番号を示します。 つまり血流解析ソルバー「svSolver」には、MPI(メッセージパッシングインターフェイス)を使用して、つまり、複数のプロセッサまたは複数のCPUコアを使用して、並列に問題を実行する機能があるからです。

これで輪郭の番号2から15までの新しい輪郭が作成され、Reslice位置は40,60,80,…,300となり、輪郭グループに追加されます。 それぞれの輪郭をリストから選択して、異常がある場合は削除してください。解析データの作成や修正など、作業の段階ごとに必ず「Save SV Project」で上書き保存してください。
例えば4つの複数のプロセッサを使用してジョブを実行する場合、最初の処理は上記の2つのファイルを、解析に使用する多くのプロセッサに「分割」することです。これより計算をより高速に実行できます。 たとえば、svSolver で後で4つのプロセッサを使用する場合、これらのファイルは次のように分割されます。

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

まずツールの「Lofting Preview」にチェックを入れます。これより「SV Data Manager」の「Segmentaitons/aorta」項目の下に「Lofted」が作成され、3D表示には灰色の輪郭を滑らかにつないだ血管の解析形状が表示されます。作業の段階ごとに必ず「Save SV Project」で上書き保存してください。
大まかに言えば、これら4つのファイルはそれぞれ、元の分割されていないファイルサイズの1/4です。一般的なある時点のタイムステップ「n」の場合、解析結果ファイルは次のファイルによって与えられます。

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

*** 3-D Segmentation:3次元セグメンテーション [#s680950c]
*** Creating Data Files:実際のデータファイルを作成方法 [#w281cf06]

ウエブ資料では、セグメンテーションのもう1つの方法として、3次元的な方法が紹介されていますが、この練習では省略します。
この手順では、「CylinderTest1」プロジェクトの「Simulations」フォルダ内に、新たにジョブフォルダーを作り、この中に以下に示す各種の入力ファイルを作成します。まずツールの「Create Files and Run Simulation」タブに進みます。

*** Creating a Model (with PolyData):PolyDataによる解析モデルの作成 [#iaa7290f]
確認のため、対象となる CylinderTest1 プロジェクトの Simulations フォルダ「C:\WorkSV\CylinderTest1\Simulations」開くと、現在作成している「steady.sjb」ジョブファイルのみがあります。

ウエブ資料を簡略化して、この練習では、血管領域の輪郭グループaortaのみを作成したので、PolyDataを用いて解析モデルを作成することができます。手順は以下の通りです。
まず Choose Mesh の欄でメッシュを設定するので「cylinder」を選択します。次に「Create Data Files for Simulation」ボタンを押します。少し待ってデータが作成が完了したメッセ―が出るので、OK で進めます。これよりジョブ名「steady」を使用した新しいディレクトリが「Simulations」フォルダーの下に作成され、その中に次のフォルダーやファイルが作られます。

まず「SV Data Manager」の「Models」項目を右クリックして、メニューから「Create Model」を選択します。設定パネルが表示されたら、Model TypeはPolyDataで、Model Nameは「aorta」と入力して、「OK」で進めます。
プリソルバー PreSolver 用の作成:~
mesh-complete(フォルダー) inflow.flow steady.svpre

解析形状のPolyDataモデル「aorta」の項目が、「SV Data Manager」の「Models」項目の下に作られます。これをダブルクリックすると、ツール「SV Modeling」が表示されます。現時点では何も設定がないですが、ここに実際の解析モデルを、滑らかな血管面と境界条件を設定して作ります。
フローソルバー FlowSolver 用の作成:~
geombc.dat.1 restart.0.1 bct.dat(および bct.vtp) solver.inp numstart.dat ~
(該当する場合に作られるがこの状態では、rcrt.dat, cort.dat はなし)

まずツールの「Create Model…」ボタンを押します。対象となる輪郭グループを選択しますが、ここでは「aorta」のみなので、Use欄にチェックを入れて、Number of Sampling Pointsの指定では、PolyDataのオプションとして「40」を入力し、「OK」で進めます。
** Running Simualtion Jobs:血流解析シミュレーションの実行 [#rf2b0b56]

作成された解析モデルのすべての面が「Face List」タブにリストされます。この練習では「wall_aorta・cap_aorta・cap_aorta_2」の3つです。操作が見やすいように3D表示のみとし、Imagesの「sample_data-cm」とSegmentationの「aorta/Lofted」の表示を外します。
⇒ウエブ資料リンク:[[Running Job:http://simvascular.github.io/docsFlowSolver.html#runningjob]]

面の名前と位置を明確にするために、リストの項目「C」で色を設定できるようなので、Cの欄を右クリックしてメニューの「Change Color」を選択し、色を選択して表示を変更できるはずなのですが、方法がよくわかりません。
実際にシミュレーションを実行する前に、必要に応じて「Import Extra Files into Job」ボタンをクリックして、追加ファイルをシミュレーションジョブに追加する必要がある場合があります。 この練習では、「importint」としてのの追加ファイルは必要ありません。

このリストの表示で面のNameを修正します。1番のwall_aortaはこのままで分かります。3D表示の上部の丸い断面をクリックしてキーボードでSを押すと、リストの2番目「cap_aorta」が選択されます。つまりこれが上部の流入部分なので、Nameをダブルクリックして「inflow_aorta」変更し、3番目「cap_aorta_2」を「outflow_aorta」に変更します。
この練習ではまず1CPUの逐次処理で進めます。今後に、シミュレーションジョブを並列処理で実行する方法には、まず「Use MPI」にチェックを入れて、隣のスライダーで並列処理のプロセス数設定します。SimVascular では、解析を実行するPCのCPUを調べて、物理コア数ではなく論理コア数分の並列処理が設定可能です。

次に面の属性(wall:壁・cap:キャップつまり断面)を確認すると、この設定で正しいです。解析データの作成や修正など、作業の段階ごとに必ず「Save SV Project」で上書き保存してください。
次に「Starting Step Number」で、解析の開始ステップ番号を設定します。デフォルトは0ですが、同じジョブを再度実行すると、前回のシミュレーションの最後のタイムステップを使用するので、解析ステップ数が追加されてゆきます。

*** Creating a Model (with OpenCASCADE or Parasolid):OpenCASCADEやParasolidによる解析モデルの作成 [#dc4af3ed]
つまりこの練習の設定では、全体 200 ステップで出力増分 10 で解析をした後で、デフォルトで設定しないと、解析ステップ 210 から追加されます。結果を上書きして残す場合には、ここに0を指定する必要があります。

ウエブ資料では、解析モデル作成のもう1つの方法として、OpenCASCADEやParasolidによる方法が紹介されていますが、この練習では省略します。
ここでは逐次処理で試すので、「Use MPI」にチェックを入れずに、「Run Simulation」ボタンをクリックします。ジョブの実行中、シミュレーションの進行状況はツール上部の表示「Job Status」に簡単な進捗度合い(%表示)と、メインウィンドウの下部にあるステータスバーに表示されます。この内容は以下の通りです。

** Meshing:メッシュ作成 [#je4d9936]
実行中のジョブの名前:完了したパーセンテージ  さらに以下の情報:「現在の解析ステップ] [解析時間] [非線形収束計算の残差] [再変化の対数]…、などが続きます。

計算格子またはメッシュ生成とも呼ばれる解析モデルの離散化は、複雑な解析形状をより小さな単純な要素に分割する手順として定義されます。血流解析の流体解析を実現するためには解析モデルの離散化が必要です。 SimVascularは、メッシュ作成に2つの方法を提供してるのですが、ウエブ資料では次の「TetGen」を用いた方法のみが提示されてます。
表示「Job Status」が「Running: 100% completed」となり、ジョブが 100% 完了すると、ジョブが完了したことを通知するメッセージが表示されます。ここで「Show Details…」ボタンで、シミュレーションの進行状況に関する詳細情報を取得できます。同等の内容は、後のの手順で「histor.dat」より確認します。確認ができたら OK で進めます。表示「Job Status」が「Simulation done」となります。

この「TetGen」は、たぶん Tetra Element Mesh Generation の意味だと思われ、三角形4面で作られた四面体要素(Tetra Element)を使用したメッシュ作成手法です。先の手順で解析形状モデル「aorta」が用意できているので、TetGenを使用してこの解析モデルのメッシュを作成できます。
なお解析ジョブの実行中に、完了する前にジョブを終了できます。 シミュレーションを停止する方法:~
「SV Data Manager」で、実行しているジョブ名「steady」のジョブノードを右クリックします。メニューの「Stop Simulation」をクリックすると停止します。

手順としては、「SV Data Manager」の「Meshes」項目を右クリックして、メニューから「Create Mesh」を選択します。設定パネルが表示されたら、Select Modelはaortaで、Mesh TypeはTetGenで、Mesh Nameには通常はパス名と同じ「aorta」と入力して、「OK」で進めます。
この解析ジョブのフォルダ「C:\WorkSV\CylinderTest1\Simulations」の中にある「steady」フォルダを確認します。この中の「histor.dat」ファイルを開いて、数値解析の進行状況を確認することができます。これには、数値シミュレーションの実行状況を評価するための詳細情報が含まれています。これらの各列の意味を簡単に説明します。

解析形状のTetGenメッシュ「aorta」の項目が、「SV Data Manager」の「Meshes」項目の下に作られます。これをダブルクリックすると、ツール「SV Meshing」が表示されます。現時点では何も設定がないですが、ここにTetGenメッシュを設定して作ります。
この「histor.dat」ファイルには、aからhまでの8列の情報が、解析ステップ1から 200 まで、各ステップに収束計算を2回しているので、全体で 400 行分の情報が列記されています。~
a:1 b:1.30E+001 c:1.16E-002 d:(0) e:2.10E+002 f:2.62E+028 g:< -10474 1 | 15 > h:[199-190]

= a:解析時間ステップ番号 − 各時間ステップ番号が2回現れることがわかります。これは2回の非線形収束計算を実行しているためです。この列は1から解析タイムステップの総数(この場合は200)までになります。~
= b:解析のCPU時間(秒) − 解析を開始してから計測された計算時間です。~
= c:非線形残差の確認 − これにより、解析結果がどの程度正確であるかがわかります。各タイムステップで、各解析ステップで2行目の数値は、1行目の数値よりも小さいことを確認してください。これは、解析ソルバーの非線形収束ループが正しく実行されていることを示す良い結果です。なお、解析タイムステップの最後(この場合200)の非線形残差は、常に最大でも「1.0e-03」を目指す必要があります。
= d:残差の対数 − これは、数値解析の収束の状態をすばやく評価するための非常に優れた方法です。この数値が非常に小さく、さらに負の場合、それは良い数値解析が実現できている証拠です。この「-10」の値は、数値析の開始から1桁、-20桁、2桁など、残差を減らしたことを意味します。~
= e:速度場の残差のエントロピーノルム(最大Δu/ u)~
= f:圧力場の残差のエントロピーノルム(最大Δp/ p)~
= g:< Ga Gb | Gc> ~
Ga:最大残差が発生するブロック(各ブロックにはデフォルトで255要素があります) Gb:エラーが最大のブロック内のノード Gc:最大残差と平均残差の比率の対数測定:この数値をできるだけ小さくすることが、残差の空間的均一性の指標になります ~
= h:[ Ha - Hb ] ~
Ha:プレコンディショナーソルバーで使用されるクリロフベクトルの数 Hb:GMRESソルバーで使用されるクリロフベクトルの数 (なお標準の svLS を使用する場合、これらの数値はゼロです。)

まずツールの Global Max Edge Size の「Estimate」ボタンをクリックして、「解析モデル全体の最大エッジサイズ」の推定値を入力すると、ここでは「0.3242(cm)」となりました。後の設定は全て標準のパラメーター値を使用することにします。
ここで血流解析の実行が完了すると、保存を指定した解析結果に関して、全体の解析ステップの中で、各時間に対応する解析結果ファイルのセットが作られます。

そこでツール右上の「Run Mesher」ボタンを押すと、少し時間がかかる注意があるので、承知して「Yes」で進みます。
また別の場面では、完了したシミュレーションジョブを、改めて続行したい場合があります。前の処理プロセス(並列数)と同じ数のプロセスを使用するならば、単に「Run Job」ボタンをクリックするだけです。 この場合に解析ソルバーは、前の結果の終了時の解析タイムステップ 200 から継続して、追加の形の次の 200 ステップのシミュレーションを開始します。

少し待つとメッシュが作られ統計情報(Nodes:7578・Elements:38758・Edges:8496・Faces:5664)が表示されるので「OK」で進めます。なおこの統計情報はモデル作成の微妙な違いで変化します。メッシュを確認するために、「Models」項目の「aorta」のチェックを外すと、灰色の面の上に青色の網の目のメッシュが表示されます。
血流解析シミュレーションが完了すると、解析設定情報を含む解析結果ファイルを可視化し確認する準備が整います。これらのファイルを変換して、可視化用ファイルを生成します。この可視化手順については、次のセクションで説明します。

役立つヒントとして、先に推定される最大エッジサイズは、モデル内の最小の断面の半径の約半分とのことです。
*** Running Simualtion Jobs at Clusters:並列処理クラスタ―での血流解析シミュレーションジョブの実行 [#p5f3b23c]

これでメッシュも作成できました。解析データの作成や修正など、作業の段階ごとに必ず「Save SV Project」で上書き保存してください。
大規模解析モデルを用いて、高速な血流解析シミュレーションを実行するためには、解析に必要なデータファイルをエクスポートし、並列処理クラスターにアップロードして、血流解析シミュレーションを実行することもできます。 この場合には解析用の並列処理クラスターで、SimVascular のフローソルバー「MPI並列処理用:svSolve」が使用可能であることが必要です。

** Simulation:血流解析の実行 [#za471411]
実行手順の概要としては、「SV Data Manager」で対象となるジョブ名を右クリックして、メニューの「Export Data Files」より、指定したフォルダに解析に必要なファイル群が保存されます。このファイルを並列処理クラスタ―に転送し、ここで mpiexec を用いて svsolver を並列実行します。結果ファイルが作られるので、これを SimVascular の解析フォルダに戻して、通常の方法で可視化用データに変換します。

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

手順としては、「SV Data Manager」の「Simulations」項目を右クリックして、メニューから「Create Simulation Job」を選択します。設定パネルが表示されたら、Select Modelはaortaで、Job Nameには「aorta」と入力して「OK」で進めます。
⇒ウエブ資料リンク:[[Postprocessing:http://simvascular.github.io/docsFlowSolver.html#postprocess]]

新しいジョブ「aorta」が、「Simulations」項目の下に作成されます。 この項目ををダブルクリックすると、「SV Simlation」ツールが表示されます。 それでは次から、ジョブのパラメーターの設定を開始します
以下の解析結果の可視化では、SimVascular ではなく「ParaView」を利用しますが、まずはフローソルバー「svSolve」の解析結果ファイル「restart」を、可視化用ファイルに変換します。

*** Basic Parameters:基本パラメータ [#m39d4b2b]
*** Generating the *.vtp and *.vtu files in SimVascular:SimVascular での可視化用ファイル *.vtp と *.vtu の作成 [#l9ad686e]

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

*** Inlet and Outlet Bcs:流入と流出の境界条件 [#a97f924f]
まずツール「SV Simulation」の「Convert Result」タブに進みます。まず解析結果が保存されているディレクトリが「C:/WorkSV/CylinderTest1/Simulations/steady」であることを確認します。

ツールの下にある「Inlets and Outlet BC」を選択すると、パラメータ表が表示されます。 この解析モデルでは「流入:inflow_aorta・流出:outflow_aorta」の2つの境界条件の設定が必要です。
次に、変換する解析ステップを設定します。まず Start は最初の解析結果ファイルのステップ番号で(0)、次に Stop は最後の解析結果ファイルのステップ番号で(200)、最後の Increment は解析結果ファイル出力の間隔のステップ数で(10)と設定します。

まず流入の境界条件を設定します。この「inflow_aorta」の設定では、事前に流入速度の時間変化の設定を定義した「steady.flow」ファイルが必要です。例題フォルダ「ExTest1」の中に、「flow-files」フォルダーを作り、この中に「steady.flow」ファイルを保存します。
最後に、出力する情報を選択するので、「Volume Mesh と Surface Mesh」にチェックを入れて、ここで「Convert…」ボタンを押して変換します。変換したファイルを保存するフォルダの場所を指定するので、「E:\WorkSV\CylinderTest1\Simulations\steady」のフォルダーを選択します。これは上記の「Result Dir」で確認した場所と同じです。

この流入速度のファイルでは、流入量が一定とするため速度も一定となります。よって時間0.0から1.0において、流速が-100で一定の条件を設定するために、以下の2行を含むファイルsteady.flowをメモ帳などで作っておきます。速度は流入面の中に進む方向がマイナスっぽいです。~
0.0 -100 ~
1.0 -100 ~
少し待つと、変換が完了したメッセージが表示されます。詳細な情報は「Show Details…」で確認できます。変換したファイルの処理内容が列挙されます。OK で終了します。可視化用ファイルは、指定したフォルダ内に新しく作られた「steady-converted-results」フォルダ内に、変換された「vtp, vtu」ファイルして保存されます。

準備ができたので、「inflow_aorta」の流入条件を表の最初の行で設定するために、右クリックします。メニューの「Set BC」を選択すると、「Set Inlet/outlet BCs」パネルが表示されます。次のように設定します。
可視化用ファイルの変換が完了すると、ツールの設定で流れの数値情報の出力(標準でチェック)「Calculate Flows」がオンになっている場合、エクスポートされたフォルダーに、以下の4つのテキストファイルが作成されます。

まずBC Type(境界条件の形式)は「Prescribed Velocities(指定速度)」、Analytic Shape(断面内の分析形状)は「parabolic(放物線)」、Point Number(速度指定の点数)は「2(一定流量の場合でファイルsteady.flowの行数)」、Fourier Modes(速度変化のフーリエ級数モード)は「1(一定流量の場合)」、Period(周期)はオプションでだが「1.0」としておく。
= all_results-flows.txt: 各解析ムステップ対応した流入と流出の各面の流量 ~
= all_results-pressures.txt: 各解析ムステップ対応した流入と流出の各面の圧力 ~
= all_results-averages.txt: 流入と流出の各面の圧力、流量の平均値、流量の最大値、流量の最小値 ~
= all_results-averages-from_cm-to-mmHg-L_per_min.txt: all_results-averages.txtと同じ情報ですが、単位を圧力は mmHg で、流量は L/min として計算した結果です ~

ここで、Flow rate(from File)の…ボタンを押して、C:\WorkSV\ExTest1\flow-filesの中から、流量のファイル「steady.flow」を選択します。全て選択したら「OK」で進みます。表の中に設定が表示されました。
この SV Simulation の Convert Results での、解析結果の変換では、その他のオプションも用意されています。

次に、流出の境界条件を設定します。この「outflow_aorta」では、次のようにします。表の2行目のBC Typeをダブルクリックして「Resistance(抵抗指定)」を選択します。次に2行目のValuesダブルクリックして抵抗値「16000」を選択します。
= As Single File: このオプションは、全解析ステップの結果を、単一ファイルとして、「*.vtpまたは*.vtu」ファイルに結合します。~
= Last Step to restart.x.0: このオプションは、すべての解析結果ファイルを、最後の単一の解析結果ファイル restart.200.0 に結合します。このファイルは、次の新しい解析においては、ファイル名を restart.0.1 に変更してから、解析結果を引継ぎ継続するような形で使われます。

これで境界条件ができました。解析データの作成や修正など、作業の段階ごとに必ず「Save SV Project」で上書き保存してください。
*** Visualizing the results in ParaView:ParaView を用いた解析結果の可視化 [#ce9679e3]

*** Wall Properties:血管壁の特性 [#sa153561]
解析ステップにおいて時間によって変化する解析結果を可視化するために、ツール「ParaView」を使用します。まず Paraview を起動します。

次に、血管壁の特性を指定します。ツールの下にある「Wall Properties」ボタンを押します。壁の設定としては、3つ「Rigid:固定・Deformable(Constant):変化可能(一定値)・Deformable(Variable):変形可能(変動値)」あるのですが、ここでは基本となる「Rigid」を選択します。作業の段階ごとに必ず「Save SV Project」で上書き保存してください。
ツールのメニューバーの「File」から「Open…」を選択します。「Open File」ダイアログが表示されます。 プロジェクトフォルダの変換した解析結果を保存したフォルダ「E:\WorkSV\CylinderTest1\Simulations\steady」に移動し、ファイル「all_results..vtu」を選択して、「OK」をクリックします。

*** Solver Parameters:解析ソルバーのパラメータ [#nfa0cbe9]
「Properties」のパネルで「Apply」をクリックすると、解析結果が画面に表示されます。この場合には、圧力表示の初期状態になりました。解析ステップの最後を選択するために、Time の欄で最大の 20 にすると、定常解析の最後の収束した結果が表示されます。

この SimVascular で流体解析を実行する解析ソルバー SvSolver には、多くのパラメーターがありますが、明示的に設定する必要があるのはごく一部です。 高度なパラメータはオプションです。設定のために、ツールの下にある「Solver Parameters」ボタンを押します。表のValueの欄をダブルクリックして、以下の部分を設定します。
この時点で、回転ボタンまたは移動ボタンを使用してモデルを回転させることにより、モデルを操作できます。 「Surface with Edge」オプションを使用して、有限要素メッシュを視覚化します。

2行目 Number of Timesteps(解析ステップ数):100、3行目 Time Step Size(解析刻み幅の時間・秒単位):0.0004、5行目 Number of Timesteps between Restarts(結果出力での処理のステップ間隔):10、11行目 Step Construction(ステップ内での収束反復数):2(標準の設定で流速が一定の解析では2で十分とのこと)
ParaView のマウス操作: 左ドラッグ:2軸回転 中ドラッグ:平行移動 右ドラッグ・ホイール回転:拡大縮小

これで解析条件が設定できました。作業の段階ごとに必ず「Save SV Project」で上書き保存してください。
*** Visualizing Pressure Results:圧力結果の可視化 [#w7549f2c]

役立つヒントとして、ステップ内での収束反復数と解析刻み幅の時間などの時間離散化、および有限要素メッシュによって与えられる空間離散化の品質は、流体解析ソルバーの解析時間や解析精度などの性能を支配的に決定します。 これらのパラメーターを適切に選択することで、血流解析はより高速かつ正確に実行されます。
最初に、表示する解析ステップを、「 0 から 20 」(最後に可視化可能なタイムステップ)に変更します。この練習では、上記で既に対応すみで、最終結果が ParaView で表示されます。

*** Running Simulation:血流解析の実行 [#n2688bde]
なおこの解析結果で表示可能な物理量としては、average_pressure:平均圧力、average_speed:平均流速、pressure:圧力、velocity:流速、vinplane_traction:せん断力、などがあります。

血流解析を実行するために、ツールの下にある「Create Files and Run Simulation」ボタンを押します。まずChoose Meshで「aorta」を選択し、「Create DataFiles for Simulation」ボタンを押して、もしメッシュが存在して有効だが作成するかの確認は「OK」で進めます。他には並列処理(Use MPI)などの設定がありますが、この練習では使いません。
次に圧力の単位は解析の設定で dyn/cm2 ですが、これを変換してみます。まず表示を「pressure」に戻してみると、現在の設定の表示では、右下のスケールは 1.3e+05 dyn/cm2 を表示しています。この圧力表示を「mmHg単位」(1 mmHg = 1333.2 dyn/cm2)に変換してみます。 これを行うには、電卓ツールを使用します。

やっと血流解析を実行するので、最後の「Run Simulation」ボタンを押します。SimVascular のウインドウの左下に、解析の進行が表示されます。エラーなく100%になって、血流解析ジョブ aorta が終了したメッセージが表示されたら、「OK」で完了です。
ツールバーの3段目の左端の「電卓ツール」を選択します。変更された Properties で、Result Array Name を「Pressure in mmHg」とし、その下の計算式では「pressure / 1333.2」を入力し、Apply を押すと、表示が「1.0e+02 mmHg」つまり「100 mmHg」となります。図形の表示は変わりませんが、スケールの名称と数値が単位変更で変わっています。

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

*** Runnning Simulation at Computer Clusters:血流解析の並列処理クラスターでの実行 [#g1c12b48]
⇒ウエブ資料リンク:[[Examples:http://simvascular.github.io/docsFlowSolver.html#examples]]

ウエブ資料では、血流解析の並列処理クラスターでの実行方法が紹介されていますが、この練習では省略します。
上記の最初の「Example1」の例は、流入条件に放物線状分布(parabolic)の定常流があり、流出条件に抵抗値設定がある、円柱の解析空間による事例です。 以下のの例では引き続きシ円柱の解析空間を使用して、流入条件として円管内の一様分布の流れである基本となる定常流(plug:プラグフロー)への変更を想定します。

*** Convert Results:解析結果の可視化データ変換 [#ncfa3ec1]
さらに、流出条件を「RCR形式の集中パラメータ設定の境界条件」に変更し、流出条件を「固定量だけ変形可能な壁面」、「血流に応じて変形可能な壁面」の2種類の設定に変更し、以下の3種類を事例を追加で設定します。

血流解析の結果ファイルを、ParaViewで可視化するための「vtp,vtu」ファイルに変換します。ツールの下段の「Convert Results」ボタンを押します。表示が変わります。まずResult Dirの設定を確認します。先に確認した「C:\WorkSV\ExTest1\Simulations\aorta」です。
Example 2:steady_rcr:円管にプラグフローの定常解析で、RCR流出条件で設定(血管壁の条件は固定設定)~
Example 3:steady_rcr_deformable:円管にプラグフローの定常解析で、RCR流出条件で設定で、血管壁は固定量だけ変形する~
Example 4:steady_rcr_variable:円管にプラグフローの定常解析で、RCR流出条件で設定で、血管壁は血流に対応して任意に変形する~

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

次に変換した結果を保存する場所をするので、最後の「Convert…」ボタンを押します。ここは表示の上の「Result Dir:」の場所「C:\WorkSV\ExTest1\Simulations\aorta」を選択して、「フォルダーの選択」をします。少し待つと、結果が変換できたことが表示されるので、「OK」で完了です。
⇒ウエブ資料リンク:[[Example 2:http://simvascular.github.io/docsFlowSolver.html#example2]]

この血流解析は、定常的なケースなので、最後のタイムステップのみが必要です。 新しいフォルダー「aorta-converted-results」が作成され、出力ファイルall_results_00010.vtp、…、all_results_00100.vtp、all_results_00010.vtu、…、all_results_00100.vtu、average_results.vtpが含まれます。
この例題では、円管にプラグフローの流入条件の定常解析で、RCR形式の集中パラメータ設定の流出条件を設定し、血管壁の条件は固定設定とした解析設定を示します。

この他に4つのテキスト形式の結果ファイルがあります。これらは流入面と流出面での、定量的な結果を示しています。
それでは、以前に作った「Example 1:steady」のジョブを、コピー&ペーストして、新しいジョブ「Example 2:steady_rcr」を作りましょう。

これで、SimVascular での解析作業は終わりなので、ウインドウ上部のツールバーの「Save SV Projects」ボタンを押してプロジェクトの状態を保存してから、「Files>Exit」で確認には「Yes」で終了します。
手順としては、SV Data manager の「Simulations / steady」の項目を右クリックして、メニューで「Copy」して、「Simulations」の項目の右クリックのメニューで「Paste」すると、新しい解析ジョブ設定「steady_copy」が作られます。右クリックメニュー Rename でこのジョブの名前を「steady_rcr」に変更します。ここで「Save SV Projects」でプロジェクトを上書き保存します。常に操作ごとに実行してください。

** Visualizing Results:解析結果の可視化 [#y0c1d77c]
それでは、例題2の変更点である境界条件を設定します。まず「Simulations / steady_rcr」項目をダブルクリックします。ツール SV Simulation の「Inlet and Outlet BCs」に進みます。

解析結果を表示されるために、ParaView を起動します。先ほど指定した変換したデータの保存場所「C:\WorkSV\ExTest1\Simulations\aorta」を「File>Open」で開きます。この中の「aorta-converted-results」フォルダを開きます。
まず流入条件を変更するので、表の「inflow」の名称をダブルクリックし、設定パネルを開きます。Analytic Shape(流入条件の断面分布形状)を「plug」に変更し、後はそのままで OK で進みます。

定常解析なので最後の100ステップ目の結果「all_results_00100.vtu」を選択(+ボタンで展開すると見えます)して「OK」で開きます。「Apply」ボタンで表示します。まず画面には圧力が表示されています。
次に流出条件を変更するので、表の「outlet」の名称をダブルクリックし、設定パネルを開きます。BC Type(境界条件の設定方法)を「RCR」に変更し、3つのパラメータ(Rp,C,Rd)を「121 0.000015 1212」に設定し OK で進みます。

ここで血管内部の速度を可視化するには、ボリュームレンダリングの視覚化手法を使用する必要があります。これを行うには、速度の大きさを表すスカラー量を計算する必要があります。手順は次の通りです。
境界条件の設定変更に対応して、解析条件も変更するので、「Solver Parameters」タブに移動します。「2行:Number of Timesteps」を「500」、「3行:Time Step Size」を「0.001」、「5行:Number of Timesteps between Restarts」を「20」、に変更します。

まずParaViewの、ツールバーの3段目の左端にある計算ツールのCalculatorボタンをクリックします。Pipeline BrowserにCalculartor1の項目が追加されます。下半分のPropertiesで、Result Array Nameの欄に「vel mag (cm/s)」と入力し、その下の欄に計算式「mag(velocity)」を入力し、緑色の「Apply」ボタンを押します。
例題1と同様な方法で、解析を実行するので「Create Files and Run Simulation」タブに移動します。設定は例題1を引き継いでいるので、Choose Mesh は cylinder が選択されているので、変更点のみを説明します。

最後に、ツールバー2段目の表現形式のメニューで「Volume」を選択すると、速度の大きさのボリュームレンダリングが実現します。
ここでは並列処理を試すので、「Use MPI」にチェックを入れて、Number of Processesを「8」として、「Create Data Files for Simulation」で入力データを作成した後で OK で進めて、「Run Simulation」で解析を実行します。完了の表示は OK で進みます。

次に解析結果を可視化用に変換するので、「Convert Results」タブに移動します。解析結果は Rsult Dir の「C:/WorkSV/CylinderTest1/Simulations/steady_rcr/8-procs_case」にあります。変換する解析ステップの設定は「Start:0・Stop:500・Increment:20」とします。

オプションは、出力項目として「Volume Mesh・Surface Mesh・Calculate Flows」の3つに選択し、最終結果のファイル名指定で「Last Step to restart.x.0」を選択し、「Convert…」ボタンで変換します。変換ファイルを保存先は、上記の Result Dir nフォルダを選択します。変換完了の表示は OK で進みます。

この例題2では、RCR形式の境界条件設定時のパラメータの影響を考慮する必要があるため、より小さい解析ステップ幅の時間(0.03⇒0.001)が使用されています。 より正確な数値計算を行うには、時間刻み幅を、時間定数(RC =(121 + 1212)0.000015 = 0.02)よりも大幅に小さくする必要があります。 ステップサイズが小さいと、全体の解析時間を実現するためのタイムステップの数も増加します。

*** Example 3:steady_rcr_deformable:例題3「steady_rcr_deformable」 [#f7407d3e]

⇒ウエブ資料リンク:[[Example 3:http://simvascular.github.io/docsFlowSolver.html#example3]]

この例題では、円管にプラグフローの流入条件の定常解析で、RCR形式の集中パラメータ設定の流出条件を設定し、血管壁は均一な特性を持ち固定量だけ変形するような、解析方法を示します。

この例題3のように、変形可能な血管壁の条件を数値解析する最も確実な方法は、最初に同じ境界条件で変形しない固定壁の条件で数値解析することです。 この例題3にとって前の例題2は、初期流れ場を得るために実行する必要がある固定壁の解析条件です。例題2のシミュレーションが完了して変換された後、この最後のステップの解析結果ファイルは、単一のファイル(restart.500.0)に統合されます。

それでは、前に作った「Example 2:steady_rcr」のジョブを、コピー&ペーストして、新しいジョブ「Example 3:steady_rcr_deformable」を作りましょう。

手順としては、SV Data manager の「Simulations / steady_rcr」の項目を右クリックして、メニューで「Copy」して、「Simulations」の項目の右クリックのメニューで「Paste」すると、新しい解析ジョブ設定「steady_rcr_copy」が作られます。このジョブの名前を「steady_rcr_deformable」に変更します。ここで「Save SV Projects」でプロジェクトを上書き保存します。常に操作ごとに実行してください。

それでは、例題3の変更点である初期流れ場(IC)壁面境界条件(BCs)を設定します。まず「Simulations / steady_rcr_deformable」項目をダブルクリックします。ツール SV Simulation の「Basic Parameters」に進みます。

表の「IC File」をダブルクリックして、初期流れ場(IC)のファイルを選択するために、例題2の変換した解析結果のフォルダ「C:\WorkSV\CylinderTest1\Simulations\steady_rcr\8-procs_case\steady_rcr-converted-results」から「restart.500.0」ファイルを選択します。

次に「Wall Properties」タブに進みます。血管壁の特性 Type を「Deformable(Constant)」として、血管壁の材料特性を以下の通り設定します。~
血管壁の厚さ Thickness:「0.2 cm」 血管壁の弾性係数 Elastic Modulus:「4000000 dyn/cm2 = 0.4 MPa(通常の大動脈の剛性3MPaの1/10の柔らかい設定)」 ポアソン比 Poisson Ratio:「0.5(初期標準値)」 せん断剛性係数 Shear Constant:「0.833333(初期標準値)」 血管密度 Density:「1.0 g/cm3(水と同等)」 圧力 Pressure:「133300 dyn/cm2 (初期圧力として、例題2の固定血管壁の解析結果から求められた値)」

この設定を考慮した解析用データファイルを作成するために、「Create Files and Run Simulation」タブに移動します。設定は例題2と同等とします。まず「Create Data Files for Simulation」で入力データを作成した後で OK で進めて、「Run Simulation」で解析を実行します。暫く待つと解析が終了するので、完了の表示は OK で進みます。

この解析結果は例題2とは異なり、解析ステップでは初期変位も解析結果を出力、この最初の変位を vtp ファイルとして「displacement.vtp」に出力して解析結果の検証を可能にします。最後に例題2の結果ファイル restart.500.0 からコピーした例題3の初期状態の結果「restar.0.1」に追加します。

例題2と同様な方法でジョブを実行したら、解析結果の変換は「C:\WorkSV\CylinderTest1\Simulations\steady_rcr_deformable\8-procs_case」を指定して、フォルダ「steady_rcr_deformable-converted-results」にある結果ファイル「all_results..vtu」を ParaView で結果を確認できます。

例題3では、ParaView の可視化項目として「displacement」があり、「Warp by Vector」機能を用いて、変形図を確認することができます。

*** Example 4:steady_rcr_variable:例題4「steady_rcr_variable」 [#ea4d3c43]

⇒ウエブ資料リンク:[[Example 4:http://simvascular.github.io/docsFlowSolver.html#example4]]

この例題では、円管にプラグフローの流入条件の定常解析で、RCR形式の集中パラメータ設定の流出条件を設定し、血管壁は変化する特性を持ち自由に変形するような、解析方法を示します。例題3と同様に、例題2のシミュレーション結果を初期流れ場として使用します。

それでは、前に作った「Example 3:steady_rcr_deformable」のジョブを、コピー&ペーストして、新しいジョブ「Example 3:steady_rcr_variable」を作りましょう。

手順としては、SV Data manager の「Simulations / steady_rcr_deformable」の項目を右クリックして、メニューで「Copy」して、「Simulations」の項目の右クリックのメニューで「Paste」すると、新しい解析ジョブ設定「steady_rcr_deformable_copy」が作られます。このジョブの名前を「steady_rcr_variable」に変更します。ここで「Save SV Projects」でプロジェクトを上書き保存します。常に操作ごとに実行してください。

それでは、例題3の変更点である血管壁面や流入面や流出面の境界条件(BCs)を設定します。まず「Simulations / steady_rcr_variable」項目をダブルクリックします。ツール SV Simulation の「Wall Properties」に進みます。血管壁の特性を変更してみましょう。

まず血管壁の特性 Type を「Deformable(Variable)」として、血管壁の材料特性を以下の通り設定します。~
まず共通の設定として、ポアソン比 Poisson Ratio:「0.5(初期標準値)」 せん断剛性係数 Shear Constant:「0.833333(初期標準値)」 血管密度 Density:「1.0 g/cm3(水と同等)」 圧力 Pressure:「133300 dyn/cm2 (初期圧力として、例題2の固定血管壁の解析結果から求められた値)」

3つの境界条件(wall・outlet・inflow)を、以下の通りに順に設定します。~
1:wall:血管壁の弾性係数 E. Modulus:「4000000 dyn/cm2 = 0.4 MPa(通常の大動脈の剛性3MPaの1/10の柔らかい設定)」(Thickness は不要)~
2:outlet:流出面の厚さ Thickness:「0.1 cm」(E. Modulus は不要)~
3:inflow:流入面の厚さ Thickness:「0.2 cm」(E. Modulus は不要)~

次に「Solver Parameters」タブに進みます。この例題4では非線形の増分解析での収束計算 Step Construction を「10」とします。これは血管壁が自由に変形する場合には、血流解析ソルバーが、正しい結果を得るためにより多くの繰り返し収束計算が必要とするためです。

この設定を考慮した解析用データファイルを作成するために、「Create Files and Run Simulation」タブに移動します。設定は例題2と同等とします。まず「Create Data Files for Simulation」で入力データを作成した後で OK で進めて、「Run Simulation」で解析を実行します。暫く待つと解析が終了するので、完了の表示は OK で進みます。

例題3とは異なり、この解析設定ステップでは、血管厚と剛性を均一に設定する代わりに、血管厚と剛性を変化するものとして血管壁に割り当て解析します。この結果として「varwallprop.vtp・displacment.vtp」が作成され、それぞれ解析結果としての「血管厚と剛性と初期変位」が表示されます。

例題2と同様な方法でジョブを実行したら、解析結果の変換は「C:\WorkSV\CylinderTest1\Simulations\steady_rcr_variable\8-procs_case」を指定して、フォルダ「steady_rcr_deformable-converted-results」にある結果ファイル「all_results..vtu」を ParaView で結果を確認できます。

例題4でも、ParaView の可視化項目として「displacement」があり、「Warp by Vector」機能を用いて、変形図を確認することができます。また例題4独自の結果として、解析ジョブフォルダ「C:\WorkSV\CylinderTest1\Simulations\steady_rcr_variable」の中に、「varwallprop.vtp・displacment.vtp」があり可視化が可能です。

[[AboutSimVascular]]

【このページの閲覧数:総計:&counter(total); 今日:&counter(today);】

-----

* MEMO [#kd6bd004]


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