【解決手段】 粒子シミュレーション装置10は、粒子及び構造物の挙動をシミュレーションする装置である。粒子シミュレーション装置10は、構造物の初期位置及び形状を示す情報を取得する構造物初期情報取得部12と、当該情報に基づいて構造物の表面の近傍に複数の仮想粒子を設定し、複数の仮想粒子それぞれについて、構造物までの距離を算出する仮想領域設定部13と、粒子の位置から予め設定した距離内の仮想粒子を特定する仮想領域特定部15と、特定された仮想粒子について算出された距離に基づいて、粒子から構造物までの距離を算出する粒子距離算出部16と、算出された距離に基づいて粒子と構造物との間の相互作用力を算出する相互作用力算出部17とを備える。
作業空間内の粒子と構造物との間の相互作用力に基づいて、当該粒子の位置及び速度を算出し、当該粒子及び当該構造物の挙動をシミュレーションする粒子シミュレーション装置であって、
構造物の初期位置及び形状を示す構造物初期情報を取得する構造物初期情報取得手段と、
前記構造物初期情報取得手段によって取得された構造物初期情報によって示される構造物の初期位置及び形状に基づいて、当該構造物の表面の近傍に複数の仮想領域を設定し、設定した複数の仮想領域それぞれについて、構造物までの距離を算出する仮想領域設定手段と、
粒子の位置を示す位置情報を取得する位置情報取得手段と、
前記位置情報取得手段によって取得された位置情報によって示される粒子の位置から、予め設定した距離内の仮想領域を特定する仮想領域特定手段と、
前記仮想領域特定手段によって特定された仮想領域について、前記仮想領域設定手段によって算出された距離に基づいて、粒子から構造物までの距離を算出する粒子距離算出手段と、
前記粒子距離算出手段によって算出された距離に基づいて、粒子と構造物との間の相互作用力を算出する相互作用力算出手段と、
前記相互作用力算出手段によって算出された相互作用力に基づいて、次の時間ステップの粒子の位置及び速度を算出すると共に、当該構造物との位置関係を維持したまま前記仮想領域を移動させる時間遷移手段と、
を備える粒子シミュレーション装置。
前記時間遷移手段は、前記相互作用力算出手段によって算出された相互作用力に基づいて、次の時間ステップの構造物の位置及び速度を算出する請求項1又は2に記載の粒子シミュレーション装置。
作業空間内の粒子と構造物との間の相互作用力に基づいて、当該粒子の位置及び速度を算出し、当該粒子及び当該構造物の挙動をシミュレーションする粒子シミュレーション装置の動作方法である粒子シミュレーション方法であって、
構造物の初期位置及び形状を示す構造物初期情報を取得する構造物初期情報取得ステップと、
前記構造物初期情報取得ステップにおいて取得された構造物初期情報によって示される構造物の初期位置及び形状に基づいて、当該構造物の表面の近傍に複数の仮想領域を設定し、設定した複数の仮想領域それぞれについて、構造物までの距離を算出する仮想領域設定ステップと、
粒子の位置を示す位置情報を取得する位置情報取得ステップと、
前記位置情報取得ステップにおいて取得された位置情報によって示される粒子の位置から、予め設定した距離内の仮想領域を特定する仮想領域特定ステップと、
前記仮想領域特定ステップにおいて特定された仮想領域について、前記仮想領域設定ステップにおいて算出された距離に基づいて、粒子から構造物までの距離を算出する粒子距離算出ステップと、
前記粒子距離算出ステップにおいて算出された距離に基づいて、粒子と構造物との間の相互作用力を算出する相互作用力算出ステップと、
前記相互作用力算出ステップにおいて算出された相互作用力に基づいて、次の時間ステップの粒子の位置及び速度を算出すると共に、当該構造物との位置関係を維持したまま前記仮想領域を移動させる時間遷移ステップと、
を含む粒子シミュレーション方法。
コンピュータを、作業空間内の粒子と構造物との間の相互作用力に基づいて、当該粒子の位置及び速度を算出し、当該粒子及び当該構造物の挙動をシミュレーションする粒子シミュレーション装置として機能させる粒子シミュレーションプログラムであって、
前記コンピュータを、
構造物の初期位置及び形状を示す構造物初期情報を取得する構造物初期情報取得手段と、
前記構造物初期情報取得手段によって取得された構造物初期情報によって示される構造物の初期位置及び形状に基づいて、当該構造物の表面の近傍に複数の仮想領域を設定し、設定した複数の仮想領域それぞれについて、構造物までの距離を算出する仮想領域設定手段と、
粒子の位置を示す位置情報を取得する位置情報取得手段と、
前記位置情報取得手段によって取得された位置情報によって示される粒子の位置から、予め設定した距離内の仮想領域を特定する仮想領域特定手段と、
前記仮想領域特定手段によって特定された仮想領域について、前記仮想領域設定手段によって算出された距離に基づいて、粒子から構造物までの距離を算出する粒子距離算出手段と、
前記粒子距離算出手段によって算出された距離に基づいて、粒子と構造物との間の相互作用力を算出する相互作用力算出手段と、
前記相互作用力算出手段によって算出された相互作用力に基づいて、次の時間ステップの粒子の位置及び速度を算出すると共に、当該構造物との位置関係を維持したまま前記仮想領域を移動させる時間遷移手段と、
として機能させる粒子シミュレーションプログラム。
【発明を実施するための形態】
【0016】
以下、図面と共に本発明に係る粒子シミュレーション装置、粒子シミュレーション方法及び粒子シミュレーションプログラムの実施形態について詳細に説明する。なお、図面の説明においては同一要素には同一符号を付し、重複する説明を省略する。
【0017】
図1に本実施形態に係る粒子シミュレーション装置10を示す。粒子シミュレーション装置10は、作業空間(計算領域)内の複数の球形(中心から表面までの距離が一定の形状)の粒子及び構造物の挙動をシミュレーション(解析)する装置である。具体的には、粒子シミュレーション装置は、シミュレーション上の時刻である時間ステップ毎に各粒子及び構造物の位置及び速度に基づき、各粒子に働く力を算出する。各粒子及び構造物に働く力には、例えば、粒子と構造物との間、及び粒子間での相互作用である接触(衝突)による相互作用力である接触力が含まれる。なお、粒子と構造物との間、及び粒子間での相互作用は、必ずしも接触に限られず、位置及び速度に影響を及ぼすものであれば任意のものとしてもよい。粒子シミュレーション装置10は、算出した力に基づいて、次の時間ステップにおける各粒子及び構造物の位置及び速度を算出する。なお、本実施形態における粒子シミュレーションは、DEMに基づいて行われるが、SPHやMPS等の他の粒子法に基づいて行われてもよい。また、粒子法の種類によっては、粒子径や回転速度を情報として保持しなくてもよい。
【0018】
本実施形態に係る粒子シミュレーション装置10によるシミュレーションの対象となる粒子は、従来の粒子シミュレーションの対象となっていた任意の粒子を含む。例えば、土砂や粉体を対象とすることができる。あるいは、流体や固体を複数の粒子からなるものと仮定して対象とすることとしてもよい。本実施形態に係る粒子シミュレーション装置10によるシミュレーションの対象となる構造物は、任意の物体を含む。例えば、粉体を撹拌、混合する装置(の粉体を撹拌、混合する部分(撹拌翼))を対象とする。シミュレーションの対象となる構造物は、複数あってもよい。
【0019】
本実施形態に係る粒子シミュレーション装置10によるシミュレーションにより、物理的な問題をシミュレーションすることができる。例えば、粉体の撹拌、混合についてのシミュレーションを行うことができる。あるいは、ドリルビットの形状に応じた掘削能力の検証やブルドーザー等の建機や重機の設計にも用いることも考えられる。このように、本実施形態に係る粒子シミュレーション装置10によるシミュレーションは、土木、粉体等の産業分野での適用が考えられる。また、堤防、建物、地形と津波や土砂との相互作用や土砂崩れ、雪崩等の自然現象のシミュレーションにも用いることができる。このように、本実施形態に係る粒子シミュレーション装置10によるシミュレーションは、防災分野での適用も考えられる。
【0020】
粒子シミュレーション装置10は、例えば、CPU(CentralProcessing Unit)、GPU(Graphics Processing Unit)、メモリ、ハードディスク、ディスプレイ等のハードウェアを備えるコンピュータとして構成される。これらの構成要素がプログラム等により動作することによって、後述する粒子シミュレーション装置10としての機能が発揮される。粒子シミュレーション装置10は、並列演算が可能な装置において特に効果的に動作する。なお、粒子シミュレーション装置10は、演算装置としては必ずしもGPUを備えている必要はなく、CPUのみを備えた構成であってもよい。
【0021】
図1に示すように粒子シミュレーション装置10は、シミュレーション情報保持部11と、構造物初期情報取得部12と、仮想領域設定部13と、位置情報取得部14と、仮想領域特定部15と、粒子距離算出部16と、相互作用力算出部17と、時間遷移部18とを備えて構成される。
【0022】
本実施形態において粒子が運動する領域である作業領域は、例えば、三次元の空間であり、一辺の大きさが予め設定された立方体のセル(メッシュ)に分割(区分)されている。なお、セルは立方体以外の形状、例えば、直方体であってもよい。粒子シミュレーション装置10は、シミュレーションの処理を行う前に作業空間を予めセルに分割しており、作業空間がどのようにセルに分割されているか予め把握している。上記の一辺の大きさは、例えば、シミュレーションの対象となる複数の粒子の粒子径等に応じて予め設定されている。また、作業領域内の各セルにはセルを特定するセル番号が付されている。セル番号は、例えば、作業空間内のセルの位置に応じて順番に付されている。
【0023】
シミュレーション情報保持部11は、シミュレーションに用いられる情報を保持する手段である。具体的には、シミュレーション情報保持部11は、作業領域内の複数の粒子それぞれについての粒子情報を保持する。粒子情報は、粒子の座標、粒子の速度及び粒子半径を示す情報を含む。粒子の座標は、作業空間における粒子の位置を示す三次元座標である。粒子の速度は、並進速度及び回転速度を含む。粒子の座標及び粒子の速度については、シミュレーションの開始時の情報(初期情報)は、予めシミュレーション情報保持部11に粒子シミュレーション装置10のユーザ等により入力されており、また、シミュレーション中の情報は、後述する時間遷移部18によって更新される。粒子半径は、予めシミュレーション情報保持部11に粒子シミュレーション装置10のユーザ等により入力されている。
【0024】
シミュレーション情報保持部11は、作業領域内の構造物それぞれについての構造物情報を保持する。構造物情報は、構造物の座標、構造物の速度及び構造物の形状を示す情報を含む。構造物の座標は、作業空間における構造物の位置(例えば、構造物の特定の箇所の位置)を示す三次元座標である。構造物の速度は、並進速度及び回転速度を含む。構造物の座標及び構造物の速度については、粒子の座標及び粒子の速度と同様に、シミュレーションの開始時の情報(初期情報)は、予めシミュレーション情報保持部11に粒子シミュレーション装置10のユーザ等により入力されており、また、シミュレーション中の情報は、後述する時間遷移部18によって更新される。構造物の形状を示す情報は、例えば、ポリゴンで構造物の形状を表したCAD(computer-aided design)データである。構造物の形状を示す情報は、予めシミュレーション情報保持部11に粒子シミュレーション装置10のユーザ等により入力されている。構造物情報は、構造物がどのように移動するか(例えば、移動軸や回転軸等)を示す情報を含んでいてもよい。当該情報も、予めシミュレーション情報保持部11に粒子シミュレーション装置10のユーザ等により入力されている。
【0025】
また、シミュレーション情報保持部11は、後述するように仮想粒子の情報を保持する。また、シミュレーション情報保持部11は、上記の粒子情報及び構造物情報以外のシミュレーションに利用される情報を、予め入力して保持していてもよい。このような情報としては、摩擦係数、弾性係数、粘性減衰係数、反発係数等である。
【0026】
構造物初期情報取得部12は、構造物の初期位置及び形状を示す構造物初期情報を取得する構造物初期情報取得手段である。例えば、構造物初期情報取得部12は、シミュレーション情報保持部11に保持されている構造物に係る初期情報、及び構造物の形状を示す情報を構造物初期情報として取得する。構造物初期情報取得部12は、取得した構造物初期情報を仮想領域設定部13に出力する。
【0027】
仮想領域設定部13は、構造物初期情報取得部12によって取得された構造物初期情報によって示される構造物の初期位置及び形状に基づいて、当該構造物の表面の近傍に複数の仮想領域を設定し、設定した複数の仮想領域それぞれについて、構造物までの距離(最近接距離)を算出する仮想領域設定手段である。仮想領域は、後述するように、シミュレーション対象の粒子から構造物までの距離の算出に用いる領域である。本実施形態では、仮想領域は、球形(中心から表面までの距離が一定の形状)の粒子状の領域であり、仮想粒子と呼ぶ。複数の仮想粒子の径の長さは一律であり、予め設定されている。仮想粒子は、計算の負荷等を考慮して、シミュレーション対象の粒子よりも大きいものとしてもよい。
【0028】
上述したように、従来は、シミュレーション対象の粒子から構造物までの距離は、非特許文献1に示されるように符号付き距離関数が用いられて求められていた。例えば、符号付き距離関数は、作業領域がセルに(直交格子で)分割された格子点に構造物からの距離を記憶させたものである。
図2(a)に格子点状の距離関数値を基にして生成された構造物100からの等しい距離の位置を線で結んだ等値線図を示す。本実施形態では、
図2(b)に示すように、構造物100の表面(構造物100とそれ以外の部分との境界)の近傍に複数の仮想粒子110を設定する。
【0029】
具体的には、仮想領域設定部13は、まず、構造物初期情報によって初期位置及び形状が示される構造物100についての符号付き距離関数を算出する。この算出は、非特許文献2に記載されているような従来の方法を用いて行えばよい。仮想領域設定部13は、算出した符号付き距離関数に基づいて、作業領域内の構造物100からの近傍の位置を検出する。構造物からの近傍は、
図2(b)に示すように、構造物の外側、表面及び内側の領域を含む。仮想領域設定部13は、当該近傍の領域に、互いに接触するように複数の仮想粒子110を設定する。例えば、作業領域が三次元である場合には、仮想領域設定部13は、当該領域内において単純立方格子又は面心立方格子の格子点を設定し、当該格子点に仮想粒子110を設定(配置)する。なお、仮想粒子の設定には、構造物100からの距離が分かればよいので必ずしも符号付き距離関数を用いる必要はなく、任意の方法で行われてもよい。
【0030】
仮想粒子110を設定する構造物100の表面の部分は、シミュレーション対象の粒子が接触する(相互作用する)可能性がある部分である。構造物100の表面全体に渡って粒子が接触する可能性がある場合には、
図2(b)に示すように、構造物100の表面全体に渡って表面の近傍に仮想粒子110を設定する。接触する可能性がない場所が予め分かっている場合には、その部分の近傍には仮想粒子110を設定しなくてもよい。
【0031】
仮想領域設定部13は、構造物100の表面の法線方向においては、所定の距離(所定の厚み)の範囲を構造物からの近傍とする。例えば、
図3に示すように、構造物100の表面から外側へ距離d離れた位置をその距離の中心として、そこから外側及び内側(
図3における上下方向)へそれぞれ距離H分の領域を構造物100の近傍の領域とする。距離dは、構造物100と、シミュレーション対象の粒子101とが相互作用し始める、構造物100の表面と粒子101の中心との間の距離である。なお、シミュレーション対象の粒子101の大きさが一律でない等、相互作用し始める距離が粒子101毎に一律でない場合には、例えば、
図3におけるd−Hについてはそれらの最小値、d+Hについてはそれらの最大値を用いることとしてもよい。
【0032】
相互作用が接触である場合、距離dは、粒子101の半径である。距離Hは、粒子101から構造物100までの距離を算出するために用いる仮想粒子110を特定するための距離である(詳細には後述する)。距離Hは、予め設定されている。上記の通り、仮想領域設定部13は、距離Hに応じた範囲の構造物100の表面の近傍に複数の仮想粒子110を設定することとしてもよい。なお、距離dが距離Hに比べて大きい場合、構造物100の表面及び内側には、仮想粒子110が設定されない場合もある。また、仮想粒子110が設定される領域(法線方向の距離、厚み)は、上記のように設定(算出)される必要はなく、予め設定されていてもよい。
【0033】
後述するように、構造物100と、設定された仮想粒子110とは、シミュレーションの間中、位置関係が固定される。
【0034】
仮想領域設定部13は、設定した各仮想粒子110について、当該仮想粒子110から(配置された表面に係る)構造物100までの距離、例えば、仮想粒子110の中心の位置から構造物100の表面までの距離を算出する。この算出には、従来の符号付き距離関数を用いた内挿補間による方法等の任意の方法を用いることができる。なお、仮想粒子110から構造物100までの距離の算出は、仮想粒子110の配置とあわせて行われてもよい。設定された仮想粒子110は、仮想粒子110毎に一意となる番号を付与する等して、一意に特定できるようにしておく。仮想領域設定部13は、設定した仮想粒子110の位置及び上記の距離を示す情報をシミュレーション情報保持部11に格納して保持させる。
【0035】
仮想領域設定部13は、仮想粒子110の距離の算出の際に、構造物100の表面に対する法線ベクトルを算出して、距離とあわせて対応付けておいてもよい。法線ベクトルの情報は、後述する内挿補間の処理において用いられ得る。また、仮想粒子110には、ヤング率等の機械的物性を対応付けておき、後述する処理に用いることもできる。
【0036】
上記の構造物初期情報取得部12及び仮想領域設定部13による処理は、シミュレーションの各時間ステップに係る演算の前に行われる。以降の機能部は、シミュレーションの各時間ステップに係る演算のための構成である。
【0037】
位置情報取得部14は、シミュレーション対象となる粒子101の位置を示す位置情報を取得する位置情報取得手段である。具体的には、位置情報取得部14は、シミュレーション情報保持部11に保持された各粒子101の現時間ステップの粒子情報を、粒子101の位置情報として取得する。位置情報取得部14は、取得した粒子101の粒子情報を仮想領域特定部15に入力する。
【0038】
位置情報取得部14は、仮想粒子110の位置を示す位置情報も取得する。位置情報取得部14は、シミュレーション情報保持部11に保持された各粒子101の現時間ステップの位置を示す情報を取得する。位置情報取得部14は、取得した仮想粒子110の位置情報を仮想領域特定部15に出力する。
【0039】
仮想領域特定部15は、位置情報取得部14によって取得された位置情報によって示される粒子101の位置から、予め設定した距離H内の仮想粒子110を特定する仮想領域特定手段である。ここで特定された仮想粒子110は、粒子101から構造物100までの距離を内挿補間によって算出するために用いられる。即ち、距離Hは、内挿補間を行う範囲(補間範囲)を示す距離であり、内挿補間によって適切に粒子101から構造物100までの距離を算出できるような値が予め設定される。具体的には、距離Hは、仮想粒子110が単純立方格子状に設定される場合には、H>D√nを満たすように、仮想粒子110が面心立方格子状に設定される場合には、H>Dを満たすようにされるのがよい。なお、上記の関係式で、Dは
図3に示すように仮想粒子110の直径であり、nは作業領域の次元数である。
【0040】
図4に示すように、仮想領域特定部15は、粒子101毎に、位置情報取得部14から入力した情報によって示される粒子101(粒子i)の位置(粒子101の中心の位置)と各仮想粒子110(粒子j)の位置(仮想粒子110の中心の位置)との間の距離P
ijを算出する。仮想領域特定部15は、算出した距離P
ijが距離H以内であるか否かを判断する。仮想領域特定部15は、当該判断に基づき、粒子101毎に、粒子101からの距離が距離H以内である仮想粒子110を特定する。
図4に示す例では、4つの仮想粒子110aが特定される。仮想領域特定部15は、粒子101毎に特定された仮想粒子110を示す情報を粒子距離算出部16に出力する。
【0041】
なお、距離H内の仮想粒子110の特定は、従来の粒子シミュレーションにおける粒子間の接触判定(粒子間距離が閾値以内かの判定)の方法を利用して、効率的に行うこととしてもよい。例えば、特開2015−115567号公報(特許文献1)及び特開2010−238030号公報(特許文献2)に記載されたような、粒子101及び仮想粒子110が位置するセルに基づいて、粒子101と仮想粒子110とのペアを設定し、当該ペアについて距離の判断を行う方法をとってもよい。
【0042】
粒子距離算出部16は、仮想領域特定部15によって特定された仮想粒子110について、仮想領域設定部13によって算出された距離に基づいて、粒子101から構造物100までの距離(最近接距離)を算出する粒子距離算出手段である。粒子距離算出部16は、シミュレーション情報保持部11に保持された、粒子101毎に特定された仮想粒子110についての構造物100までの距離を示す情報を取得する。粒子距離算出部16は、取得した情報によって示される距離に基づいて、粒子101から構造物100までの距離(
図4に示す粒子101(粒子i)の中心の位置から構造物100の表面までの距離dis
iを算出する。この算出は、例えば、非特許文献1に示される従来の内挿補間によって行われてもよいし、その他の任意の方法で行うこととしてもよい。例えば、SPH等で用いられるカーネル近似も用いることができる。
【0043】
特定された仮想粒子110がない、あるいは、特定された仮想粒子110が内挿補間を行うのに不十分な数である(例えば、予め設定した閾値以下である)場合には、当該粒子101については、構造物100までの距離が少なくとも相互作用が発生する距離にはなっていないとして、構造物100までの距離を算出しない。この場合、当該距離を用いた処理も行われない。粒子距離算出部16は、粒子101毎に算出した構造物100までの距離を示す情報を相互作用力算出部17に出力する。
【0044】
また、粒子距離算出部16は、通常、上記の距離算出の際に粒子101から構造物100の表面に対する法線ベクトルを算出する。法線ベクトルによって、相互作用力算出部17によって算出される相互作用力をベクトル量で表すことができる。当該ベクトル量が表す方向は、相互作用力が作用する方向を表す。法線ベクトルは、粒子101毎に特定された仮想粒子110についての構造物100までの距離(距離関数データ)に対して空間勾配を計算することで求めることができる。なお、空間勾配からの法線ベクトルの算出は、例えば、非特許文献1に示される従来の方法によって行われてもよい。あるいは、仮想粒子110について予め法線ベクトルを算出している場合には、その情報を内挿補間して算出することとしてもよい。その他の任意の方法で行うこととしてもよい。例えば、SPH等で用いられるカーネル近似による勾配算出法も用いることができる。粒子距離算出部16は、算出した法線ベクトルを示す情報を、距離を示す情報とあわせて相互作用力算出部17に出力する。
【0045】
相互作用力算出部17は、粒子距離算出部16によって算出された距離に基づいて、粒子101と構造物100との間の相互作用力を算出する相互作用力算出手段である。相互作用力算出部17は、粒子101から構造物100までの距離が、予め設定された閾値よりも小さいか否かを判断することで粒子101と構造物100との間で相互作用が発生し得るか否かの判定(相互作用判定)を行う。相互作用力算出部17は、当該距離が閾値よりも小さいと判断した場合、粒子101と構造物100との間で相互作用が発生すると判定する。相互作用力算出部17は、当該距離が閾値よりも小さくないと判断した場合、粒子101と構造物100との間で相互作用が発生しないと判定する。
【0046】
例えば、相互作用が接触である場合、相互作用力算出部17は、当該距離が閾値である粒子101の半径dよりも小さいか否かを判断し、当該距離が閾値よりも小さいと判断した場合、粒子101と構造物100とが接触しており、それらの間に接触力が発生すると判定する。相互作用力の計算は、従来の粒子シミュレーションと同様の方法やその他の任意の方法で行うことができる。相互作用力算出部17は、通常、粒子距離算出部16によって算出された粒子101から構造物100の表面に対する法線ベクトルに基づいて、相互作用力をベクトル量として算出する。
【0047】
相互作用力算出部17は、粒子101と構造物100との間の相互作用力だけでなく、粒子101同士の相互作用力、及び構造物100同士の相互作用力を算出してもよい。粒子101同士の相互作用力の計算は、特許文献1及び2に記載された従来の粒子シミュレーションと同様の方法やその他の任意の方法で行うことができる。構造物100同士の相互作用力の計算も、従来のシミュレーションと同様の方法やその他の任意の方法で行うことができる。なお、相互作用力の算出には、シミュレーション情報保持部11に保持されている、相互作用力の計算に必要なパラメータを取得し、相互作用力の計算に用いてもよい。
【0048】
相互作用力算出部17は、上記のように算出した個々の粒子101と構造物100との間の相互作用力、粒子101同士の相互作用力、及び構造物100同士の相互作用力から、各粒子101及び各構造物100についての相互作用力の総和を算出する。相互作用力算出部17は、算出した各粒子101及び各構造物100の相互作用力の総和を示す情報を時間遷移部18に出力する。
【0049】
時間遷移部18は、相互作用力算出部17によって算出された相互作用力に基づいて、次の時間ステップの粒子101及び構造物100の位置及び速度を算出すると共に、当該構造物100との位置関係を維持したまま仮想粒子110を移動させる時間遷移手段である。具体的には、時間遷移部18は、粒子101及び構造物100毎にシミュレーション情報保持部11に保持された粒子情報及び構造物情報を取得し、粒子情報及び構造物情報に示される現時間ステップの座標及び速度と相互作用力の総和とから、次の時間ステップの座標及び速度を算出する。この算出は、例えば、従来のシミュレーションと同様の方法やその他の任意の方法で行うことができる。時間遷移部18は、算出した次の時間ステップにおける粒子101及び構造物100の位置及び速度で、粒子101及び構造物100毎にシミュレーション情報保持部11に保持された粒子情報及び構造物情報を更新する。
【0050】
時間遷移部18は、構造物100について次の時間ステップの位置を算出すると、当該構造物100に対して設定された仮想粒子110を、当該構造物100との位置関係を維持したまま(当該構造物100の移動と同様に)移動させる。時間遷移部18は、移動させた仮想粒子110の位置を示す情報で、シミュレーション情報保持部11に保持された仮想粒子110を示す情報を更新する(当該情報を、次の時間ステップの仮想粒子110の位置を示す情報として、シミュレーション情報保持部11に保持させる)。
【0051】
なお、構造物100については、相互作用力に基づいた位置及び速度の算出を行わなくてもよい。例えば、構造物100に対する粒子101の影響が極めて小さく、また、構造物100同士の相互作用が生じない場合については、当該算出を行わなくてもよい。この場合、例えば、構造物100が予めどのように動くかを示す情報が、シミュレーション情報保持部11に記憶されており、時間遷移部18は、それに応じて構造物100の移動(次の時間ステップの位置及び速度)を算出することとしてもよい。また、時間遷移部18は、構造物100の当該移動に応じて(予め決まっている構造物100の表面の軌跡に応じて)、仮想粒子110を移動させる。
【0052】
時間遷移部18によって、全ての粒子101、構造物100及び仮想粒子110についての更新が行われると、次の時間ステップの処理が行われる。
【0053】
粒子シミュレーション装置10では、1つの時間ステップでの演算が完了する毎に、シミュレーションの終了条件を満たしているか否かが判断される。例えば、予め設定した回数(時間ステップ)の演算が終了した場合、終了条件を満たしていると判断される。終了条件を満たしていると判断された場合には、粒子シミュレーション装置10では、シミュレーションが終了される。この場合、例えば、表示装置や他の装置への演算結果の出力等が行われる。終了条件を満たしていないと判断された場合には、次の時間ステップの演算が繰り返し行われる。以上が、粒子シミュレーション装置10の構成である。
【0054】
引き続いて、
図5のフローチャートを用いて、本実施形態に係る粒子シミュレーション装置10の動作方法である、粒子シミュレーション装置10で実行される処理(粒子シミュレーション方法)を説明する。本処理は、例えば、粒子シミュレーション装置10のユーザが、粒子シミュレーション装置10に対してシミュレーションを開始する操作を行うことで開始される。
【0055】
粒子シミュレーション装置10では、構造物初期情報取得部12によって、シミュレーション情報保持部11に保持されている構造物100の初期位置及び形状を示す構造物初期情報が取得される(S01、構造物初期情報取得ステップ)。構造物100の形状の例を
図6(a)に示す。取得された構造物初期情報は、構造物初期情報取得部12から仮想領域設定部13に出力される。
【0056】
続いて、仮想領域設定部13によって、構造物初期情報に係る構造物100の符号付き距離関数が算出される(S02、仮想領域設定ステップ)。続いて、仮想領域設定部13によって、当該符号付き距離関数が用いられて、複数の仮想粒子110が構造物100の表面の近傍に配置(設定)される(S03、仮想領域設定ステップ)。構造物100の表面の近傍に配置された仮想粒子110の例を
図6(b)に示す。続いて、仮想領域設定部13によって、仮想粒子110について、当該仮想粒子110から構造物100までの距離が算出される(S04、仮想領域設定ステップ)。仮想粒子110の位置及び距離を示す情報は、シミュレーション情報保持部11に保持される。以上がシミュレーションの各時間ステップに係る演算の前に行われる処理である。
【0057】
引き続いて、位置情報取得部14によって、シミュレーション情報保持部11に保持されている、シミュレーション対象となる粒子101及び仮想粒子110の位置を示す位置情報が取得される(S05、位置情報取得ステップ)。取得された位置情報は、位置情報取得部14から仮想領域特定部15に出力される。
【0058】
続いて、仮想領域特定部15によって、位置情報によって示される粒子101の位置から距離H内の仮想粒子110が特定される(S06、仮想領域特定ステップ)。粒子101毎に特定された仮想粒子110を示す情報は、仮想領域特定部15から粒子距離算出部16に出力される。
【0059】
続いて、粒子距離算出部16によって、粒子101毎に特定された仮想粒子110についての構造物100までの距離に基づいて、粒子101から構造物100までの距離が算出される(S07、粒子距離算出ステップ)。この算出は、上述したように例えば、内挿補間によって行われる。粒子101毎に算出された構造物100までの距離を示す情報は、粒子距離算出部16から相互作用力算出部17に出力される。
【0060】
続いて、相互作用力算出部17によって、粒子101毎に算出された構造物100までの距離に基づいて、粒子101と構造物100との間の相互作用力が算出される(S08、相互作用力算出ステップ)。この際、粒子101同士の相互作用力、及び構造物100同士の相互作用力が算出されてもよい。続いて、相互作用力算出部17によって、算出された相互作用力から、各粒子101及び各構造物100についての相互作用力の総和が算出される。算出された各粒子101及び各構造物100の相互作用力の総和を示す情報は、相互作用力算出部17から時間遷移部18に出力される。
【0061】
続いて、時間遷移部18によって、算出された相互作用力に基づいて、次の時間ステップの粒子101及び構造物100の位置及び速度が算出されると共に、当該構造物100との位置関係を維持したまま仮想粒子110が移動される(S09、時間遷移ステップ)。上記の演算に基づき、シミュレーション情報保持部11に保持された粒子情報、構造物情報、仮想粒子110の位置を示す情報が次の時間ステップの情報に更新される。
【0062】
続いて、粒子シミュレーション装置10では、シミュレーションの終了条件を満たしているか否かが判断される(S10)。終了条件を満たしていると判断された場合(S10のYES)には、処理(シミュレーション)が終了される。終了条件を満たしていないと判断された場合(S10のNO)には、時間ステップが一つ進められて、次の時間ステップでの上述した処理(S05〜S10)が行われる。
【0063】
図6(c)〜
図6(f)に各時間ステップにおける状態の例を示す。
図6(c)から
図6(f)に進むに従って、時間ステップが進んでいる。このシミュレーションでは、容器の内側に粉体を撹拌するための回転する構造物(撹拌翼)が2つ設けられており、粉体が上部から容器の中に落ちて構造物で撹拌される。なお、それぞれの構造物には、それぞれ別の撹拌速度を与えることができる。以上が、本実施形態に係る粒子シミュレーション装置10で実行される処理である。
【0064】
上述したように本実施形態によれば、構造物100の表面の近傍に設定された複数の仮想粒子110について算出された距離に基づいて、粒子101と構造物100との間の距離計算が行われる。シミュレーションにおいて、当該仮想粒子110は、構造物100との位置関係を維持したまま移動される。従って、仮想粒子110についての距離(距離関数)を計算しなおす必要がない。
【0065】
また、作業空間内全域に渡る格子点での従来の距離関数とは異なり、構造物100の近傍に設定された仮想粒子110に対してのみ、距離が計算されていればよい。また、個々の仮想粒子110は、構造物100毎に設定され、構造物100毎の動きに伴って独立に動かすことができる。即ち、構造物100が複数存在する場合、即ち、互いに異なった移動軸や回転軸が複数存在する場合であっても、適用することができる。
【0066】
また、距離に対応付けられた仮想粒子110が動くため、移流計算による数値拡散も生じず、距離関数の初期化処理は必要ない。また、仮想粒子110を動かすだけであるので、移流計算に比べて非常に簡便で計算負荷も少ない。即ち、本実施形態によれば、粒子101と構造物100との間の距離計算を少ない計算負荷で正確に行い、これにより、粒子101と構造物100とのシミュレーションを適切に行うことができる。
【0067】
また、上記の通り、構造物100の近傍に設定された仮想粒子110に対してのみ、距離が計算されて記憶されていればよいため、従来の距離関数と比べて記憶すべきデータ量(メモリ使用量)も圧倒的に削減することができる。
【0068】
メモリ使用量の例を以下に示す。作業空間のサイズを160D×200D×100D、補間範囲Hを3.5d、仮想粒子110の直径(格子サイズ)をD、相互作用距離dを0.5Dとした場合の例を示す。本実施形態による方法では、距離計算に必要な粒子数は85,336であり、総メモリ使用量は2,730,752(Byte)(85,336×4×8:一粒子当り8byteの変数が4個(x,y,z座標と距離関数値)必要)である。従来の方法(粒子の座標系を動かす場合)では、距離計算に必要な格子数は3,200,000であり、総メモリ使用量は102,400,000(Byte)(3,200,000×4×8:一格子当り8byteの変数が4個(x,y,z座標と距離関数値)必要)である。更に、距離関数の移流計算を行う場合、例えば、CIP法(Constrained Interpolation Profile Scheme)を用いるとすると、メモリ使用量は102,400,000+3,200,000×7×8=281,600,000(Byte)(一格子当り8byteの変数が7個必要)である。また、距離関数の時系列データを使う場合、メモリ使用量は102,400,000+3,200,000×8=128,000,000(Byte)(時間補間を行うため、2時刻の距離関数データが必要で、距離関数値が一格子当り8Byteであり、全部で3,200,000×8Byte追加で必要)である。
【0069】
上記の例のように本実施形態では、メモリ使用量を従来の約1/40〜1/100に削減することができる。
【0070】
また、本実施形態のように、仮想粒子110を設定(配置)する範囲を、粒子101から構造物100までの距離を算出するのに用いる仮想粒子110を特定する範囲(補間範囲)に応じたものとしてもよい。この構成によれば、仮想粒子110を必要な分だけ設定することができ、更に効率的に粒子101と構造物100とのシミュレーションを行うことができる。
【0071】
また、本実施形態のように、構造物100が、粒子101からの相互作用力を受けることとしてもよい。この構成によれば、構造物100に対する粒子101の影響もシミュレーションすることができるため、より正確な粒子101と構造物100とのシミュレーションを行うことができる。
【0072】
また、本実施形態のように、仮想領域を仮想粒子110とすることとしてもよい。この構成によれば、仮想領域を適切かつ容易に扱うことができる。例えば、上述したように、従来の粒子ベースのシミュレーションの手法を容易に適用することができ、本実施形態による手法を高速化することができる。即ち、適切かつ容易に粒子101と構造物100とのシミュレーションを行うことができる。但し、必ずしも仮想領域を粒子状の領域とする必要はなく、任意の形状の領域としてもよい。
【0073】
なお、上述した実施形態では、作業領域は三次元の空間としたが、三次元以外の空間、例えば、二次元の空間であってもよい。
【0074】
引き続いて、上述した一連の粒子シミュレーション装置10による処理をコンピュータに実行させるための粒子シミュレーションプログラムを説明する。
図7に示すように、粒子シミュレーションプログラム30は、コンピュータに挿入されてアクセスされる、あるいはコンピュータが備える記録媒体20に形成されたプログラム格納領域21内に格納される。
【0075】
粒子シミュレーションプログラム30は、シミュレーション情報保持モジュール31と、構造物初期情報取得モジュール32と、仮想領域設定モジュール33と、位置情報取得モジュール34と、仮想領域特定モジュール35と、粒子距離算出モジュール36と、相互作用力算出モジュール37と、時間遷移モジュール38とを備えて構成される。シミュレーション情報保持モジュール31と、構造物初期情報取得モジュール32と、仮想領域設定モジュール33と、位置情報取得モジュール34と、仮想領域特定モジュール35と、粒子距離算出モジュール36と、相互作用力算出モジュール37と、時間遷移モジュール38とを実行させることにより実現される機能は、上述した粒子シミュレーション装置10のシミュレーション情報保持部11と、構造物初期情報取得部12と、仮想領域設定部13と、位置情報取得部14と、仮想領域特定部15と、粒子距離算出部16と、相互作用力算出部17と、時間遷移部18とそれぞれ同様である。
【0076】
なお、粒子シミュレーションプログラム30は、その一部又は全部が、通信回線等の伝送媒体を介して伝送され、他の機器により受信されて記録(インストールを含む)される構成としてもよい。また、粒子シミュレーションプログラム30の各モジュールは、1つのコンピュータでなく、複数のコンピュータのいずれかにインストールされてもよい。その場合、当該複数のコンピュータによるコンピュータシステムよって上述した一連の粒子シミュレーションプログラム30の処理が行われる。