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

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

▶ 日本電気株式会社の特許一覧

<>
  • 特開-粒子挙動シミュレーション装置 図1
  • 特開-粒子挙動シミュレーション装置 図2
  • 特開-粒子挙動シミュレーション装置 図3
  • 特開-粒子挙動シミュレーション装置 図4
  • 特開-粒子挙動シミュレーション装置 図5
  • 特開-粒子挙動シミュレーション装置 図6
  • 特開-粒子挙動シミュレーション装置 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024004199
(43)【公開日】2024-01-16
(54)【発明の名称】粒子挙動シミュレーション装置
(51)【国際特許分類】
   G16Z 99/00 20190101AFI20240109BHJP
【FI】
G16Z99/00
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022103734
(22)【出願日】2022-06-28
(71)【出願人】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100124811
【弁理士】
【氏名又は名称】馬場 資博
(74)【代理人】
【識別番号】100088959
【弁理士】
【氏名又は名称】境 廣巳
(74)【代理人】
【識別番号】100097157
【弁理士】
【氏名又は名称】桂木 雄二
(74)【代理人】
【識別番号】100187724
【弁理士】
【氏名又は名称】唐鎌 睦
(72)【発明者】
【氏名】久保 克維
【テーマコード(参考)】
5L049
【Fターム(参考)】
5L049DD02
(57)【要約】
【課題】粒子挙動シミュレーションにおける接触する粒子に作用する接触力の計算を、ベクトル演算器を用いて効率良く実施することができないこと。
【解決手段】粒子挙動シミュレーションプログラムは、コンピュータに、粒子どうしの接触にもとづく力が発生する粒子の対を全て探索し、その探索結果を粒子対テーブルに記憶する処理と、前記粒子対テーブルに記憶された粒子対をもとに粒子に作用する力を算出し、前記算出された力をもとに粒子の速度および位置を更新する処理と、を行わせる。
【選択図】図3
【特許請求の範囲】
【請求項1】
粒子の挙動をシミュレーションする装置であって、
粒子どうしの接触にもとづく力が発生する粒子の対を全て探索し、その探索結果を粒子対テーブルに記憶する第1の処理部と、
前記粒子対テーブルに記憶された粒子対をもとに粒子に作用する力を算出し、前記算出された力をもとに粒子の速度および位置を更新する第2の処理部と、
を備える粒子挙動シミュレーション装置。
【請求項2】
前記第1の処理部は、互いに閾値未満の距離に位置する粒子の対を全て探索し、その探索結果を前記粒子対テーブルに記憶するように構成されている、
請求項1に記載の粒子挙動シミュレーション装置。
【請求項3】
前記第2の処理部は、
前記粒子対テーブルに記憶された粒子対をもとに粒子に作用する力を算出する第3の処理部と、
前記算出された力をもとに粒子の速度および位置を更新する第4の処理部と、を含んで構成されている、
請求項2に記載の粒子挙動シミュレーション装置。
【請求項4】
前記第1の処理部は、粒子の対を構成する2つの粒子間の距離を計算した結果を、距離テーブルに記憶するように構成され、
前記第3の処理部は、前記粒子対テーブルに記憶された粒子対ごとに、前記距離テーブルに記憶された距離をもとに前記力を算出するように構成されている、
請求項3に記載の粒子挙動シミュレーション装置。
【請求項5】
前記第1の処理部は、粒子の対を構成する2つの粒子間の距離を計算するように構成され、
前記第3の処理部は、前記粒子対テーブルに記憶された粒子対ごとに、あらためて2つの粒子間の距離を計算した結果をもとに前記力を算出するように構成されている、
請求項3に記載の粒子挙動シミュレーション装置。
【請求項6】
粒子の挙動をシミュレーションする方法であって、
コンピュータが、
粒子どうしの接触にもとづく力が発生する粒子の対を全て探索し、その探索結果を粒子対テーブルに記憶し、
前記粒子対テーブルに記憶された粒子対をもとに粒子に作用する力を算出し、前記算出された力をもとに粒子の速度および位置を更新する、
粒子挙動シミュレーション方法。
【請求項7】
コンピュータに、
粒子どうしの接触にもとづく力が発生する粒子の対を全て探索し、その探索結果を粒子対テーブルに記憶する処理と、
前記粒子対テーブルに記憶された粒子対をもとに粒子に作用する力を算出し、前記算出された力をもとに粒子の速度および位置を更新する処理と、
を行わせるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、粒子挙動シミュレーション装置、その方法、および、プログラムに関する。
【背景技術】
【0002】
粒子どうしの接触または衝突(以下、単に接触と記す)の判定処理、および、互いに接触すると判定された粒子に作用する接触力や粒子の速度や座標の値を更新する処理を含んだ計算を行うことにより、複数の粒子の挙動をシミュレーションする技術の一例が特許文献1に記載されている。
【0003】
特許文献1に記載された技術(以下、本発明の関連技術と記す)では、先ず、各粒子の位置に基づいて互いに接触する可能性のある粒子の対を探索し、その探索結果をもとに参照用情報(ペアリスト)を生成する。次に、本発明の関連技術では、参照用情報によって特定される粒子の対ごとに、対を構成する2つの粒子間の距離が所定閾値(カットオフ長)よりも小さいか否かを判定する接触判定を行い、接触していると判定された粒子の対について接触力の計算を行う。本発明の関連技術では、この接触判定および接触力の計算は、ペア番号をスレッド化して行われる。次に、本発明の関連技術では、計算された接触力をもとに、粒子の速度や位置を更新する。
【0004】
また、本発明に関連する他の技術を記載した文献として、特開平06-280010号公報がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2015-230535号公報
【特許文献2】特開平06-280010号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、本発明の関連技術では、接触力の計算は必ずしもベクトル演算器を用いて効率良く実施することができない。その理由は、以下の通りである。まず、複雑な分岐を伴う処理はベクトル演算器を用いたSIMD(Single Instruction Multiple Data)実行の阻害要因となり、高速な演算パイプラインを効率的に活用することができない事情がある。そのため、接触力の計算を行うループには、複雑な条件分岐が含まれないことが望まれる。しかるに、本発明の関連技術では、接触力の計算を行うループには粒子間の距離がカットオフ長未満であるか否かを判定する条件分岐が必ず含まれる。そのため、接触判定条件が複合的かつ複雑化して更なる条件分岐が必要になった場合、本発明の関連技術では接触力の計算を行うループがベクトル化を阻害するほど複雑な条件分岐を含むものとなってしまう。
【0007】
本発明の目的は、上述した課題、すなわち、接触力の計算は必ずしもベクトル演算器を用いて効率良く実施することができない、という課題を解決する粒子挙動シミュレーション装置を提供することにある。
【課題を解決するための手段】
【0008】
本発明の一形態に係る粒子挙動シミュレーション装置は、
粒子の挙動をシミュレーションする装置であって、
粒子どうしの接触にもとづく力が発生する粒子の対を全て探索し、その探索結果を粒子対テーブルに記憶する第1の処理部と、
前記粒子対テーブルに記憶された粒子対をもとに粒子に作用する力を算出し、前記算出された力をもとに粒子の速度および位置を更新する第2の処理部と、
を備えるように構成されている。
【0009】
また、本発明の他の形態に係る粒子挙動シミュレーション方法は、
粒子の挙動をシミュレーションする方法であって、
コンピュータが、
粒子どうしの接触にもとづく力が発生する粒子の対を全て探索し、その探索結果を粒子対テーブルに記憶し、
前記粒子対テーブルに記憶された粒子対をもとに粒子に作用する力を算出し、前記算出された力をもとに粒子の速度および位置を更新する、
ように構成されている。
【0010】
また、本発明の他の形態に係るプログラムは、
コンピュータに、
粒子どうしの接触にもとづく力が発生する粒子の対を全て探索し、その探索結果を粒子対テーブルに記憶する処理と、
前記粒子対テーブルに記憶された粒子対をもとに粒子に作用する力を算出し、前記算出された力をもとに粒子の速度および位置を更新する処理と、
を行わせるように構成されている。
【発明の効果】
【0011】
本発明は上述したような構成を有することにより、接触力の計算を、ベクトル演算器を用いて効率良く実施することができる。
【図面の簡単な説明】
【0012】
図1】本発明の第1の実施形態が解決しようとする課題を説明するための粒子挙動シミュレーションプログラムの例を示す図である。
図2】本発明の第1の実施形態に係る粒子挙動シミュレーションプログラムの第1の例を示す図である。
図3】本発明の第1の実施形態に係る粒子挙動シミュレーションプログラムの第2の例を示す図である。
図4】本発明の第1の実施形態に係る粒子挙動シミュレーションプログラムの第3の例を示す図である。
図5】本発明の第1の実施形態に係る粒子挙動シミュレーションプログラムの第4の例を示す図である。
図6】本発明の第1の実施形態に係る粒子挙動シミュレーションプログラムを実行する情報処理装置の一例を示すブロック図である。
図7】本発明の第1の実施形態に係る粒子挙動シミュレーションプログラムを実行する情報処理装置の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【0013】
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第1の実施形態]
まず本発明の実施の形態について、理解を容易にするため、本発明の実施の形態が想定する課題について詳細に説明する。
【0014】
図1は、粒子挙動シミュレーションプログラムの一例を示す。この例の粒子挙動シミュレーションプログラムでは、(1)粒子どうしの接触判定処理、ならびに、(2)粒子に作用する力や粒子の速度や座標の値を更新する処理を、計算モデル内にて考慮される粒子全体の集合を軸とする2つのループ(あるいはそれ以上の数のループ)を主として構成されるループブロックを基本的構造とし、さらに当該ループブロックの中に粒子どうしの接触判定処理にまつわる複合的な条件分岐処理を付加することによって構成される、多層的な処理ブロック内で行っている。
【0015】
しかし、こうした複雑な分岐を伴う処理は、ベクトル演算器を用いたSIMD実行の阻害要因となり、高速な演算パイプラインを効率的に活用することができず、一般的な演算器(CPU(Central Processing Unit))を用いて実行した場合に比べても多くの処理時間を要する、という課題がある。
【0016】
図1の例は、粒子の速度や座標を更新する処理の代表的な状況を表したものである。この例の粒子挙動シミュレーションプログラムは、処理ブロック1-aと処理ブロック1-bによって構成されている。処理ブロック1-aは、2つの粒子間で接触が発生しているか否かを判定し、さらに接触が発生している場合には、当該粒子に作用する力を計算し、その作用する力をもとに粒子が受ける加速量を計算し、その加速量をもとに粒子の速度を再計算する処理部分である。処理ブロック1-bは、計算系に含まれるすべての粒子の座標を再計算する処理部分である。
【0017】
処理ブロック1-bは、ループ内にマスク化が可能な単純かつ単一の条件分岐しか持っていないため、ベクトル演算器を用いたベクトル演算が可能であり、高速に計算することができる。
【0018】
しかし、処理ブロック1-aは、ループネストの中に階層的かつ複数の条件分岐を持っているため、ループ計算をベクトル化することが困難であり、ベクトル演算器を用いても高速に実行できない。むしろ、ベクトル化されない計算をベクトル演算器上で行うことにより、汎用のCPUを用いて計算する場合よりも実行時間が増えてしまうという問題がある。
【0019】
一般的に、処理ブロック1-aの計算量は処理ブロック1-bの計算量よりも多く、実行時間の観点でも処理ブロック1-aの方が支配的である。そのため、処理ブロック1-aの処理がベクトル化されない計算方法では、粒子の速度や座標を更新する処理にベクトル演算器を用いても、実行時間を短縮することは困難である。
【0020】
[本実施形態による解決手段]
接触する粒子の組合せをテーブル情報として作成・保持し、さらに、(1)粒子どうしの接触判定処理、ならびに、(2)粒子に作用する力や粒子の速度や座標を更新する処理を、それぞれ別の処理ブロックに分け、これをベクトル演算器において実行するように計算アルゴリズムを工夫する。つまり、粒子同士の接触にもとづく作用力が発生する粒子を探索する処理を、作用力を計算する処理や速度を更新する処理や座標を更新する処理とは分離して先行的に行い、その探索結果をテーブル情報として記憶する。さらに、ここまでの一連の処理を行うループネストの後に続く別のループネストの形で、粒子の速度の更新作用力を計算する処理や速度を更新する処理や座標を更新する処理を行う処理ブロックを構成する。以上の手段により、図1に示される粒子挙動シミュレーションプログラムの課題を解決することができる。
【0021】
図2は、図1の処理のアルゴリズム構造を変更し、計算量が多く実行時間もかかる部分をベクトル化できるようにした粒子挙動シミュレーションプログラムの一実施例を示している。図2に示される粒子挙動シミュレーションプログラムでは、まず、処理ブロック2-aにおいて、図1の処理ブロック1-aで行っていた処理、つまり、有効な粒子対を探索した結果を計算し、その情報をテーブル(配列)に記憶する。次に、処理ブロック2-bにおいて、有効な粒子対の集合をテーブル(配列)から参照し、粒子に作用する力を計算する。最後に、処理ブロック2-cにおいて、粒子に作用する力をもとに粒子の加速量を計算し、その加速量をもとに粒子の速度を再計算し、その速度をもとに粒子の座標を再計算する。
【0022】
処理ブロック2-aは、複雑な条件分岐を持っているため、図1の処理ブロック1-aと同様、多くの場合はベクトル化できない。
【0023】
これに対して、処理ブロック2-bはベクトル化可能な処理内容として構成することが原理的に可能となる。処理ブロック2-bの計算内容に一定の水準以上の複雑な条件分岐が含まれていると、ベクトル化できない場合も考えられる。しかし、条件分岐の構造の単純化を促進することで、処理ブロック2-bのベクトル化は最終的に可能となる。もし、処理ブロック2-bの中にベクトル化を阻害するほど複雑な分岐処理が残っている場合は、そのような条件分岐に関わる判定処理の全部もしくは一部を、さらに処理ブロック2-aの中で先に実行し、判定処理の真偽の値に対応する粒子対の情報をテーブル(配列)に記憶する。そのように、必要に応じて処理ブロック2-bの中の条件分岐の構造が十分に単純化されるまでアルゴリズムを変えることで、処理ブロック2-bはベクトル化可能な処理構造になる。
【0024】
また、計算量や実行時間の観点では、処理ブロック2-bや処理ブロック2-cの方が処理ブロック2-aに比べて圧倒的に支配的である。そのため、処理ブロック2-aがベクトル化されないことによる実行時間上のデメリットは少なく、処理ブロック2-bや処理ブロック2-cがベクトル化されて高速に実行されるメリットの方が上回る。
【0025】
結果として、粒子の速度や座標を更新する処理全体としては、図2の例のようなアルゴリズムでベクトル演算器を用いて実行することで時間短縮効果が得られる。
【0026】
多くの粒子挙動シミュレーション、とくにMPS(Moving Particle Semi-implicit)法やSPH(Smoothed Particle Hydrodynamics)法を用いたシミュレーションでは、とくに計算時間コストの高い処理部として、処理(1):粒子どうしの接触判定処理、処理(2):粒子に作用する力や粒子の速度や座標の値を更新する処理の2つが含まれる。また、DEM(個別要素法)を用いたシミュレーションで扱われる計算モデルは、球・多面体・円柱などの複数の形状を持つ要素群により構成されるが、本発明において粒子‐粒子間の接触にまつわる計算処理の実施方式として記述する内容は、異種要素どうしの接触にまつわる計算処理の実施方式として読み替えることにより、DEMにも適用可能である。
【0027】
複合的な条件判定を多く伴った処理は、ベクトル演算器を用いて高速に計算することを困難にする。たとえば、複数個のループと複数個の条件分岐ブロックとが互いに複雑にネストしているような処理構造になっていると、ベクトル化(パイプライン実行)が阻害され、低速となる。
【0028】
そこで、本実施形態では、接触判定に用いられる様々な判定条件を満たす粒子の対を、判定条件を掛け合わせる形で、つまり、各判定条件の論理積(AND)を取ることにより、すべて探索し、その結果をテーブル情報として作成・保持するような新たなアルゴリズムを提案した。これにより、処理(1)のベクトル化を可能とする、十分に単純な処理構造を実現することができる。さらに、処理(2)についても、そのテーブル情報を参照し、衝突が発生する粒子の対のみを対象とした計算を行うことで、複数個のループと複数個の条件分岐ブロックとが互いに複雑にネストする処理構造が解消され、ベクトル化を可能とする、十分に単純な処理構造を実現することができる。
【0029】
シミュレーションの実行に必要とされる複数の条件分岐の一部を処理(1)の中で実施し、残りの分岐条件を処理(2)の中で実施するという実施例が考えられる。あるいは、シミュレーションの実行に必要とされる複数の条件分岐の全てを処理(1)の中で実施してしまい、処理(2)は条件分岐を全く含まない実装にするという実施例も考えられる。複数の分岐処理を処理(1)と処理(2)との間で、どのように振り分けるかについては、実施例としてのバリエーションがある。そのようなバリエーションのうち、どのような振り分け方が最適であるかについては、対象とするシミュレーションの具体的な計算内容や、使用する計算機の性能的な特性によって変わってくる。本実施形態は、そのような振り分け方を特定の方式に限定するものではない。
【0030】
図2に示される粒子挙動シミュレーションプログラムとは一部相違する、図3図4図5に示されるような粒子挙動シミュレーションプログラムの実施例が考えられる。図2図3図4図5の間の相違点は、テーブル(配列)に記憶し、その情報を後段の(異なるループネストでの)処理で参照される情報群として、何と何を対象とするかの選び方の違いにある。
【0031】
図2図3図4図5のうち、実行時間を短縮する効果が最も高いのはどれかという議論については、個々のベクトル計算機のハードウェア的な演算性能やデータ転送速度の定量的な特性や、個々の粒子シミュレーション計算の内容によって、答えは変わりうる。さらに、実施例ごとに使用するメモリ量が異なってくるため、ハードウェア的な記憶容量も勘案して実施方法を選択する必要がある。そのため、一概にどの実施例が最適である、ということはできない。
【0032】
図2の実施例では、有効な粒子対のリスト情報のみを記憶し、後段の処理で再利用している。
【0033】
図3の実施例では、処理ブロック3-aにおいて粒子間の距離の計算まで含めて行った後、接触が発生している粒子対を探索し、得られた粒子対のリスト情報を記憶している。こうした粒子間の距離の計算や接触が発生している粒子対の探索は、図2の実施例では処理ブロック2-bの工程で行っている。
【0034】
図3の実施例は、図2の実施例に比べて1番目の処理ブロック3-aの計算量を増やすことになるが、そのかわりに、2番目の処理ブロック3-bについては条件分岐の処理が減り、計算量を減らすのと同時にベクトル計算効率を高めることができる。また、図3の実施例は、粒子間の距離の情報については処理ブロック3-aで計算した結果を記憶せず、処理ブロック3-bにおいて再度計算している。
【0035】
図4の実施例では、図3の実施例と同様、衝突(あるいは接触)が発生している粒子対のリスト情報を、最初の処理工程である処理ブロック4-aで求めて記憶している。図3の実施例と異なるのは、図4の実施例は、粒子間の距離のリスト情報も、あわせて最初の処理工程で距離テーブルに記憶し、2番目の処理工程である処理ブロック4-bでは粒子間の距離を再計算せず、距離テーブルから参照している点である。図4の実施例は、図3の実施例に比べて、最初の処理工程である処理ブロック4-aの計算コストは増えるが、2番目の処理工程である処理ブロック4-bの演算量と判定処理を減らすことができる。また、図4の実施例の2番目の処理工程である処理ブロック4-bは、図3の実施例の2番目の処理工程である処理ブロック3-bに比べて演算量が減る一方でメモリアクセス量は増える。演算性能とメモリアクセス性能とのバランスにおいて、メモリアクセス性能の優位性が高い計算アーキテクチャであればあるほど、図4の実施例は図3の実施例に比べて高い効果を発揮することが期待される。
【0036】
図5の実施例は、図4の実施例から派生したものである。図4の2番目の処理工程である処理ブロック4-bや3番目の処理工程である処理ブロック4-cに含まれていた(ベクトル化は可能な)条件分岐処理(図示せず)を徹底的に取り除き、図5の最初の処理工程である処理ブロック5-aの中に取り込んだ状況を指している。従って、処理ブロック5-bおよび処理ブロック5-cには、条件分岐処理は全く含まれていない。図5の実施例は、図4の実施例に比べて、最初の処理ブロック5-aに関しては処理を増やして実行時間の増加という代償を払うかわりに、それ以降の処理工程の処理ブロック5-b、5-cに関しては処理を減らしつつベクトル演算器の稼動効率も高めることで実行時間の短縮を図るものとなっている。
【0037】
図6は、図2乃至図5に示される粒子挙動シミュレーションプログラムを実行する情報処理装置10の一例を示すブロック図である。
【0038】
図6を参照すると、情報処理装置10は、主な機能部として、通信インターフェース部(以下、通信I/F部という)11、操作入力部12、画面表示部13、記憶部14、および演算処理部15が設けられている。
【0039】
通信I/F部11は、専用のデータ通信回路からなり、通信回線を介して接続された図示しない各種装置との間でデータ通信を行う機能を有している。操作入力部12は、キーボードやマウスなどの操作入力装置からなり、オペレータの操作を検出して演算処理部15に出力する機能を有している。画面表示部13は、LCD(Liquid Crystal Display)やPDP(Plasma Display Panel)などの画面表示装置からなり、演算処理部15からの指示に応じて、操作メニューなどの各種情報を画面表示する機能を有している。
【0040】
記憶部14は、ハードディスクやメモリなどの記憶装置からなり、演算処理部15での各種処理に必要な処理情報やプログラム141を記憶する機能を有している。プログラム141は、例えば、図2図3図4、または図5に示される粒子挙動シミュレーションプログラムに相当するプログラムを含んで構成されている。プログラム141は、演算処理部15に読み込まれて実行されることにより各種処理部を実現するものであり、通信I/F部11などのデータ入出力機能を介して外部装置(図示せず)や記憶媒体(図示せず)から予め読み込まれて記憶部14に保存される。記憶部14で記憶される主な処理情報として、データベース142がある。
【0041】
データベース142は、シミュレーション対象となる複数の粒子それぞれについての粒子情報を保持する手段である。粒子情報は、例えば、粒子の粒子タイプ、座標、速度、粒子半径などの情報を含んで構成されている。粒子の座標および粒子の速度については、シミュレーション開始時の情報は、予めデータベース142に情報処理装置10のユーザ等により入力されており、シミュレーション中の情報は、後述する処理部153によって更新される。
【0042】
演算処理部15は、ベクトル演算機能を有するベクトル演算器とその周辺回路を有し、記憶部14からプログラム141を読み込んで実行することにより、上記ハードウェアとプログラム141とを協働させて各種処理部を実現する機能を有している。演算処理部15で実現される主な処理部として、処理部151と処理部152と処理部153とがある。
【0043】
処理部151は、データベース142に記憶された粒子情報をもとに、粒子どうしの接触にもとづく力が発生する粒子の対を全て探索し、その探索結果を粒子対テーブルに記憶するように構成されている。処理部151は、例えば、図2の処理ブロック2-a、または、図3の処理ブロック3-a、または、図4の処理ブロック4-a、または、図5の処理ブロック5-aを実行させることにより実現される機能部である。
【0044】
処理部152は、処理部151によって生成された粒子対テーブルに記憶された粒子対をもとに粒子に作用する力を算出するように構成されている。処理部152は、例えば、図2の処理ブロック2-b、または、図3の処理ブロック3-b、または、図4の処理ブロック4-b、または、図5の処理ブロック5-bを実行させることにより実現される機能部である。
【0045】
処理部153は、処理部152によって算出された力をもとに粒子の加速量、速度、および、位置を更新するように構成されている。処理部153は、例えば、図2の処理ブロック2-c、または、図3の処理ブロック3-c、または、図4の処理ブロック4-c、または、図5の処理ブロック5-cを実行させることにより実現される機能部である。
【0046】
図7は、図6に示される情報処理装置10が実行する粒子挙動シミュレーションの動作の一例を示すフローチャートである。図7を参照すると、まず、処理部151は、データベース142から粒子情報を取得する(ステップS1)。次に、処理部151は、取得した粒子情報をもとに、粒子どうしの接触にもとづく力が発生する粒子の対を全て探索し、その探索結果を粒子対テーブルに記憶する(ステップS2)。次に、処理部152は、処理部151によって生成された粒子対テーブルに記憶された粒子対をもとに、粒子に作用する力を算出する(ステップS3)。次に、処理部153は、処理部152によって算出された力をもとに、粒子の速度および位置を更新する(ステップS4)。次に、情報処理装置10では、シミュレーションの終了条件を満たしているか否かが判断される(ステップS5)。終了条件を満たしていると判断された場合(ステップS5でYES)、図7の処理が終了される。終了条件を満たしていないと判断された場合(ステップS5でNO)、時刻(ステップ)が1つ進められて、次の時刻(ステップ)における上述した処理(ステップS1~S4)が行われる。
【0047】
以上、上記実施形態を参照して本発明を説明したが、本発明は、上述した実施形態に限定されるものではない。本発明の構成や詳細には、本発明の範囲内で当業者が理解しうる様々な変更をすることができる。例えば、情報処理装置10は、上述したベクトル演算器の代わりに、CPU(Central Processing Unit)、GPU(Graphic Processing Unit)、DSP(Digital Signal Processor)、MPU(Micro Processing Unit)、FPU(Floating number Processing Unit)、PPU((Physics Processing Unit)、TPU(Tensor Processing Unit)、量子プロセッサ、マイクロコントローラ、又は、これらの組み合わせなどを用いることができる。
【産業上の利用可能性】
【0048】
計算機を利用して粒子挙動のシミュレーションを行う分野に利用できる。
【符号の説明】
【0049】
1-a、1-b、1-c、2-a、2-b、2-c、3-a、3-b、3-c、4-a、4-b、4-c、5-a、5-b、5-c 処理ブロック
10 情報処理装置
11 通信I/F部
12 操作入力部
13 画面表示部
14 記憶部
141 プログラム
142 データベース
15 演算処理部
151、152、153 処理部
図1
図2
図3
図4
図5
図6
図7