JPWO2008020634A1 - データ処理方法およびデータ処理装置 - Google Patents
データ処理方法およびデータ処理装置 Download PDFInfo
- Publication number
- JPWO2008020634A1 JPWO2008020634A1 JP2008529892A JP2008529892A JPWO2008020634A1 JP WO2008020634 A1 JPWO2008020634 A1 JP WO2008020634A1 JP 2008529892 A JP2008529892 A JP 2008529892A JP 2008529892 A JP2008529892 A JP 2008529892A JP WO2008020634 A1 JPWO2008020634 A1 JP WO2008020634A1
- Authority
- JP
- Japan
- Prior art keywords
- data
- grid
- processing
- space
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/10—Numerical modelling
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
【課題】格子状に分割された空間に存在する粒子データ等のデータに対する演算処理を効率良く実行することのできる、データ処理方法およびデータ処理装置を提供する。【解決手段】各格子に存在するデータを格子用メモリとは別のデータ用メモリに格納し、各格子に、自己のデータがデータ用メモリの何処に格納されているかを示す第一相互インデックスを割り当て、データ用メモリに、格納されているデータがどの格子に存在するものかを示す第二相互インデックスを割り当て、ある格子のデータを他の格子に移動する際に、対応する前記第一および第二相互インデックスの書換えを行う。
Description
本発明は、格子状に分割された空間に存在する粒子データなどの様々なデータに対する演算処理を効率良く実行することのできるデータ処理方法およびデータ処理装置に関するものである。
従来、たとえば図6に例示したように、多数のデータに対して何らかの演算処理を施す際に、データが存在する空間を格子状に分割し、格子1毎に演算処理を実行することがしばしば行われている。
たとえば、コンピュータシミュレーションにおいて、ある仮想空間に複数の粒子や粒状物など(以後説明の簡略化のため「粒子」と総称する)が存在すると設定し、一つ一つの粒子を表現するデータに対して演算処理を施し、粒子の集合物である流体の物理運動の分析といった様々なシミュレーションを実行する際、仮想空間を複数の格子1に分割し、各格子1に存在する粒子データA,B,C…に対してシミュレーションに必要な演算処理を施す。
この場合、各格子1にはそれぞれ対応するメモリまたはメモリ領域(以後説明の簡略化のため「メモリ」と総称する)が割り当てられ、各メモリに粒子データが格納されている。
しかしながら、格子内に多量のデータが存在する場合、従来以下のような欠点が存在していた。
1.格子間のデータの移動に関して、多くのメモリ書換えが必要。
すなわち、ある格子1aに存在するデータを他の格子1bに移動させる度に(たとえば粒子の動きが格子間をまたがる度に)、移動元の格子1aに対応するメモリと移動先の格子1bに対応するメモリそれぞれの書換え処理が必要であり、演算処理の負荷が増大する。
2.格子数×格子あたりのデータサイズのメモリが必要。
すなわち、全ての格子1に対して全種類のデータを格納できる容量のメモリが割り当てられているので、データが存在しない格子1f,1g,1h…にも余分なメモリが必要となり、全体のメモリ容量が増大する。
3.格子の何処にデータが存在しているかが不明なため、全ての格子に対して調査が必要。
すなわち、データが存在する空間を格子状に分割するだけでは、各格子1とデータとの対応付けがなく、演算処理の対象となるデータを全ての格子1から見つけ出す必要があり、演算処理の負荷が増大する。
そこで、本発明は、以上のとおりの事情に鑑みてなされたものであり、上記従来技術の欠点を解消し、格子状に分割された空間に存在するデータに対する演算処理を効率良く実行することのできる、データ処理方法およびデータ処理装置を提供することを目的とする。
また、空間に存在する粒子の運動をシミュレートする場合、粒子間の力の伝達は粒子同士の衝突として計算を行うのが一般的だが、液体/流体に近い動きを粒子群にさせようとすると、以下の理由により動きが不自然になっていた。
すなわち、現実の液体では無数の分子が様々な方向に飛び交い、幾度も衝突することで圧力が末端まで伝わり、たとえば図15の例では左右の水面は一定の高さで安定するが、(リアルタイムの)コンピュータシミュレーションでは、性能の都合上、粒子は大きく密集していて、(単位時間あたりの)衝突を計算する回数も少ないため、たとえば図16に例示したように、砂粒が詰まったような状態となり、圧力が末端まで伝わらない。
そこで、本発明はさらに、以上のとおりの事情に鑑みてなされたものであり、シミュレーション結果である水圧をパスカルの法則等、既知の法則から推測し、水圧推測値に基づいて粒子の動きを補正することで、より自然な液体/流体に近い動きのシミュレーションを実現することのできる、粒子運動シミュレーション方法および粒子運動シミュレーション装置を提供することをも目的とする。
上記の目的を達成するため、本発明のデータ処理方法は、格子状に分割された空間に存在するデータに対して演算処理を行うデータ処理方法であって、
各格子に存在するデータを格子用メモリとは別のデータ用メモリに格納し、
各格子に、自己のデータがデータ用メモリの何処に格納されているかを示す第一相互インデックスを割り当て、
データ用メモリに、格納されているデータがどの格子に存在するものかを示す第二相互インデックスを割り当て、
ある格子のデータを他の格子に移動する際に、対応する前記第一および第二相互インデックスの書換えを行う
ことを特徴とする。
各格子に存在するデータを格子用メモリとは別のデータ用メモリに格納し、
各格子に、自己のデータがデータ用メモリの何処に格納されているかを示す第一相互インデックスを割り当て、
データ用メモリに、格納されているデータがどの格子に存在するものかを示す第二相互インデックスを割り当て、
ある格子のデータを他の格子に移動する際に、対応する前記第一および第二相互インデックスの書換えを行う
ことを特徴とする。
さらに、このデータ処理方法は、前記第一相互インデックスが、データが格納されているデータ用メモリの識別情報を含むこと、前記第二相互インデックスが、データが存在する格子の位置情報を含むことを特徴とする。
さらに、このデータ処理方法は、演算処理を施す対象となるデータである処理対象データをデータ用メモリから読み出し、
当該処理対象データが存在する格子上の座標を第二相互インデックスに基づいて特定し、
当該処理対象データに影響を与える位置にある格子上にデータが存在するか判別し、
存在する場合に、当該データが格納されているデータ用メモリを第一相互インデックスに基づいて特定し、
特定されたデータ用メモリから当該データを読み出し、
読み出した当該データを用いて前記処理対象データに対して演算処理を施し、
演算処理により前記処理対象データが変更されたか判別し、
変更された場合に、変更済の前記処理対象データを、変更前の前記処理対象データが格納されていた前記データ用メモリに格納し、
当該変更済の処理対象データが存在する格子上の座標が移動したかを判別し、
移動した場合に、当該変更済の処理対象データに関する第一および第二相互インデックスを書き換える、
ことを特徴とする。
当該処理対象データが存在する格子上の座標を第二相互インデックスに基づいて特定し、
当該処理対象データに影響を与える位置にある格子上にデータが存在するか判別し、
存在する場合に、当該データが格納されているデータ用メモリを第一相互インデックスに基づいて特定し、
特定されたデータ用メモリから当該データを読み出し、
読み出した当該データを用いて前記処理対象データに対して演算処理を施し、
演算処理により前記処理対象データが変更されたか判別し、
変更された場合に、変更済の前記処理対象データを、変更前の前記処理対象データが格納されていた前記データ用メモリに格納し、
当該変更済の処理対象データが存在する格子上の座標が移動したかを判別し、
移動した場合に、当該変更済の処理対象データに関する第一および第二相互インデックスを書き換える、
ことを特徴とする。
また、本発明のデータ処理装置は、格子状に分割された空間に存在するデータに対して演算処理を行うデータ処理装置であって、
各格子に存在するデータを格納する、格子用メモリとは別のデータ用メモリ、
各格子に、自己のデータがデータ用メモリの何処に格納されているかを示す第一相互インデックスを割り当てる手段、
データ用メモリに、格納されているデータがどの格子に存在するものかを示す第二相互インデックスを割り当る手段、および、
ある格子のデータを他の格子に移動する際に、対応する前記第一および第二相互インデックスの書換えを行う手段
を備えたことを特徴とする。
各格子に存在するデータを格納する、格子用メモリとは別のデータ用メモリ、
各格子に、自己のデータがデータ用メモリの何処に格納されているかを示す第一相互インデックスを割り当てる手段、
データ用メモリに、格納されているデータがどの格子に存在するものかを示す第二相互インデックスを割り当る手段、および、
ある格子のデータを他の格子に移動する際に、対応する前記第一および第二相互インデックスの書換えを行う手段
を備えたことを特徴とする。
さらに、このデータ処理装置は、前記第一相互インデックスが、データが格納されているデータ用メモリの識別情報を含むこと、前記第二相互インデックスが、データが存在する格子の位置情報を含むことを特徴とする。
さらに、このデータ処理装置は、演算処理を施す対象となるデータである処理対象データをデータ用メモリから読み出す手段、
当該処理対象データが存在する格子上の座標を第二相互インデックスに基づいて特定する手段、
当該処理対象データに影響を与える位置にある格子上にデータが存在するか判別する手段、
存在する場合に、当該データが格納されているデータ用メモリを第一相互インデックスに基づいて特定する手段、
特定されたデータ用メモリから当該データを読み出す手段、
読み出した当該データを用いて前記処理対象データに対して演算処理を施す手段、
演算処理により前記処理対象データが変更されたか判別する手段、
変更された場合に、変更済の前記処理対象データを、変更前の前記処理対象データが格納されていた前記データ用メモリに格納する手段、
当該変更済の処理対象データが存在する格子上の座標が移動したかを判別する手段、および、
移動した場合に、当該変更済の処理対象データに関する第一および第二相互インデックスを書き換える手段
を備えたことを特徴とする。
当該処理対象データが存在する格子上の座標を第二相互インデックスに基づいて特定する手段、
当該処理対象データに影響を与える位置にある格子上にデータが存在するか判別する手段、
存在する場合に、当該データが格納されているデータ用メモリを第一相互インデックスに基づいて特定する手段、
特定されたデータ用メモリから当該データを読み出す手段、
読み出した当該データを用いて前記処理対象データに対して演算処理を施す手段、
演算処理により前記処理対象データが変更されたか判別する手段、
変更された場合に、変更済の前記処理対象データを、変更前の前記処理対象データが格納されていた前記データ用メモリに格納する手段、
当該変更済の処理対象データが存在する格子上の座標が移動したかを判別する手段、および、
移動した場合に、当該変更済の処理対象データに関する第一および第二相互インデックスを書き換える手段
を備えたことを特徴とする。
また一方、上記の目的を達成するため、本発明の粒子運動シミュレート方法は、ある空間に存在する粒子の動きをシミュレートする方法であって、
前記空間を垂直方向に延び且つ水平方向に連続する格子で分割した状態を仮定し、各格子内の各粒子に加わる圧力を水面からの距離に比例するものとして算出し、
前記空間を格子で分割していない連続空間と仮定し、前記空間内の同じ深度における各粒子の水圧を、そのうちの最も高い水圧に合わせ、
隣の粒子および空間との圧力差が大きい粒子には、それに対応した力を加える
ことを特徴とする。
前記空間を垂直方向に延び且つ水平方向に連続する格子で分割した状態を仮定し、各格子内の各粒子に加わる圧力を水面からの距離に比例するものとして算出し、
前記空間を格子で分割していない連続空間と仮定し、前記空間内の同じ深度における各粒子の水圧を、そのうちの最も高い水圧に合わせ、
隣の粒子および空間との圧力差が大きい粒子には、それに対応した力を加える
ことを特徴とする。
また、本発明の粒子運動シミュレート装置は、
ある空間に存在する粒子の動きをシミュレートする装置であって、
前記空間を垂直方向に延び且つ水平方向に連続する格子で分割した状態を仮定し、各格子内の各粒子に加わる圧力を水面からの距離に比例するものとして算出する手段、
前記空間を格子で分割していない連続空間と仮定し、前記空間内の同じ深度における各粒子の水圧を、そのうちの最も高い水圧に合わせる手段、および
隣の粒子および空間との圧力差が大きい粒子には、それに対応した力を加える手段
を備えたことを特徴とする。
ある空間に存在する粒子の動きをシミュレートする装置であって、
前記空間を垂直方向に延び且つ水平方向に連続する格子で分割した状態を仮定し、各格子内の各粒子に加わる圧力を水面からの距離に比例するものとして算出する手段、
前記空間を格子で分割していない連続空間と仮定し、前記空間内の同じ深度における各粒子の水圧を、そのうちの最も高い水圧に合わせる手段、および
隣の粒子および空間との圧力差が大きい粒子には、それに対応した力を加える手段
を備えたことを特徴とする。
そして、本発明は、上記データ処理方法や粒子運動シミュレート装置をコンピュータに実行させるプログラム、当該プログラムを記録したコンピュータ読取可能な磁気ディスク、光ディスク、半導体メモリなどの各種記録媒体をも提供する。
コンピュータでは、たとえば、記録媒体や通信ネットワークを介してインストールまたはロードされた上記データ処理ステップを記述したコンピュータプログラムに従って、CPUが各ステップを実行することになる。
上記のとおりの特徴を有する本発明のデータ処理によれば、格子に処理対象データそのものを置くのではなく、別途確保したデータ用メモリとの間の相互関係を表すインデックスを置くことにより、以下の効果を奏する。
1.データの移動をインデックスの書換えだけで行える。
2.データとインデックスの総量分のメモリがあれば演算可能。
3.データ用メモリからデータの存在する格子位置が判明できるため、全ての格子を調べなくても演算可能。
また、上記のとおりの特徴を有する本発明の粒子運動シミュレーションによれば、より自然な液体/流体に近い粒子群の動きのシミュレーションを実現することができる。
[第1実施形態]
図1は、本発明について説明するための概念図である。
図1は、本発明について説明するための概念図である。
この図1に例示したように、本発明では、格子状に分割された空間に存在するデータに対して演算処理を行う際、まず、格子用メモリとは別のデータ用メモリ2を用意して、これに各格子1に存在するデータを格納しておき、各格子1(厳密には各格子1の格子用メモリ)には、自己のデータがデータ用メモリ2の何処に格納されているかを示す第一相互インデックスを割り当て、データ用メモリ2には、格納されているデータがどの格子1に存在するものかを示す第二相互インデックスを割り当て、そして、ある格子1aのデータを他の格子1bに移動する際に、対応する前記第一および第二相互インデックスの書換えを行う。
第一相互インデックスとしては、データが格納されているデータ用メモリ2の番号等の識別情報、第二相互インデックスとしては、データが存在する格子1の座標等の位置情報を用いることができる。
なお、図1は、図6に例示したように格子1a,1c,1d,1eにデータA−Iが存在する場合に対応したものとする。
より具体的な処理については、たとえば図4に例示したように、まず、演算処理を施す対象となるデータ(処理対象データと呼ぶこととする)をデータ用メモリ2a(図1の例を参照)から読み出す(ステップS1)。
続いて、読み出した処理対象データが存在する格子1a上の座標Xa,Yaを第二相互インデックスに基づいて特定する(ステップS2)。
処理対象データが存在する格子1aに影響を与える位置にある格子1c上にデータが存在するか否かを判別する(ステップS3)。一例として、流体解析において、ある格子1aに存在する粒子が、その近傍の格子1cに存在する他の粒子から何らかの物理的影響を受ける場合には、その格子1cが、格子1aに影響を与える位置にある格子である。
処理対象データに影響を与えるデータ(影響データと呼ぶこととする)が存在する場合(ステップS3−Yes)、その影響データが格納されているデータ用メモリ2cを第一相互インデックスに基づいて特定する(ステップS4)。
特定されたデータ用メモリ2cから、影響データを読み出す(ステップS5)。
読み出した影響データを用いて、前記処理対象データに対して必要な演算処理、たとえばシミュレーション処理を施す(ステップS6)。 演算処理により処理対象データが変更されたか否かを判別する(ステップS7)。
変更された場合には、変更済の処理対象データを、変更前の処理対象データが格納されていた元のデータ用メモリ2aに格納する(ステップS8)。すなわち、図2に例示したように、変更後にデータ用メモリ2aにて処理対象データの書換えを行う。
変更済の処理対象データが存在する格子1a上の座標Xa,Yaが移動したか否かを判別する(ステップS9)。
たとえば図3の太矢印で例示したような移動があった場合には(ステップS9−Yes)、移動前の座標Xa,Yaにある格子1aの第一相互インデックスを消去し、移動後の座標Xb,Ybにある格子1bの第一相互インデックスを、移動前の座標Xa,Yaにあった格子1aの第一相互インデックスが指していたデータ用メモリ2aの番号2aに書き換える(2b→2a)。また、データ用メモリ2aの第二相互インデックスについては、移動後の座標Xb,Ybを示すよう書き換える(Xa,Ya→Xb,Yb)(ステップS10)。
移動がなかった場合には(ステップS9−No)、ステップS8で処理を終了する。以上の処理により、
1.第一相互インデックスおよび第二相互インデックスの書換えだけで、処理対象データの移動を行うことができ(ステップS10)、また、
2.処理対象データと第一,第二インデックスの総量分のメモリがあれば演算が可能となり、さらにまた、
3.データ用メモリ2から処理対象データの存在する格子1の位置を判別できるため、全ての格子1を調べなくても演算が可能となる(ステップS2)。
1.第一相互インデックスおよび第二相互インデックスの書換えだけで、処理対象データの移動を行うことができ(ステップS10)、また、
2.処理対象データと第一,第二インデックスの総量分のメモリがあれば演算が可能となり、さらにまた、
3.データ用メモリ2から処理対象データの存在する格子1の位置を判別できるため、全ての格子1を調べなくても演算が可能となる(ステップS2)。
[第2実施形態]
ところで、流体等の物体の動作解析においては一度動き出した物体が慣性で動き続ける状況が考えられ、この状況を考慮して、たとえば図5に例示したように、影響データが無いときでも処理対象データの演算を行うようにしてもよい(ステップS3−No→S11)。
ところで、流体等の物体の動作解析においては一度動き出した物体が慣性で動き続ける状況が考えられ、この状況を考慮して、たとえば図5に例示したように、影響データが無いときでも処理対象データの演算を行うようにしてもよい(ステップS3−No→S11)。
また、作用反作用を考慮すると、処理対象データとともに影響データも変化する場合が考えられるので、影響データが変更したか否かを判断する(ステップS12)。変更した場合には、影響データが格納されているデータ用メモリ2にて、変更済の影響データの書換えを行う(ステップS13)。
さらにまた、移動速度の幅が大きい場合など、移動が小刻みに行われる状況も考えられるので、この状況を考慮して、移動が完全に終了するまで、影響データの検索(ステップS3)からのループを設定するようにしてもよい(ステップS10からステップS3へ延びるループ線を参照)。
なお、以上の説明では、2次元平面空間における2次元平面格子を対象としているが、本発明は3次元立体空間における3次元立体格子にも応用できることは言うまでもなく、同様にしてより効率的な演算処理を実現できる。特に3次元空間内にて、粒子間の斥力などにより各データの間隔が一定となっている状況では、データが存在しない格子が増加することになるので、さらに一層演算処理の効率化を図ることができる。
以上説明した本発明によるデータ処理は、一例として、流体運動解析のコンピュータシミュレーションにおいて、流体が存在する空間を複数の格子状に分割し、各格子に存在する流体を構成する複数の粒子一つ一つを表すデータに対して、その格子間の動きをシミュレートするために必要な演算処理を施す場合に適用できる。シミュレートされた運動データに基づいて流体の動きを画像化し、2次元、3次元流体グラフィックスとしてコンピュータディスプレイ等の出力手段に表示させることも可能である。
[第3実施形態]
ここでは、空間に存在する粒子に加わる水圧をより高精度で推測することにより、粒子群の運動を可能な限り流体に近い動きとしてシミュレートする場合について説明する。
ここでは、空間に存在する粒子に加わる水圧をより高精度で推測することにより、粒子群の運動を可能な限り流体に近い動きとしてシミュレートする場合について説明する。
<1>まず、図7に例示したように、空間を複数に分割してなる格子を、水平方向に独立したものと考え、すなわち、ある空間を垂直方向に延びた格子により水平方向に連続して分割し、各垂直方向格子内に粒子が垂直方向に積み上げられた状態を仮定し、その場合の各粒子にかかる水圧を、水面からの距離に比例するものとして算出する。図7中の数字は算出水圧値である。
<2>次に、図8に例示したように、<1>の制限(水平方向独立状態)を解除して、同空間を格子で分割していない連続空間と考え、空間内の同じ深度における各粒子の水圧を、そのうちの最も高い水圧に合わせる。図8中、最下列の圧力が2に揃っている。
<3>続いて、図9に例示したように、<2>の水圧調整結果を参照し、隣の粒子や空間との圧力差が大きい粒子には、それに対応した力を加える。図9の例では、U字管の右側にある粒子は、本来は水面で圧力ゼロとなるはずであるが、圧力が過剰にかかっているため、上方へと力がかかり移動するようにシミュレートされる。
<4>そして、<1>−<3>の処理で単位時間が経過したものとして、再度<1>に戻り計算を続ける。ただし、粒子の配置が入り組んでいる場合など、一度の処理では水圧が深部まで伝わらない可能性もあるため、水面に位置する粒子など、水圧が明確なもの以外は前回の計算の値を保持し、高い方の水圧を採用する。
以上の処理の一具体例を詳細に説明する。
(1)
まず初期設定として、(2)以降の演算を行っていないので、図10に例示したように、圧力が決定していない粒子の圧力を0としておく。図10中の各粒子内の数値は、左側が圧力、右側が次述の仮圧力である。
まず初期設定として、(2)以降の演算を行っていないので、図10に例示したように、圧力が決定していない粒子の圧力を0としておく。図10中の各粒子内の数値は、左側が圧力、右側が次述の仮圧力である。
(2)
図10に例示したように、格子を空間内にて垂直方向に延び且つ水平方向に独立したものと仮定し、その場合の圧力(以降、この仮定のもとに決定した圧力を「仮圧力」とする)を、水面からの距離に比例したものとして決定する。より具体的には以下のとおりに処理する(適宜図10参照のこと)。
図10に例示したように、格子を空間内にて垂直方向に延び且つ水平方向に独立したものと仮定し、その場合の圧力(以降、この仮定のもとに決定した圧力を「仮圧力」とする)を、水面からの距離に比例したものとして決定する。より具体的には以下のとおりに処理する(適宜図10参照のこと)。
(2.1)
各垂直方向格子内にて上側の近傍に他の粒子が存在しない粒子、つまり水面にある粒子の仮圧力を0に設定する。
各垂直方向格子内にて上側の近傍に他の粒子が存在しない粒子、つまり水面にある粒子の仮圧力を0に設定する。
(2.2)
(2.1)に該当する粒子の下側の近傍に粒子が存在する場合は、その粒子の仮圧力を(2.1)の値に1足したものとする。
(2.1)に該当する粒子の下側の近傍に粒子が存在する場合は、その粒子の仮圧力を(2.1)の値に1足したものとする。
(2.3)
(2.2)で仮圧力を決定した粒子の下側の近傍にも粒子が存在する場合は、その粒子に対しても(2.2)と同様の処理を行い仮圧力を決定する。
(2.2)で仮圧力を決定した粒子の下側の近傍にも粒子が存在する場合は、その粒子に対しても(2.2)と同様の処理を行い仮圧力を決定する。
(2.4)
(2.3)を繰り返し、(2.1)に該当する粒子から下側に連続する粒子全ての仮圧力を決定する。
(2.3)を繰り返し、(2.1)に該当する粒子から下側に連続する粒子全ての仮圧力を決定する。
(2.5)
(2.1)−(2.4)を繰り返し、全ての粒子の仮圧力を決定する。
(2.1)−(2.4)を繰り返し、全ての粒子の仮圧力を決定する。
(3)
圧力と仮圧力を比較し、同じ深度の圧力が近い値になるように処理する。より具体的には以下のとおりに処理する(適宜図11参照のこと)。
圧力と仮圧力を比較し、同じ深度の圧力が近い値になるように処理する。より具体的には以下のとおりに処理する(適宜図11参照のこと)。
(3.1)
ある粒子について、下記A−Dのうち最大の値を圧力として決定する。
A=その粒子の仮圧力
B=左右の近傍にある粒子の圧力(粒子が存在しない場合はゼロ)
C=上の近傍にある粒子の圧力に1を足した値(粒子が存在しない場合はゼロ)
D=下の近傍にある粒子の圧力から1を引いた値(粒子が存在しない場合はゼロ)
ある粒子について、下記A−Dのうち最大の値を圧力として決定する。
A=その粒子の仮圧力
B=左右の近傍にある粒子の圧力(粒子が存在しない場合はゼロ)
C=上の近傍にある粒子の圧力に1を足した値(粒子が存在しない場合はゼロ)
D=下の近傍にある粒子の圧力から1を引いた値(粒子が存在しない場合はゼロ)
(3.2)
(3.1)の処理を全ての粒子に対して行い、圧力(図中左側の値)を決定する。
(3.1)の処理を全ての粒子に対して行い、圧力(図中左側の値)を決定する。
(4)
ある粒子について、隣の粒子や空間との圧力差が規定値より大きくなった場合、圧力差を解消する方向に力を加え、当該粒子の移動を発生させる。より具体的には以下のとおりに処理する(適宜図12参照のこと)。
ある粒子について、隣の粒子や空間との圧力差が規定値より大きくなった場合、圧力差を解消する方向に力を加え、当該粒子の移動を発生させる。より具体的には以下のとおりに処理する(適宜図12参照のこと)。
(4.1)
圧力が1以上の粒子に対し、その近傍に何も無い空間が存在する場合は、当該空間の方向への粒子の移動(方向および量)を算出する。たとえば一例として、以下のA−Bが成り立つとき、粒子Aは空間Bへと移動する。
A:ある粒子Aの圧力が1以上。
B:粒子Aの近傍に、何も無い空間Bが存在。
ここで、圧力が1以上の粒子は、本来は水中(他の粒子や壁で囲まれた状態)に位置するものであるため、その粒子が空間に面しているという状況だけで、圧力の均衡が取れていない状態と仮定する。
C:空間Bの近傍に粒子A以外の粒子Cが存在するとき、粒子Cの圧力が粒子Aを上回らない。
ここで、粒子Aの圧力が小さい場合は、より均衡の取れていない粒子Cに処理を行う。
圧力が1以上の粒子に対し、その近傍に何も無い空間が存在する場合は、当該空間の方向への粒子の移動(方向および量)を算出する。たとえば一例として、以下のA−Bが成り立つとき、粒子Aは空間Bへと移動する。
A:ある粒子Aの圧力が1以上。
B:粒子Aの近傍に、何も無い空間Bが存在。
ここで、圧力が1以上の粒子は、本来は水中(他の粒子や壁で囲まれた状態)に位置するものであるため、その粒子が空間に面しているという状況だけで、圧力の均衡が取れていない状態と仮定する。
C:空間Bの近傍に粒子A以外の粒子Cが存在するとき、粒子Cの圧力が粒子Aを上回らない。
ここで、粒子Aの圧力が小さい場合は、より均衡の取れていない粒子Cに処理を行う。
(4.2)
(4.1)の処理を、該当する全ての粒子に対して行う。
(4.1)の処理を、該当する全ての粒子に対して行う。
図12は、以上の処理(1)−(4)を繰り返した後に該当する粒子が発生した状況を示しており、圧力は次第に右側まで伝わってゆき、上方に空きのある粒子に到達したときに移動が始まる。すなわち、処理(1)―(4)は、隣接する粒子の圧力を(深度の差も考慮した上で)高い側に合わせる処理にあたるため、それによって、仮圧力(圧力が伝わりきっていない状態の、粒子の上方にあたる水面からの圧力)のうち、最も高い位置にある水面からの水圧が伝播する様子のシミュレートに用いることができる。
(5)
重力による粒子の移動を行う。
重力による粒子の移動を行う。
(5.1)
(4)で移動を行わなかった粒子に対し、下側の近傍に何も無い空間が存在する場合は、重力で落下したと仮定し、その空間に粒子を移動させる。
(4)で移動を行わなかった粒子に対し、下側の近傍に何も無い空間が存在する場合は、重力で落下したと仮定し、その空間に粒子を移動させる。
(5.2)
(5.1)の処理を、該当する全ての粒子に対して行う。
(5.1)の処理を、該当する全ての粒子に対して行う。
以上の(1)−(5)の処理を繰り返すことで、低い方向へ液体が流れて水面の高さが一定になるような、実際の液体に近い状況を再現でき、したがって、より自然な液体/流体に近い粒子群の動きのシミュレーションを実現することができ。
なお、以上の説明において各図は二次元のものとなっているが、三次元の場合にも同様に適用可能であることは言うまでもない。
また、重力が存在すると仮定し「垂直」「水平」と定義したが、無重力の場合に任意の方向に区切り計算することも可能である。その場合は、パスカルの法則に従い、繋がりのあるすべての粒子に同じ圧力が伝達するようにシミュレートする。
上述の実施形態では、粒子が自身の重さにより移動する場合の例であるが、たとえば図13、図14に例示したように、外部からの圧力が粒子に加わった場合でも計算可能である。図13、図14では、下部の粒子に加えた圧力は、上記処理(1)−(5)を繰り返すことで上部の粒子まで伝わることになる。
より具体的には以下のとおりに処理する(適宜図13、図14参照のこと)。
(7.1)
(1)−(5)を繰り返すことで圧力が確定し、初期状態では底面の粒子の圧力は2となる(図13参照)。
(1)−(5)を繰り返すことで圧力が確定し、初期状態では底面の粒子の圧力は2となる(図13参照)。
(7.2)
底面の粒子に、外部から1の圧力を加える。これにより底面の粒子の圧力は3になる(図14参照)。
底面の粒子に、外部から1の圧力を加える。これにより底面の粒子の圧力は3になる(図14参照)。
(7.3)
(1)−(5)を繰り返すことで、上部の粒子にも(7.1)の圧力に1を加える状態が伝わってゆく。
(1)−(5)を繰り返すことで、上部の粒子にも(7.1)の圧力に1を加える状態が伝わってゆく。
(7.4)
やがて水面の粒子の圧力にも1が足されたとき、(4)のルールにより、その粒子は上方へ移動する(図14参照)。
やがて水面の粒子の圧力にも1が足されたとき、(4)のルールにより、その粒子は上方へ移動する(図14参照)。
(7.5)
その後も(1)−(5)を繰り返すことで、粒子全体が上方へと移動する状態をシミュレートすることができる。
その後も(1)−(5)を繰り返すことで、粒子全体が上方へと移動する状態をシミュレートすることができる。
1,1a,1b,1c 格子
2,2a,2b,1c データ用メモリ
2,2a,2b,1c データ用メモリ
Claims (15)
- 格子状に分割された空間に存在するデータに対して演算処理を行うデータ処理方法であって、
各格子に存在するデータを格子用メモリとは別のデータ用メモリに格納し、
各格子に、自己のデータがデータ用メモリの何処に格納されているかを示す第一相互インデックスを割り当て、
データ用メモリに、格納されているデータがどの格子に存在するものかを示す第二相互インデックスを割り当て、
ある格子のデータを他の格子に移動する際に、対応する前記第一および第二相互インデックスの書換えを行う
ことを特徴とするデータ処理方法。 - 前記第一相互インデックスは、データが格納されているデータ用メモリの識別情報を含むことを特徴とする請求項1記載のデータ処理方法。
- 前記第二相互インデックスは、データが存在する格子の位置情報を含むことを特徴とする請求項1記載のデータ処理方法。
- 演算処理を施す対象となるデータである処理対象データをデータ用メモリから読み出し、
当該処理対象データが存在する格子上の座標を第二相互インデックスに基づいて特定し、
当該処理対象データに影響を与える位置にある格子上にデータが存在するか判別し、
存在する場合に、当該データが格納されているデータ用メモリを第一相互インデックスに基づいて特定し、
特定されたデータ用メモリから当該データを読み出し、
読み出した当該データを用いて前記処理対象データに対して演算処理を施し、
演算処理により前記処理対象データが変更されたか判別し、
変更された場合に、変更済の前記処理対象データを、変更前の前記処理対象データが格納されていたデータ用メモリに格納し、
当該変更済の処理対象データが存在する格子上の座標が移動したかを判別し、
移動した場合に、当該変更済の処理対象データに関する第一および第二相互インデックスを書き換える、
ことを特徴とする請求項1記載のデータ処理方法。 - 各格子に存在するデータが粒子データであることを特徴とする請求項1記載のデータ処理方法。
- 請求項1ないし5のいずれかに記載のデータ処理方法をコンピュータに実行させるデータ処理プログラム。
- 請求項6記載のデータ処理プログラムを記録したコンピュータ読取可能な記録媒体。
- 格子状に分割された空間に存在するデータに対して演算処理を行うデータ処理装置であって、
各格子に存在するデータを格納する、格子用メモリとは別のデータ用メモリ、
各格子に、自己のデータがデータ用メモリの何処に格納されているかを示す第一相互インデックスを割り当てる手段、
データ用メモリに、格納されているデータがどの格子に存在するものかを示す第二相互インデックスを割り当る手段、および、
ある格子のデータを他の格子に移動する際に、対応する前記第一および第二相互インデックスの書換えを行う手段
を備えたことを特徴とするデータ処理装置。 - 前記第一相互インデックスは、データが格納されているデータ用メモリの識別情報を含むことを特徴とする請求項8記載のデータ処理装置。
- 前記第二相互インデックスは、データが存在する格子の位置情報を含むことを特徴とする請求項8記載のデータ処理装置。
- 演算処理を施す対象となるデータである処理対象データをデータ用メモリから読み出す手段、
当該処理対象データが存在する格子上の座標を第二相互インデックスに基づいて特定する手段、
当該処理対象データに影響を与える位置にある格子上にデータが存在するか判別する手段、
存在する場合に、当該データが格納されているデータ用メモリを第一相互インデックスに基づいて特定する手段、
特定されたデータ用メモリから当該データを読み出す手段、
読み出した当該データを用いて前記処理対象データに対して演算処理を施す手段、
演算処理により前記処理対象データが変更されたか判別する手段、
変更された場合に、変更済の前記処理対象データを、変更前の前記処理対象データが格納されていたデータ用メモリに格納する手段、
当該変更済の処理対象データが存在する格子上の座標が移動したかを判別する手段、および、
移動した場合に、当該変更済の処理対象データに関する第一および第二相互インデックスを書き換える手段
を備えたことを特徴とする請求項8記載のデータ処理装置。 - ある空間に存在する粒子の動きをシミュレートする方法であって、
前記空間を垂直方向に延び且つ水平方向に連続する格子で分割した状態を仮定し、各格子内の各粒子に加わる圧力を水面からの距離に比例するものとして算出し、
前記空間を格子で分割していない連続空間と仮定し、前記空間内の同じ深度における各粒子の水圧を、そのうちの最も高い水圧に合わせ、
隣の粒子および空間との圧力差が大きい粒子には、それに対応した力を加える
ことを特徴とする粒子運動シミュレート方法。 - 請求項12記載の粒子運動シミュレート方法をコンピュータに実行させるプログラム。
- 請求項13記載のプログラムを記録したコンピュータ読取可能な記録媒体。
- ある空間に存在する粒子の動きをシミュレートする装置であって、
前記空間を垂直方向に延び且つ水平方向に連続する格子で分割した状態を仮定し、各格子内の各粒子に加わる圧力を水面からの距離に比例するものとして算出する手段、
前記空間を格子で分割していない連続空間と仮定し、前記空間内の同じ深度における各粒子の水圧を、そのうちの最も高い水圧に合わせる手段、および
隣の粒子および空間との圧力差が大きい粒子には、それに対応した力を加える手段
を備えたことを特徴とする粒子運動シミュレート装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006222632 | 2006-08-17 | ||
JP2006222632 | 2006-08-17 | ||
PCT/JP2007/066049 WO2008020634A1 (fr) | 2006-08-17 | 2007-08-17 | Procédé de traitement de données et dispositif de traitement de données |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2008020634A1 true JPWO2008020634A1 (ja) | 2010-01-07 |
Family
ID=39082155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008529892A Pending JPWO2008020634A1 (ja) | 2006-08-17 | 2007-08-17 | データ処理方法およびデータ処理装置 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JPWO2008020634A1 (ja) |
WO (1) | WO2008020634A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2677444A4 (en) | 2011-02-15 | 2014-03-05 | Fujitsu Ltd | SIMULATION DEVICE, SIMULATION METHOD, AND PROGRAM |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05158911A (ja) * | 1991-07-12 | 1993-06-25 | Hitachi Ltd | 粒子シミュレーションプログラム生成方法 |
JPH07281871A (ja) * | 1994-04-14 | 1995-10-27 | Matsushita Electric Ind Co Ltd | データ交換方法 |
JPH07334484A (ja) * | 1994-06-13 | 1995-12-22 | Seiichi Koshizuka | 流動解析装置及び流動解析方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000048040A (ja) * | 1998-07-29 | 2000-02-18 | Kai:Kk | 表示画面上の特定の部分に概念的に情報を設定し、これを検索して表示する方法とこれを実施したプログラム |
-
2007
- 2007-08-17 JP JP2008529892A patent/JPWO2008020634A1/ja active Pending
- 2007-08-17 WO PCT/JP2007/066049 patent/WO2008020634A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05158911A (ja) * | 1991-07-12 | 1993-06-25 | Hitachi Ltd | 粒子シミュレーションプログラム生成方法 |
JPH07281871A (ja) * | 1994-04-14 | 1995-10-27 | Matsushita Electric Ind Co Ltd | データ交換方法 |
JPH07334484A (ja) * | 1994-06-13 | 1995-12-22 | Seiichi Koshizuka | 流動解析装置及び流動解析方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2008020634A1 (fr) | 2008-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022007398A1 (zh) | 一种基于gpu加速技术的非结构网格洪水过程模拟系统 | |
JP5006643B2 (ja) | マルチセルシステムダイナミクスモデルの自動化された格子形成用の方法及び装置 | |
JP6043198B2 (ja) | 任意ラグランジュ・オイラー法(ale)における要素細分化法およびシステム | |
JP6671064B2 (ja) | 粒子シミュレーション装置、粒子シミュレーション方法及び粒子シミュレーションプログラム | |
KR102181989B1 (ko) | 복수의 프로세서를 이용한 입자 기반의 유체 시뮬레이션 방법 및 유체 시뮬레이션 장치 | |
JP5800145B2 (ja) | 解析装置、解析方法、解析プログラム及び記録媒体 | |
JP6048062B2 (ja) | シミュレーションプログラム、シミュレーション方法及びシミュレーション装置 | |
WO2019052313A1 (zh) | 一种液体仿真方法、液体交互方法及装置 | |
US10503561B2 (en) | Particle simulation apparatus and computer resource allocating method | |
JP2008165804A (ja) | 流れのシミュレーション計算方法およびシステム | |
KR101244826B1 (ko) | 격자와 입자의 상호 작용을 이용한 유체 시뮬레이션 시스템 및 방법 | |
JP6380051B2 (ja) | 有限要素演算プログラム、有限要素演算装置および有限要素演算方法 | |
CN106687827A (zh) | 一种断层的地层建模方法 | |
JP2007179548A5 (ja) | ||
JP3389875B2 (ja) | 自動部品配置システム並びに自動部品配置プログラムを記録した記録媒体 | |
EP3179390A1 (en) | Method and apparatus for modeling movement of air bubble based on fluid particles | |
JP2011039691A (ja) | メッシュモデル生成装置、プログラム及びメッシュモデル生成方法 | |
CN107240155A (zh) | 一种模型对象构建的方法、服务器及系统 | |
KR100888155B1 (ko) | 텍스처 맵핑을 이용하여 3차원 지도를 표시하는 시스템 및방법 | |
JPWO2008020634A1 (ja) | データ処理方法およびデータ処理装置 | |
US11300706B2 (en) | Designing a geological simulation grid | |
CN116305451B (zh) | 连续-非连续地质模型建立方法及装置 | |
CN110032788A (zh) | 一种板块俯冲变形过程的离散元模拟方法、设备以及系统 | |
KR101170909B1 (ko) | 이동 그리드를 이용한 유체 시뮬레이션 시스템 및 방법 | |
CN107767451A (zh) | 一种基于gocad栅格模型的3dec复杂地形建模方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20111004 |