(57)【要約】  シミュレーション装置（１０）は、タイムステップ間隔がそれぞれ異なる複数のシミュレーションを並行して実行する。具体的には、シミュレーション装置（１０）は、ユーザによって入力されたタイムステップの異なる複数の実行オブジェクトに基づいて、それぞれのシミュレーション結果を計算する。そして、シミュレーション装置（１０）は、実行された複数のシミュレーション結果を共有テーブル（１５ａ）に格納し、可視化装置（２０）に出力する。具体的には、シミュレーション装置（１０）は、実行されたシミュレーションデータよりも精度が高いシミュレーションデータが共有テーブル（１５ａ）内にあるか判定し、実行されたシミュレーションデータの方が高精度な場合には、共有テーブル（１５ａ）にシミュレーションデータを書き込んで可視化装置（２０）に出力する。
2008126196.tif 000002
【特許請求の範囲】
【請求項１】
所定のタイムステップ間隔でシミュレーションを実行し、ステップ毎に実行されるシミュレーションの結果を出力する方法をコンピュータに実行させるシミュレーション制御プログラムであって、
前記タイムステップ間隔がそれぞれ異なる複数のシミュレーションを並行して実行するシミュレーション実行手順と、
前記シミュレーション実行手順によって実行された前記複数のシミュレーションの結果を出力する結果出力手順と、
をコンピュータに実行させることを特徴とするシミュレーション制御プログラム。
【請求項２】
前記出力手順は、シミュレーション実行手順によって実行された前記複数のシミュレーションの結果を共有の出力部に出力することを特徴とする請求項１に記載のシミュレーション制御プログラム。
【請求項３】
前記出力手順は、シミュレーション実行手順によって実行された前記シミュレーションの結果よりも精度の高い他のシミュレーション結果がある場合には、当該他のシミュレーションの結果に更新して出力することを特徴とする請求項１に記載のシミュレーション制御プログラム。
【請求項４】
所定の条件に応じて、前記各シミュレーションに前記プロセッサを割当てる割当手順をさらに備え、
前記シミュレーション実行手順は、前記割当手順によって割当てられたプロセッサを用いて、それぞれのシミュレーションを並行して実行することを特徴とする請求項１に記載のシミュレーション制御プログラム。
【請求項５】
前記実行手順によってシミュレーションの実行が終了した場合には、当該終了したシミュレーションに割り当てられていたプロセッサを他のシミュレーションに割り当てる再割当手順をさらに備え、
前記シミュレーション実行手順は、前記再割当手順によって割当てられたプロセッサを用いて、前記他のシミュレーションを実行することを特徴とする請求項１に記載のシミュレーション制御プログラム。
【請求項６】
前記実行手順によって実行された前記複数のシミュレーションの結果をリンク構造を有する所定の格納部に格納する格納手順をさらに備えることを特徴とする請求項１に記載のシミュレーション制御プログラム。
【請求項７】
所定のタイムステップ間隔でシミュレーションを実行し、ステップ毎に実行されるシミュレーションの結果を出力するシミュレーション制御プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記タイムステップ間隔がそれぞれ異なる複数のシミュレーションを並行して実行するシミュレーション実行手順と、
前記シミュレーション実行手順によって実行された前記複数のシミュレーションの結果を出力する結果出力手順と、
を実行させるためのシミュレーション制御プログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項８】
所定のタイムステップ間隔でシミュレーションを実行し、ステップ毎に実行されるシミュレーションの結果を出力するシミュレーション装置であって、
前記タイムステップ間隔がそれぞれ異なる複数のシミュレーションを並行して実行するシミュレーション実行手段と、
前記シミュレーション実行手段によって実行された前記複数のシミュレーションの結果を出力する結果出力手段と、
を備えることを特徴とするシミュレーション装置。
【請求項９】
所定のタイムステップ間隔でシミュレーションを実行し、ステップ毎に実行されるシミュレーションの結果を出力するシミュレーション制御方法であって、
前記タイムステップ間隔がそれぞれ異なる複数のシミュレーションを並行して実行するシミュレーション実行工程と、
前記シミュレーション実行工程によって実行された前記複数のシミュレーションの結果を出力する結果出力工程と、
を含んだことを特徴とするシミュレーション制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、タイムステップ間隔でシミュレーションを実行し、ステップ毎に実行されるデータを出力するシミュレーション制御プログラム、記録媒体、シミュレーション装置およびシミュレーション制御方法に関する。
【背景技術】
【０００２】
従来より、災害や防災に関するシミュレーション方法として、所定のタイムステップ間隔でシミュレーションを行い、ステップ毎に出力されるデータをリアルタイムで表示する方法が用いられている。例えば、１０秒後の状況をシミュレーションする場合に、タイムステップ間隔を０．０１秒とすると１０００ステップのシミュレーションが行われる。このとき、各タイムステップごとにシミュレーション結果のデータを出力するとともに、前のタイムステップのシミュレーション結果を基に新たにシミュレーションが行われる。また、各タイムステップ毎にシミュレーションにかかる処理時間は、タイムステップ間隔によらず同じである。【０００３】
したがって、タイムステップ間隔を小さい値に設定すると高精度なシミュレーション結果が得られるが、計算ステップ数が増大するため処理時間が増大してしまう。逆にタイムステップ間隔を大きい値に設定すると、高速なシミュレーションが可能となり、速報性を上げることができるが、精度が低いシミュレーション結果しか得られない。【０００４】
なお、シミュレーション結果の精度と処理時間が相反するシミュレーション技術に関して、精度を上げつつ処理時間を短くする工夫が提案されている。例えば、低精度のシミュレーションモデルと高精度のシミュレーションモデルを用意しておき、シミュレーションを行う領域を空間的に区分して、領域ごとに必要な精度でシミュレーションを行う手法が提案されている（特許文献１）。また、災害や防災に関するシミュレーション方法として、災害に関する一次情報を基に低精度のシミュレーションを行い、その結果を基に領域を選択し、災害に関する二次情報を基に高精度のシミュレーションを行う手法が提案されている（特許文献２）。【０００５】
【特許文献１】特開２００２−２５９８８８号公報
【特許文献２】特開平１１−１４３３５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記先行技術文献に挙げた手法は、所定のタイムステップ間隔でシミュレーションを行う手法ではなく、また、単に低精度で一次シミュレーション結果を行い、その結果を基に領域等を限定して高精度の二次シミュレーションを行うことが提案されているにすぎない。したがって、従来技術では、所定のタイムステップ間隔でシミュレーションを実行し、ステップ毎に実行されるデータを出力するシミュレーション方法に関して、精度の向上と速報性の向上を両立させるのに適した方法は提案されていなかった。【０００７】
そこで、この発明は、所定のタイムステップ間隔でシミュレーションを実行し、ステップ毎に実行されるデータを出力するシミュレーション方法に関して、高精度と速報性の向上を両立させるのに適したシミュレーションを行うことを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、本発明は、所定のタイムステップ間隔でシミュレーションを実行し、ステップ毎に実行されるシミュレーションの結果を出力する方法をコンピュータに実行させるシミュレーション制御プログラムであって、前記タイムステップ間隔がそれぞれ異なる複数のシミュレーションを並行して実行するシミュレーション実行手順と、前記シミュレーション実行手順によって実行された前記複数のシミュレーションの結果を出力する結果出力手順と、をコンピュータに実行させることを特徴とする。【０００９】
また、本発明は、前記出力手順は、シミュレーション実行手順によって実行された前記複数のシミュレーションの結果を共有の出力部に出力することを特徴とする。【００１０】
また、本発明は、前記出力手順は、シミュレーション実行手順によって実行された前記シミュレーションの結果よりも精度の高い他のシミュレーション結果がある場合には、当該他のシミュレーションの結果に更新して出力することを特徴とする。【００１１】
また、本発明は、所定の条件に応じて、前記各シミュレーションに前記プロセッサを割当てる割当手順をさらに備え、前記シミュレーション実行手順は、前記割当手順によって割当てられたプロセッサを用いて、それぞれのシミュレーションを並行して実行することを特徴とする。【００１２】
また、本発明は、前記実行手順によってシミュレーションの実行が終了した場合には、当該終了したシミュレーションに割り当てられていたプロセッサを他のシミュレーションに割り当てる再割当手順をさらに備え、前記シミュレーション実行手順は、前記再割当手順によって割当てられたプロセッサを用いて、前記他のシミュレーションを実行することを特徴とする。【００１３】
また、本発明は、前記実行手順によって実行された前記複数のシミュレーションの結果をリンク構造を有する所定の格納部に格納する格納手順をさらに備えることを特徴とする。【００１４】
また、本発明は、所定のタイムステップ間隔でシミュレーションを実行し、ステップ毎に実行されるシミュレーションの結果を出力するシミュレーション制御プログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記タイムステップ間隔がそれぞれ異なる複数のシミュレーションを並行して実行するシミュレーション実行手順と、前記シミュレーション実行手順によって実行された前記複数のシミュレーションの結果を出力する結果出力手順と、を実行させるためのシミュレーション制御プログラムを記録したことを特徴とする。【００１５】
また、本発明は、所定のタイムステップ間隔でシミュレーションを実行し、ステップ毎に実行されるシミュレーションの結果を出力するシミュレーション装置であって、前記タイムステップ間隔がそれぞれ異なる複数のシミュレーションを並行して実行するシミュレーション実行手段と、前記シミュレーション実行手段によって実行された前記複数のシミュレーションの結果を出力する結果出力手段と、を備えることを特徴とする。【００１６】
また、本発明は、所定のタイムステップ間隔でシミュレーションを実行し、ステップ毎に実行されるシミュレーションの結果を出力するシミュレーション方法であって、前記タイムステップ間隔がそれぞれ異なる複数のシミュレーションを並行して実行するシミュレーション実行工程と、前記シミュレーション実行工程によって実行された前記複数のシミュレーションの結果を出力する結果出力工程と、を含んだことを特徴とする。
【発明の効果】
【００１７】
本発明によれば、タイムステップ間隔がそれぞれ異なる複数のシミュレーションを並行して実行し、実行された複数のシミュレーションの結果を出力するので、タイムステップ間隔を大きいシミュレーション結果が早期に得るとともに、順次精度のよいシミュレーション結果も得られる結果、高精度かつ高速なシミュレーションを行うことが可能である。【００１８】
また、本発明によれば、実行された前記複数のシミュレーションの結果を共有の出力部に出力するので、出力部を一つに集約してシミュレーション数分のディスクや可視化装置を必要としない結果、資源を節約することが可能である。【００１９】
また、本発明によれば、実行されたシミュレーションの結果よりも精度の高い他のシミュレーション結果がある場合には、他のシミュレーションの結果に更新して出力するので、精度の異なる多数の結果を精度の高い結果に順次更新する結果、最も精度の高いものにアップデートしてユーザに知らせることが可能である。【００２０】
また、本発明によれば、所定の条件に応じて、各シミュレーションにプロセッサを割当て、割当てられたプロセッサを用いて、それぞれのシミュレーションを並行して実行するので、例えば、速度優先のパラメータの場合には、タイムステップ間隔の大きいシミュレーション(高速)にプロセッサを多く割り当て、タイムステップ間隔の小さいシミュレーション(低速)にプロセッサを少なく割り当てる。また、精度優先のパラメータの場合には、タイムステップ間隔の小さいシミュレーション(高精度)にプロセッサを多く割り当て、タイムステップ間隔の大きいシミュレーション(低精度)にプロセッサを少なく割り当てる結果、ユーザの要求に応じて、各シミュレーションに使用するプロセッサ数を自動で決定することが可能である。【００２１】
また、本発明によれば、シミュレーションの実行が終了した場合には、終了したシミュレーションに割り当てられていたプロセッサを他のシミュレーションに割り当て、割当てられたプロセッサを用いて、他のシミュレーションを実行するので、早期に終了してしまったシミュレーションを実行していたプロセッサを遊休させないで、他のシミュレーションに再び割り当てる、プロセッサの再活用を行うことが可能である。【００２２】
また、本発明によれば、実行された前記複数のシミュレーションの結果をリンク構造を有する所定の格納部に格納するので、例えば、混在したデータをシミュレーションの経過時間にソートした構造を持つ１つのデータに集約する結果、ユーザがデータのトップから参照すれば時系列のシミュレーション結果を参照することが可能である。
【図面の簡単な説明】
【００２３】
【図１】図１は、実施例１に係るシミュレーション装置の概要および特徴を説明するための図である。
【図２】図２は、実施例１に係るシミュレーション装置の構成を示すブロック図である。
【図３】図３は、実行オブジェクトについて説明するための図である。
【図４】図４は、共有テーブルについて説明するための図である。
【図５】図５は、プロセッサを再度割り当てる処理を説明するための図である。
【図６】図６は、共有テーブル構築部による共有テーブルの修正、更新を説明する図である。
【図７】図７は、共有テーブル構築部による共有テーブルの修正、更新を説明する図である。
【図８】図８は、共有テーブルを構築する処理を説明するための図である。
【図９】図９は、実施例１に係るシミュレーション装置の処理動作を示すフローチャートである。
【図１０】図１０は、シミュレーション制御プログラムを実行するコンピュータを示す図である。
【符号の説明】
【００２４】
１０  シミュレーション装置
１１  入力部
１２  出力部
１３  計算装置制御Ｉ／Ｆ
１４  制御部
１４ａ  シミュレーション起動部
１４ｂ  プロセッサ選択部
１４ｃ  シミュレーション経過受信部
１４ｄ  プロセッサ再配置部
１４ｅ  共有テーブル構築部
１５  記憶部
１５ａ  共有テーブル
１６ａ〜１６ｃ  計算部
２０  可視化装置
【発明を実施するための最良の形態】
【００２５】
以下に添付図面を参照して、この発明に係るシミュレーション装置の実施例を詳細に説明する。
【実施例１】
【００２６】
以下の実施例では、実施例１に係るシミュレーション装置の概要および特徴、シミュレーション装置の構成および処理の流れを順に説明し、最後に実施例１による効果を説明する。【００２７】
［実施例１に係るシミュレーション装置の概要および特徴］
まず最初に、図１を用いて、実施例１に係るシミュレーション装置の概要および特徴を説明する。図１は、実施例１に係るシミュレーション装置の概要および特徴を説明するための図である。【００２８】
実施例１のシミュレーション装置１０では、所定のタイムステップ間隔でシミュレーションを行い、ステップ毎に出力されるデータを出力することを概要とする。そして、高精度かつ高速なシミュレーションを行う点に主たる特徴がある。【００２９】
この主たる特徴について具体的に説明すると、実施例１に係るシミュレーション装置１０は、図１に示すように、複数のシミュレーション結果を格納する共有テーブル１５ａを備える。【００３０】
このような構成のもと、シミュレーション装置１０は、タイムステップ間隔がそれぞれ異なる複数のシミュレーションを並行して実行する。具体的には、シミュレーション装置１０は、ユーザによって入力されたタイムステップの異なる複数の実行オブジェクトに基づいて、それぞれのシミュレーション結果を計算する。図１の例を用いて説明すると、シミュレーション装置１０は、タイムステップ間隔「Δｔ＝０．０１」で計算されるシミュレーション（つまり、低速かつ高精度）と、タイムステップ間隔「Δｔ＝０．１」で計算されるシミュレーション（つまり、高速かつ低精度）とを並行して実行する。なお、タイムステップ間隔の単位は「時間」を単位とするものであれば任意であるが、本実施例の説明では便宜上「秒」を単位として表している。したがって「Δｔ＝０．０１」はタイムステップ間隔０．０１秒を表す。【００３１】
そして、シミュレーション装置１０は、実行された複数のシミュレーション結果を共有テーブル１５ａに格納し、可視化装置２０に出力する。具体的には、シミュレーション装置１０は、実行されたシミュレーションデータよりも精度が高いシミュレーションデータが共有テーブル１５ａ内にあるか判定し、実行されたシミュレーションデータの方が高精度な場合には、共有テーブル１５ａにシミュレーションデータを書き込んで可視化装置２０に出力する。【００３２】
つまり、シミュレーション装置１０は、タイムステップ間隔の大きいシミュレーション結果を早期に可視化装置２０出力して、災害等に即座に対策を講じることが可能なようにし、その後、順次精度のよいシミュレーション結果に更新する。【００３３】
このように、シミュレーション装置１０は、タイムステップ間隔が大きいシミュレーション結果を早期に得るとともに、順次精度のよいシミュレーション結果も得られる結果、上記した主たる特徴のごとく、高精度かつ高速なシミュレーションを行うことが可能である。【００３４】
［シミュレーション装置の構成］
次に、図２〜図６を用いて、図１に示したシミュレーション装置１０の構成を説明する。図２は、実施例１に係るシミュレーション装置の構成を示すブロック図であり、図３は、実行オブジェクトについて説明するための図であり、図４は、共有テーブルについて説明するための図であり、図５は、プロセッサを再度割り当てる処理を説明するための図であり、図６および図７は、共有テーブル構築部による共有テーブルの修正、更新を説明する図であり、図８は、共有テーブルを構築する処理を説明するための図である。【００３５】
図２に示すように、このシミュレーション装置１０は、入力部１１、出力部１２、計算装置制御Ｉ／Ｆ１３、制御部１４、記憶部１５および複数の計算部１６ａ〜１６ｃを備え、出力部１２を介して可視化装置２０と接続される。以下にこれらの各部の処理を説明する。なお、複数の計算部１６ａ〜１６ｃは、シミュレーション装置１０とは別装置である計算装置であってもよい。【００３６】
入力部１１は、各実行オブジェクトに対して異なるタイムステップ間隔の指示、各実行オブジェクトで使用するプロセッサ数の指示、「速度優先」または「精度優先」の指示、シミュレーション開始指示などが入力されるものであり、入力装置としてキーボードやマウス、マイクなどが接続される構成となっている。【００３７】
例えば、入力部１１は、図３の例では、各実行オブジェクトに対して異なるタイムステップ間隔Δｔとして「Δｔ＝０．００１」、「Δｔ＝０．００５」、・・・「Δｔ＝０．１」を入力する。なお、タイムステップ間隔、プロセッサ数等のパラメータの指示は、予め所定のパラメータ値を記憶しているパラメータテーブルを用意しておき（図２では不図示）、通常のＧＵＩ（Graphical  User  Interface）を用いてモニタ上で選択する形で指定する等の方法を用いることができる。【００３８】
出力部１２は、共有テーブルに格納された可視化データを可視化装置２０に出力するものである。可視化装置２０は、モニタ（若しくはディスプレイ、タッチパネル）やスピーカを備えて構成される。可視化装置２０は出力部１２から出力されたシミュレーション結果の数値等の可視化データをモニタ等に表示するだけでなく、出力された可視化データを基に利用者が理解しやすいようにグラフ化、画像化（出力値による色の変更、形の変更等）する機能等を持つことができる。【００３９】
計算装置制御Ｉ／Ｆ１３は、複数の計算部１６ａ〜１６ｃとの間でやり取りする各種情報に関する通信を制御する。具体的には、計算装置制御Ｉ／Ｆ１３は、プロセッサによって実現される各計算部１６ａ〜１６ｃ（以下で、プロセッサという場合あり）にシミュレートする実行オブジェクトを送信し、また、各計算部１６ａ〜１６ｃからシミュレーションの結果を受信する。【００４０】
計算部１６ａ〜１６ｃは、プロセッサにより実現されるものであって、それぞれに実行オブジェクトが生成され、タイムステップ間隔がそれぞれ異なる複数のシミュレーションを並行して実行する。具体的には、計算部１６ａ〜計算部１６ｃは、後述するシミュレーション起動部１４ａから起動指示を受信して起動し、プロセッサ選択部１４ｂによって異なるタイムステップ間隔のシミュレーションがそれぞれ割り当てられた後、シミュレーションを実行する。【００４１】
そして、計算部１６ａ〜１６ｃは、各タイムステップごとのシミュレーション結果をシミュレーション経過受信部１４ｃに送信する。なお、各計算部のプロセッサ数は一つとは限らず、複数のプロセッサで同じタイムステップ間隔のシミュレーションを行うことができ、先に述べたように入力部１１への指示に基づき各実行オブジェクトごとのプロセッサ数を決めることができる。【００４２】
記憶部１５は、制御部１４による各種処理に必要なデータおよびプログラムを格納するが、特に本発明に密接に関連するものとしては、共有テーブル１５ａを備える。この共有テーブル１５ａは、リンク構造を有し、実行された複数のシミュレーションの結果を格納する。【００４３】
具体的には、共有テーブル１５ａは、図４に示すように、実行されたシミュレーションの結果に係る実行オブジェクトを一意に特定する「実行ＩＤ」と、シミュレーションの対象となった時間を示す「経過時間」と、可視化装置２０に出力されるシミュレーションの結果を示す「可視化データ」とを対応付け、経過時間の順番に基づくリンク構造で記憶する（図４ではポインタ等は省略している）。【００４４】
「経過時間」とはタイムステップ間隔Δｔとシミュレーションの終了したタイムステップまでのタイムステップ数を掛け合わせたものであり、「可視化データ」として出力されたデータがどの時点のシミュレーション結果に対するものであるかを示すものである。タイムステップ間隔の違いにより、「経過時間」の値に違いが生じる場合があるので、すでに共有テーブル１５ａに格納された可視化データの「経過時間」の間のデータが「可視化データ」として送られてくることがある。このため、「経過時間」の順番に基づくリンク構造として、新たな「可視化データ」を挿入しやすくしている。【００４５】
「可視化データ」はシミュレーションモデルや内容によって異なる。図４の例では、空間を座標（０，０，０）から（ｎ，ｎ，ｎ）の三次元のグリッドにわけ、各グリッド単位でシミュレーションを行った結果を示しており、データとしては圧力、温度、及び湿度の値を示しているが、これに限られるものではない。座標として経度、緯度及び高度を用いたり、データとして震度、マグニチュード、波の高さ等シミュレーションモデル、内容によってさまざまなものがある。【００４６】
また、共有テーブル１５ａは、シミュレーション最中に常に更新されており、可視化装置と接続することにより、ユーザはリアルタイムで共有テーブル上の最新の情報を得ることができる。また、全ての実行オブジェクトのシミュレーションが終了する前であれば、ユーザは共有テーブルにアクセスすることによって指定した実行ＩＤのみのデータ（特定のタイムステップ間隔のデータ）を採取することが可能である。精度の高い実行オブジェクトで、最終結果を出力するのに数日を要するような大規模なシミュレーションを行う場合に、より精度の低い任意のデータを選択して最終結果や途中結果を確認することができる。【００４７】
制御部１４は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に本発明に密接に関連するものとしては、シミュレーション起動部１４ａ、プロセッサ選択部１４ｂ、シミュレーション経過受信部１４ｃ、プロセッサ再配置部１４ｄおよび共有テーブル構築部１４ｅを備える。【００４８】
シミュレーション起動部１４ａは、シミュレーションの実行を各計算部１６ａ〜１６ｃに命令する。具体的には、シミュレーション起動部１４ａは、入力部１１よりシミュレーション開始指示を受け付けると、各計算部１６ａ〜１６ｃに起動するように指示し、入力部１１によって入力されたタイムステップ間隔の指示、各タイムステップ間隔の実行オブジェクトで使用するプロセッサ数の指示、「速度優先」または「精度優先」の指示をプロセッサ選択部１４ｂに通知する。【００４９】
プロセッサ選択部１４ｂは、所定の条件に応じて、各タイムステップ間隔のシミュレーションを行う計算部１６ａ〜１６ｃに、それぞれ用いるプロセッサを割当てる。具体的には、プロセッサ選択部１４ｂは、シミュレーション起動部１４ａから受け付けた各タイムステップ間隔の実行オブジェクトで使用するプロセッサ数の指示や「速度優先」または「精度優先」の指示に応じて、プロセッサを割り当てる。【００５０】
具体的な例を挙げて説明すると、ユーザが各タイムステップ間隔のシミュレーションを行う計算部で用いるプロセッサ数を指定している場合には、それに従ってプロセッサ選択部１４ｂはプロセッサを割り振る。「速度優先」を指示するパラメータを受け取った場合、プロセッサ選択部１４ｂは、タイムステップ間隔の大きいシミュレーション(高速)を行う計算部にプロセッサを多く割り当て、タイムステップ間隔の小さいシミュレーション(低速)を行う計算部にプロセッサを少なく割り当てる。【００５１】
「精度優先」を指示するパラメータを受け取った場合、プロセッサ選択部１４ｂは、タイムステップ間隔の小さいシミュレーション(高精度)を行う計算部にプロセッサを多く割り当て、タイムステップ間隔の大きいシミュレーション(低精度)を行う計算部にプロセッサを少なく割り当てる。ユーザがパラメータを指定していない場合は、プロセッサ選択部は全てのプロセッサを各計算部に均等に割り振る。【００５２】
シミュレーション経過受信部１４ｃは、複数の計算部１６ａ〜１６ｃからシミュレーションの結果を受信する。具体的には、シミュレーション経過受信部１４ｃは、各タイムステップ間隔毎に各計算部１６ａ〜１６ｃから非同期にシミュレーションの結果を受信し、後述する共有テーブル構築部１４ｅに通知する。また、シミュレーション経過受信部１４ｃは、各計算部のシミュレーションの実行が終了するか否かを判定し、シミュレーションの実行が終了した場合には、各シミュレーションごとに、その旨をプロセッサ再配置部１４ｄに通知する。【００５３】
プロセッサ再配置部１４ｄは、あるタイムステップ間隔のシミュレーションの実行が終了した場合には、その終了したシミュレーションを行う計算部に割り当てられていたプロセッサを他のシミュレーションを行う計算部に割り当てる。具体的には、プロセッサ再配置部１４ｄは、シミュレーション経過受信部１４ｃからシミュレーションの実行が終了する旨を終了フラグにより受け付けると、その終了したシミュレーションを行う計算部に割り当てられていたプロセッサを他のシミュレーションを行う計算部に割り当てる（図５参照）。【００５４】
例えば、プロセッサ再配置部１４ｄは、プロセッサの計算部への割り振りを、実行ＩＤを用いて判断してもよい。つまり、実行ＩＤの値が小さいものを高精度のシミュレーション（タイムステップ間隔が小さい）の実行オブジェクトと設定しておけば、終了した実行ＩＤの値よりも小さい実行ＩＤの値をもつ実行オブジェクトを実行する計算部のシミュレーションはまだシミュレーションを終了していないと考えられる。【００５５】
プロセッサ再配置部１４ｄは、シミュレーションが終了した計算部に対応する実行ＩＤの値よりも小さい実行ＩＤに対応する計算部に、シミュレーションが終了して使用しなくなったプロセッサを割り振ることができる。なお、実行ＩＤの順番の付け方は任意であり、逆に実行ＩＤの値が大きいものを高精度のシミュレーションの実行オブジェクトとなるように設定しても構わない。【００５６】
共有テーブル構築部１４ｅは、各計算部１６ａ〜１６ｃによって実行された複数のシミュレーションの結果をリンク構造を有する共有記憶部１５ａに格納する。具体的には、共有テーブル構築部１４ｅは、プロセッサ再配置部１４ｄからシミュレーションの結果を受信すると、共有テーブル１５ａに受信したシミュレーション結果の経過時間と一致するシミュレーションの結果があるか否かを判定する。【００５７】
その結果、共有テーブル構築部１４ｅは、受信したシミュレーション結果の経過時間と一致するシミュレーションの結果がない場合には、共有テーブル１５ａに、その実行ＩＤと経過時間と可視化データを追加する。ここで、テーブル内のデータは経過時間の順番にソートして格納するため、データはテーブルの末尾に追加するのではなく、テーブルの中からデータを挿入する箇所を経過時間をもとに検索しリンク構造を新たに生成する（図６参照）。【００５８】
また、共有テーブル構築部１４ｅは、受信したシミュレーション結果の経過時間と一致するシミュレーションの結果がある場合には、その経過時間が一致したシミュレーション結果よりも受信したシミュレーション結果の精度が高いか否かを判定する。【００５９】
その結果、共有テーブル構築部１４ｅは、経過時間が一致したシミュレーション結果よりも受信したシミュレーション結果の精度が高い場合には、同じ経過時間に実行ＩＤ、経過時間、可視化データと共にシミュレーション結果を上書きする（図７参照）。【００６０】
また、共有テーブル構築部１４ｅは、経過時間が一致したシミュレーション結果よりも受信したシミュレーション結果の精度が高くない場合には、何もせずに処理を終了する。つまり、共有テーブル構築部１４ｅは、より精度の高いシミュレーション結果を共有テーブル１５ａに残すようにする。なお、本実施例では共有テーブル１５ａとしてリンク構造を用いているが、これはデータの挿入をやりやすくするために行っているだけであり、通常のリレーショナルデータベース構造で、経過時間順にソートする等の他の方法を使っても構わない。【００６１】
ここで、図８を用いて、共有テーブル１５ａを構築する処理を説明すると、ユーザの指定したタイムステップ間隔（Δｔ）によりシミュレーションを行う複数の実行オブジェクトが、各計算部に生成されてシミュレーションを行い、その結果を、シミュレーションの経過時間ごとにソートした構造で共有テーブル１５ａに集約し、ユーザは共有テーブル１５ａの可視化データを順に参照することで時系列のシミュレーション結果を可視化装置２０から参照することができる。【００６２】
［シミュレーション装置による処理］
次に、図９を用いて、実施例１に係るシミュレーション装置１０による処理を説明する。図９は、実施例１に係るシミュレーション装置１０の処理動作を示すフローチャートである。【００６３】
同図に示すように、シミュレーション装置１０のシミュレーション起動部１４ａは、入力部１１を介してシミュレーション開始指示を受け付けると（ステップＳ１０１肯定）、各計算部１６ａ〜１６ｃに起動するように指示し（ステップＳ１０２）、入力部１１によって入力されたタイムステップ間隔の指示、タイムステップ間隔に対応する各実行オブジェクトで使用するプロセッサ数の指示、「速度優先」または「精度優先」の指示等をプロセッサ選択部１４ｂに通知する。【００６４】
そして、プロセッサ選択部１４ｂは、シミュレーション起動部１４ａから受け付けた各実行オブジェクトで使用するプロセッサ数の指示や「速度優先」または「精度優先」の指示に応じて、タイムステップ間隔の異なるシミュレーションを行う計算部１６ａ〜１６ｃとそこで使用されるプロセッサを割り当てる（ステップＳ１０３）。続いて、計算部１６ａ〜１６ｃはシミュレーションを実行する（ステップＳ１０４）。【００６５】
そして、シミュレーション経過受信部１４ｃは、タイムステップ毎に各計算部１６ａ〜１６ｃから非同期にシミュレーションの結果を受信し（ステップＳ１０５）、共有テーブル構築部１４ｅに通知する。また、シミュレーション経過受信部１４ｃは、シミュレーション終了時にシミュレーション結果のかわりに送られてくる終了フラグを基に、シミュレーションの実行が終了するか否かを判定し（ステップＳ１０６）、シミュレーションの実行が終了する場合には（ステップＳ１０６肯定）、その旨をプロセッサ再配置部１４ｄに通知する。【００６６】
そして、プロセッサ再配置部１４ｄは、シミュレーション経過受信部１４ｃからシミュレーションの実行が終了する旨を受け付けると、その終了したシミュレーションに割り当てられていたプロセッサを他のシミュレーションに割り当て（ステップＳ１０７）、引き続きシミュレーションが行われる。一方、シミュレーションの実行が終了しない場合には（ステップＳ１０６否定）、そのままステップＳ１０８に進む。【００６７】
テーブル構築部１４ｅは、シミュレーション結果受信部１４ｃからシミュレーションの結果を受信すると、共有テーブル１５ａに受信したシミュレーション結果の経過時間と一致するシミュレーションの結果があるか否かを判定する（ステップＳ１０８）。【００６８】
その結果、共有テーブル構築部１４ｅは、受信したシミュレーション結果の経過時間と一致するシミュレーションの結果がない場合には（ステップＳ１０８否定）、経過時間順となるように、共有テーブル１５ａに受信したシミュレーション結果を挿入する（ステップＳ１０９）。また、共有テーブル構築部１４ｅは、受信したシミュレーション結果の経過時間と一致するシミュレーションの結果がある場合には（ステップＳ１０８肯定）、その経過時間が一致したシミュレーション結果よりも受信したシミュレーション結果の精度が高いか否かを実行ＩＤを用いて判定する（ステップＳ１１０）。【００６９】
その結果、共有テーブル構築部１４ｅは、経過時間が一致したシミュレーション結果よりも受信したシミュレーション結果の精度が高い場合には（ステップＳ１１０肯定）、共有テーブル１５ａの経過時間の位置に受信したシミュレーション結果を上書きする（ステップＳ１１１）。また、共有テーブル構築部１４ｅは、経過時間が一致したシミュレーション結果よりも受信したシミュレーション結果の精度が高くない場合には（ステップＳ１１０否定）、何もせずに処理を終了する。【００７０】
[実施例１の効果]
上述してきたように、シミュレーション装置１０は、タイムステップ間隔がそれぞれ異なる複数のシミュレーションを並行して実行し、実行された複数のシミュレーションの結果を出力するので、タイムステップ間隔を大きいシミュレーション結果が早期に得られるとともに、順次精度のよいシミュレーション結果も得られる結果、高精度かつ高速なシミュレーションを行うことが可能である。【００７１】
また、実施例１によれば、実行された複数のシミュレーションの結果を共有の出力部に出力するので、出力部を一つに集約してシミュレーション数分のディスクや可視化装置を必要としない結果、資源を節約することが可能である。【００７２】
また、実施例１によれば、実行されたシミュレーションの結果よりも精度の高い他のシミュレーション結果がある場合には、他のシミュレーションの結果に更新して出力するので、精度の異なる多数の結果を精度の高い結果に順次更新する結果、最も精度の高いものにアップデートしてユーザに知らせることが可能である。【００７３】
また、実施例１によれば、所定の条件に応じて、各シミュレーションにプロセッサを割当て、割当てられたプロセッサを用いて、それぞれのシミュレーションを並行して実行するので、例えば、速度優先のパラメータの場合には、タイムステップ間隔の大きいシミュレーション(高速)にプロセッサを多く割り当て、タイムステップ間隔の小さいシミュレーション(低速)にプロセッサを少なく割り当てる。また、精度優先のパラメータの場合には、タイムステップ間隔の小さいシミュレーション(高精度)にプロセッサを多く割り当て、タイムステップ間隔の大きいシミュレーション(低精度)にプロセッサを少なく割り当てる結果、ユーザの要求に応じて、各シミュレーションに使用するプロセッサ数を自動で決定することが可能である。【００７４】
また、実施例１によれば、シミュレーションの実行が終了した場合には、終了したシミュレーションに割り当てられていたプロセッサを他のシミュレーションに割り当て、割当てられたプロセッサを用いて、他のシミュレーションを実行するので、早期に終了してしまったシミュレーションを実行していたプロセッサを遊休させないで、他のシミュレーションに再び割り当てる、プロセッサの再活用を行うことが可能である。【００７５】
また、実施例１によれば、実行された前記複数のシミュレーションの結果をリンク構造を有する共有テーブル１５ａに格納するので、例えば、混在したデータをシミュレーションの経過時間にソートした構造を持つ１つのデータに集約する結果、ユーザがデータのトップから参照すれば時系列のシミュレーション結果を参照することが可能である。【００７６】
なお、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。以下にそれらの異なる形態について説明する。【００７７】
（１）システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、シミュレーション起動部１４ａとプロセッサ選択部１４ｂとを統合してもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。【００７８】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。【００７９】
（２）プログラム
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、図１０を用いて、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図１０は、シミュレーション制御プログラムを実行するコンピュータを示す図である。【００８０】
同図に示すように、シミュレーション装置としてのコンピュータ６００は、ＨＤＤ６１０、ＲＡＭ６２０、ＲＯＭ６３０、ＣＰＵ６４０、入力部６５０、出力部６６０および計算装置制御Ｉ／Ｆ６７０をバス６８０で接続して構成される。【００８１】
そして、ＲＯＭ６３０には、上記の実施例と同様の機能を発揮するシミュレーション装置、つまり、図１０に示すように、シミュレーション起動プログラム６３１、プロセッサ選択プログラム６３２、シミュレーション経過受信プログラム６３３、プロセッサ再配置プログラム６３４および共有テーブル構築プログラム６３５が予め記憶されている。なお、プログラム６３１〜６３５については、図２に示したシミュレーション装置の各構成要素と同様、適宜統合または分散してもよい。【００８２】
そして、ＣＰＵ６４０が、これらのプログラム６３１〜６３５をＲＯＭ６３０から読み出して実行することで、図１０に示すように、各プログラム６３１〜６３５は、シミュレーション起動プロセス６４１、プロセッサ選択プロセス６４２、シミュレーション経過受信プロセス６４３、プロセッサ再配置プロセス６４４および共有テーブル構築プロセス６４５として機能するようになる。各プロセス６４１〜６４５は、図２に示したシミュレーション起動部１４ａ、プロセッサ選択部１４ｂ、シミュレーション経過受信部１４ｃ、プロセッサ再配置部１４ｄおよび共有テーブル構築部１４ｅにそれぞれ対応する。【００８３】
また、ＨＤＤ６１０には、図１０に示すように、共有テーブル６１１が設けられる。なお、共有テーブル６１１は、図２に示した共有テーブル１５ａに対応する。そして、ＣＰＵ６４０は、共有テーブル６１１に対してデータを登録するとともに、共有テーブル６１１から共有データ６２１を読み出してＲＡＭ６２０に格納し、ＲＡＭ６２０に格納された共有データ６２１に基づいてシミュレーションを実行する処理を行う。
【産業上の利用可能性】
【００８４】
以上のように、本発明に係るシミュレーション制御プログラム、記録媒体、シミュレーション装置およびシミュレーション制御方法は、タイムステップ間隔でシミュレーションを実行し、ステップ毎に実行されるシミュレーションの結果を出力することに有用であり、特に、高精度かつ高速なシミュレーションを行う場合に適する。
【図１】
2008126196.tif 000003
【図２】
2008126196.tif 000004
【図３】
2008126196.tif 000005
【図４】
2008126196.tif 000006
【図５】
2008126196.tif 000007
【図６】
2008126196.tif 000008
【図７】
2008126196.tif 000009
【図８】
2008126196.tif 000010
【図９】
2008126196.tif 000011
【図１０】
2008126196.tif 000012
【国際調査報告】
2008126196.tif 000013
2008126196.tif 000014
2008126196.tif 000015
2008126196.tif 000016