(57)【特許請求の範囲】
【請求項１】
複数の計算格子における変数の時間変化を数値モデルに従って算出することにより、前記複数の計算格子で表現される空間における前記変数で表現される現象の時間変化のシミュレーションを、プロセッサ、メモリを有する計算機に実行させる、空間シミュレーションプログラムであって、
前記空間を表現する前記複数の計算格子において、それぞれが複数の計算格子から構成される複数の部分領域を定義する手順と、
設定された外力条件により更新される変数の計算格子を含む部分領域の識別子を、前記メモリに格納されている要更新テーブルに登録する手順と、
対象の計算格子の変数の更新のために隣接する計算格子の変数を参照する前記数値モデルに従って、前記要更新テーブルに登録されている第１の部分領域における計算格子の変数を参照して、前記第１の部分領域に隣接し前記要更新テーブルに登録されていない第２の部分領域における計算格子の変数を更新する必要があるか否かを判定する手順と、
前記第２の部分領域における計算格子の変数の更新が必要であると判定した場合に、前記第２の部分領域の識別子を前記要更新テーブルに登録する手順と、
前記要更新テーブルに登録した前記第２の部分領域の計算格子の空間データを前記メモリに展開する手順と、
前記要更新テーブルに登録されている部分領域における計算格子に対して、前記メモリに展開されている当該部分領域の空間データ及び前記数値モデルから、前記メモリに格納されている計算格子の変数を更新する手順と、
を前記プロセッサに実行させることを特徴とする空間シミュレーションプログラム。
【請求項２】
前記要更新テーブルに登録されている１つの部分領域のすべての計算格子における変数及び前記１つの部分領域の変数の更新において参照される隣接部分領域の変数の値を参照し、前記数値モデルに従って前記１つの部分領域のいずれかの計算格子の変数の更新が必要であるか否かを判定する手順と、
前記更新が不要であると判定した場合に、前記要更新テーブルから前記１つの部分領域の識別子を削除する手順と、
をさらに前記プロセッサに実行させることを特徴とする請求項１に記載の空間シミュレーションプログラム。
【請求項３】
前記判定する手順は、前記第２の部分領域における計算格子から参照される前記第１の部分領域における計算格子の変数が、前記空間シミュレーションの対象とする前記現象が発生していることを示す値である場合に、前記第２の部分領域における前記計算格子の変数の更新が必要であると判定する、
ことを特徴とする請求項１に記載の空間シミュレーションプログラム。
【請求項４】
前記要更新テーブルに登録されている１つの部分領域のすべての計算格子における変数が前記空間シミュレーションの対象とする前記現象が発生していることを示す値でない場合、かつ、前記１つの部分領域の計算格子が参照するすべての計算格子の変数が前記空間シミュレーションの対象とする前記現象が発生していることを示す値でない場合に、前記１つの部分領域の識別子を前記要更新テーブルから削除する手順、
を前記プロセッサに実行させることを特徴とする請求項１に記載の空間シミュレーションプログラム。
【請求項５】
前記部分領域毎に空間データの取得先を、空間データ取得先記憶手段に予め設定する手順と、
予め設定されている取得タイミングとなった時点で、前記空間データ取得先記憶手段に設定されている取得先から空間データを取得する手順と、
をさらに前記プロセッサに実行させることを特徴とする請求項１乃至請求項４の何れかに記載の空間シミュレーションプログラム。
【請求項６】
ネットワークを介して接続されたサーバが、前記空間データ取得先記憶手段に設定されており、
前記空間データを取得する手順は、前記サーバに対して前記部分領域に対応する空間データを要求する手順と、前記サーバから空間データをダウンロードする手順とを含む、
ことを特徴とする請求項５に記載の空間シミュレーションプログラム。
【請求項７】
前記数値モデルは、対象地域の浸水深を時間ステップごとに更新し、前記変数として前記計算格子における浸水深を更新することを特徴とする請求項１乃至６の何れかに記載の空間シミュレーションプログラム。
【請求項８】
前記変数を更新する計算格子を含む領域の地理情報を３次元画像として表示装置に表示する手順と、
前記３次元画像の地理情報上に、前記部分領域を表示する手順と、
前記変数の時間変化を表示する手順と、
をさらに前記プロセッサに実行させることを特徴とする請求項１乃至請求項７の何れかに記載の空間シミュレーションプログラム。
【請求項９】
複数の計算格子における変数の時間変化を数値モデルに従って算出することにより、前記複数の計算格子で表現される空間における前記変数で表現される現象の時間変化を再現する、空間シミュレーション装置であって、
前記空間を表現する前記複数の計算格子において、それぞれが複数の計算格子から構成される複数の部分領域を定義する手段と、
更新が必要な部分領域の識別子を登録する要更新テーブルと、
設定された外力条件により更新される変数の計算格子を含む部分領域の識別子を前記要更新テーブルに登録する手段と、
対象の計算格子の変数の更新のために隣接する計算格子の変数を参照する前記数値モデルに従って、前記要更新テーブルに登録されている第１の部分領域における計算格子の変数を参照して、前記第１の部分領域に隣接し前記要更新テーブルに登録されていない第２の部分領域における計算格子の変数を更新する必要があるか否かを判定する手段と、
前記第２の部分領域における計算格子の変数の更新が必要であると判定された場合に、前記第２の部分領域の識別子を前記要更新テーブルに登録する手段と、
前記要更新テーブルに登録した前記第２の部分領域の計算格子の空間データをメモリに展開する手段と、
前記要更新テーブルに登録されている部分領域における計算格子に対して前記メモリに展開されている当該部分領域の空間データ及び前記数値モデルから、前記メモリに格納されている計算格子の変数を更新する手段と、
を有することを特徴とする空間シミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、興味ある現象を計算機で再現するシミュレーションに関し、特に、計算格子における変数を時間ステップごとに更新する空間シミュレーションプログラムおよび装置に関する。
【背景技術】
【０００２】
近年、興味ある現象の把握を目的として、ＰＣ（Personal Computer）などの一般的な計算機により空間シミュレーションを手軽に実現するシステムが注目されている。一般に空間シミュレーションでは、現実の空間を複数の計算格子で表現し、またシミュレーション対象の現象を変数で表現する。さらに、現象の時間変化を、変数をある時間幅（時間ステップ）ごとに更新することで表現する。例えば、この空間シミュレーションの一例として、水深、流速などを変数として更新することで洪水現象を表現する洪水シミュレーションが知られている（例えば、非特許文献１）。
【０００３】
この洪水シミュレーションは主に河川堤防が決壊した場合を想定し、流域における浸水深を算出する。まず、シミュレーション開始前にシミュレーションの対象とする領域（対象領域）を決定する。この対象領域ではない領域は、このシミュレーションでは考慮できない。次に、対象領域内に計算格子の配置を決定する。ここで、現在のＰＣで実用的な時間内に処理を終わらせるためには、計算格子の数を10,000以下に抑制する必要がある。そのため、計算格子を一辺250ｍ程度の矩形に設定する。最後に、対象領域に配置した計算格子における水深、流速などの変数を時間ステップごとに更新する。
【非特許文献１】「治水経済調査マニュアル（案）」、建設省  河川局  刊、平成１２年５月  発行、第２６頁〜第３６頁
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記のような従来の空間シミュレーション方法では必ず対象領域を初めに指定する必要があり、その一方で、対象領域ではない領域のシミュレーションを行うことを不可能にしていた。たとえば、ある河川の下流域を対象領域とする洪水シミュレーションの場合、利用者が対象領域としなかった、河川の上流・中流域や、他の河川流域をシミュレートすることができなかった。したがって、利用者はシミュレーションの実行前にこれから実行するシミュレーションにより影響を受ける領域を推測する必要があった。また、上記非特許文献１の方法では対象領域を拡大すると、それに伴い計算量が増大する。実用上、対象領域の面積は500Km2が上限であり、より広い領域を対象領域とした空間シミュレーションを一般的な計算機を用いて手軽に計算を行うことが難しい、という問題があった。
【０００５】
そこで本発明は、上記問題点に鑑みてなされたもので、広域を対象とする空間シミュレーションを手軽に行うために、少量のデータ量で高速に実行できる空間シミュレーションを行うためのプログラムおよび装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様は、複数の計算格子における変数の時間変化を数値モデルに従って算出することにより、前記複数の計算格子で表現される空間における前記変数で表現される現象の時間変化のシミュレーションを、プロセッサ及びメモリを有する計算機に実行させる、空間シミュレーションプログラムであって、前記空間を表現する前記複数の計算格子において、それぞれが複数の計算格子から構成される複数の部分領域を定義する手順と、設定された外力条件により更新される変数の計算格子を含む部分領域の識別子を、前記メモリに格納されている要更新テーブルに登録する手順と、対象の計算格子の変数の更新のために隣接する計算格子の変数を参照する前記数値モデルに従って、前記要更新テーブルに登録されている第１の部分領域における計算格子の変数を参照して、前記第１の部分領域に隣接し前記要更新テーブルに登録されていない第２の部分領域における計算格子の変数を更新する必要があるか否かを判定する手順と、前記第２の部分領域における計算格子の変数の更新が必要であると判定した場合に、前記第２の部分領域の識別子を前記要更新テーブルに登録する手順と、前記要更新テーブルに登録した前記第２の部分領域の計算格子の空間データを前記メモリに展開する手順と、前記要更新テーブルに登録されている部分領域における計算格子に対して、前記メモリに展開されている当該部分領域の空間データ及び前記数値モデルから、前記メモリに格納されている計算格子の変数を更新する手順と、を前記プロセッサに実行させる。
【発明の効果】
【０００７】
したがって、本発明は、広大な領域を対象とする空間シミュレーションにおいて、少量のデータ量で高速に実行することが可能になる。さらに、変数の更新が必要になった時点でその部分領域の空間データを取得することにより、シミュレーション実行前に必要な空間データを見積もり一括して取得することに比べ、取得する空間データを削減することができる。これにより、たとえば空間データが有償である場合、空間シミュレーションを実行するためのコストを削減することができる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の空間シミュレーションを洪水シミュレーションに適用した場合の一実施形態を添付図面に基づいて説明する。
【０００９】
図１は、本発明の空間シミュレーションを実現するための計算機システムの構成を示す概略ブロック図である。
【００１０】
空間シミュレーションの利用者はＰＣ（Personal Computer）１００に接続されたキーボード１１１やマウス１１２等の入力部により命令を入力し、ディスプレイ１１３によりシミュレーションの結果を出力して確認する。ＰＣ１００の内部では、ＣＰＵ（Central Processing Unit）１４０がメモリ１３０に格納された空間シミュレーションプログラムとしての洪水シミュレーションプログラム１３１に基づいて洪水シミュレーションを実行する。
【００１１】
洪水シミュレーションプログラム１３１の実行中に、メモリ１３０には、利用データテーブル１３２および要更新テーブル１３３が作成・参照される。ＣＰＵ１４０は、洪水シミュレーションプログラム１３１の実行中に、必要に応じて、外部記憶装置（ストレージ装置など）１２０に格納された空間データファイル（空間データ格納部）１２１から空間データをメモリ１３０に展開し、また洪水シミュレーションの結果をシミュレーション結果ファイル１２２として外部記憶装置１２０に格納する。なお、空間データは、例えば地理情報などで構成され、地理情報の一例としては、点、面、線、立体など空間の一部を特定する情報とその特定された空間に結びつけられた値からなるデータであり、たとえば、駅データ、河川データである。また、空間データは空間シミュレーションの対象とする空間を表現する。たとえば、標高、地表面の粗度（水の流れにくさを表す物理量）等である。
【００１２】
なお、外部記憶装置１２０の代わりに、ネットワークインタフェース１５１からインターネット１５２に接続されたＧＩＳ（Geographic Information System；地理情報システム）サーバ１５３やＷｅｂサーバ１５４から空間データを取得し、またこれらのサーバ１５３や１５４にシミュレーション結果データを格納してもよい。
【００１３】
図２は、上記図１で示した計算機システム上で実行される、洪水シミュレーションプログラム１３１の処理の概要を表すＰＡＤ図である。ＣＰＵ１４０は図２に示したプログラムの各工程を実行する。
【００１４】
まず、図２の工程２０１では、洪水シミュレーションを行う空間に部分領域を定義する。部分領域とは、現実の空間を予め決めた形状で分割した領域である。さらに、この部分領域内に複数の計算格子を配置する。図３は、現実の空間と計算格子、および部分領域との関係を模式的に示した図である。この図を用いて、現実空間と計算格子の関係、計算格子と部分領域の関係、計算格子と変数の関係の３点について説明する。
【００１５】
はじめに、現実空間と計算格子の関係を説明する。まず、例えば現実の空間に東をｘ軸正方向、北をｙ軸正方向とした地理情報座標（ｘ，ｙ）を設定する。ここで、注目地点の座標（ｘ，ｙ）はある地点を原点とした場合の、原点から注目地点までの距離を表す。原点の座標は（０，０）となる。続いて地理情報座標（ｘ，ｙ）で表現された空間全域に、計算格子を配置する。計算格子は図３において細線で囲まれた矩形領域であり、たとえば図中３１１である。ここで、地理情報座標（ｘ，ｙ）を用いて計算格子座標（ｉ，ｊ）を下記の通り定義する。
【００１６】
ｉ＝ｆｌｏｏｒ（ｘ／ｄｘ），ｊ＝ｆｌｏｏｒ（ｙ／ｄｙ）  ………（１）
ただし、ｄｘ，ｄｙはそれぞれｘ，ｙ軸方向の計算格子の大きさであり、ｆｌｏｏｒ（）は引数を小数点以下切り捨て整数化する関数である。計算格子座標の原点は地理情報座標の原点と同じくし、ｉ軸およびｊ軸はそれぞれｘ軸およびｙ軸と平行である。注目地点の座標（ｉ，ｊ）は原点から注目地点までの格子数となる。
【００１７】
次に、計算格子と部分領域の関係について説明する。図３において部分領域は太線で囲まれた矩形領域であり、たとえば図中３２０である。ひとつの部分領域はその内部にｉ軸方向にｃｉ個（３２１）、図中ｊ軸方向にｃｊ個（３２２）の計算格子を含む。ただし、ｃｉ、ｃｊは2以上の整数である。ここで、計算格子座標（ｉ、ｊ）を用いて部分領域座標（ｂｉ，ｂｊ）を定義する。
【００１８】
ｂｉ＝ｆｌｏｏｒ（ｉ／ｃｉ），ｂｊ＝ｆｌｏｏｒ（ｊ／ｃｊ）  ………（２）
この部分領域座標（ｂｉ，ｂｊ）により、部分領域を一意に指定可能になる。本実施形態では、たとえば、ｄｘ＝ｄｙ＝５０ｍ、ｃｉ＝ｃｊ＝５０と設定することができる。以下、この設定に基づいて説明する。
【００１９】
最後に、計算格子と変数の関係について説明する。ひとつの計算格子における変数は単数または複数種類存在する。変数はシミュレーション対象の現象を表現する。本実施形態では、ある計算格子（ｉ、ｊ）における変数は水深ｈ、ｘ軸方向の流速ｕ、ｙ軸方向の流速ｖの３種類が存在し、この３種類の変数により洪水現象を表現する。なお、本実施形態ではすべての変数が同一の格子に存在するコロケーティッド格子(collocated grid)の場合について説明するが、たとえばスタッガード格子(staggered grid)のように変数ごとに１／２ずらした格子座標を用いる場合においても、以下の説明は同様に成り立つ。このことは、ＤＤＭ（Domain Decomposition Methods；領域分割法）の理論から明らかである。詳細は例えば、公知の文献「Domain Decomposition Methods - Algorithms and Theory」（Toselli, Andrea, Widlund, Olof, ISBN: 3-540-20696-5, Springer, 2005）に記載される。
【００２０】
以上のようにして計算格子と部分領域を設定し、変数を割り当てる。このように、複数の計算格子から構成される部分領域という概念を導入すると、以下の利点が生じる。（Ａ）計算負荷の低減。後述する工程５０３、工程２０６、工程２０９では、部分領域について繰り返し処理を行う。よって計算格子について繰り返し処理を行った場合に比較して、繰り返し回数が減少し計算負荷も減る。（Ｂ）従来技術との親和性の増大。部分領域という概念を新たに導入することで、計算格子の概念をたとえば非特許文献１に記載された従来の技術におけるそれから変化させる必要がなくなる。これにより、たとえば後述する工程２０８において処理する数値モデルとして、たとえば従来の技術である非特許文献１に記載された数値モデルをほぼ改変なく利用することができる。（Ｃ）ＤＤＭとの親和性の増大。本発明は、従来技術ＤＤＭと、ある領域におけるシミュレーション結果を得るために、ある領域を部分領域に分割する点が共通している。したがって、高効率な並列化など両者に共通する課題についてＤＤＭの研究成果を適用できる。（ｄ）ＳＩＭＤ命令との親和性。多くの種類のＣＰＵでは、ＳＩＭＤ(Single Instruction ／Multiple Data)命令と呼ばれるＣＰＵ命令により、１回の命令発行で複数のデータを処理することが可能である。処理するデータをＳＩＭＤの特性を考慮してメモリに配置した場合、ＳＩＭＤ命令を利用することで処理の大幅な高速化が実現できる。たとえばＳＩＭＤ演算ユニットのレジスタ幅が１２８ｂｉｔであるＣＰＵで、計算格子に配置した変数の型が３２ｂｉｔ単精度浮動小数点の場合、４の倍数個の計算格子がメモリに連続的に配置されているとＳＩＭＤ命令を利用することによる高速化効果が高い。本実施形態でこれを実現するためには、部分領域の大きさｂｉ，ｂｊの値を4の倍数にすればよい。このように、部分領域を導入すると計算格子が連続的にメモリに配置されるため、ＳＩＭＤ命令の利用による処理の高速化が実現できる。
【００２１】
さらに、計算の高速化のために対象領域とその境界を設定すること、または海域と陸域の境界に境界条件を設定することも可能である。対象領域とは、上述したようにシミュレーションの対象とする洪水現象の発生する領域であり、この対象領域ではない領域の洪水現象は対象としない。対象領域を特に設定せず、又全領域を対象領域とすれば、上述したとおり地理情報座標（ｘ，ｙ）で表現できる空間全域をシミュレーションできる。対象領域として小さな領域を設定すれば、その小さな領域のみをシミュレーションすることになるため、対象領域を特に指定しない場合、およびより大きな領域を設定した場合にくらべ計算量を削減することができる可能性がある。
【００２２】
対象領域とその外側の領域との境界としては境界条件を設定するとよい。境界条件として、たとえば以下の２条件のどちらかを適用することができる。（１）境界に深い溝があると考える、すなわち境界に達した水は消滅する。（２）境界に高い壁があると考える、すなわち境界に達した水は境界付近に滞留する。いずれの条件においても境界より外側へ水が流出しないため、境界より外側では計算が常に不要である。同様の境界条件を海域と陸域の境界に設定できる。本実施形態では、対象領域は特に設定せず、海域と陸域の境界に境界条件（１）を適用した。
【００２３】
続いて、工程２０２では利用データテーブル１３２を作成する。図４はこの工程２０２で設定する利用データテーブルの内容の一例を示す図である。
【００２４】
利用データテーブル１３２には、洪水シミュレーションプログラム１３１が取得する空間データの格納場所が、部分領域ごとに設定される。なお、本実施形態の洪水シミュレーションで必要な空間データの種類４１０は、標高、地表面の粗度（水の流れにくさを表す物理量）等である。部分領域ＩＤ４２０は、部分領域を識別できるＩＤであればよく、例えば図４に示すように前出した部分領域座標（ｂｉ，ｂｊ）から生成する。利用するデータが格納されている場所４３０として設定できる内容は図中４３１のようにＷｅｂサーバ１５４や、図中４３２および４３３のように外部記憶装置１２０の空間データファイル１２１などである。
【００２５】
なお、格納場所４３０に関して、あるディレクトリ配下に部分領域ＩＤを元にした規則的なファイル名で格納するなど、格納場所４３０を部分領域ＩＤ４２０から一意に算出できる構造にしてもよい。この場合は、利用データテーブル１３２を作成せず、利用データテーブルと同等の機能を持つ関数、すなわち部分領域ＩＤを入力とし空間データの格納場所を出力とする関数を作成するとよい。これにより、利用データテーブル１３２を作る手間が削減できる。例えば、図４のように、部分領域ＩＤ４２０が（１２０、１３１）の場合、対応する標高のデータの格納場所４３０は「C:\elev\120131.dat」となる。
【００２６】
また、利用データテーブル１３２を作成するのに代わって、ネットワーク上のＧＩＳサーバ１５３等から空間データを取得するようにしてもよい。この場合は、この工程２０２または後述する工程２０７において空間データを取得するためにＧＩＳサーバ１５３に必要な空間データの種類および位置を記載したデータ要求を発信する。この際、位置は緯度経度など地理情報で用いる座標値での指定を可能にするため、この工程２０２では、利用データテーブル１３２を作成する代わりに計算格子座標や部分領域座標と緯度経度などの座標とを相互に変換する方法を定義すればよい。相互変換のためには、例えば地理情報を表現するために用いる座標の一種であるＵＴＭ(Universal Transverse Mercator)座標を上述した地理情報座標（ｘ，ｙ）として採用することができる。ＵＴＭ座標（ｘ，ｙ）は原点からの距離を座標値とするものの、角度に基づく座標である緯度経度座標と相互変換が可能である。ＵＴＭ座標、計算格子座標、部分領域座標との相互に変換には、上記(1)式および(2)式を用い、緯度経度座標、地理情報座標（ｘ，ｙ）、計算格子座標（ｉ，ｊ）、部分領域座標（ｂｉ，ｂｊ）との相互を可能にすることができる。
【００２７】
さらに、ネットワーク上のＧＩＳサーバ１５３等が複数利用できる場合には、そのＧＩＳサーバの情報を予め外部記憶装置１２０などに格納しておくと都合がよい。図１３はＧＩＳサーバの情報を格納するＧＩＳサーバテーブルの一例を示す図である。この場合、この工程２０２または後述する工程２０７において、対象となる部分領域の座標を緯度経度座標に変換し、ＧＩＳサーバテーブル１３００に記載されたＵＲＬ（Uniform Resource Locator）にデータ要求を発信する。なお、ＧＩＳサーバテーブル１３００には、必要に応じてＵＲＬの他にユーザＩＤ、パスワードなどが追加可能である。
【００２８】
ここで、図１３のＧＩＳサーバテーブル１３００には、ＧＩＳサーバの名称１３０１とＵＲＬ１３０２とに加え、データの単価等のコスト情報１３０３を予め記載しておけばよい。データが有償の場合にはコスト情報１３０３などに応じてＧＩＳサーバを選択するようにしてもよい。
【００２９】
次に、工程２０３では、工程２０４以降を繰り返し処理する。後述する工程２１１で、シミュレーション開始からの経過時刻ｔ（秒）は、１回の繰り返し処理で時間ステップｄｔ（秒）だけ加算される。この時間ステップｄｔは、洪水シミュレーションを行う最小単位時間として設定した値である。本実施形態では、たとえばｄｔ＝５秒と設定することができる。
【００３０】
また、工程２０３の脱出条件は工程２０３に入る前に設定しておく。脱出条件としてはたとえば利用者がキーボード１１１などで停止命令を入力した場合が適している。このような脱出条件を設定した場合、任意の時点で利用者が独自に判断してシミュレーションを完了させることができるため、利用者の使い勝手が向上する。あるいは、洪水シミュレーションを行う全時間長さＴ（秒）を設定してもよい。この場合は、シミュレーション開始からの経過時間ｔが全時間長さＴを超えた時点、あるいは、工程２０３の繰り返し回数が予め設定した回数を超えた時点を脱出条件とすることができる。このように全時間長さを設定すると、シミュレーションが完了する条件をプログラムが自動で判断できるようになりバッチ処理が可能になる。また、後述するダイアログ１１００においてシミュレーションが完了するまでの残り時間を推定することが可能になる。
【００３１】
工程２０４では外力条件を設定する。外力は空間シミュレーションの対象とする現象を発生させる現象について、時間変化も含めて表現する。後述するように、変数は現象が発生している状態と、発生していない状態のどちらかに判別できる。よって、外力は変数を現象が発生している状態にし、かつ、その後の時間の経過とともに変化してそれに応じた変数の更新を可能とする。これらの外力は、後述する工程２０８における数値モデルにおいて境界条件として扱う。
【００３２】
洪水シミュレーションにおける外力は、たとえば前記非特許文献１に記載された河川の堤防決壊点からの水の流出、降雨などが挙げられる。水の流出は堤防決壊点周辺の水深と流速を変化させ、降雨は降雨域における水深を変化させる。また、外力条件を水深、流速などの変数の値に変換する式は、前記非特許文献１に記載されている。洪水シミュレーションプログラム１３１は利用者に外力の種類と位置を入力させ、入力された外力の条件を上記変換式に代入し、外力が入力される変数の種類、値、および計算格子座標（ｉ，ｊ）を算出する。たとえば、原点から東に６０．０ｋｍ、北に７５．０ｋｍの地点における高さ１．０ｍの堤防決壊という外力を想定する場合、計算格子座標（ｉ，ｊ）＝（１２０００，１５０００）において水深ｈ＝１．０ｍと設定すればよい。
【００３３】
次の工程２０５では、更新が必要な部分領域、より正確には更新が必要な計算格子を含む部分領域を検出する。ここで、更新が必要な部分領域とは、洪水現象が内部で発生する部分領域か、洪水現象が周囲から伝播してくる部分領域である。また、更新が不要な部分領域とは、洪水現象が内部で発生せず、かつ洪水現象が周囲から伝播してこない部分領域である。この工程２０５では、更新が必要な部分領域を検出し、続く工程２０６から工程２０８において更新が必要な部分領域のみを取り扱えるようにする。この工程２０５における判別が不正確の場合予期せぬ結果を招くことがあるので、この判別は非常に重要である。たとえば、本来更新が不要である部分領域を更新が必要であると誤判定すると、続く工程２０６から工程２０８において不要な処理を行うことになり、計算負荷が増大する。また、本来更新が必要である部分領域を更新が不要であると誤判定すると、得られるシミュレーション結果が予期せぬ誤りを含むことになる。逆に、正確に判定を行い更新が必要な部分領域の数を必要最低限に抑制できれば、正確なシミュレーション結果を従来の方法より少ない計算負荷で得られることになる。この判定方法について、以下に記述する。
【００３４】
図５は、工程２０５の詳細を示すＰＡＤ図である。これらの工程のうち、図５の工程５０１から工程５０２では洪水現象の発生過程を、工程５０３から工程５０５では洪水現象が伝播する過程を考慮して更新が必要な部分領域を検出する。したがって、図５の一連の工程により洪水現象が発生し、周囲に伝播する一連の過程を考慮して、更新が必要な部分領域を検出することが可能になる。
【００３５】
工程５０１および工程５０２では、上記工程２０４で設定した外力条件を参照して、外力条件が設定された部分領域のＩＤを要更新テーブル１３３に追加する。図６は、要更新テーブル１３３の内容の一例を示す図である。要更新テーブル１３３には更新が必要な部分領域数ＩＤが列６１０に記載される。重複なしに記載されることが望ましい。またその部分領域ＩＤについての空間データの取得状況（取得済み、未取得、不要）が列６２０に記載される。なお、工程５０１では、要更新テーブル１３３の空間データの取得状況（列６２０）はすべて「取得済み」となっている。続く工程５０２から後述する工程５０５において追加される部分領域ＩＤはすべて空間データの取得状況が「未取得」となる。この、空間データの取得状況が「未取得」の部分領域ＩＤが存在する状態は後述する工程２０７まで保持され、工程２０７における処理により空間データの取得状況が「未取得」の部分領域はすべて「取得済み」となる。工程５０２において部分領域ＩＤ６１０を追加する際には、要更新テーブル１３３を確認し、同じ部分領域ＩＤ６１０が重複して要更新テーブル１３３に追加されることがないようにする。この工程により、洪水現象の発生過程に追随して、洪水現象が発生している部分領域を要更新テーブルに追加することが可能になる。
【００３６】
次に、図５の工程５０３では、更新が必要な部分領域について工程５０４および工程５０５を繰り返す。更新が必要な部分領域は要更新テーブル１３３の列６１０を参照する。
【００３７】
ここで、外力条件以外によって更新の必要性を判別する方法について図７を用いて詳細に説明する。図７は、更新が必要な、すなわち変数が変化する可能性がある計算格子と、更新が不要な、すなわち変数が変化しないことが自明な計算格子を判別する方法を示す図である。
【００３８】
後述するように工程２０８において、本実施形態の洪水シミュレーションでは、変数、たとえば水深および流速を時間ステップごとに更新する。ここで、変数は洪水現象が発生している、または発生していないことが判定できるようにしておく必要がある。以下、洪水現象が発生していない状態を示す変数の値を０値、発生している状態を示す変数の値を非０値とよぶ。たとえば、洪水シミュレーションで用いる変数、たとえば水深ｈ、流速ｕ、ｖがそれぞれ０値であるか、非０値であるかの判別はそれぞれ次の式によって行うことができる。それぞれの変数がこれらの式を満たす場合は非０値であり、満たさない場合は０値とする。
【００３９】
ｈ≧ｈ０＋ｈｅ  ………（３−１）
ｕ≧ｕ０＋ｕｅ  ………（３−２）
ｖ≧ｖ０＋ｖｅ  ………（３−３）
ここで、ｈ０、ｕ０、ｖ０は、数値計算において０と値と見なす値であり、たとえば、ｈ０＝０と設定してもいいし、ｈ０＝１×１０−５ｍと設定してもよい。また、ｈｅ、ｕｅ、ｖｅは、数値計算において０とは異なる値と見なす最小の水深または流速であり、たとえばｈｅ＝１０−４ｍと設定できる。ｈ０、ｕ０、ｖ０を厳密に０としない場合は、計算機を用いた数値計算において避けられない誤差に伴う問題を回避できるため都合がよい。また、これらの式はこの工程５０４と後述する工程２０９における判別において利用するが、それぞれの工程において、数値計算において０と値と見なす値、数値計算において０とは異なる値として設定する値が同一でなくても良い。たとえば、この工程５０４においてｈｅ＝１０−４ｍとし、工程２０９においてｈｅ＝１０−５ｍと設定することができる。このようにすると、ある部分領域が、更新が必要な状態（工程５０４で検出される状態）と更新が不要な状態（工程２０９で検出される状態）とに頻繁に切り替わることを防ぎ、切り替わりに伴う処理(後述する工程２０７)を削減することができる。
【００４０】
ここで、図７において、ある計算格子３１１における次の時間ステップの変数を求めるためには、この計算格子３１１の４辺に接する周囲４つの計算格子（３１２から３１５）における現在の時間ステップの変数を参照する必要がある。このとき、計算格子３１１から３１５における水深ｈ、流速ｕ、ｖがすべて０値であれば、次の時間ステップの水深および流速は０値から変化しないことが、工程２０８の数値モデルから自明である。この場合値の更新は不要である。逆に、その計算格子およびその計算格子に４辺で隣り合う計算格子のうち、いずれかの計算格子における水深または流速が非０値であれば、次の時間ステップにおいて計算格子３１１の変数は非０値になる可能性がある。この場合変数の更新が必要である。以上より、次の時間ステップにおいて更新が必要な計算格子は、現在の時間ステップにおける非０値の計算格子を参照する計算格子であることがわかる。  図８は、更新が必要な部分領域を検出する方法を示す図である。図８において、ある部分領域３２０−１に属する計算格子８１１は、隣接する部分領域３２０に属する計算格子３１１’における次の時間ステップの変数値を求めるために参照される。したがって、計算格子８１１が非０値であれば、次の時間ステップにおいて計算格子３１１’が非０値になる可能性がある。なお、計算格子３１１’および８１１は、部分領域３２０と部分領域３２０−１の境界に面する計算格子である。同様に、部分領域３２０から参照されている部分領域３２０−１に属する計算格子８１２のいずれかが非０値であれば、次の時間ステップにおいて部分領域３２０に含まれる計算格子が非０値になる可能性がある。
【００４１】
以上より、ある部分領域３２０−１が更新が必要な場合、その部分領域に隣接する部分領域３２０から参照される計算格子８１２のいずれかが非０値であれば、隣接する部分領域３２０は次の時間ステップにおいて更新が必要であることがわかる。同様の判断を部分領域３２０−１の４辺について行えば、部分領域３２０−１に隣接するすべての部分領域数の更新の必要性を調べることができる。
【００４２】
以上より、現在の時間ステップで更新が必要なすべての部分領域の４辺を調べれば、次の時間ステップにおいて更新が必要な部分領域をすべて検出することができることがわかる。
【００４３】
図５の工程５０４では、上記図８を用いて説明した判断方法を利用し、隣接する部分領域から参照される計算格子が非０値であるかを調べる。そして、計算格子が非０値の場合は工程５０５で隣接する部分領域のＩＤを要更新テーブル１３３に追加する。ただし上記工程５０２と同様に、部分領域ＩＤの追加前には要更新テーブル１３３を確認し、同じ部分領域ＩＤが重複してテーブルに追加されることがないようにする。このように、図５の工程５０３から工程５０５により、洪水現象が周囲に拡大する過程に先行して、すでに洪水現象が発生している部分領域の周囲の部分領域を要更新テーブルに追加することが可能になる。
【００４４】
以下、再び図２のＰＡＤ図に戻って処理の概要を説明する。工程２０６では、更新が必要な部分領域について工程２０７および工程２０８を繰り返す。更新が必要な部分領域については工程５０３と同様に要更新テーブル１３３を参照すればよい。工程２０７では要更新テーブル１３３の列６１０に記載された部分領域で、かつ列６２０の値が未取得の部分領域についてのみ、利用データテーブル１３２の列４３０に記載された格納場所から空間データを取得する。取得した空間データはメモリ１３０に展開する。
【００４５】
工程２０８では、要更新テーブル１３３の列６１０に記載された部分領域について、予め設定された数値モデルを解き、更新が必要な部分領域における変数を更新する。まず、工程２０４で設定した外力条件を該当する計算格子の変数に反映させる。つづいて、本実施形態では２次元不定流モデルを利用し、水深と流速を次の時間ステップにおける値に更新する。ただし、２次元不定流モデルの本実施形態における実装では、ある計算格子とその計算格子の４辺に接する４つの計算格子すべてにおいて水深および流速が０値であれば、その計算格子の次の時間ステップにおける流速および水深が０値となる。上記数値モデルの具体的な計算式については、上記非特許文献１に記載されているので、ここでは詳細な説明を省略する。
【００４６】
なお、ＰＣ１００がたとえばマルチスレッド（multi-thread）に対応している場合、または複数のＣＰＵ１４０あるいは複数のＣＰＵコアを有する場合には、処理を並列に行うことにより高速化が計れる。対象領域を部分領域に分割した場合の高効率な並列処理についてはＤＤＭ（Domain Decomposition Methods；領域分割法）とよばれる分野に多くの研究がある（例えば、上記公知文献参照）。
【００４７】
工程２０９では、更新が不要な部分領域を検出し、要更新テーブル１３３より削除する。上述したように、更新が不要な部分領域とは、洪水現象が内部で発生せず、かつ洪水現象が周囲から伝播してこない部分領域である。この工程２０９では、更新が不要な部分領域を検出し、次の時間ステップにおける工程２０４から工程２０８において更新が必要な部分領域のみを取り扱えるようにする。この工程２０９における判別が不正確の場合、工程２０５同様予期せぬ結果を招くことがあるので、この判別は非常に重要である。この判定方法を以下に記述する。
【００４８】
図１５は、工程２０９の詳細を示すＰＡＤ図である。図１５の工程１５０１では、更新が必要な部分領域について工程１５０２、工程１５０３、および工程１５０４を繰り返す。更新が必要な部分領域は図５の工程５０３と同様に、要更新テーブル１３３の列６１０を参照する。工程１５０２では、部分領域内のすべての計算格子における水深ｈおよび流速ｕ、ｖがすべて０値であるかを判別する。なお、各変数の０値とは式（３−１）から（３−３）をそれぞれ満たさない数値である。この工程１５０２の判別結果が真である場合は、続く工程１５０３においてその部分領域に隣接する部分領域内に存在する、その部分領域が参照する計算格子がすべて０値であるか判別する。工程１５０２に続きこの工程１５０３の判別結果も真である場合、工程１５０４において要更新テーブル１３３の該当する部分領域ＩＤの空間データ取得状況（列６２０）を「不要」に変更する。図１５の最後の工程１５０５で、要更新テーブル１３３の列６２０が「不要」の部分領域の空間データをメモリ１３０から削除し、その部分領域ＩＤも要更新テーブル１３３の列６１０より削除する。
【００４９】
工程２１０では、後述するＧＵＩ（Graphical User Interface）に現時点の洪水シミュレーションの途中結果をディスプレイ１１３へ出力する。これにユーザは計算過程を把握することができる。  工程２１１ではシミュレーション開始からの経過時間ｔに時間ステップｄｔを加算する。必要に応じてシミュレーションの途中結果をシミュレーション結果ファイル１２２として外部記憶装置１２０に格納する。なお、シミュレーション結果ファイル１２２には、各計算格子における変数の値を格納することができる。
【００５０】
以上述べた処理によって、対象領域を複数の部分領域に分けて、更新の必要がある部分領域についてのみ必要な空間データを取得し、その空間データと数値モデルを用いて水深、流速などの変数を更新するようにした。これにより、広い領域の空間シミュレーションを少量のデータ量で高速に実行することが可能になった。
【００５１】
次に、上記工程２１０で行われる表示処理のＧＵＩについて、図９を参照しながら説明する。図９は洪水シミュレーションシステムのＧＵＩ（画面）の一例を示す図である。ディスプレイ１１３の所定の表示領域に設定されたウィンドウ９００には、地理情報が３次元的に表示された画像９１０があり、部分領域の境界を表すための線（たとえば図中９１１）、駅９１２、河川９１３が表示されている。また、洪水シミュレーションの結果である水深（浸水深）９１４が表示される。水深９１４は凡例９２０で示される水深毎の模様または色で表示される。この様に、シミュレーションの途中結果である各計算格子の水深、流速などの値を地理情報に重ね合わせて可視化すれば、ユーザは視覚的に計算結果の把握が容易になり望ましい。更に、図９に示すように対象領域を俯瞰する３次元の地理情報を用いればより状況を把握しやすくなる。
【００５２】
ＰＣ１００の利用者はウィンドウ９００上でカーソルを操作して、設定９３１、実行９３２、リセット９３３、終了９３４の各ボタンをマウス１１２で押下することにより希望する処理を洪水シミュレーションシステムに行わせることができる。
【００５３】
利用者がマウス１１２を操作して設定ボタン９３１を押下すると、ディスプレイ１１３の所定の表示位置には後述する図１０のダイアログ１０００が出現し、上記図２の工程２０２（利用データテーブル１３２の作成）を対話的に実現する。
【００５４】
また、実行ボタン９３２を押下するとディスプレイ１１３の所定の表示位置には後述の図１１に示すダイアログ１１００が出現し、上記図２の工程２０３を対話的に実現する。リセットボタン９３３を押下すると、洪水シミュレーションプログラム１３１を起動直後の状態にすることができる。また、終了ボタン９３４を押下すると、洪水シミュレーションプログラム１３１を終了させることができる。
【００５５】
次に、図１０は上記図９の設定ボタン９３１を操作したときに表示されるダイアログ１０００の一例を示す図である。このダイアログ１０００は、利用する利用データテーブル１３２を対話的に作成するものである。
【００５６】
このダイアログ１０００は上述のように設定ボタン９３１の押下により出現し、図２のＰＡＤ図の工程２０２（利用データテーブル１３２の作成）を対話的に実現する。特にデータの格納場所が複雑な場合、このダイアログを備えることで利便性が著しく向上する。ダイアログ１０００には、対象領域の地理情報１０１０および部分領域ＩＤごとの設定情報欄１０２０が備わっている。利用者がマウス１１２でマウスポインタ１０１１を移動させると、マウスポインタ１０１１が指している部分領域３２０において選択可能なデータがツールチップ（マウスポインタを合わせた時に表示される文字）１０１３として表示される。そして、利用者が部分領域３２０をクリックすると、該当する部分領域３２０の設定情報、すなわちＩＤ４２０、選択可能なデータ１０２２、および選択可能な空間データ（標高、粗度など）を取得するタイミング１０２３が表示される。図１０では、利用者は選択可能な空間データ１０２２の「Ａ社」のデータおよび「Ｂ社」のデータから、「Ａ社」のデータを選択する場合を示している。
【００５７】
このように、一つの部分領域３２０の空間データの選択肢が提示されることで、利用者はたとえば市街地の中心部の洪水シミュレーションには高精度で高額な「Ａ社」の空間データを、また、郊外のシミュレーションには低精度で低額な「Ｂ社」の空間データを使用するというように、用途に合わせてデータを使い分けることが可能になる。さらに、例えば後述するダイアログ１２００を備えることで、これらの選択肢の他に「必要になった時点で改めて選択する（今は選択しない）」という選択肢を入れることができる。
【００５８】
選択可能な空間データ１０２２がＷｅｂサーバ１５４などネットワークに接続されたサーバに格納されている場合は、取得するタイミング１０２３を選択できる。図１０では、利用者は「シミュレーション開始前にダウンロード」ではなく「必要になった時点で自動的にダウンロード」を選択している。本構成により、必要な時にのみＷｅｂサーバ１５４などから空間データはダウンロードされ利用者は利用する空間データを必要最低限に抑制できるようになる。具体的には、図２の工程２０５にてこの部分領域が要更新テーブル１３３に追加され、工程２０７にて空間データの取得処理が行われたときに自動的にダウンロードが行われる。この部分領域の更新が不要であるうちは、この部分領域の空間データはダウンロードされない。したがって、有償のデータを利用する場合、空間データを購入する費用の低減が図れる。逆に「シミュレーション開始前にダウンロード」を選択することで、たとえば利用者は洪水シミュレーション実行中に行われるダウンロードの処理（工程２０７）に時間を費やすことがなくなり、洪水シミュレーションを高速に実行できるようになる。
【００５９】
なお、外部のサーバからダウンロードした空間データは空間データファイル１２１に格納する。後述するダイアログ１２００を備えると、利用者は必ずしもすべての部分領域について利用データテーブル１３２の設定情報１０２０を事前に入力する必要がなくなる。設定情報１０２０を適宜入力した後、利用者がＯＫボタン１０３１を押下すれば入力した設定が利用データテーブル１３２に反映され、キャンセルボタン１０３２を押下すれば入力した設定が破棄される。
【００６０】
ここで、ＧＩＳサーバ１５３などネットワークに接続されたサーバに格納されている空間データが利用できる場合に、選択可能な空間データ１０２２のリストを作成する一連の工程について説明する。この一連の工程は、利用者がマウス１１２でマウスポインタ１０１１を移動させると、マウスポインタ１０１１が指している部分領域３２０について実行されるようにすることができる。
【００６１】
図１４は、選択可能な空間データ１０２２のリストを作成する一連の工程を示すＰＡＤ図である。工程１４０１では空間データの取得が必要な部分領域内のすべての計算格子座標（ｉ，ｊ）を緯度経度に変換する。工程１４０２では、ＧＩＳサーバ情報テーブル１３００を読み込んで、ＧＩＳサーバへ上記緯度経度を送信し、工程１４０３で該当する空間データの有無について問い合わせを行う。そして、対象となる部分領域の空間データをＧＩＳサーバが保有する場合、工程１４０４でこの空間データのＵＲＬを提供元から取得する。
【００６２】
工程１４０５ではＧＩＳサーバ情報テーブル１３００のコスト情報を参照し、工程１４０４で取得したＵＲＬをコスト情報に基づいてソートする。この工程は必須ではないが、例えば安価な順にソートすればユーザはコストを考慮した選択が容易になる。
【００６３】
そして、工程１４０６では、ソート後のＧＩＳサーバの名称１３０１を選択可能なデータ１０２２として図１０で示すように表示する。工程１４０７では、選択されたデータの格納場所を利用データテーブル１３２の列４３０に格納する。
【００６４】
以上の処理により、対象となる部分領域の空間データの取得先が決定され、タイミング１０２３で指定されたタイミング（工程２０２もしくは工程２０７）に、空間データのダウンロードが実行される。
【００６５】
図１１は洪水シミュレーションの実行中に進捗を利用者に通知するためのダイアログ１１００の一例を示す図である。このダイアログ１１００は上記図９の実行ボタン９３２を押下したときに出現するもので、図２のＰＡＤ図の工程２０３における進捗を利用者に通知する。
【００６６】
ダイアログ１１００には洪水シミュレーションの進捗状況を表示するプログレスバー１１１０、およびプログラムの実行状況についての情報欄１１２０が含まれる。
【００６７】
この情報欄１１２０には、洪水シミュレーションが完了するまでの推定残り時間１１２１と、現在の計算速度１１２２と、現在の洪水による浸水面積１１２３が含まれる。推定残り時間１１２１には、例えば、図示したように「１０時間分のうち１．２時間分を計算しました」という情報、つまりシミュレーションを行う全時間長さＴ（秒）および現時点でのシミュレーション開始からの経過時間ｔ（秒）を含めることで、洪水シミュレーションの進捗状況をより細かく表示することができる。ここで、シミュレーションを行う全時間長さＴは工程２０３で取り扱う値Ｔを、シミュレーション開始からの経過時間ｔは工程２１１で取り扱う値ｔを参照する。また、計算速度１１２２は、現実世界の１秒間にシミュレーション内で何時間進むか表示する。例えば、図では、現実世界の１秒間にシミュレーション内で０．１時間進むことを示している。この数値は、工程２１１で現実世界の時刻を取得し、その時刻と前回の工程２１１における時刻の差をとることにより１回の繰り返し処理にかかる現実世界の時間を計測し、その値で時間ステップｄｔを除することによっても算出できる。本発明では、更新する部分領域の数によりシミュレーションの計算速度が変化するため、計算速度１１２２を表示することで利用者がシミュレーションの進捗状況を推定しやすくすることができる。
【００６８】
利用者は推定残り時間１１２１をプログレスバー１１１０により視覚的に把握することができる。また、上述したように更新する部分領域の数により計算速度が変化するため、現在の計算速度１１２２や部分領域の数に関連する浸水面積１１２３が表示されると、利用者が終了まで待つべきか、中止して別の操作をすべきかを判断できる。中止する場合、利用者は中止ボタン１１３１を押下し工程２０３を終了させる。
【００６９】
図１２は洪水シミュレーション実行中に利用する利用データテーブル１３２を対話的に選択するためのダイアログの一例を示す図である。
【００７０】
このダイアログ１２００は、利用データテーブル１３２が設定されていない部分領域について、工程２０７において空間データを取得しようとした場合に出現する。このダイアログ１２００には、利用データテーブル１３２が設定されていない旨を伝えるメッセージ１２１０と、設定が必要な部分領域１２２１を含む地理情報１２２０と、部分領域１２２１についての設定情報欄１２３０が表示されている。
【００７１】
図１２は、利用データテーブル１３２が設定されていない部分領域１２２１に、浸水領域１２２２の先端が到達する瞬間を表している。設定情報欄１２３０には部分領域１２２１のＩＤ１２３１および選択可能なデータ１２３２が表示される。図では「Ａ社」のデータを選択した場合を示している。利用者は設定が終了した後、再開ボタン１２４１を押下して工程２０７を再開するか、中止ボタン１２４２を押下して工程２０３を終了し、図９に示したウィンドウ９００に戻ることを選択できる。
【００７２】
なお、本発明を適用することで少量のデータ量で高速に実行することを期待できる数値モデルは、以下（ａ）、（ｂ）の条件を満たす数値モデルである。
（ａ）  変数を更新する必要がない計算格子が存在すること。
（ｂ）  計算格子の状態が空間的に連続して分布する傾向があること。
【００７３】
上記した条件（ａ）、（ｂ）を満たす数値モデルは、たとえばある地域における洪水、火災延焼、交通流、感染病の流行などをシミュレートする分野に存在する。具体的には、洪水シミュレーションを行うための数値モデルである２次元不定流モデルおよびタンクモデル、火災延焼シミュレーションを行うための数値モデルである。この種の数値モデルとしては、「立体都市データを用いた空間シミュレーション方式とその火災延焼予測への適用」（室啓朗，伊藤永一，岩村一昭  共著，数理モデル化と問題解決，情報処理学会  刊、1997年11月  発行   Vol.1997 No.113）等が知られている。空間シミュレーションが火災延焼シミュレーションの場合でも、上記図２の工程２０９に該当する判別条件は上述した条件と同様である。すなわち、発火せず、かつ周囲から延焼が伝播してこない部分領域である。ただし、まだ発火も延焼もしていない部分領域と同様に、完全に焼失し領域内に燃える材料が残っていない部分領域も、上記判別条件を満たすこととする。
【００７４】
また、上記実施形態ではＰＣ１００で空間シミュレーションを行うプログラムについて説明したが、ＰＣの代わりに並列計算機で空間シミュレーションを行うプログラムに本発明を適用することも可能である。この場合も、ＰＣで実行するプログラムと同様に、対象領域内で実際に計算を行うデータ量を大幅に削減できるので、計算速度の向上を図り、より大規模な空間シミュレーションを短時間で実現することができる。なお、並列計算機においては高効率の並列化が重要な課題である。この課題に関しては、上述したＤＤＭの分野における研究成果を適用することができる。
【００７５】
図１６は、洪水シミュレーションプログラム１３１の機能要素を示すブロック図である。
【００７６】
洪水シミュレーションプログラム１３１は、地理情報（空間データ）を格納する地理情報格納部（空間データファイル１２１）と、前記地理情報が格納される領域を、複数の計算格子を含む部分領域に分割する部分領域設定部１６１と、
前記部分領域のうち、更新が必要な部分領域を選択する更新領域選択部１６２と、前記選択した部分領域に外力条件を設定し、該外力を用いて前記選択された部分領域に含まれる計算格子における変数をシミュレーションして更新する更新部１６３と、前記更新された変数の値をディスプレイ１１３（表示装置）に出力する表示部１６４と、を備えるものである。
【００７７】
なお、本発明において、更新が必要な部分領域のみを選択する手順は、ある計算格子における変数が空間シミュレーションの対象とする現象が発生していることを示す値の場合、その計算格子を含む部分領域を更新が必要な部分領域として選択する手順を含む。
【００７８】
また、更新の必要な部分領域のみを選択する手順は、ある計算格子における変数を更新するために、空間シミュレーションの対象とする現象が発生していることを示す値の変数を参照する場合、その計算格子を含む部分領域を更新が必要な部分領域として選択する手順を含む。
【００７９】
また、前記更新の必要な部分領域のみを選択する手順は、ある部分領域を構成するすべての計算格子におけるすべての変数が空間シミュレーションの対象とする現象が発生していることを示す値でない場合、かつ、それらの計算格子における変数を更新するために参照するすべての計算格子のすべての変数が空間シミュレーションの対象とする現象が発生していることを示す値でない場合、その部分領域を更新が必要な部分領域として選択しない手順を含む。
【００８０】
このように、更新の必要な部分領域のみを選択する手順では、上記３点の手法により変数の更新に関わる計算コストを削減することができる。
【００８１】
上述した更新の必要な部分領域のみを選択する手順では、ある計算格子における変数が空間シミュレーションの対象とする現象が発生していることを示す値の場合、その計算格子を含む部分領域を選択する。これにより、現象の発生過程に追随して、更新する部分領域の数を増減させることができる。
【００８２】
上述した更新の必要な部分領域のみを選択する手順では、さらに、ある計算格子における変数を更新するために、空間シミュレーションの対象とする現象が発生していることを示す値の変数を参照する場合、その計算格子を含む部分領域を更新が必要な部分領域として選択する。これにより、現象が発生している領域が拡大する過程に先行して、更新する部分領域の数を増加させることができる。
【００８３】
上述した更新の必要な部分領域のみを選択する手順では、さらに、ある部分領域を構成するすべての計算格子におけるすべての変数が空間シミュレーションの対象とする現象が発生していることを示す値でない場合、かつ、それらの計算格子における変数を更新するために参照するすべての計算格子のすべての変数が空間シミュレーションの対象とする現象が発生していることを示す値でない場合、その部分領域を更新が必要な部分領域として選択しない。これにより、現象が発生している領域が縮小する過程に追随して、更新する部分領域の数を減少させることができる。
【産業上の利用可能性】
【００８４】
以上のように、本発明によれば、広域の空間シミュレーションをＰＣ等で実現することが可能となり、洪水や、火災延焼、交通、感染病の流行等の空間シミュレーションに適用することができる。
【図面の簡単な説明】
【００８５】
【図１】本発明を適用する計算機システムのブロック図。
【図２】洪水シミュレーションプログラムの処理の一例を示すＰＡＤ図。
【図３】洪水シミュレーションの対象領域と、部分領域及び計算格子の関係を示すグラフ。
【図４】利用データテーブルの内容を示す説明図。
【図５】図２の工程２０５で行われる更新が必要な部分領域の検出処理のサブルーチンを示すＰＡＤ図。
【図６】要更新テーブルの内容を示す説明図。
【図７】部分領域の更新の判定を行うための説明図で、対象となる計算格子と隣接する計算格子の関係を示す。
【図８】更新する部分領域を検出するための説明図で、対象となる部分領域と隣接する部分領域の関係を示す。
【図９】洪水シミュレーションの結果を表示するＧＵＩの一例を示す画面イメージ。
【図１０】利用データテーブルを設定する際のダイアログの一例を示す画面イメージ。
【図１１】洪水シミュレーションの進捗状況を示すダイアログの一例を示す画面イメージ。
【図１２】利用データテーブルにレコードを追加する場合のダイアログの一例を示す画面イメージ。
【図１３】ＧＩＳサーバの情報を格納するＧＩＳサーバテーブルの一例を示す図。
【図１４】選択可能な空間データ１０２２のリストを作成する一連の工程を示すＰＡＤ図。
【図１５】工程２０９の詳細を示すＰＡＤ図。
【図１６】洪水シミュレーションプログラム１３１の機能要素を示すブロック図。
【符号の説明】
【００８６】
１００  ＰＣ
１２１  空間データファイル
１２２  シミュレーション結果ファイル
１３１  洪水シミュレーションプログラム
１３２  利用データテーブル
１３３  要更新テーブル
３１１  計算格子
３２０  部分領域
【図１】
0004761865.tif 000002
【図２】
0004761865.tif 000003
【図３】
0004761865.tif 000004
【図４】
0004761865.tif 000005
【図５】
0004761865.tif 000006
【図６】
0004761865.tif 000007
【図７】
0004761865.tif 000008
【図８】
0004761865.tif 000009
【図９】
0004761865.tif 000010
【図１０】
0004761865.tif 000011
【図１１】
0004761865.tif 000012
【図１２】
0004761865.tif 000013
【図１３】
0004761865.tif 000014
【図１４】
0004761865.tif 000015
【図１５】
0004761865.tif 000016
【図１６】
0004761865.tif 000017