#author("2020-08-06T15:22:15+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つの解析設定の具体的な方法や条件などを確認してゆきます。~
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]

⇒ウエブ資料リンク:[[Inflow BC:http://simvascular.github.io/docsFlowSolver.html#inflowbc]]

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

流入面の境界条件を設定する前に、最初に流入面の流量を指定する単純なファイルを作成します。様々な血流解析に対応して、複数の流入波形ファイルがあると思いますが、この練習では最も基本となる定常解析用の流入条件ファイル(flow-file)として、「steady.flow」を用います。

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

この「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」をダブルクリックします。パネルの各項目では次のように設定します。~

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

次に、Flow rate(from Files)で、先に用意した流入条件ファイル「steady.flow」を設定するので、「…」のボタンを押してファイルを「C:\WorkSV\CylinderTest1\flow-files」より「steady.flow」を開きます。パネルにファイル名が表示されます。

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

この例題「CylinderTest1」では設定済みですが、解析モデルを作成するときには、面タイプ「wall / cap」を必ず指定してください。この cap 指定の面に境界条件を設定します。

・Point Number(速度指定の点数)は、心拍1周期を規定する時間データポイントの数です。これは先に指定した「flowファイル」の時点の数とは限りません。この練習ではそれらは一致して両方の場合で2ですが、これは定常流を使用する非常に単純な例であり、2つの時点が一定の流れを規定するために必要な時点であるためです。

一般に「flowファイル」には、心拍周期全体で約20データポイントが必要であり、そこから補間されたデータには100〜200ポイント程度になります。流入面での速度ベクトルへの流入波のマッピングをスムーズに表現するには、この程度になります。

・Fourier Modes(速度変化のフーリエ級数モード)は、フーリエ平滑化により流入流量曲線を平滑化し、指定した間隔で周期関数が定義できることになります。

なお注意として、SimVascular は、 flowファイルで定義する流量データのフーリエ級数近似を行っています。この練習では定常流で一定の流れで、これを適切に表現するには1つのフーリエモードで可能です。一方変動する非定常の脈動流の問題では、 flowファイルの設定を正確に表すために、さらに多くのフーリエモードが必要になりますが、通常は脈動の問題では10個のフーリエモードで十分です。

** Outlet Boundary Condition Specification:流出境界条件の設定 [#f50ca41b]

⇒ウエブ資料リンク:[[Inflow BC:http://simvascular.github.io/docsFlowSolver.html#outletbc]]

流出面には弱く作用する圧力を想定しています。 この内容は、本練習で参考にしているウエブ資料の「[[Boundary Condition Specification: the Physical Side of the Problem:http://simvascular.github.io/docsFlowSolver.html#bcphysics]]」で、解説された式によって数学的に表現されます。

この練習では、まず流出面の初期状態の圧力を p0 = 0 を設定します。 結果として流出面に設定された総圧力は、考慮された血流の圧力計算式の結果になります。つまり、抵抗値設定の方法、インピーダンス設定の方法、RCR設定の方法、冠状動脈の設定方法などです。

それでは、具体的な流出口の境界条件の設定を始めましょう。ここでは最も単純な抵抗値設定の方法とします。

「Inlet and Outlet BCs」のタブ項目に関して、流出面 outlet を設定するので、この行 Name の「outlet」をダブルクリックします。境界条件の設定パネルが表示されたら、以下のように設定します。

・BC Type(境界条件の形式)は「Resistance(抵抗値の指定)」 ・Resistance(抵抗値)は「1333」 ・Distal Pressure(初期状態の周囲の圧力)は「0(標準設定)」以上で完了で、OK で進めます。作業の節目に「Save SV Project」で上書き保存しておきます。

重要なヒント:対応するモデルを作成するときに面タイプ(BC Type)を指定してください。

*** Advanced Options for splitting BC:複数に分かれる境界条件のための詳細設定 [#a5c08ba5]

多くの臨床的な解析事例では、複数の分かれた流出面に対する抵抗値や蓄積容量を個別に明示的に設定する代わりに、複数の流出面の合計値を分割する方法を取ることが期待されます。この特性を用いた設定では、初めに流出面の全体として抵抗値や蓄積容量の初期値を0に設定します。

この練習では流出面が1つだけで、具体的にこの設定は用いないので省略します。

** Wall Property Specification:壁面特性の設定 [#obef9a45]

⇒ウエブ資料リンク:[[Wall Property:http://simvascular.github.io/docsFlowSolver.html#wallproperties]]

この練習では、先の流出面の境界条件を2種類想定し、ここでの壁面特性の設定を3種類想定しています。この組み合わせが最初に説明した以下の通りです。~
Example1:steady:基本となる定常解析(流出部は単純な抵抗係数で設定し血管壁の条件は固定設定)~
Example2:steady_rcr:定常解析でRCR流出条件で設定(血管壁の条件は固定設定)~
Example3:steady_rcr_deformable:定常解析でRCR流出条件で設定で、血管壁は固定量だけ変形する~
Example4:steady_rcr_variable:定常解析でRCR流出条件で設定で、血管壁は血流に対応して任意に変形する~

最初の「Example1:steady」では、基本となる定常解析として、流出部は単純な抵抗係数で設定し、壁面の特性は、固定で滑りなし(no-slip)の境界条件として設定します。

それでは、具体的な流出口の境界条件の設定を始めます。ツール「SV Simulation」の「Wall Properties」タブに進みます。メニューより Type は「Rigid」とします。

なお SimVascular では、この他に「Deformable(Constant):変化可能(一定値)・Deformable(Variable):変形可能(変動値)」の選択肢もあり、これらは、それぞれ Examples 3 and 4 で設定します。

** Solver Parameters:ソルバーパラメータの設定 [#obef9a45]

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

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

・Number of Timesteps(解析タイムステップ数):200 ・Time Step Size(解析ステップ幅の時間・秒単位):0.03 ・Number of Timesteps between Restarts(結果出力での処理のステップ間隔):10 ・Step Construction(ステップ内での収束反復数):2(標準の設定で流速が一定の解析では2で十分とのこと)

*** Time Step Parameters Block:時間ステップパラメータのブロック(1〜3行) [#bf6f8272]

この例では、解析タイムステップ数(Number of Timesteps):200、および解析ステップ幅の時間(Time Step Size):0.03として設定します。一覧表の対応する Value の欄をクリックしてに入力します。

これらの2行は、血流解析を実行する物理的な時間を定義します。つまりこの場合には、全体の解析時間(T)= 解析タイムステップ数(N)×解析ステップ幅の時間(Δt)となり、数式では、T = N × Δt = 200×0.03 = 6.0秒です。

注意として、この値は以前に指定した流入条件の脈拍の周期の時間とは一致しません。この練習の場合には前に述べたように、定常流を対象としているので脈拍周期について考えることは実際には意味がありません。

しかしこの分析を6回の脈拍周期に対して実行したい場合、全体の解析時間を6秒間とした問題を実行する必要があります。もし解析ステップ幅の時間の設定を同じにした場合(Δt=0.03秒)、N=200の解析タイムステップ数が必要になります。



警告:このNは、所定のΔtを前提として、数値シミュレーションで特定の物理時間をモデル化するために必要なタイムステップの総数であることに注意してください。

警告:ここで問題は、Δtの妥当な値をどのように思いつくかです。 これに対する簡単な答えはありません。 Δtは、時間の離散化を制御するパラメーターです。これは、メッシュによって与えられる空間の離散化と同様の方法で機能します。より細かく、より正確な結果が得られますが、問題のサイズと時間が長くなります。 解け! ここでは理論的な詳細については詳しく説明しません。そのため、このパラメータを評価するための合理的なレシピを提供します。 妥当なΔtを推定するレシピは、CFL数と呼ばれる無次元パラメーターに基づいています。 CFL番号は、流体領域で発生する速度(v)、時間的離散化パラメーター(Δt)、およびメッシュ離散化パラメーター(つまりメッシュサイズ)(h)を次のように関連付けます。

WARNING: Note that this N is the total number of time steps you need in your numerical simulation to model a certain physical time, given a prescribed Δt.

WARNING: Now the question is: how do you come up with a reasonable value for Δt? There is not a straightforward answer for this. Δt is the parameter that controls your temporal discretization, which is something that works in a similar fashion to the spatial discretization given by your mesh: the finer, the more accurate the results, but also the bigger the size of the problem and the time to solve it! We don’t want to get into a lot of theoretical details now, so we will just provide you with a reasonable recipe to evaluate this parameter. The recipe to estimate a reasonable Δt is based on a dimensionless parameter called the CFL number. The CFL number relates the velocities happening in the fluid domain (v), a temporal discretization parameter (Δt), and a mesh discretization parameter (i.e. mesh size) (h) as follows:


[[AboutSimVascular]]

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

-----

* MEMO [#kd6bd004]

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