(57)【要約】【課題】複数の格子点で表現された空間の各格子点のデータを選択して出力する出力処理方法に関し、変化率の大きいデータを保存しつつ、データを削減する。【解決手段】複数の格子点で表現される空間を均等なサイズを持つブロック（Ｂ１〜Ｂ１６）に分割し、ブロック内の格子点の空間変化率から、ブロック内に変化率が大きい点と小さい点が混在するかを判定し、そのブロックをさらに細分割する。このため、適切なサイズのブロックに分割することにより、ユーザーが、計算結果から知見が得られるような空間的に変化率の大きい重要なデータのみを保存することが可能である。【選択図】図４
2010128830.tif 000002
【特許請求の範囲】
【請求項１】
タイムステップ毎に、複数の格子点を有する空間の各格子点のデータから、出力データを決定する空間データの出力処理方法であって、
前記空間を予め決められた均等の大きさのブロックに分割するステップと、
前記分割されたブロック内の各格子点のデータから、そのブロックの空間変化率を計算するステップと、
前記計算された空間変化率に従い、前記ブロックをさらに小ブロックに分割するステップと、
前記ブロック及び小ブロックの空間変化率又は時間変化率に従い、前記ブロック及び小ブロックの出力頻度を決定するステップとを有する
ことを特徴とする空間データの出力処理方法。
【請求項２】
前記出力頻度を決定するステップは、
各前記ブロックの格子点における前記空間変化率から前記各ブロック内の平均値を計算するステップと、
前記各ブロックの空間変化率の平均値を比較して、前記ブロックの格子点のデータの出力空間頻度を決定するステップとを有する
ことを特徴とする請求項１の空間データの出力処理方法。
【請求項３】
前記出力頻度を決定するステップは、
各前記ブロックの格子点におけるデータの時間変化率を計算するステップと、
前記時間変化率から前記各ブロック内の時間変化率の平均値を計算するステップと、
前記各ブロックの時間変化率の平均値を比較して、前記ブロックの格子点のデータの出力時間頻度を決定するステップとを有する
ことを特徴とする請求項１の空間データの出力処理方法。
【請求項４】
タイムステップ毎に、複数の格子点を有する空間の各格子点のデータから、出力データを決定するプログラムであって、
前記空間を予め決められた均等の大きさのブロックに分割するステップと、
前記分割されたブロック内の各格子点のデータから、そのブロックの空間変化率を計算するステップと、
前記計算された空間変化率に従い、前記ブロックをさらに小ブロックに分割するステップと、
前記ブロック及び小ブロックの空間変化率又は時間変化率に従い、前記ブロック及び小ブロックの出力頻度を決定するステップとを、
コンピュータに実行させることを特徴とするプログラム。
【請求項５】
タイムステップ毎に、複数の格子点を有する空間の各格子点のデータを計算するデータ処理装置と、
前記データ処理装置からの出力データを格納するファイル装置とを有し、
前記データ処理装置は、前記空間を予め決めれられた均等の大きさのブロックに分割し、前記分割されたブロック内の各格子点のデータから、そのブロックの空間変化率を計算し、前記計算された空間変化率に従い、前記ブロックをさらに小ブロックに分割し、前記ブロック及び小ブロックの空間変化率又は時間変化率に従い、前記ブロック及び小ブロックの出力頻度を決定する
ことを特徴とするデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定の解像度の空間の各点のデータを、空間内で、解像度を変更して、出力する空間データの出力処理方法、そのプログラム及びデータ処理システムに関し、特に、スーパーコンピュータ等の高性能計算機でアプリケーションプログラムを実行しているときに出力される空間の計算データを、可視化用に保存するデータを決定するのに好適な空間データの出力処理方法、そのプログラム及びデータ処理システムに関する。
【背景技術】
【０００２】
スーパーコンピュータ等の高性能計算機の性能向上により、熱伝導シミュレーション、台風シミュレーション、物体周りの流れのシミュレーション等の大規模なアプリケーションプログラムが、高速且つ高分解能で実行されている。
【０００３】
このような大規模なアプリケーションのシミュレーションでは、逐次出力される計算結果のデータは、莫大となる。一般に、熱伝導シミュレーションや台風シミュレーション等のアプリケーションでは、タイムステップ毎に出力されるデータ量は、”計算する物理空間のメッシュサイズ×タイムステップ数×物理量の数”で表される。
【０００４】
例えば、３次元空間のメッシュサイズが、１０、０００×１０、０００×１０、０００、タイムステップ数が、１００、０００ステップ、メッシュの各点で、８ｂｙｔｅサイズの物理量が、１００個とした場合、全出力サイズは、８０５ペタｂｙｔｅの出力データ量となる。
【０００５】
この莫大な出力データを保存するためには、相応のディスク量が必要となる。また、これらの出力データは、可視化装置（表示装置）に入力して、シミュレーション過程を表示することにも使用されるが、データが膨大であるため、これを表示する処理時間も大きくなる。従って、出力データを削減することにより、必要とされるディスク容量を削減し、可視化負荷を低減する必要がある。
【０００６】
このような空間データの削減方法としては、従来、ある一定のタイムステップ間隔で、シミュレーションの出力データを保存する方法（時間軸のデータの間引き）や、ある一定の空間間隔で、シミュレーションの出力データを保存する方法(空間軸のデータの間引き)が、提案されている（例えば、特許文献１，２参照）。
【特許文献１】特開２００５−１９８２６６号公報（図１９）
【特許文献２】特開２００６−３０３６９０号公報（図２）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
この間引く間隔を適切に設定するのは難しい。間引く間隔が大きいと、着目すべき時間や空間のデータが損失されてしまい、逆に小さいと、データの削減につながらない。このため、着目すべきデータのみを抽出して保存する必要性がある。
【０００８】
従来技術では、対象画像を複数の領域（ブロック）に分割し、各領域の連続するＮフレームの画素の移動速度（時間変化率）を計算し、当該領域のフレームレートと空間解像度とを決定していた。しかしながら、空間を均一な領域（ブロック）で分割した場合に、ブロックのサイズが大きいと、一つのブロック内に、変化率が大きな格子点（画素）と小さな格子点（画素）が混在する場合が生じる。
【０００９】
この時、変化率が小さい格子点の数が多ければ、ブロック内の平均変化率は小さくなる。そして、その値で保存する頻度を決めてしまうと、同じブロック内にある変化率が大きな格子点のデータが高頻度に保存されないという問題が生じる。
【００１０】
このような事例は、物理量が大きく変化する空間と、その周囲の変化の少ない空間の境界領域を含むブロックで生じやすい。例えば、熱源によって、空間の一点が加熱される場合に、熱源付近の高温領域と周囲の低温領域との間の境界を含むブロックでは、低温領域の温度の変化率が小さい格子点のために、平均変化率が小さくなり、高温で変化率が大きい点のデータが、高頻度で保存されなくなる場合がある。
【００１１】
従って、本発明の目的は、空間の出力データを削減しつつ、空間内の空間的に変化率の大きい格子点のデータを、保存するための空間データの出力処理方法、そのプログラム及びデータ処理システムを提供することにある。
【課題を解決するための手段】
【００１２】
この目的の達成のため、この空間データの出力処理方法は、タイムステップ毎に、複数の格子点を有する空間の各格子点のデータから、出力データを決定する空間データの出力処理方法であって、前記空間を予め決められた均等の大きさのブロックに分割するステップと、前記分割されたブロック内の各格子点のデータから、そのブロックの空間変化率を計算するステップと、前記計算された空間変化率に従い、前記ブロックをさらに小ブロックに分割するステップと、前記ブロック及び小ブロックの空間変化率又は時間変化率に従い、前記ブロック及び小ブロックの出力頻度を決定するステップとを有する。
【００１３】
又、この目的の達成のため、このプログラムは、タイムステップ毎に、複数の格子点を有する空間の各格子点のデータから、出力データを決定するプログラムであって、前記空間を予め決められた均等の大きさのブロックに分割するステップと、前記分割されたブロック内の各格子点のデータから、そのブロックの空間変化率を計算するステップと、前記計算された空間変化率に従い、前記ブロックをさらに小ブロックに分割するステップと、前記ブロック及び小ブロックの空間変化率又は時間変化率に従い、前記ブロック及び小ブロックの出力頻度を決定するステップとを、コンピュータに実行させる。
【００１４】
更に、この目的の達成のため、このデータ処理システムは、タイムステップ毎に、複数の格子点を有する空間の各格子点のデータを計算するデータ処理装置と、前記データ処理装置からの出力データを格納するファイル装置とを有し、前記データ処理装置は、前記空間を予め決められた均等の大きさのブロックに分割し、前記分割されたブロック内の各格子点のデータから、そのブロックの空間変化率を計算し、前記計算された空間変化率に従い、前記ブロックをさらに小ブロックに分割し、前記ブロック及び小ブロックの空間変化率又は時間変化率に従い、前記ブロック及び小ブロックの出力頻度を決定する。
【発明の効果】
【００１５】
最初に、空間を均等なサイズを持つブロックに分割し、ブロック内の格子点の空間変化率から、ブロック内に変化率が大きい点と小さい点が混在するかを判定し、そのブロックをさらに細分割する。このため、適切なサイズのブロックに分割することにより、ユーザーが、計算結果から知見が得られるような空間的に変化率の大きい重要なデータのみを保存することが可能である。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を、空間データの処理構成、出力処理の詳細、他の実施の形態の順で説明する。
【００１７】
（空間データの処理構成）
図１は、本発明に係わる空間データの処理を行うデータ処理装置の一実施の形態の構成図、図２は、図１のシミュレーションプログラムのタイムステップの説明図、図３は、図１の出力処理プログラムの構成図、図４は、図１のブロック分割の説明図、図５は、図４のブロック分割に使用するテーブルの構造図である。
【００１８】
図１に示すように、データ処理システムは、データ処理装置１と、可視化装置（表示装置）２とを有する。データ処理装置１は、ＣＰＵ，メモリ、磁気デイスク装置等のハードウェアで構成され、例えば、スーパーコンピュータが好適である。
【００１９】
データ処理装置１は、物理シミュレーションを行うシミュレーションプログラム３と、出力処理を行う出力処理プログラム４とを実行する。シミュレーションプログラム３は、図２に示すように、連続したステップ毎に、物理量を計算し、一時、メモリに格納する。このステップを、シミュレーションタイムステップという。
【００２０】
例えば、シミュレーションプログラム３は、熱伝導シミュレーション、台風シミュレーション、物体周りの流れのシミュレーション等の大規模なアプリケーションプログラムであり、所定の空間（２次元、３次元）をメッシュ化し、メッシュの各格子点の物理量を毎時間（ステップ）計算し、時系列な物理量を出力する。
【００２１】
出力処理プログラム４は、シミュレーションプログラム３が、メモリ上に、物理量を格納したデータを読み込み実行する。出力処理プログラム４は、空間のブロック分割を行うブロック分割モジュール５と、ブロック内の変化率（時間、空間）の計算を行うブロック内の変化率計算モジュール６と、ブロック内の出力頻度（空間、時間）の決定を行う決定モジュール７と、データ出力を行うデータ出力モジュール８とを有する。
【００２２】
ブロック分割モジュール５は、シミュレーション空間を適当なブロックに分割し、各ブロック内で過度に変化率が大きい格子点と小さい格子点が存在する場合は、ブロックを更に分割する。このブロック分割モジュール５は、図３に示すように、データ取得部５−１と、シミュレーション空間分割部５−２と、空間ブロックリンクテーブルの生成部５−３とを有する。
【００２３】
図４に示すように、シミュレーション空間は、メッシュの格子点で表現される。この格子点は、シミュレーションの計算出力点である。ブロック分割モジュール３は、シミュレーション空間を適当なブロックで分割した後、各ブロックにおいて、各格子点の物理量の変化率を計算する。
【００２４】
そして、ブロック内に物理量の変化の大きい部分と小さい部分の両方を含んでいる場合に、ブロックを再帰的にさらに細かく分割する。これにより、境界領域を含むブロックのサイズを小さくし、変化率が大きいにもかかわらず高頻度で保存されない領域の面積を小さくする。
【００２５】
例えば、図４の右側のシミュレーション空間は、熱源によって、空間の一点が加熱された場合の熱源付近の温度分布を示したものである。図中、楕円の線は、高温領域と低温領域の境界を示す。例えば、楕円の内部が、高温領域、外部が、低温領域である。
【００２６】
ここでは、当初、シミュレーション空間を、４×４の１６ブロックに分割した例を示し、この１６ブロックＢ１〜Ｂ１６の内、１つのブロック内で、境界の内と外では大きく変化率が異なることを示す。このようなブロック（図４では、ブロックＢ２，Ｂ３，Ｂ８，Ｂ９，Ｂ１４，Ｂ１５）では、空間を更に分割する。
【００２７】
この再帰的にブロックを分割する作業を、ユーザが指定した回数以内で、変化率の差が小さくなるまで行う。
【００２８】
即ち、シミュレーション空間を、均等のブロックに分割し、各ブロックでシミュレーションの計算点（格子点）の空間ｉの変化率を計算し、そのブロック内の空間変化率の最大値(Si,max)と最小値(Si,min)を求める。最大値と最小値の差(Si,max-Si,min)が、ユーザが設定する閾値(Th)よりも大きい場合は、ブロック内の空間において、変化率の大きい箇所と小さい箇所が混在するとみなし、そのブロックをさらに分割する。
【００２９】
分割されたブロック内で再度空間の変化率の最大値と最小値を求め、その差が閾値よりも小さくなるまで、または、ユーザが指定した分割回数の数を上限として、空間分割を繰り返して、ブロックを作成する。このようなブロックの分割は、テーブルを作成し、管理することが有効である。
【００３０】
図５は、ブロックを分割する際のテーブル（データ構造）を示す。まず、最初に、予め決められた空間数(ブロック数)Ｌ（Ｌ＞１）に対して、各空間（ブロック）ＩＤを付し、空間ＩＤ毎に、空間変化率の平均（Ｓ）、時間変化率の平均（Ｔ）、空間変化率の比率（ｒｓ）、時間変化率の比率（ｔｓ）と、空間をさらに分割するか否かを判定する領域（ｐｏｉｎｔｅｒ領域)をもつテーブル５０を作成する。Ｐｏｉｎｔｅｒ領域は、ブロック内を分割しない場合は、’NULL’を設定する。
【００３１】
前述のように、各ブロックでシミュレーションの計算点の空間ｉの変化率の最大値(Si,max)と最小値(Si,min)を求める。最大値と最小値の差(Si,max-Si,min)がユーザが設定する閾値(Th)よりも大きいブロックは、ブロック内の空間において変化率の大きい箇所と小さい箇所が混在するとみなし、そのブロックをさらに分割する。
【００３２】
ブロック内を分割する場合は、シミュレーション空間が、２次元の場合は、更に４つの領域に分割し、また、３次元の場合は、８つの領域に分割し、それぞれの領域のデータを格納する新たなテーブルを作成する。
【００３３】
図５では、シミュレーション空間が、２次元の例を示し、テーブル５０の空間ＩＤが「２」のブロックが前述の計算で、分割すべきブロックと判定され、４つの領域に分割し、テーブル５０の空間ＩＤ＝２にリンクしたリンクテーブル５１−１を作成する。同様に、テーブル５０の空間ＩＤが、「３」のブロックを、４つの領域に分割し、テーブル５０の空間ＩＤ＝３にリンクしたリンクテーブル５１−２を作成する。
【００３４】
更に、リンクテーブル５１−１の空間ＩＤが「２−４」のブロックが前述の計算で、分割すべきブロックと判定され、４つの領域に分割し、リンクテーブル５１−１の空間ＩＤ＝２−４にリンクした第２のリンクテーブル５２を作成する。
【００３５】
これらのリンクテーブル５１−１，５１−２，５２も、テーブル５０と同一のデータ構造からなり、各空間（ブロック）ＩＤを付し、空間ＩＤ毎に、空間変化率の平均（Ｓ）、時間変化率の平均（Ｔ）、空間変化率の比率（ｒｓ）、時間変化率の比率（ｔｓ）と、空間をさらに分割するか否かを判定する領域（ｐｏｉｎｔｅｒ領域)をもつ。
【００３６】
このように、分割されたブロック内で再度空間の変化率の最大値と最小値を求め、その差が閾値よりも小さくなるまで、または、ユーザが指定した分割回数の数を上限として空間分割を繰り返してブロックを作成する。ブロックが作成された後、各ブロックの空間変化率の平均を計算する。又、このように、再帰的に空間を作成するときのデータ構造をリンク構造で表現する。
【００３７】
次に、図１のブロック内の変化率の計算モジュール６は、各ブロックの空間変化率の平均（Ｓ）を、各ブロック内の計算点の空間変化率（Ｓｉ）の平均をとり、計算する。又、各格子点の時間変化率（Ｔｉ）を計算し、各ブロックの時間平均率の平均（Ｔ）を、各ブロック内の計算点の時間変化率（Ｔ）の平均をとり、計算する。そして、図５のテーブル５０，５１−１，５１−２，５２上の空間変化率の平均列（Ｓ）と、時間変化率の平均列（Ｔ）に格納する。
【００３８】
図３に示すように、この変化率計算モジュール６は、変化率計算部６−１と、変化率格納部６−２とからなる。
【００３９】
次に、ブロック内の出力頻度の決定モジュール７は、テーブル５０，５１−１，５１−２，５２の空間変化率の比率（ｒｓ）と、時間変化率の比率（ｒｔ）を計算する。即ち、全てのブロックの中から最大の空間変化率をもつブロックとその値(最大解像度)を抽出し、最大変化率をもつブロック内の格子点上の物理量は全て出力し、それ以外のブロックは最大変化率の比率を出力頻度とし、図４のテーブル上の空間変化率の比率列（ｒｓ）と時間変化率の比率列（ｒｔ）に格納する。
【００４０】
図３に示すように、出力頻度決定モジュール７は、出力頻度計算部７−１と、出力頻度格納部７−２とからなる。
【００４１】
例えば、テーブル５０では、空間変化率の平均が最大のブロックは、空間平均率＝３．５のブロックＩＤ＝1であるから、ブロックＩＤ＝1の空間変化率の比率は、「１」となる。又、他のブロックは、この最大空間変化率の平均で、そのブロックの空間変化率の平均を割った値を、空間変化率の比率として、計算する。この空間変化率の比率は、そのブロックの計算点を出力する際の計算点の数（空間頻度）を表す。
【００４２】
同様に、テーブル５０では、時間変化率の平均が最大のブロックは、時間平均率＝４．２のブロックＩＤ＝２であるから、ブロックＩＤ＝２の時間変化率の比率は、「１」となる。又、他のブロックは、この最大時間変化率の平均で、そのブロックの時間変化率の平均を割った値を、時間変化率の比率として、計算する。この時間変化率の比率は、そのブロックの計算点を出力する時間頻度を表す。
【００４３】
以上により、図５に示すリンク構造のテーブルの生成は完了する。このように、ブロック内のシミュレーションの結果データのうち、空間的にどの程度の頻度(何格子点ごとにシミュレーション結果を出力するかを決定する)で出力データを保存するか決定するため、各ブロックの空間変化率の平均を比較して、各ブロックの出力頻度を決める。
【００４４】
即ち、すべてのブロックの空間変化率の平均を計算した後、最大となる空間変化率の平均値とその値を持つブロックを抽出し、そのブロックに属する計算点をすべて出力するように設定する。他の空間は最大の空間変化率の平均との比率により、各ブロックの出力頻度を決定する。
【００４５】
又、すべてのブロックの時間変化率の平均を計算した後、最大となる時間変化率の平均値とその値を持つブロックを抽出し、そのブロックを毎ステップ出力するように設定する。他の空間は最大の時間変化率の平均の比率により、各ブロックの出力頻度を決定する。
【００４６】
次に、出力モジュール８は、このテーブル５０，５１−１，５１−２，５２を参照し、出力する格子点上の物理量を決定する。出力モジュール８は、ブロックリンクテーブル５０，５１−１，５１−２，５２のデータを読み込むデータ取得部８−１と、読み込んだ変化率の比率から出力データを決定し、磁気デイスク９に格納する出力データ決定部８−２を有する。
【００４７】
まず、出力モジュール８は、テーブル５０，５１−１，５１−２，５２上の各ブロックの時間変化率の比率（ｒｔ）を読み込み、ブロック内の計算点を表示するか否かを判定する。
【００４８】
例えば、あるブロックの時間出力頻度（時間変化率の比率）が「０．５」で、シミュレーションステップ数が「１０」である場合、偶数ステップ目で、そのブロック内の格子点上の物理量を出力し、奇数ステップ目では出力しない。
【００４９】
その他の方法として、乱数により出力頻度を決定することが可能である。例えば、時間出力頻度が「０．７」で、シミュレーションステップ数が「１０」である場合、１０ステップ中、７ステップにおいて出力する。その７ステップの決め方として、各ステップで、「０−１」の乱数を作成し、その乱数よりも出力頻度の値が大きかった(出力頻度ｒｔ＞０−１間の乱数)ステップにおいて出力する。
【００５０】
次に、対象ブロックが出力するステップであった場合、空間変化率の比率を読み込み、その比率で出力する格子点を決定する。例えば、あるブロックの空間変化率の比率が「０．５」の場合、そのブロック内の格子点数Ｎに対して、Ｎ×０．５個の格子点(ブロック内の格子点数の半分)の物理量を出力する。
【００５１】
このように、決定された出力頻度から、何ステップ目に出力するかを判定するため、総ステップ数Ｎと出力頻度Ｆとから、（Ｎ／Ｆ）で出力ステップを換算する。例えば、２０（Ｎ）ステップ中、出力頻度４（Ｆ）回の出力の場合は、Ｎ／Ｆの５ステップごとに出力する。そして、総ステップ数と出力頻度が割り切れない場合は、何ステップ目に出力すればよいか判断基準が設定できないため、モンテカルロ法により何ステップ目にブロック内の点を出力するか否かを決定する。
【００５２】
即ち、出力ステップ数が等間隔になるように出力ステップ箇所を決定するか、もしくは、０から１の乱数を作成し、乱数よりも時間変化率の比率が大きいときに、そのタイムステップにおけるブロックを出力する。
【００５３】
更に、シミュレーション空間のブロック単位が決まり、シミュレーションの終了時まで決まったブロックで出力データの決定を行うと、物理現象の変化に伴う空間の変化に、ブロックが追従できず、重要な箇所のデータを保存できない場合がある。このため、図２で示したように、ブロックを再分割するステップ（Ｎステップ）を、例えば、ユーザーがシミュレーション開始前に設定し、シミュレーションの設定されたステップ間隔で、空間ブロックを再構成し、重要なデータを保存できるブロックを作成する。
【００５４】
（出力処理の詳細）
図６は、図１、図３の出力処理プログラムの処理フロー図、図７乃至図１２は、その説明図である。
【００５５】
（Ｓ１０）タイムステップ数を読み込む。
【００５６】
（Ｓ１２）読み込んだタイムステップ数から、現タイムステップが、ブロック分割ステップであるかを判定する。図２で示したように、ブロック分割ステップは、変化率計算ステップであり、ユーザーが、ステップ間隔を設定する。例えば、１０ステップと設定すると、１０ステップに１回ブロック分割ステップを実行する。現タイムステップが、ブロック分割ステップでない場合には、ステップＳ２４に進む。
【００５７】
（Ｓ１４）空間（ブロック）ＩＤで示すブロック内の各格子点の空間変化率Ｓｉを、下記式（１）により計算する。式（１）は、格子点位置座標が、ｘ、ｙ、ｚの３軸の３次元空間の例を示し、Ｆは、物理量を示す。
【００５８】
【数１】
2010128830.tif 000003
式（１）は、座標ｘ、ｙ、ｚの格子点の空間変化率Ｓｉは、その格子点の物理量Ｆ（ｘ），Ｆ（ｙ），Ｆ（ｚ）と、その格子点から距離Δｘ、Δｙ、Δｚ離れた格子点の物理量Ｆ（ｘ＋Δｘ），Ｆ（ｙ＋Δｙ），Ｆ（ｚ＋Δｚ）との差の各々を、距離Δｘ、Δｙ、Δｚで割り、加算し、加算値を、３で割ったものである。
【００５９】
このブロック内の各格子点について、空間変化率Ｓｉを計算し、当該ブロックの空間変化率の最大値(Si,max)と最小値(Si,min)を求める。空間変化率の最大値(Si,max)と最小値(Si,min)は、下記式（２）で定義する。
【００６０】
【数２】
2010128830.tif 000004
（Ｓ１６）次に、最大値と最小値の差(Si,max-Si,min)を計算し、この差が、ユーザが設定する閾値(Ｔｈ)よりも大きいか否かを判定する。差が閾値（Ｔｈ）より大きい場合は、ブロック内の空間において、変化率の大きい箇所と小さい箇所が混在するとみなし、図５で説明したように、そのブロックをさらに分割し、リンク構造を生成する。
【００６１】
（Ｓ１８）次に、各ブロックの空間変化率の平均（Ｓ）を、各ブロック内の計算点の空間変化率（Ｓｉ）の平均をとり、計算する。即ち、以下の式（３）により、空間変化率の平均を計算する。
【００６２】
【数３】
2010128830.tif 000005
（Ｓ２０）又、各格子点の時間変化率（Ｔｉ）を、下記式（４）により、計算する。
【００６３】
【数４】
2010128830.tif 000006
式（４）では、ある格子点の物理量Ｆについて、ｔ時刻の物理量Ｆ（ｔ）と、（ｔ＋Δｔ）時刻の物理量Ｆ（ｔ＋Δｔ）との差を計算し、その差を、Δｔで割り、時間変化量Ｔｉを計算する。そして、各ブロックの時間平均率の平均（Ｔ）を、各ブロック内の計算点の時間変化率（Ｔ）の平均をとり、計算する。即ち、以下の式（５）により、時間変化率の平均を計算する。
【００６４】
【数５】
2010128830.tif 000007
（Ｓ２２）変化率の平均の計算を終了すると、図５のテーブル５０，５１−１，５１−２，５２の空間変化率の比率（ｒｓ）と、時間変化率の比率（ｒｔ）を計算する。即ち、全てのブロックの中から最大の空間変化率をもつブロックとその値(最大解像度)を抽出し、最大変化率をもつブロック内の格子点上の物理量は全て出力し、それ以外のブロックは最大変化率の比率を出力頻度とし、図５のテーブル上の空間変化率の比率列（ｒｓ）と時間変化率の比率列（ｒｔ）に格納する。
【００６５】
（Ｓ２４）処理した空間数（ブロック数）Ｉを、「０」に初期化する。
【００６６】
（Ｓ２６）Ｉが、全空間数Ｌをより大きいかを判定する。即ち、全空間を処理したかを判定する。Ｉが、全空間数Ｌをより大きい場合、全空間を処理したため、ステップＳ１０に戻る。
【００６７】
（Ｓ２８）一方、Ｉが、全空間数Ｌをより大きくない場合、全空間を処理していないため、出力頻度判定処理に移る。即ち、テーブル５０，５１−１，５１−２，５２上の各ブロックＩの時間変化率の比率（ｒｔ）を読み込み、ブロック内の計算点を表示するか否かを判定する。ここでは、ブロックの時間出力頻度（時間変化率の比率）ｒｔが、乱数（０〜１）より大きいかを判定し、ｒｔが、乱数より大きい場合に、そのステップで、当該ブロックを表示すると決定する。ｒｔが、乱数より大きくない場合には、表示しないため、ステップＳ３２に進む。
【００６８】
例えば、時間出力頻度が「０．７」で、シミュレーションステップ数が「１０」である場合、１０ステップ中、７ステップにおいて出力する。その７ステップの決め方として、各ステップで、「０〜１」の乱数を作成し、その乱数よりも出力頻度の値が大きかった(出力頻度ｒｔ＞０〜１間の乱数)ステップにおいて出力する。
【００６９】
（Ｓ３０）次に、対象ブロックが出力するステップであった場合、空間Ｉの空間変化率の比率を読み込み、その比率で出力する格子点を決定する。例えば、あるブロックの空間変化率の比率が「０．５」の場合、そのブロック内の格子点数Ｎに対して、Ｎ×０．５個の格子点(ブロック内の格子点数の半分)の物理量を出力する。
【００７０】
（Ｓ３２）そして、次の空間(ブロック)の処理に移るため、処理した空間数Ｉを、「１」インクリメントし、ステップＳ２６に戻る。
【００７１】
即ち、ブロック分割ステップでは、ブロック分割におけるテーブル生成とリンク構造の生成を行い、作成されたテーブルへ計算した空間的、時間的変化率の値をセットし、さらに、作成されたテーブルへ計算した空間的、時間的変化率の比率をセットし、これらのテーブルのデータを参照し、データの保存を決定する。  
【００７２】
この決定のために、ブロックの時間変化率の比率から、ブロック内の格子点上の物理量を保存するか否かを決め、次に、空間変化率の比率から出力データを決定する。
【００７３】
図７は、シミュレーション空間を、予め決められた数（ここでは、９）のブロック(空間)に分割した場合の説明図であり、図８は、図７の場合のブロックテーブルを示す。ここでは、各ブロックの格子点が、４個で説明する。図７のように、格子点の変化率によらず、すべての格子点上のデータ（物理量）を保存する場合には、図８のように、保存データ量は４×９＝３６となる。
【００７４】
図９、図１０は、格子点の変化率を考慮して保存する場合の説明図である。図９は、図７と同様に、シミュレーション空間を、予め決められた数（ここでは、９）のブロック(空間)に分割した場合の説明図であり、網かけ部分が、変化率の大きい部分を示す。図１０に示すように、平均変化率に応じて、保存頻度を決定すると、保存データ量は、１ブロック当たりの物理量×保存頻度であるため、保存データ量は、「１６」となり、図７、図８と比較すると、保存データ量を削減できる。
【００７５】
しかし、網かけ領域に入っていても、保存頻度が低い格子点が多く存在し、保存頻度の最適化ができていない。
【００７６】
図１１、図１２は、ブロックを細分化して、保存頻度の最適化を行った場合である。図１１は、シミュレーション空間を、予め決められた数（ここでは、９）のブロック(空間)に分割した後、ブロックの変化率に応じて、ブロックを再分割した例を示す。
【００７７】
図１２に示すように、平均変化率に応じて、保存頻度を決定すると、保存データ量は、１ブロック当たりの物理量×保存頻度であるため、保存データ量は、「１６」となり、図１０と同じく少ない保存データ量で済む。しかも、ブロックが細分化されているため、図１１の網かけ領域にふくまれる変化率の高い格子点のデータをすべて保存できる。例えば、ブロック１−４，２−３，２−４，３−３等である。
【００７８】
このように、最初にシミュレーション空間を均等なサイズを持つブロックに分割し、ブロック内に変化率が大きい点と小さい点が混在する場合には、そのブロックをさらに細分割する。このため、適切なサイズのブロックに分割することにより、ユーザが、シミュレーションの結果から知見が得られるような空間的に変化率の大きい重要なデータのみを保存することが可能である。
【００７９】
又、シミュレーション空間をブロックに分割したとき、それぞれのブロックの空間変化率の平均を、他のブロックとの空間変化率の平均と比較することにより、シミュレーションの全空間における変化を加味して、出力頻度を決めることが可能である。  
【００８０】
更に、シミュレーション空間をブロックに分割したとき、それぞれのブロックの時間変化率の平均を、他のブロックとの時間変化率の平均と比較することにより、シミュレーションの全空間における変化を加味して、出力頻度を決めることが可能である。又、時間軸方向の出力ステップを柔軟に決定することが可能である。
【００８１】
更に、物理現象が時間的に大きく変化する場合においても、定期的に空間ブロックを再構成するため、ブロックごとに変化を調査することにより、シミュレーションの変化が大きい場合等、ユーザにとって有用となるデータを保存することが可能である。
【００８２】
（他の実施の形態）
前述の実施の形態では、出力処理をシュミレーションプログラムの計算データで説明したが、コンピュータグラフィックスの計算データや、連続する動画像のデータにも適用できる。又、出力頻度の決定に、ブロックの空間と時間の両方の変化率を用いた例で説明したが、いずれか一方であっても良い。
【００８３】
以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
【００８４】
尚、本発明は、以下の形態を含む。
【００８５】
（付記１）タイムステップ毎に、複数の格子点を有する空間の各格子点のデータから、出力データを決定する空間データの出力処理方法であって、前記空間を予め決められた均等の大きさのブロックに分割するステップと、前記分割されたブロック内の各格子点のデータから、そのブロックの空間変化率を計算するステップと、前記計算された空間変化率に従い、前記ブロックをさらに小ブロックに分割するステップと、前記ブロック及び小ブロックの空間変化率又は時間変化率に従い、前記ブロック及び小ブロックの出力頻度を決定するステップとを有することを特徴とする空間データの出力処理方法。
【００８６】
（付記２）前記出力頻度を決定するステップは、各前記ブロックの格子点における前記空間変化率から前記各ブロック内の平均値を計算するステップと、前記各ブロックの空間変化率の平均値を比較して、前記ブロックの格子点のデータの出力空間頻度を決定するステップとを有することを特徴とする付記１の空間データの出力処理方法。
【００８７】
（付記３）前記出力頻度を決定するステップは、各前記ブロックの格子点におけるデータの時間変化率を計算するステップと、前記時間変化率から前記各ブロック内の時間変化率の平均値を計算するステップと、前記各ブロックの時間変化率の平均値を比較して、前記ブロックの格子点のデータの出力時間頻度を決定するステップとを有することを特徴とする付記１の空間データの出力処理方法。
【００８８】
（付記４）前記決定された出力時間頻度に従い、モンテカルロ法により、出力するタイムステップを決定するステップを更に有することを特徴とする付記３の空間データの出力処理方法。
【００８９】
（付記５)指定されたタイムステップで、前記ブロックの分割を初期状態へ戻し、再度ブロック分割を行うステップを更に有することを特徴とする付記１の空間データの出力処理方法。
【００９０】
（付記６）前記小ブロックに分割するステップは、前記ブロックの各格子点の空間平均率の最大値と最小値の差を計算するステップと、前記差が、予め決められた閾値より大きい場合に、前記ブロックを複数の小ブロックに分割するステップとを有することを特徴とする付記１の空間データの出力処理方法。
【００９１】
（付記７）前記出力空間頻度を決定するステップは、前記各ブロックの空間変化率の最大値のブロックの全格子点のデータを出力し、且つ前記最大値以外のブロックは、前記最大値と、前記最大値以外のブロックの空間変化率の比率に応じた格子点数のデータを出力するように出力空間頻度を決定するステップを有することを特徴とする付記２の空間データの出力処理方法。
【００９２】
（付記８）タイムステップ毎に、複数の格子点を有する空間の各格子点のデータから、出力データを決定するプログラムであって、前記空間を予め決められた均等の大きさのブロックに分割するステップと、前記分割されたブロック内の各格子点のデータから、そのブロックの空間変化率を計算するステップと、前記計算された空間変化率に従い、前記ブロックをさらに小ブロックに分割するステップと、前記ブロック及び小ブロックの空間変化率又は時間変化率に従い、前記ブロック及び小ブロックの出力頻度を決定するステップとを、コンピュータに実行させることを特徴とするプログラム。
【００９３】
（付記９）前記出力頻度を決定するステップは、各前記ブロックの格子点における前記空間変化率から前記各ブロック内の平均値を計算するステップと、前記各ブロックの空間変化率の平均値を比較して、前記ブロックの格子点のデータの出力空間頻度を決定するステップとを有することを特徴とする付記８のプログラム。
【００９４】
（付記１０）前記出力頻度を決定するステップは、各前記ブロックの格子点におけるデータの時間変化率を計算するステップと、前記時間変化率から前記各ブロック内の時間変化率の平均値を計算するステップと、前記各ブロックの時間変化率の平均値を比較して、前記ブロックの格子点のデータの出力時間頻度を決定するステップとを有することを特徴とする付記８のプログラム。
【００９５】
（付記１１）前記決定された出力時間頻度に従い、モンテカルロ法により、出力するタイムステップを決定するステップを更に有することを特徴とする付記１０のプログラム。
【００９６】
(付記１２)指定されたタイムステップで、前記ブロックの分割を初期状態へ戻し、再度ブロック分割を行うステップを更に有することを特徴とする付記８のプログラム。
【００９７】
（付記１３）前記小ブロックに分割するステップは、前記ブロックの各格子点の空間平均率の最大値と最小値の差を計算するステップと、前記差が、予め決められた閾値より大きい場合に、前記ブロックを複数の小ブロックに分割するステップとを有することを特徴とする付記８のプログラム。
【００９８】
（付記１４）前記出力空間頻度を決定するステップは、前記各ブロックの空間変化率の最大値のブロックの全格子点のデータを出力し、且つ前記最大値以外のブロックは、前記最大値と、前記最大値以外のブロックの空間変化率の比率に応じた格子点数のデータを出力するように出力空間頻度を決定するステップを有することを特徴とする付記９のプログラム。
【００９９】
（付記１５）タイムステップ毎に、複数の格子点を有する空間の各格子点のデータを計算するデータ処理装置と、前記データ処理装置からの出力データを格納するファイル装置とを有し、前記データ処理装置は、前記空間を予め決められた均等の大きさのブロックに分割し、前記分割されたブロック内の各格子点のデータから、そのブロックの空間変化率を計算し、前記計算された空間変化率に従い、前記ブロックをさらに小ブロックに分割し、前記ブロック及び小ブロックの空間変化率又は時間変化率に従い、前記ブロック及び小ブロックの出力頻度を決定することを特徴とするデータ処理システム。
【０１００】
（付記１６）前記データ処理装置は、各前記ブロックの格子点における前記空間変化率から前記各ブロック内の平均値を計算し、前記各ブロックの空間変化率の平均値を比較して、前記ブロックの格子点のデータの出力空間頻度を決定することを特徴とする付記１５のデータ処理システム。
【０１０１】
（付記１７）前記データ処理装置は、各前記ブロックの格子点におけるデータの時間変化率を計算し、前記時間変化率から前記各ブロック内の時間変化率の平均値を計算し、前記各ブロックの時間変化率の平均値を比較して、前記ブロックの格子点のデータの出力時間頻度を決定することを特徴とする付記１５のデータ処理システム。
【０１０２】
（付記１８）前記データ処理装置は、前記決定された出力時間頻度に従い、モンテカルロ法により、出力するタイムステップを決定することを特徴とする付記１７のデータ処理システム。
【０１０３】
(付記１９)前記データ処理装置は、指定されたタイムステップで、前記ブロックの分割を初期状態へ戻し、再度ブロック分割を行うことを特徴とする付記１５のデータ処理システム。
【０１０４】
（付記２０）前記データ処理装置は、前記ブロックの各格子点の空間平均率の最大値と最小値の差を計算し、前記差が、予め決められた閾値より大きい場合に、前記ブロックを複数の小ブロックに分割することを特徴とする付記１５のデータ処理システム。
【産業上の利用可能性】
【０１０５】
最初に、空間を均等なサイズを持つブロックに分割し、ブロック内の格子点の空間変化率から、ブロック内に変化率が大きい点と小さい点が混在するかを判定し、そのブロックをさらに細分割する。このため、適切なサイズのブロックに分割することにより、ユーザーが、計算結果から知見が得られるような空間的に変化率の大きい重要なデータのみを保存することが可能である。
【０１０６】
特に、一般的な大規模シミュレーションに対して、出力データを削減する手法として使用される可能性が大きい。シミュレーションの莫大な出力の中で着目すべきデータを自動で選別して出力、保存することが可能である。
【０１０７】
又、シミュレーション空間を再帰的にブロックに分割することにより、シミュレーションの結果として重要となる空間の境界領域を着目すべきデータとして詳細に保存することが可能であり、特に、物理現象のシミュレーションの可視化処理において有効な手法である。
【図面の簡単な説明】
【０１０８】
【図１】本発明の一実施の形態のデータ処理システムの構成図である。
【図２】図１のシミュレーションプログラムのタイムステップの説明図である。
【図３】図１の出力処理プログラムのブロック図である。
【図４】図１、図３のブロック分割の説明図である。
【図５】図４のブロック分割のためのブロックリンクテーブルの構成図である。
【図６】図１の出力処理プログラムの処理フロー図である。
【図７】第１の比較例のブロック分割の説明図である。
【図８】図７の第１の比較例のブロック分割の保存データの説明図である。
【図９】第２の比較例のブロック分割の説明図である。
【図１０】図９の第２の比較例のブロック分割の保存データの説明図である。
【図１１】本発明の実施の形態のブロック分割の説明図である。
【図１２】図１１の本発明の実施の形態のブロック分割の保存データの説明図である。
【符号の説明】
【０１０９】
１  データ処理装置
２  表示装置(可視化装置)
３  シミュレーションプログラム
４  出力処理プログラム
５  空間のブロック分割モジュール
６  ブロック内の変化率計算モジュール
７  ブロック内の出力頻度決定モジュール
８  データ出力処理モジュール
９  ファイル装置
【図１】
2010128830.tif 000008
【図２】
2010128830.tif 000009
【図３】
2010128830.tif 000010
【図４】
2010128830.tif 000011
【図５】
2010128830.tif 000012
【図６】
2010128830.tif 000013
【図７】
2010128830.tif 000014
【図８】
2010128830.tif 000015
【図９】
2010128830.tif 000016
【図１０】
2010128830.tif 000017
【図１１】
2010128830.tif 000018
【図１２】
2010128830.tif 000019