IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許7460907シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム
<>
  • 特許-シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム 図1
  • 特許-シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム 図2
  • 特許-シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム 図3
  • 特許-シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム 図4
  • 特許-シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム 図5
  • 特許-シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム 図6
  • 特許-シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム 図7
  • 特許-シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム 図8
  • 特許-シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム 図9
  • 特許-シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム 図10
  • 特許-シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム 図11
  • 特許-シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム 図12
  • 特許-シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム 図13
  • 特許-シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム 図14
  • 特許-シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム 図15
  • 特許-シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム 図16
  • 特許-シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-26
(45)【発行日】2024-04-03
(54)【発明の名称】シミュレーションプログラム、シミュレーション方法およびシミュレーションシステム
(51)【国際特許分類】
   G16H 50/50 20180101AFI20240327BHJP
   G09B 9/00 20060101ALI20240327BHJP
【FI】
G16H50/50
G09B9/00 Z
【請求項の数】 11
(21)【出願番号】P 2020156598
(22)【出願日】2020-09-17
(65)【公開番号】P2022050158
(43)【公開日】2022-03-30
【審査請求日】2023-06-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】岩村 尚
【審査官】鹿野 博嗣
(56)【参考文献】
【文献】特表2016-515843(JP,A)
【文献】特開2011-141475(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G16H 10/00-80/00
G09B 9/00
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
周期的な運動を行う第1の部位を示す第1のモデルと、前記第1の部位に接続されており前記周期的な運動の影響を受ける第2の部位を示す第2のモデルとを取得し、
前記第2のモデルに含まれる変数の初期値として第1の状態値を割り当て、前記第1のモデルおよび前記第2のモデルと前記第1の状態値とを用いて、前記周期的な運動のシミュレーションを所定周期数分実行して、前記所定周期数分の特徴量を算出し、
前記所定周期数分の特徴量に基づいて、前記第1のモデルより変数が少なく前記第1のモデルと置換可能な第3のモデルを生成し、
前記第3のモデルおよび前記第2のモデルを用いて、前記周期的な運動のシミュレーションを所定の収束条件が満たされるまで継続して実行し、前記所定の収束条件が満たされた周期において前記第2のモデルに含まれる変数がもつ第2の状態値を抽出する、
処理を実行させるシミュレーションプログラム。
【請求項2】
前記コンピュータに更に、
前記第2のモデルに含まれる変数の初期値として前記第2の状態値を割り当て、前記第1のモデルおよび前記第2のモデルと前記第2の状態値とを用いて、前記周期的な運動のシミュレーションを実行する、処理を実行させる
請求項1記載のシミュレーションプログラム。
【請求項3】
前記所定の収束条件は、最新の周期の特徴量と前記最新の周期から1つ前の周期の特徴量との差が、閾値未満であることである、
請求項1記載のシミュレーションプログラム。
【請求項4】
前記第3のモデルの生成では、前記所定周期数分の特徴量と、前記第3のモデルおよび前記第2のモデルを用いて前記周期的な運動のシミュレーションを前記所定周期数分実行した結果との間の差に基づいて、前記第3のモデルのパラメータの値を修正する、
請求項1記載のシミュレーションプログラム。
【請求項5】
前記第2のモデルは、キャパシタを含む電気回路を示す電気回路モデルであり、
前記第1の状態値および前記第2の状態値は、前記キャパシタの電荷量に対応する、
請求項1記載のシミュレーションプログラム。
【請求項6】
前記第1のモデルは、複数の節点と前記複数の節点の間を接続する複数のエッジとを含み、前記複数の節点それぞれに変数が割り当てられる有限要素モデルであり、
前記第2のモデルおよび前記第3のモデルは、電気回路を示す電気回路モデルである、
請求項1記載のシミュレーションプログラム。
【請求項7】
前記周期的な運動のシミュレーションは、前記第1の部位と前記第2の部位との間で流体を循環させる運動のシミュレーションである、
請求項1記載のシミュレーションプログラム。
【請求項8】
前記所定周期数分の特徴量は、前記第1の部位の容積の時間変化を示す第1の時系列データと、前記第1の部位の圧力の時間変化を示す第2の時系列データとを含む、
請求項1記載のシミュレーションプログラム。
【請求項9】
前記第1の部位は、心臓の少なくとも一部分であり、
前記第2の部位は、前記心臓の外部の血管を含む、
請求項1記載のシミュレーションプログラム。
【請求項10】
コンピュータが、
周期的な運動を行う第1の部位を示す第1のモデルと、前記第1の部位に接続されており前記周期的な運動の影響を受ける第2の部位を示す第2のモデルとを取得し、
前記第2のモデルに含まれる変数の初期値として第1の状態値を割り当て、前記第1のモデルおよび前記第2のモデルと前記第1の状態値とを用いて、前記周期的な運動のシミュレーションを所定周期数分実行して、前記所定周期数分の特徴量を算出し、
前記所定周期数分の特徴量に基づいて、前記第1のモデルより変数が少なく前記第1のモデルと置換可能な第3のモデルを生成し、
前記第3のモデルおよび前記第2のモデルを用いて、前記周期的な運動のシミュレーションを所定の収束条件が満たされるまで継続して実行し、前記所定の収束条件が満たされた周期において前記第2のモデルに含まれる変数がもつ第2の状態値を抽出する、
シミュレーション方法。
【請求項11】
周期的な運動を行う第1の部位を示す第1のモデルと、前記第1の部位に接続されており前記周期的な運動の影響を受ける第2の部位を示す第2のモデルとを記憶する記憶装置と、
前記第2のモデルに含まれる変数の初期値として第1の状態値を割り当て、前記第1のモデルおよび前記第2のモデルと前記第1の状態値とを用いて、前記周期的な運動のシミュレーションを所定周期数分実行して、前記所定周期数分の特徴量を算出し、前記所定周期数分の特徴量に基づいて、前記第1のモデルより変数が少なく前記第1のモデルと置換可能な第3のモデルを生成し、前記第3のモデルおよび前記第2のモデルを用いて、前記周期的な運動のシミュレーションを所定の収束条件が満たされるまで継続して実行し、前記所定の収束条件が満たされた周期において前記第2のモデルに含まれる変数がもつ第2の状態値を抽出する演算装置と、
を有するシミュレーションシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はシミュレーションプログラム、シミュレーション方法およびシミュレーションシステムに関する。
【背景技術】
【0002】
近年、コンピュータの計算能力の向上に伴い、精密なモデルを利用したコンピュータシミュレーションが行われるようになっている。精密なモデルとして、対象物が存在する空間を多数の小領域に分割した有限要素モデルを用いることがある。シミュレーションとして、流体の挙動を解析する流体シミュレーションが行われることがある。また、心臓の拍動のように、物体の周期的な運動のシミュレーションが行われることがある。周期的な運動のシミュレーションでは、物体の状態を時系列に並べた場合に、同様の状態変化のパターンが時間軸上に繰り返し出現することになる。
【0003】
なお、トランジスタの電気的特性のシミュレーションを行う設計支援装置が提案されている。提案の設計支援装置は、モデルのパラメータとして各節点に仮の不純物濃度を設定し、次元縮退によって各節点の表面ポテンシャルを算出し、表面ポテンシャルから推定される電気的特性が所定条件を満たす場合に、パラメータの値を確定する。
【0004】
また、血管の形状を示す三次元画像データと、血液の流量や圧力損失を示す流体データとを用いて流体解析を行い、血管の血行状態を示す指標値を算出する画像処理装置が提案されている。また、有限要素法の非定常解析により、金属材料の加工における材料流れのシミュレーションを行う解析システムが提案されている。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2010-287614号公報
【文献】特開2017-70742号公報
【文献】特開2019-128621号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
シミュレーションの1つの方法として、主要な部位を有限要素モデルなどの精密なモデルで表現し、その周囲の部位を他のモデルで表現し、主要モデルと周囲モデルとを結合してシミュレーションを行う方法が考えられる。例えば、周囲部位を主要部位よりも簡易なモデルで表現することが考えられる。
【0007】
その場合に、主要モデルと周囲モデルとの間の相互作用を計算できるようにするため、シミュレーションの開始時に、周囲モデルの変数に初期値を代入することがある。ここで、変数の初期値をどの様に決定すればよいかが問題となる。
【0008】
周期的な運動のシミュレーションでは、周囲モデルの変数は、与えられた初期値から、相互作用の計算の繰り返しを通じて、一定の数値となる収束値へ収束する。しかし、変数の初期値が収束値から外れているほど、収束に時間を要する。このため、シミュレーションを行う周期数が多くなり、計算量が増大するおそれがある。これに対し、理想的な初期値をユーザが事前に見積もることは容易でない。
【0009】
1つの側面では、本発明は、周期的な運動のシミュレーションの計算量を削減できるシミュレーションプログラム、シミュレーション方法およびシミュレーションシステムを提供することを目的とする。
【課題を解決するための手段】
【0010】
1つの態様では、コンピュータに以下の処理を実行させるシミュレーションプログラムが提供される。周期的な運動を行う第1の部位を示す第1のモデルと、第1の部位に接続されており周期的な運動の影響を受ける第2の部位を示す第2のモデルとを取得する。第2のモデルに含まれる変数の初期値として第1の状態値を割り当て、第1のモデルおよび第2のモデルと第1の状態値とを用いて、周期的な運動のシミュレーションを所定周期数分実行して、所定周期数分の特徴量を算出する。所定周期数分の特徴量に基づいて、第1のモデルより変数が少なく第1のモデルと置換可能な第3のモデルを生成する。第3のモデルおよび第2のモデルを用いて、周期的な運動のシミュレーションを所定の収束条件が満たされるまで継続して実行し、所定の収束条件が満たされた周期において第2のモデルに含まれる変数がもつ第2の状態値を抽出する。
【0011】
また、1つの態様では、コンピュータが実行するシミュレーション方法が提供される。また、1つの態様では、シミュレーションシステムが提供される。
【発明の効果】
【0012】
1つの側面では、周期的な運動のシミュレーションの計算量を削減できる。
【図面の簡単な説明】
【0013】
図1】第1の実施の形態のシミュレーションシステムを説明するための図である。
図2】第2の実施の形態のシミュレーション装置の例を示すブロック図である。
図3】分散処理システムの例を示す図である。
図4】血行動態シミュレーションに用いるモデルの例を示す図である。
図5】有限要素モデルを説明するための図である。
図6】心室容積と心室圧のシミュレーション例を示すグラフである。
図7】血液量のシミュレーションの収束例を示すグラフである。
図8】心室容積の仮のシミュレーション例を示すグラフである。
図9】心室圧の仮のシミュレーション例を示すグラフである。
図10】三次元モデルの簡略化例を示す図である。
図11】フーリエ係数テーブルの例を示す図である。
図12】シミュレーション装置の機能例を示すブロック図である。
図13】節点テーブルとメッシュテーブルの例を示す図である。
図14】パラメータテーブルの例を示す図である。
図15】時系列データテーブルの例を示す図である。
図16】シミュレーションの手順例を示すフローチャートである。
図17】シミュレーションの手順例を示すフローチャート(続き)である。
【発明を実施するための形態】
【0014】
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0015】
図1は、第1の実施の形態のシミュレーションシステムを説明するための図である。
第1の実施の形態のシミュレーションシステム10は、心臓の拍動のような周期的な運動のシミュレーションを行う。シミュレーションシステム10は、単一の筐体のクライアントコンピュータまたはサーバコンピュータであってもよいし、複数の筐体のサーバコンピュータを含んでもよい。シミュレーションシステム10は、以下に説明する処理の一部または全部を並列的に実行する分散処理システムであってもよい。また、シミュレーションシステム10は、クラウドシステムやデータセンタの計算資源であってもよい。シミュレーションシステム10を、情報処理システムと言うこともできる。
【0016】
シミュレーションシステム10は、記憶装置11および演算装置12を有する。記憶装置11は、記憶装置11は、RAM(Random Access Memory)やGPU(Graphics Processing Unit)メモリなどの揮発性半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。
【0017】
演算装置12は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサである。ただし、演算装置12は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、メモリ(記憶装置11でもよい)に記憶されたプログラムを実行する。演算装置12が、同一種類または異なる種類のプロセッサの集合(例えば、CPUの集合、GPUの集合、CPUとGPUの集合など)であってもよい。
【0018】
記憶装置11は、モデル13(第1のモデル)およびモデル14(第2のモデル)を記憶する。モデル13は、周期的な運動を行う部位(第1の部位)を示す。例えば、モデル13は、一定周期で拍動する心臓を示す。モデル13は、複数の節点とそれら複数の節点の間を接続する複数のエッジとを含み、各節点に変数が割り当てられる有限要素モデルであってもよい。また、モデル13は、変数が多い複雑なモデルでもよい。
【0019】
モデル14は、モデル13が示す部位に接続されており周期的な運動の影響を受ける他の部位(第2の部位)を示す。例えば、モデル14は、大動脈、大静脈、肺動脈、肺静脈などの心臓の外部の血管を示す。第1の実施の形態で行うシミュレーションが、モデル13とモデル14との間の流体の循環のシミュレーションであってもよい。モデル14は、抵抗やキャパシタ(コンデンサ)などの電気回路の素子を含む電気回路モデルであってもよい。また、モデル14は、モデル13より変数が少ない簡易なモデルでもよい。モデル14には、予めパラメータが設定されていることがある。例えば、抵抗の抵抗値(レジスタンス)やキャパシタのキャパシタンス(静電容量)が、パラメータとして設定される。
【0020】
演算装置12は、モデル13とモデル14を組み合わせて、周期的な運動のシミュレーションを行う。シミュレーションを開始する際、演算装置12は、モデル14に含まれる変数に初期値を割り当てる。モデル14の変数の初期値は、例えば、キャパシタンスの電荷量の初期値である。ここで、変数の初期値が不適当であっても、周期的な運動のシミュレーションを継続して実行すれば、変数の値が適切な値に収束していき、最終的には妥当なシミュレーション結果が得られる。しかし、変数の初期値が不適当であると、収束までの時間が長くなる。よって、シミュレーションを行う周期数(サイクル数)が多くなり、シミュレーションに長時間を要するおそれがある。そこで、演算装置12は、以下のようにしてモデル14の変数の初期値を決定する。
【0021】
まず、演算装置12は、モデル14の変数の初期値として、状態値16a(第1の状態値)を仮に割り当てる。状態値16aは、例えば、シミュレーション開始時点でキャパシタがもつ電荷量を示す。状態値16aは、ランダムな値でもよいし、ユーザが指定した値でもよいし、所定の固定値でもよい。演算装置12は、モデル13とモデル14とを結合したモデルに状態値16aを適用して、周期的な運動のシミュレーションを実行する。
【0022】
このとき、演算装置12は、十分に少ない所定の周期数(例えば、2~3周期)分のシミュレーションを実行すればよく、所定の周期数でシミュレーションを打ち切ってよい。モデル14の変数の初期値が不適当である場合、所定の周期数では、まだ変数の値が収束しておらず、シミュレーション結果が安定していないことがある。
【0023】
演算装置12は、この所定の周期数分のシミュレーションの結果から、モデル13の状態に関する指標の特徴量17を算出する。特徴量17は、例えば、モデル13が示す部位の容積の時間変化を示す時系列データや、当該部位の内部圧力の時間変化を示す時系列データなどである。特徴量17は、周期的な運動のシミュレーションによって直接的に算出される場合もあるし、シミュレーション結果を変換することで得られることもある。
【0024】
特徴量17が得られると、演算装置12は、特徴量17に基づいて、モデル13を近似するモデル15を生成する。モデル15は、モデル13より変数が少ない簡易モデルであり、例えば、電気回路モデルである。モデル15の生成では、例えば、演算装置12は、モデル15とモデル14とを結合したモデルを用いて、周期的な運動のシミュレーションを所定周期分実行する。そして、演算装置12は、そのシミュレーションの結果が特徴量17に近付くように、モデル15に含まれるパラメータの値を修正する。これは、特徴量17を教師データとして用いて、モデル15のパラメータを最適化していると言える。
【0025】
モデル15が生成されると、演算装置12は、モデル15とモデル14とを結合したモデルを用いて、周期的な運動のシミュレーションを実行する。モデル14の変数の初期値として、状態値16aを用いてもよいし他の状態値を用いてもよい。ここで、演算装置12は、所定の収束条件を満たすまで当該シミュレーションを継続して実行する。このシミュレーションの周期数は、通常、特徴量17を算出した際の周期数よりも多くなる。収束条件は、例えば、最新の周期の特徴量と1つ前の周期の特徴量との間の誤差が、閾値より小さいことである。また、収束条件は、例えば、最新の周期の特徴量と1つ前の周期の特徴量との間の相関係数が、閾値より大きいことである。
【0026】
そして、演算装置12は、収束条件が満たされた周期において、モデル14に含まれる変数がもつ状態値16b(第2の状態値)を抽出する。演算装置12は、状態値16bを記憶装置11に保存してもよいし、表示装置に表示してもよいし、他のシステムに転送してもよい。この状態値16bは、シミュレーション結果が収束して安定した状態におけるモデル14の変数の値であり、変数の理想的な初期値と推定される。例えば、演算装置12は、モデル13とモデル14とを結合したモデルに状態値16bを適用し、周期的な運動のシミュレーションを収束条件が満たされるまで継続して実行する。このときの所要周期数は、状態値16aを用いた場合よりも少なくなると期待される。
【0027】
第1の実施の形態のシミュレーションシステム10によれば、モデル14の変数の初期値として状態値16aが割り当てられ、モデル13,14を用いて所定周期数分のシミュレーションが実行され、特徴量17が算出される。特徴量17に基づいて、モデル13より変数が少ないモデル15が生成される。そして、モデル14,15を用いて所定の収束条件が満たされるまでシミュレーションが実行され、収束条件が満たされた周期におけるモデル14の変数から状態値16bが抽出される。
【0028】
これにより、モデル13に接続されるモデル14の変数に、収束後の値に近似する適切な初期値を代入することが可能となる。よって、モデル13,14を用いた周期的な運動のシミュレーションが収束するまでの所要周期数を少なくすることができる。そのため、シミュレーションの計算量を削減でき、所要時間を短縮することができる。
【0029】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
第2の実施の形態のシミュレーション装置は、人体の血行動態のシミュレーションを行う。血行動態シミュレーションは、心臓を中心とする血流のシミュレーションである。血行動態シミュレーションを、循環動態シミュレーションなどと言うこともある。
【0030】
図2は、第2の実施の形態のシミュレーション装置の例を示すブロック図である。
シミュレーション装置100は、CPU101、RAM102、HDD103、画像インタフェース104、入力インタフェース105、媒体リーダ106および通信インタフェース107を有する。シミュレーション装置100が有するこれらのユニットは、バスに接続されている。CPU101は、第1の実施の形態の演算装置12に対応する。RAM102またはHDD103は、第1の実施の形態の記憶装置11に対応する。
【0031】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。CPU101は複数のプロセッサコアを備えてもよく、シミュレーション装置100は複数のプロセッサを備えてもよい。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0032】
RAM102は、CPU101が実行するプログラムやCPU101が演算に使用するデータを一時的に記憶する揮発性半導体メモリである。シミュレーション装置100は、RAM以外の種類のメモリを備えてもよく、複数のメモリを備えてもよい。
【0033】
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性ストレージである。シミュレーション装置100は、フラッシュメモリやSSD(Solid State Drive)など他の種類のストレージを備えてもよく、複数のストレージを備えてもよい。
【0034】
画像インタフェース104は、CPU101からの命令に従って、シミュレーション装置100に接続された表示装置111に画像を出力する。表示装置111として、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイ、プロジェクタなど、任意の種類の表示装置を使用することができる。シミュレーション装置100に、プリンタなど表示装置111以外の出力デバイスが接続されてもよい。
【0035】
入力インタフェース105は、シミュレーション装置100に接続された入力デバイス112から入力信号を受け付ける。入力デバイス112として、マウス、タッチパネル、タッチパッド、キーボードなど、任意の種類の入力デバイスを使用することができる。シミュレーション装置100に複数種類の入力デバイスが接続されてもよい。
【0036】
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、半導体メモリなど、任意の種類の記録媒体を使用することができる。媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0037】
通信インタフェース107は、ネットワーク114に接続され、ネットワーク114を介して他の情報処理装置と通信する。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
【0038】
ここで、第2の実施の形態では説明を簡単にするため、シミュレーション装置100の処理をCPU101が実行することとしている。ただし、後述するシミュレーション装置100の処理を分散処理システムによって実行することも可能である。
【0039】
図3は、分散処理システムの例を示す図である。
分散処理システムは、計算ノード31~34を含む複数の計算ノード、管理ノード35およびストレージノード36を有する。計算ノード31~34は、複数のプロセスまたは複数のスレッドを並列に実行する。例えば、計算ノード31~34は、大規模連立方程式の解を反復法によって求める求解演算が複数のスレッドに分割された場合における、当該複数のスレッドを並列に実行する。管理ノード35は、計算ノード31~34にプロセスやスレッドを割り当て、並列処理を制御する。ストレージノード36は、計算ノード31~34によって使用されるデータを記憶する。計算ノード31~34、管理ノード35およびストレージノード36は、例えば、ネットワークに接続されている。
【0040】
計算ノード31~34は、同一筐体内の複数のCPUでもよいし、同一筐体内の複数のGPUでもよい。計算ノード31~34それぞれがRAMまたはGPUメモリを備えてもよいし、計算ノード31~34が同一のRAMまたはGPUメモリを共有してもよい。また、計算ノード31~34が、異なる筐体のサーバコンピュータであってもよい。管理ノード35は、計算ノード31~34と同一筐体内のCPUであってもよく、RAMを備えていてもよい。また、管理ノード35が、計算ノード31~34と異なる筐体のサーバコンピュータまたはクライアントコンピュータでもよい。ストレージノード36は、HDDやSSDなどの不揮発性ストレージでもよい。また、ストレージノード36が、計算ノード31~34と異なる筐体のストレージサーバであってもよい。
【0041】
次に、血行動態シミュレーションに用いるモデルについて説明する。
図4は、血行動態シミュレーションに用いるモデルの例を示す図である。
シミュレーション装置100は、モデル140を記憶する。モデル140は、三次元モデル141および周囲モデル142を含む。三次元モデル141は、人体の心臓の左心室および右心室を表す心室モデルである。三次元モデル141は、1分間に60回といった一定周期の拍動を表現するように作成される。周囲モデル142は、心臓の心室の外側であって、血液を循環させるための人体の主な部位を表す循環系モデルである。具体的には、周囲モデル142は、大動脈、大静脈、肺動脈、肺静脈、左心房および右心房を表す。心室から送出された血液が心室の外部を経由して再び心室に戻るという血液循環が表現されるように、三次元モデル141と周囲モデル142とが結合して使用される。
【0042】
三次元モデル141は、有限要素法に用いられる有限要素モデルである。三次元モデル141では、左心室および右心室の三次元形状が、小さい四面体に分割される。四面体の頂点が節点であり、四面体の辺がエッジである。節点に変数が割り当てられる。有限要素モデルの構造例については後述する。周囲モデル142は、大動脈、大静脈、肺動脈、肺静脈、左心房および右心房の機能を電気回路の素子で表現した電気回路モデルである。周囲モデル142は、三次元モデル141より変数が少なく複雑度が低い。
【0043】
周囲モデル142は、抵抗142-1~142-8およびキャパシタ142-9~142-14を含む。抵抗142-1は、大動脈に対応し、抵抗142-2,142-7と隣接する。抵抗142-1は、抵抗値Rをもつ。抵抗142-2は、大静脈に対応し、抵抗142-1,142-5と隣接する。抵抗142-2は、抵抗値Rをもつ。抵抗142-3は、肺動脈に対応し、抵抗142-4,142-6と隣接する。抵抗142-3は、抵抗値RPAをもつ。抵抗142-4は、肺静脈に対応し、抵抗142-3,142-8と隣接する。抵抗142-4は、抵抗値RPVをもつ。
【0044】
抵抗142-5は、右心室の入口に対応し、抵抗値RTRをもつ。抵抗142-6は、右心室の出口に対応し、抵抗値RPUをもつ。抵抗142-7は、左心室の出口に対応し、抵抗値Rをもつ。抵抗142-8は、左心室の入口に対応し、抵抗値RMIをもつ。
【0045】
キャパシタ142-9は、大動脈に対応し、抵抗142-7と抵抗142-1の間にある。キャパシタ142-9は、キャパシタンスCをもつ。キャパシタ142-9の電荷量Qは大動脈の血液量に相当し、その圧力Pに依存する。キャパシタ142-10は、大静脈に対応し、抵抗142-1と抵抗142-2の間にある。キャパシタ142-10は、キャパシタンスCをもつ。キャパシタ142-10の電荷量Qは大静脈の血液量に相当し、その圧力Pに依存する。
【0046】
キャパシタ142-11は、肺動脈に対応し、抵抗142-6と抵抗142-3の間にある。キャパシタ142-11は、キャパシタンスCPAをもつ。キャパシタ142-11の電荷量QPAは肺動脈の血液量に相当し、その圧力PPAに依存する。キャパシタ142-12は、肺静脈に対応し、抵抗142-3と抵抗142-4の間にある。キャパシタ142-12は、キャパシタンスCPVをもつ。キャパシタ142-12の電荷量QPVは肺静脈の血液量に相当し、その圧力PPVに依存する。
【0047】
キャパシタ142-13は、右心房に対応し、抵抗142-2と抵抗142-5の間にある可変キャパシタ(可変コンデンサ)である。キャパシタ142-13は、キャパシタンスの逆数に相当するエラスタンスERAをもつ。エラスタンスERAは、所定周期で規則的に変化する。キャパシタ142-13の電荷量QRAは右心房の血液量に相当し、その圧力PRAに依存する。キャパシタ142-14は、左心房に対応し、抵抗142-4と抵抗142-8の間にある可変キャパシタである。キャパシタ142-14は、エラスタンスELAをもつ。エラスタンスELAは、所定周期で規則的に変化する。キャパシタ142-14の電荷量QLAは左心房の血液量に相当し、その圧力PLAに依存する。
【0048】
三次元モデル141の右心室の入力は圧力PTRをもち、右心室の出力は圧力PRVをもち、左心室の出力は圧力PLVをもち、左心室の入力は圧力PMIをもつ。左心室の出力は、抵抗142-7,142-1,142-2,142-5を通って、右心室の入力へと伝播する。また、右心室の出力は、抵抗142-6,142-3,142-4,142-8を通って、左心室の入力へと伝播する。このように、血液循環が電流で表現される。
【0049】
抵抗値R,R,RPA,RPV,RTR,RPU,R,RMI、キャパシタンスC,C,CPA,CPVおよびエラスタンスERA,ELAは、シミュレーション前に予め値が与えられるパラメータである。圧力P,P,PPA,PPV,PRA,PLAは、シミュレーションの中で値が変化する変数である。電荷量Q,Q,QPA,QPV,QRA,QLAは、対応する圧力に依存して値が変化する変数である。電荷量Q,Q,QPA,QPV,QRA,QLAの初期値が決まれば、圧力P,P,PPA,PPV,PRA,PLAの初期値が決まる。
【0050】
モデル140を用いた血行動態シミュレーションは、臨床医学に応用することが可能である。例えば、患者の現在の心臓を示す三次元モデル141を作成して、現在の血液循環を把握することが考えられる。また、手術などの治療行為を行った後の心臓を示す三次元モデル141を作成して、治療後の血液循環を予測することが考えられる。なお、周囲モデル142を患者に合わせるために、第2の実施の形態で説明するシミュレーションを、上記のパラメータの値を変えながら繰り返すようにしてもよい。
【0051】
ここで、周囲モデル142に含まれるパラメータおよび変数の間の関係を説明する。シミュレーションでは、以下の関係式に従って連立方程式が生成される。
キャパシタ142-9および抵抗142-1に着目すると、この区間の体積流量FAOが数式(1)のように算出される。体積流量は、ある面を単位時間当たりに通過する流体の体積である。変数名の上に付したドットは、時間についての一階微分を表す。抵抗142-7に着目すると、体積流量FAOは数式(2)のようにも算出される。よって、数式(1)と数式(2)から、これらのパラメータおよび変数の間に成立する関係が規定される。また、抵抗142-1、キャパシタ142-10および抵抗142-2に着目すると、この区間の体積流量の保存から数式(3)の関係が成立する。
【0052】
【数1】
【0053】
【数2】
【0054】
【数3】
【0055】
また、抵抗142-2およびキャパシタ142-13に着目すると、右心室の入口の体積流量FTRについて数式(4)の関係が成立する。抵抗142-5に着目すると、体積流量FTRは数式(5)のようにも算出される。よって、数式(4)と数式(5)から、これらのパラメータおよび変数の間に成立する関係が規定される。また、キャパシタ142-11および抵抗142-3に着目すると、この区間の体積流量FPUが数式(6)のように算出される。抵抗142-6に着目すると、体積流量FPUは数式(7)のようにも算出される。よって、数式(6)と数式(7)から、これらのパラメータおよび変数の間に成立する関係が規定される。
【0056】
【数4】
【0057】
【数5】
【0058】
【数6】
【0059】
【数7】
【0060】
また、抵抗142-3、キャパシタ142-12および抵抗142-4に着目すると、この区間の体積流量の保存から数式(8)の関係が成立する。また、抵抗142-4およびキャパシタ142-14に着目すると、左心室の入口の体積流量FMIについて数式(9)の関係が成立する。抵抗142-8に着目すると、体積流量FMIは数式(10)のようにも算出される。よって、数式(9)と数式(10)から、これらのパラメータおよび変数の間に成立する関係が規定される。
【0061】
【数8】
【0062】
【数9】
【0063】
【数10】
【0064】
次に、有限要素モデルについて説明する。
図5は、有限要素モデルを説明するための図である。
三次元モデル141として、図5に示すような有限要素モデル144が使用される。なお、三次元モデル141の要素(メッシュ)は三次元の四面体であるものの、図5では説明を簡単にするため、要素を二次元の三角形として記載している。
【0065】
有限要素モデル144は、節点144-1~144-9(節点n1~n9)を含む複数の節点(ノード)と、それら複数の節点の間を接続する複数のエッジ(リンク)とを含む。四面体の1つの要素は、4つの節点および6つのエッジによって形成され、三角形の面を4つもつ。有限要素モデル144の要素は、正四面体でなくてもよい。隣接する要素の間では、一部の節点および一部のエッジが共有される。
【0066】
図5の例では、節点144-1,144-2,144-4によって1つの面が形成されている。節点144-2,144-4,144-5によって1つの面が形成されている。節点144-2,144-3,144-5によって1つの面が形成されている。節点144-3,144-5,144-6によって1つの面が形成されている。また、節点144-4,144-7,144-8によって1つの面が形成されている。節点144-4,144-5,144-8によって1つの面が形成されている。節点144-5,144-8,144-9によって1つの面が形成されている。節点144-5,144-6,144-9によって1つの面が形成されている。
【0067】
複数の節点それぞれに、1以上の変数が割り当てられる。例えば、複数の節点それぞれに、その節点の位置における圧力を示す変数、その節点の当初の位置からの変位量を示す変数、その節点の位置における流速(流体速度)を示す変数などが割り当てられる。変位量の変数を割り当てるのは、心臓の拍動では心室が膨張と収縮を繰り返すためである。また、流速の変数は、血液が流れる領域の節点に割り当てられる。
【0068】
例えば、節点144-1に、圧力を示す変数p1、変位量を示す変数u1、流速を示す変数f1が割り当てられる。また、節点144-9に、圧力を示す変数p9、変位量を示す変数u9、流速を示す変数f9が割り当てられる。
【0069】
右心室の入口の圧力PTRは、右心室の入口の断面に相当する節点から、圧力を示す変数の値を抽出することで特定できる。同様に、右心室の出口の圧力PRVは、右心室の出口の断面に相当する節点から、圧力を示す変数の値を抽出することで特定できる。左心室の入口の圧力PMIは、左心室の入口の断面に相当する節点から、圧力を示す変数の値を抽出することで特定できる。左心室の出口の圧力PLVは、左心室の出口の断面に相当する節点から、圧力を示す変数の値を抽出することで特定できる。
【0070】
シミュレーションにあたり、同一断面に属する複数の節点の間では圧力が均一であるという制約条件を設けるようにしてもよい。これらの圧力PTR,PRV,PLV,PMIを通じて、三次元モデル141と周囲モデル142とが連携する。また、右心室の容積は、右心室を示す複数の要素の体積を合計することで算出できる。左心室の容積は、左心室を示す複数の要素の体積を合計することで算出できる。各節点の現在の位置座標は、当初の位置座標と変位量から算出できる。よって、ある要素の体積は、変位量を考慮して、その要素を形成する4つの節点それぞれの現在の位置座標から算出できる。
【0071】
ここで、異なる変数の間に成立する関係を規定するための基礎方程式(支配方程式)について説明する。以下に説明する基礎方程式から連立方程式が生成される。前述の周囲モデル142の連立方程式と三次元モデル141の連立方程式とが結合されて、一組の連立方程式が形成され、係数行列が生成される。係数行列を用いた行列演算を繰り返す反復法によって、連立方程式の解が算出される。
【0072】
三次元モデル141は、右心室の心筋部分の領域、右心室の流体部分の領域、左心室の心筋部分の領域および左心室の流体部分の領域を含む。心筋部分の物理的特性を示す基礎方程式は、数式(11)に示す通りである。また、流体部分の物理的特性を示す基礎方程式は、数式(12)に示す通りである。
【0073】
【数11】
【0074】
【数12】
【0075】
数式(11)において、ρは心筋の重量密度、pは心筋圧、Jは体積の変形率である。また、uは変位量ベクトル、τは心室内面Γfsの上の表面力(Traction Force)ベクトルである。また、Eはグリーン・ラグランジェ(Green-Lagrange)ひずみテンソル、Sは第2ピオラ・キルヒホッフ(Piola-Kirchhoff)応力テンソル、Cは右コーシー・グリーン(Cauchy-Green)変形テンソルである。数式(12)において、ρは血液の重量密度、μは血液の粘度、pは流体圧力である。また、vは速度ベクトル、cはメッシュに対する相対速度ベクトル、τは心室内面Γfsの上の表面力ベクトル、tは血液の流入面Γの上の表面力ベクトルである。また、Dは、変形速テンソルである。
【0076】
次に、シミュレーション結果の収束について説明する。心臓の拍動を伴う血行動態シミュレーションでは、時刻tを微少量ずつ増加させていき、左心室および右心室の容積(心室容積)の時間変化と、左心室および右心室の圧力(心室圧)の時間変化を求める。心臓は同じ運動を一定周期で繰り返すため、安定状態における一周期分の心室容積および心室圧の時間変化を求めればよい。ただし、シミュレーションでは最初から安定状態の心室容積および心室圧を計算できるわけではなく、安定状態に到達するまでに時間を要する。そのため、収束するまで、複数周期分の心室容積および心室圧を計算することになる。
【0077】
図6は、心室容積と心室圧のシミュレーション例を示すグラフである。
グラフ151は、心室容積と心室圧の組の時間変化を示すPV(Pressure-Volume)ループを表したグラフである。曲線151-1は、開ループ(オープンループ)のモデルから算出された左心室の心室容積および心室圧を示す。曲線151-2は、開ループのモデルから算出された右心室の心室容積および心室圧を示す。曲線151-3は、閉ループ(クローズドループ)のモデルから算出された左心室の心室容積および心室圧を示す。曲線151-4は、閉ループのモデルから算出された右心室の心室容積および心室圧を示す。
【0078】
開ループのモデルは、周辺モデルにおいて血流を途中でアースすることで、全血液量を保存しないモデルである。閉ループのモデルは、周辺モデルにおいて血流を途中でアースせず、全血液量を保存するモデルである。前述のモデル140は、閉ループのモデルである。グラフ151に示すように、開ループのモデルを用いた場合、PVループの収束が比較的速い。一方、閉ループのモデルを用いた場合、PVループの収束が遅い。ただし、閉ループのモデルの方が現実の血行動態との適合性が高く、シミュレーション結果の精度が高くなりやすい。このように、シミュレーションの前提条件によっては、収束が遅くなり、多くの周期数分の心室容積および心室圧を計算することになる場合がある。
【0079】
収束が遅くなる原因の1つとして、変数の初期値が収束後の値(収束値)と乖離していることが挙げられる。第2の実施の形態の血行動態シミュレーションでは、シミュレーションの開始時点で、大動脈、大静脈、肺動脈、肺静脈、右心房および左心房に血液が存在する。よって、周囲モデル142のキャパシタ142-9~142-14に対して、電荷量Q,Q,QPA,QPV,QRA,QLAの初期値を与える。この初期値が収束値と乖離していると、電荷量Q,Q,QPA,QPV,QRA,QLAが収束値に到達するまでに長時間を要し、結果として心室容積および心室圧が収束するまでに長時間を要することになる。
【0080】
図7は、血液量のシミュレーションの収束例を示すグラフである。
グラフ152は、血液量の時間変化を表す時系列データである。曲線152-1は、大静脈の血液量を表しており、キャパシタ142-10の電荷量Qに対応する。曲線152-2は、肺静脈の血液量を表しており、キャパシタ142-12の電荷量QPVに対応する。曲線152-1,152-2に示すように、電荷量Q,QPVの初期値が10秒後の収束値から乖離しているため、電荷量Q,QPVの収束が遅くなっている。
【0081】
電荷量Q,QPVの初期値を収束値に近付けることができれば、電荷量Q,QPVの収束が速くなり、結果としてシミュレーションの所要周期数が少なくて済む。ただし、電荷量Q,QPVの収束値をユーザがシミュレーション前に見積もることは容易でない。そこで、シミュレーション装置100は、以下のようにして適切な初期値を探索する。
【0082】
まず、シミュレーション装置100は、前述のモデル140を用いて、シミュレーションを所定周期数分だけ仮に実行する。モデル140を用いたシミュレーションでは、一周期分の心室容積および心室圧の計算に1時間程度要することがある。この点、仮のシミュレーションでは2~3周期分の計算を行えばよく、心室容積および心室圧が収束する前にシミュレーションを打ち切ってよい。三次元モデル141および周囲モデル142のパラメータには、予め用意したパラメータ値を代入する。周囲モデル142の変数(電荷量)には、仮の初期値を代入する。仮の初期値は、ランダムな数値でもよいし、ユーザが指定した数値でもよいし、所定の固定値でもよい。
【0083】
図8は、心室容積の仮のシミュレーション例を示すグラフである。
グラフ153は、仮のシミュレーションによって算出される心室容積の時間変化を表す時系列データである。曲線153-1は、左心室の心室容積を表す。曲線153-2は、右心室の心室容積を表す。図8の例ではグラフ153に9拍分の心室容積が記載されているが、最初の所定拍数(例えば、3拍)分の心室容積を抽出できればよい。
【0084】
図9は、心室圧の仮のシミュレーション例を示すグラフである。
グラフ154は、仮のシミュレーションによって算出される心室圧の時間変化を表す時系列データである。曲線154-1は、左心室の心室圧を表す。曲線154-2は、右心室の心室圧を表す。図9の例ではグラフ154に9拍分の心室圧が記載されているが、最初の所定拍数(例えば、3拍)分の心室圧を抽出できればよい。なお、仮のシミュレーションでは、前述のグラフ152が示す電荷量Q,QPVのように、所定拍数分の電荷量Q,Q,QPA,QPV,QRA,QLAも抽出しておく。
【0085】
次に、シミュレーション装置100は、所定周期数分の仮のシミュレーション結果を教師データとして用いて、三次元モデル141と置換される簡易モデルを生成する。簡易モデルは、仮のシミュレーション結果をできる限り高精度に再現可能なモデルであって、三次元モデル141よりも変数が少ないものである。第2の実施の形態では簡易モデルとして、有限要素モデルではなく電気回路モデルを使用する。
【0086】
図10は、三次元モデルの簡略化例を示す図である。
三次元モデル141を簡略化することでモデル140aが得られる。モデル140aは、三次元モデル141と置換された簡易モデル143と、周囲モデル142とを含む。周囲モデル142は、モデル140aでもそのまま使用される。簡易モデル143は、有限要素モデルを近似する電気回路モデルであり、キャパシタ143-1,143-2を含む。キャパシタ143-1は、右心室に対応する可変キャパシタである。キャパシタ143-2は、左心室に対応する可変キャパシタである。
【0087】
ここで、簡易モデル143に含まれるパラメータおよび変数の間に成立する関係を説明する。第2の実施の形態で使用する簡易モデル143は、心室の動作を簡易的に表現したモデルの一例である。他の簡易モデルが存在する場合、簡易モデル143に代えて他の簡易モデルを使用することも可能である。心室の動作を近似的に表現する方法は、医学論文などの専門的文献で提案される可能性もある。
【0088】
モデル140aを用いたシミュレーションでは、以下の関係式に従って連立方程式が生成される。前述の周囲モデル142の連立方程式と簡易モデル143の連立方程式とが結合されて、一組の連立方程式が形成され、係数行列が生成される。係数行列を用いた行列演算を繰り返す反復法によって、連立方程式の解が算出される。
【0089】
時刻tにおける左心室の圧力PLVは、数式(13)のように算出される。数式(13)において、ELVはキャパシタ143-2のエラスタンスである。VLVは時刻tにおける左心室の容積、V0,LVは左心室の容積の最小値である。エラスタンスELVは、数式(14)に従って算出される。数式(14)において、Emax,LVはキャパシタ143-2のエラスタンスの最大値である。Eは正規化された可変エラスタンスであり、後述するようにフーリエ係数として定義される。
【0090】
【数13】
【0091】
【数14】
【0092】
時刻tにおける右心室の圧力PRVは、数式(15)のように算出される。数式(15)において、ERVはキャパシタ143-1のエラスタンスである。VRVは時刻tにおける右心室の容積、V0,RVは右心室の容積の最小値である。エラスタンスERVは、数式(16)に従って算出される。数式(16)において、Emax,RVはキャパシタ143-1のエラスタンスの最大値である。Eは数式(14)のものと同じである。正規化エラスタンスEは、数式(17)のように12次のフーリエ係数として定義される。後述するように、振幅A,Aおよび位相ρがフーリエ係数である。
【0093】
【数15】
【0094】
【数16】
【0095】
【数17】
【0096】
圧力PLVが左心室の心室圧であり、容積VLVが左心室の心室容積であり、圧力PRVが右心室の心室圧であり、容積VRVが右心室の心室容積である。圧力PLV,PRVおよび容積VLV,VRVは、シミュレーションの中で値が変化する変数である。三次元モデル141と異なり、簡易モデル143では心室容積および心室圧を直接表現する変数が存在する。最大エラスタンスEmax,LV,Emax,RVおよび最小心室容積V0,LV,V0,RVは、シミュレーションの中で値が変化しないパラメータである。なお、左右心室の同期不全を表現するために、数式(14)に代えて数式(18)を用いてもよい。数式(18)において、位相φは右心室に対する左心室の拍動の遅延時間を示すパラメータである。
【0097】
【数18】
【0098】
図11は、フーリエ係数テーブルの例を示す図である。
フーリエ係数テーブル135は、数式(17)に出現するフーリエ係数の数値を示す。フーリエ係数テーブル135は、次数n、振幅Aおよび位相ρを対応付けている。次数nは、0次から12次までの13通りである。振幅Aとして、0次の振幅Aから12次の振幅A12までの13個の振幅が登録されている。位相ρとして、1次の位相ρから12次の位相ρ12までの12個の位相が登録されている。
【0099】
簡易モデル143の生成では、シミュレーション装置100は、簡易モデル143のパラメータである最大エラスタンスEmax,LV,Emax,RVおよび最小心室容積V0,LV,V0,RVに、仮のパラメータ値を代入する。仮のパラメータ値は、ランダムな値でもよいし、ユーザが指定した値でもよいし、所定の固定値でもよい。また、シミュレーション装置100は、簡易モデル143の変数である圧力PLV,PRVおよび容積VLV,VRVに、モデル140を用いた前述のシミュレーションによって算出された心室圧と心室容積の初期値を代入する。この初期値は、例えば、グラフ153,154の先頭値である。
【0100】
また、シミュレーション装置100は、周囲モデル142のパラメータである抵抗値R,R,RPA,RPV,RTR,RPU,R,RMI、キャパシタンスC,C,CPA,CPVおよびエラスタンスERA,ELAに、前述のシミュレーションと同じ値を代入する。また、シミュレーション装置100は、周囲モデル142の変数である電荷量Q,Q,QPA,QPV,QRA,QLAに、前述のシミュレーションと同じ初期値を代入する。
【0101】
そして、シミュレーション装置100は、簡易モデル143および周囲モデル142を含むモデル140aを用いて、所定周期分のシミュレーションを実行する。ここで実行する周期数は、前述のシミュレーションと同じく2~3拍程度である。また、シミュレーション装置100は、圧力PLV,PRV、容積VLV,VRVおよび電荷量Q,Q,QPA,QPV,QRA,QLAのうち、1以上の変数を評価指標として選択する。シミュレーション装置100は、選択した評価指標について、モデル140のシミュレーション結果とモデル140aのシミュレーション結果との間の類似度を示す評価値を算出する。評価値は、例えば、2つの時系列データの間の誤差または相関係数である。
【0102】
シミュレーション装置100は、この評価値が改善するように簡易モデル143のパラメータ値を更新して、シミュレーションを繰り返す。評価値が誤差である場合は評価値が小さくなるようにパラメータ値を更新し、評価値が相関係数である場合は評価値が大きくなるようにパラメータ値を更新する。モデル140aを用いた所定周期分のシミュレーションは、変数が少ないため1~2分程度で終わることがある。これにより、モデル140のシミュレーション結果を教師データとして簡易モデル143のパラメータが最適化され、モデル140を近似するようなモデル140aを得ることができる。
【0103】
簡易モデル143のパラメータが最適化されると、シミュレーション装置100は、圧力PLV,PRVおよび容積VLV,VRVの周期的変化が収束するまで、モデル140aのシミュレーションを実行する。収束条件は、最新の一周期分の時系列データと直前の一周期分の時系列データとが十分に類似していることである。類似度の評価値は、例えば、誤差または相関係数である。評価値が誤差である場合は評価値が閾値未満に低下したことが条件であり、評価値が相関係数である場合は評価値が閾値を超えたことが条件である。
【0104】
このシミュレーションでは、簡易モデル143のパラメータ値としては、上記の最適化された値を用いる。簡易モデル143の変数の初期値、周囲モデル142のパラメータ値および周囲モデル142の変数の初期値としては、簡易モデル143を生成したときに用いたものと同じ値を用いる。シミュレーション装置100は、モデル140aのシミュレーションを収束するまで実行すると、収束条件を満たした周期の先頭の電荷量Q,Q,QPA,QPV,QRA,QLAを周囲モデル142から抽出する。これら電荷量が、周囲モデル142の変数に対する好ましい初期値と推定される。
【0105】
周囲モデル142の好ましい初期値が決定されると、シミュレーション装置100は、モデル140に戻って本来のシミュレーションを実行する。この本来のシミュレーションは、収束条件が満たされるまで継続して実行される。収束条件は、モデル140aのシミュレーションと同じく、最新の一周期分の心室圧および心室容積の時系列データと直前の一周期分の時系列データとが十分に類似していることである。本来のシミュレーションでは、三次元モデル141のパラメータ値および周囲モデル142のパラメータ値として、前述の所定周期分のシミュレーションで用いたものと同じ値を用いる。また、周囲モデル142の変数である電荷量Q,Q,QPA,QPV,QRA,QLAの初期値として、モデル140aを用いて算出された好ましい初期値を用いる。
【0106】
これにより、任意の初期値を周囲モデル142の変数に代入して、モデル140のシミュレーションを収束するまで実行する場合と比べて、収束に要する周期数(拍数)が少なくなる。よって、シミュレーションの計算量を削減でき所要時間を短縮できる。なお、簡易モデル143は三次元モデル141よりも著しく変数が少ないため、モデル140aを用いたシミュレーションの実行時間は短い。よって、モデル140aのシミュレーションを行ってもトータルの所要時間は短縮される。
【0107】
次に、シミュレーション装置100の機能について説明する。
図12は、シミュレーション装置の機能例を示すブロック図である。
シミュレーション装置100は、メッシュデータ記憶部121およびパラメータ記憶部122を有する。これらの記憶部は、例えば、RAM102またはHDD103の記憶領域を用いて実現される。また、シミュレーション装置100は、三次元シミュレーション部123、簡易シミュレーション部124、指標算出部125、パラメータ推定部126、初期値決定部127および可視化部128を有する。これらの処理部は、例えば、CPU101が実行するプログラムを用いて実現される。
【0108】
メッシュデータ記憶部121は、有限要素モデルである三次元モデル141に相当する三次元メッシュデータを記憶する。三次元メッシュデータは、心室の形状を四面体の要素(メッシュ)に細分化したものである。例えば、CADアプリケーションによって、心室の形状を示すCAD(Computer Aided Design)データが生成され、メッシュ生成アプリケーションによって、CADデータから三次元メッシュデータが生成される。CADアプリケーションやメッシュ生成アプリケーションは、シミュレーション装置100で実行されてもよいし、他の情報処理装置で実行されてもよい。
【0109】
パラメータ記憶部122は、三次元モデル141に含まれる心筋の重力密度ρや血液の重力密度ρなどのパラメータの値を記憶する。また、パラメータ記憶部122は、周囲モデル142に含まれるパラメータである抵抗値R,R,RPA,RPV,RTR,RPU,R,RMI、キャパシタンスC,C,CPA,CPVおよびエラスタンスERA,ELAの値を記憶する。これらのパラメータ値は、例えば、ユーザにより設定される。ただし、前述のように、シミュレーション装置100を用いてパラメータ値の探索を行ってもよい。
【0110】
三次元シミュレーション部123は、三次元モデル141および周囲モデル142を用いたシミュレーションを行う。三次元シミュレーション部123は、三次元モデル141に含まれる変数およびパラメータの間の関係を示す連立方程式を、前述の基礎方程式に基づいて生成する。また、三次元シミュレーション部123は、周囲モデル142に含まれる変数およびパラメータの間の関係を示す連立方程式を、前述の関係式に基づいて生成する。三次元シミュレーション部123は、これらの連立方程式の係数行列を生成し、反復法による行列演算によって連立方程式の解を求める。三次元シミュレーション部123は、複数のCPUや複数のGPUを用いて行列演算を並列処理してもよい。
【0111】
簡易シミュレーション部124は、簡易モデル143および周囲モデル142を用いたシミュレーションを行う。簡易シミュレーション部124は、簡易モデル143に含まれる変数およびパラメータの間の関係を示す連立方程式を、前述の関係式に基づいて生成する。また、簡易シミュレーション部124は、周囲モデル142に含まれる変数およびパラメータの間の関係を示す連立方程式を、前述の関係式に基づいて生成する。簡易シミュレーション部124は、これらの連立方程式の係数行列を生成し、反復法による行列演算によって連立方程式の解を求める。簡易シミュレーション部124は、複数のCPUや複数のGPUを用いて行列演算を並列処理してもよい。
【0112】
指標算出部125は、三次元シミュレーション部123に、所定周期分の三次元シミュレーションを実行させる。指標算出部125は、三次元シミュレーション部123の実行結果から、左心室の心室圧、右心室の心室圧、左心室の心室容積および右心室の心室容積の所定周期分の時系列データを生成する。また、指標算出部125は、電荷量Q,Q,QPA,QPV,QRA,QLAの所定周期分の時系列データを抽出する。
【0113】
パラメータ推定部126は、指標算出部125が生成した10個の指標の時系列データのうちの一部または全部を、教師データとして選択する。パラメータ推定部126は、選択した教師データに基づいて、簡易モデル143のパラメータ値を修正しながら、簡易シミュレーション部124に所定周期分の簡易シミュレーションを繰り返し実行させる。これにより、パラメータ推定部126は、簡易モデル143のパラメータ値を決定する。
【0114】
初期値決定部127は、パラメータ推定部126が決定したパラメータ値を指定して、簡易シミュレーション部124に簡易シミュレーションを収束するまで実行させる。初期値決定部127は、簡易シミュレーション部124の実行結果から、最後の周期の先頭時刻における電荷量Q,Q,QPA,QPV,QRA,QLAを抽出する。
【0115】
可視化部128は、初期値決定部127が抽出した電荷量Q,Q,QPA,QPV,QRA,QLAを周囲モデル142の変数の初期値に指定して、三次元シミュレーション部123に三次元シミュレーションを収束するまで実行させる。可視化部128は、三次元シミュレーション部123の実行結果から、左心室の心室圧、右心室の心室圧、左心室の心室容積および右心室の心室容積の時系列データを生成する。可視化部128は、生成した時系列データを出力する。出力する時系列データは、収束した一周期分のものでもよい。例えば、可視化部128は、時系列データをグラフとして可視化して表示装置111に表示させる。ただし、可視化部128は、時系列データを不揮発性ストレージに保存してもよく、ネットワーク114を介して他の情報処理装置に転送してもよい。
【0116】
図13は、節点テーブルとメッシュテーブルの例を示す図である。
節点テーブル131およびメッシュテーブル132は、心臓の心室の形状を示すメッシュデータであり、メッシュデータ記憶部121に記憶される。節点テーブル131は、節点番号と座標とを対応付けた複数のレコードを記憶する。節点番号は、節点を識別する識別子である。座標は、節点の位置を示すX座標、Y座標およびZ座標の組である。メッシュテーブル132は、メッシュ番号と節点番号とを対応付けた複数のレコードを記憶する。メッシュ番号は、四面体の要素(メッシュ)を識別する識別子である。節点番号は、四面体の4つの頂点に相当する4つの節点の節点番号を列挙したものである。
【0117】
図14は、パラメータテーブルの例を示す図である。
パラメータテーブル133は、パラメータ記憶部122に記憶される。パラメータテーブル133は、パラメータとその値(パラメータ値)とを対応付けた複数のレコードを含む。パラメータには、周囲モデル142の抵抗値R,R,RPA,RPV,RTR,RPU,R,RMI、キャパシタンスC,C,CPA,CPVおよびエラスタンスERA,ELAが含まれる。また、パラメータには、三次元モデル141の重力密度ρ,ρなど、前述の基礎方程式に出現する各種のパラメータが含まれる。
【0118】
図15は、時系列データテーブルの例を示す図である。
時系列データテーブル134は、指標算出部125によって生成される。時系列データテーブル134は、10個の指標の所定周期分(例えば、3拍分)の時系列データを記憶する。10個の指標は、左心室容積VLV、右心室容積VRV、左心室圧PLV、右心室圧PRVおよび電荷量Q,Q,QPA,QPV,QRA,QLAである。時系列データテーブル134は、所定の時間刻みで、これら10個の指標の数値を列挙する。
【0119】
次に、シミュレーション装置100の処理手順について説明する。
図16は、シミュレーションの手順例を示すフローチャートである。
(S10)シミュレーション装置100は、メッシュデータ、三次元モデル141のパラメータ値および周囲モデル142のパラメータ値を取得する。
【0120】
(S11)指標算出部125は、周囲モデル142の電荷量Q,Q,QPA,QPV,QRA,QLAの初期値を設定する。初期値は、ランダムでもよく所定の固定値でもよい。
【0121】
(S12)指標算出部125は、三次元モデル141のパラメータ値、周囲モデル142のパラメータ値、ステップS11の周囲モデル142の初期値、および、拍数を指定する。拍数は、例えば、2~3拍である。三次元シミュレーション部123は、指標算出部125からの指定に従って三次元シミュレーションを実行する。
【0122】
(S13)指標算出部125は、三次元シミュレーション部123の実行結果から、左心室容積VLV、右心室容積VRV、左心室圧PLV、右心室圧PRVおよび電荷量Q,Q,QPA,QPV,QRA,QLAの時系列データを生成する。各時刻の左心室容積VLVおよび右心室容積VRVは、節点に対応付けられた変数である変位量の値から各四面体の体積を求め、これを合算することで算出することができる。各時刻の左心室圧PLVおよび右心室圧PRVは、心室出口の節点に対応付けられた変数である圧力の値に相当する。各時刻の電荷量Q,Q,QPA,QPV,QRA,QLAは、圧力P,P,PPA,PPV,PRA,PLAとキャパシタンスの積として算出される。
【0123】
(S14)パラメータ推定部126は、左心室容積VLV、右心室容積VRV、左心室圧PLV、右心室圧PRVおよび電荷量Q,Q,QPA,QPV,QRA,QLAの10個の指標から、1以上の評価指標を選択する。好ましくは、10個の指標を全て選択する。
【0124】
(S15)パラメータ推定部126は、ステップS13の左心室容積VLV、右心室容積VRV、左心室圧PLVおよび右心室圧PRVの時系列データから、それぞれ先頭の値を抽出し、抽出した値を簡易モデル143の初期値に設定する。
【0125】
(S16)パラメータ推定部126は、簡易モデル143の最大エラスタンスEmax,LV,Emax,RVおよび最小心室容積V0,LV,V0,RVにパラメータ値を設定する。パラメータ値は、ランダムでもよく所定の固定値でもよい。
【0126】
(S17)パラメータ推定部126は、ステップS12と同じ周囲モデル142のパラメータ値、周囲モデル142の初期値、および、拍数を指定する。また、パラメータ推定部126は、ステップS15の簡易モデル143の初期値、および、ステップS16の簡易モデル143のパラメータ値を指定する。簡易シミュレーション部124は、パラメータ推定部126からの指定に従って簡易シミュレーションを実行する。
【0127】
(S18)パラメータ推定部126は、簡易シミュレーション部124の実行結果から、左心室容積VLV、右心室容積VRV、左心室圧PLV、右心室圧PRVおよび電荷量Q,Q,QPA,QPV,QRA,QLAの時系列データを生成する。パラメータ推定部126は、ステップS14で選択した評価指標について、ここで生成した時系列データとステップS13の時系列データとの間の類似度を示す評価値を算出する。2以上の評価指標が選択されている場合、例えば、評価指標毎の評価値の平均を全体の評価値とする。評価値は、例えば、誤差(平均二乗誤差や二乗平均平方根誤差など)または相関係数である。
【0128】
(S19)パラメータ推定部126は、ステップS18の評価値が所定条件を満たしているか判断する。所定条件は、例えば、誤差を示す評価値が所定の閾値未満であること、または、相関係数を示す評価値が所定の閾値を超えていることである。評価値が所定条件を満たす場合はステップS21に進み、それ以外の場合はステップS20に進む。
【0129】
(S20)パラメータ推定部126は、評価値が改善するように(例えば、誤差が小さくなる、または、相関係数が大きくなるように)、簡易モデル143の最大エラスタンスEmax,LV,Emax,RVおよび最小心室容積V0,LV,V0,RVのパラメータ値を修正する。そして、ステップS17に戻る。次回のステップS17では、簡易モデル143のパラメータ値以外のパラメータ値、初期値および拍数は、前回と同じものを使用する。
【0130】
図17は、シミュレーションの手順例を示すフローチャート(続き)である。
(S21)パラメータ推定部126は、所定条件を満たす評価値が得られた時点(例えば、誤差が閾値未満になった時点、または、相関係数が閾値を超えた時点)における簡易モデル143のパラメータ値を、最適なパラメータ値と決定する。初期値決定部127は、ステップS17と同じ周囲モデル142のパラメータ値、周囲モデル142の初期値、および、簡易モデル143の初期値を指定する。また、初期値決定部127は、パラメータ推定部126が決定した簡易モデル143のパラメータ値を指定する。
【0131】
(S22)簡易シミュレーション部124は、初期値決定部127からの指定に従って、簡易シミュレーションを一周期分だけ実行する。
(S23)初期値決定部127は、左心室容積VLV、右心室容積VRV、左心室圧PLVおよび右心室圧PRVの最新の一周期分の時系列データを抽出する。初期値決定部127は、ここで抽出した時系列データと直前の一周期分の時系列データとの間の類似度を示す評価値を算出する。例えば、上記の4つの評価指標の評価値の平均を全体の評価値とする。評価値は、例えば、誤差または相関係数である。なお、直前の一周期分の時系列データがまだ無い場合は、ステップS24の判断がNOになる。
【0132】
(S24)初期値決定部127は、ステップS23の評価値が収束を示しているか判断する。例えば、誤差を示す評価値が所定の閾値未満であるとき、または、相関係数を示す評価値が所定の閾値を超えたとき、収束していると判断する。評価値が収束を示している場合はステップS25に進み、それ以外の場合はステップS22に戻る。
【0133】
(S25)初期値決定部127は、最終周期の先頭時刻における周囲モデル142の電荷量Q,Q,QPA,QPV,QRA,QLAを抽出する。
(S26)可視化部128は、ステップS12の三次元モデル141のパラメータ値、周囲モデル142のパラメータ値、および、周囲モデル142の初期値のうち、周囲モデル142の初期値をステップS25で抽出された値に変更する。
【0134】
(S27)三次元シミュレーション部123は、可視化部128からの指定に従って、三次元シミュレーションを一周期分だけ実行する。
(S28)可視化部128は、三次元シミュレーション部123の実行結果から、左心室容積VLV、右心室容積VRV、左心室圧PLVおよび右心室圧PRVの最新の一周期分の時系列データを生成する。各時刻の左心室容積VLVおよび右心室容積VRVは、各四面体の体積を合算することで算出することができる。各時刻の左心室圧PLVおよび右心室圧PRVは、心室出口の節点に対応付けられた変数である圧力の値に相当する。
【0135】
(S29)可視化部128は、ステップS28の時系列データと直前の一周期分の時系列データとの間の類似度を示す評価値を算出する。例えば、上記の4つの評価指標の評価値の平均を全体の評価値とする。評価値は、例えば、誤差または相関係数である。なお、直前の一周期分の時系列データがまだ無い場合は、ステップS30の判断がNOになる。
【0136】
(S30)可視化部128は、ステップS29の評価値が収束を示しているか判断する。例えば、誤差を示す評価値が所定の閾値未満であるとき、または、相関係数を示す評価値が所定の閾値を超えたとき、収束していると判断する。評価値が収束を示している場合はステップS31に進み、それ以外の場合はステップS27に戻る。
【0137】
(S31)可視化部128は、左心室容積VLV、右心室容積VRV、左心室圧PLVおよび右心室圧PRVの時間変化を示すグラフを生成し、表示装置111に表示させる。
第2の実施の形態のシミュレーション装置100によれば、三次元モデル141と接続される周囲モデル142の変数に、収束後の値に近似する適切な初期値をシミュレーション開始時点で代入することが可能となる。よって、三次元モデル141および周囲モデル142を用いた血行動態シミュレーションが収束するまでの所要周期数を少なく抑えることができる。そのため、血行動態シミュレーションの計算量を削減でき、所要時間を短縮することができる。また、適切な初期値を求めるために使用する簡易モデル143は、三次元モデル141よりも変数が大幅に少ない。このため、簡易モデル143および周囲モデル142を用いたシミュレーションは短時間で完了することが可能である。そのため、簡易モデル143および周囲モデル142を用いたシミュレーションを追加しても、トータルの計算量は削減され、トータルの所要時間を短縮できる。
【符号の説明】
【0138】
10 シミュレーションシステム
11 記憶装置
12 演算装置
13,14,15 モデル
16a,16b 状態値
17 特徴量
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17