粒子挙動解析方法、粒子挙動解析装置、及び解析プログラム
【課題】密集状態にある多数の粒子の挙動を、その形状も考慮して高速に計算する。
【解決手段】密集状態にある多数の粒子の挙動解析において、粒子iと粒子jの間の接触を判定する場合、粒子iから粒子jに向かう向きの単位ベクトルと粒子i、jの重なりを最小とする向きの単位ベクトルを定義し、両単位ベクトルと2粒子の各頂点の位置ベクトルの内積から接触可能頂点を絞り込むことで、接触判定を行う辺、面の組み合わせを大幅に減らす。
【解決手段】密集状態にある多数の粒子の挙動解析において、粒子iと粒子jの間の接触を判定する場合、粒子iから粒子jに向かう向きの単位ベクトルと粒子i、jの重なりを最小とする向きの単位ベクトルを定義し、両単位ベクトルと2粒子の各頂点の位置ベクトルの内積から接触可能頂点を絞り込むことで、接触判定を行う辺、面の組み合わせを大幅に減らす。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、密集状態にある多数の粒子について、その形状を考慮して挙動を解析する技術に関するものであり、特に挙動解析計算における粒子同士の接触判定に関する。
【背景技術】
【0002】
粉体や粒体などの粒子を取り扱う分野では、個々の粒子の挙動を知ることが重要である。従来これらの分野では、実験と観察から粒子の挙動を把握することが多かった。しかし近年、計算機内でその運動を再現させ、その挙動を把握する、いわゆるシミュレーション技術の適用が活発に行われている。正確な粒子挙動のシミュレーションを行うには、粒子のもつ形状、機械的特性等の情報をできるだけ詳細に計算モデルに反映させ、それらの因子を考慮して解を求めることが重要である。また、土木分野における砕石、砂利等の比較的大きな物体も「粒子」と考えることにより、上記シミュレーション技術をこれらの物体の挙動を計算する場合へも適用可能である。
【0003】
一方、このような粒子を扱う装置の1つに、プリンタ、複写機、ファクシミリ等の電子写真技術を用いた画像形成装置がある。これらの装置では、直径数ミクロンの粉体粒子からなるトナーを用いて、帯電、露光、現像、転写、定着、クリーニングという6つのプロセスを経て、紙上に画像を形成する。このような画像形成装置では、トナー粒子の形状が、作成される画像に大きな影響を与えることがわかっている。そこでこのような画像形成装置の開発においても、シミュレーション技術を用いて、密集状態にある個々のトナー粒子の挙動を求める試みが活発に行われ、近年の傾向として特にトナー粒子の形状を考慮することが求められている。
【0004】
粒子が密集した状態での各粒子の挙動をシミュレーションする代表的な方法として個別要素法(DEM)がある。個別要素法の技術は非特許文献1に詳細に記載されているが、個々の粒子を球形で表現し、それらの接触に際してはそのめり込み量からヘルツの式とミンドリンの式を用いることで粒子の持つ機械特性を考慮した接触抗力を求める。そしてニュートンの運動方程式(並進方向)とオイラーの運動方程式(回転方向)を用いて、その接触抗力をもとに個々の粒子の時間進展に伴う運動を求めるものである。
【0005】
個別要素法の特徴は個々の粒子を要素と捉え、それらが接触する部分にバネ、ダンパー、スライダを仮定して、その接触力を求め、運動方程式を解くところにある。この考え方を球形以外の形状をもつ粒子の挙動計算に適用したものとして、非特許文献2、非特許文献3がある。これらの文献では粒子の形状を多面体で表現し上述の個別要素法を用いてその挙動を計算している。そして、粒子の接触の検出に関して、Common-planeと呼ばれる面を想定して、接触の有無、接触力の作用点、接触力の作用方向、及び接触力の大きさを決定する。しかしながら、同文献の方法ではCommon-planeと粒子の接触断面積を求めることが必要となるが、断面積を求めるには粒子の各頂点、辺、面とCommon-planeとの接触状態を調べなければならないため、長い計算時間を要する。また本発明者らが同文献の方法を実際に試行しようとしたところ、同文献は接触力を作用させる位置についての情報開示が乏しく、再現することが困難であることが分かった。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】粉体工学会編、粉体シミュレーション入門(1998)
【非特許文献2】P.A. Cundall: Formulation of a three-dimensional distinct element model - Part I. a scheme to detect and represent contacts in a system composed of many polyhedral blocks, Int. J. Rock Mech. Min. Sci. & Geomech. Abstr., 25(3), pp.107-116 (1988)
【非特許文献3】R. Hart, P.A. Cundall, and J. Lemos: Formulation of a three-dimensional distinct element model - Part II. mechanical calculations for motion and interaction of a system composed of many polyhedral blocks, Int. J. Rock Mech. Min. Sci. & Geomech. Abstr., 25(3), pp.117-125 (1988)
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の目的は、密集状態にある多数の粒子の挙動を、その形状も考慮して高速に計算することにある。また本発明の目的は、密集状態にある多数の粒子の挙動を計算するに際し、粒子同士の接触判定を高速に行うことにある。
【課題を解決するための手段】
【0008】
上記課題を解決するために、本発明は以下の構成を採用する。
本発明の第一態様は、情報処理装置により、密集状態にある複数の粒子の運動を計算する方法であって、情報処理装置が、複数の粒子それぞれの形状を多面体により定義するデータを取得する取得ステップと、情報処理装置が、前記複数の粒子それぞれの位置情報に基づいて、各粒子が他の物体に接触しているか否かを判定する接触判定ステップと、情報処理装置が、前記接触判定ステップで接触していると判定された他の物体から各粒子が受ける力を計算し、その力による各粒子の運動を計算する計算ステップと、情報処理装置が、前記計算ステップで計算された各粒子の運動を出力する出力ステップと、を含み、前記接触判定ステップにおいて、粒子iが粒子jに接触しているか否かを判定する場合に、粒子iの中心と粒子jの中心を結ぶ直線に交わり且つ粒子jに接する第1の平面よりも粒子jの中心側の空間に位置する粒子iの辺、及び、前記第1の平面に平行で且つ粒子iに接する第2の平面よりも粒子iの中心側の空間に位置する粒子jの面、を抽出し、前記抽出した粒子iの辺と粒子jの面とのあいだで接触判定を行うことを特徴とする粒子挙動解析方法である。
【0009】
本発明の第二態様は、情報処理装置により、密集状態にある複数の粒子の運動を計算する方法であって、情報処理装置が、複数の粒子それぞれの形状を多面体により定義するデータを取得する取得ステップと、情報処理装置が、前記複数の粒子それぞれの位置情報に基づいて、各粒子が他の物体に接触しているか否かを判定する接触判定ステップと、情報処理装置が、前記接触判定ステップで接触していると判定された他の物体から各粒子が受ける力を計算し、その力による各粒子の運動を計算する計算ステップと、情報処理装置が、前記計算ステップで計算された各粒子の運動を出力する出力ステップと、を含み、前記接触判定ステップにおいて、粒子iが粒子jに接触しているか否かを判定する場合に、粒子iの中心と粒子jの中心を結ぶ直線に交わり且つ粒子jに接する第1の平面よりも粒子jの中心側であって、且つ、前記第1の平面とは異なる角度で前記直線に交わり且つ粒子jに接する第3の平面よりも粒子jの中心側の空間に位置する粒子iの辺、及び、前記第1の平面に平行で且つ粒子iに接する第2の平面よりも粒子iの中心側であって、且つ、前記第3の平面に平行で且つ粒子iに接する第4の平面よりも粒子iの中心側の空間に位置する粒子jの面、を抽出し、前記抽出した粒子iの辺と粒子jの面とのあいだで接触判定を行うことを特徴とする粒子挙動解析方法である。
【0010】
本発明の第三態様は、密集状態にある複数の粒子の運動を計算する粒子挙動解析装置であって、複数の粒子それぞれの形状を多面体により定義するデータを取得する取得部と、前記複数の粒子それぞれの位置情報に基づいて、各粒子が他の物体に接触しているか否かを判定する接触判定部と、前記接触判定部で接触していると判定された他の物体から各粒子が受ける力を計算し、その力による各粒子の運動を計算する計算部と、前記計算部で計
算された各粒子の運動を出力する計算結果出力部と、を含み、前記接触判定部は、粒子iが粒子jに接触しているか否かを判定する場合に、粒子iの中心と粒子jの中心を結ぶ直線に交わり且つ粒子jに接する第1の平面よりも粒子jの中心側の空間に位置する粒子iの辺、及び、前記第1の平面に平行で且つ粒子iに接する第2の平面よりも粒子iの中心側の空間に位置する粒子jの面、を抽出し、前記抽出した粒子iの辺と粒子jの面とのあいだで接触判定を行うことを特徴とする粒子挙動解析装置である。
【0011】
本発明の第四態様は、密集状態にある複数の粒子の運動を計算する粒子挙動解析装置であって、複数の粒子それぞれの形状を多面体により定義するデータを取得する取得部と、前記複数の粒子それぞれの位置情報に基づいて、各粒子が他の物体に接触しているか否かを判定する接触判定部と、前記接触判定部で接触していると判定された他の物体から各粒子が受ける力を計算し、その力による各粒子の運動を計算する計算部と、前記計算部で計算された各粒子の運動を出力する計算結果出力部と、を含み、前記接触判定部は、粒子iが粒子jに接触しているか否かを判定する場合に、粒子iの中心と粒子jの中心を結ぶ直線に交わり且つ粒子jに接する第1の平面よりも粒子jの中心側であって、且つ、前記第1の平面とは異なる角度で前記直線に交わり且つ粒子jに接する第3の平面よりも粒子jの中心側の空間に位置する粒子iの辺、及び、前記第1の平面に平行で且つ粒子iに接する第2の平面よりも粒子iの中心側であって、且つ、前記第3の平面に平行で且つ粒子iに接する第4の平面よりも粒子iの中心側の空間に位置する粒子jの面、を抽出し、前記抽出した粒子iの辺と粒子jの面とのあいだで接触判定を行うことを特徴とする粒子挙動解析装置である。
【0012】
本発明の第五態様は、上述した粒子挙動解析方法の各ステップを情報処理装置(コンピュータ)に実行させる解析プログラムである。
【発明の効果】
【0013】
本発明によれば、粒子同士の接触判定に要する時間を短縮でき、密集状態にある多数の粒子の挙動を、その形状も考慮して高速に計算することができる。
【図面の簡単な説明】
【0014】
【図1】粒子挙動計算の力学モデルを説明する図。
【図2】解析装置のハードウエア構成を示す図。
【図3】解析装置の機能構成を示す図。
【図4】接触パターンと各パターンにおける粒子めり込み量を示す図。
【図5】辺と面の交差の有無の判定方法を示す図。
【図6】接触可能頂点の絞り込み方法を示す図。
【図7】2ベクトルによる接触可能頂点の絞り込み方法を示す図。
【図8】接触可能頂点を持たない粒子との接触を示す図。
【図9】重なり最小ベクトルを求める方法を示す図。
【図10】接触判定部の処理フローを示す図。
【図11】実施例の計算条件を示す図。
【図12】実施例の計算結果を示す図。
【図13】中心結線ベクトルを用いた高速化の効果を示す図。
【図14】中心結線ベクトルと重なり最小ベクトルを用いた高速化の効果を示す図。
【発明を実施するための形態】
【0015】
本発明の実施形態は、密集状態にある多数の粒子の挙動をコンピュータ・シミュレーションにより計算するための粒子挙動解析方法及び装置を提供するものである。本実施形態に係る粒子挙動解析方法の特徴の一つは、多数の多角形から構成される多面体(ポリゴンモデル)により各粒子の形状を定義した点である。これにより任意の粒子形状を表現でき
るようになり、多様なケースのシミュレーションを精度良く行うことが可能になる。本方法のもう一つの特徴は、粒子同士の接触判定を行う際に、全ての頂点、辺、面について網羅的に接触判定計算を行うのではなく、予め接触可能性のある辺及び面を特定し、それらのあいだについてのみ接触判定を行う点である。これにより、接触判定に要する時間を短縮でき、粒子の挙動計算の高速化を図ることができる。以下、本実施形態の具体的な構成及び特徴について図に基づき詳しく説明する。
【0016】
(粒子挙動計算のモデル)
図1は、本実施形態における粒子挙動計算の力学モデルを説明するものであり、異形粒子(非球形粒子)が他の物体と接触した際に働く接触力を説明する図である。このモデルでは、粒子が他の物体と接触した際に発生するめり込みを、その接触面に対して法線方向と接線方向に分解して考える。粒子には、それぞれのめり込み量に対してスプリングで押し返す力が働く。また各スプリングと並列にダンパーを設定する。これはめり込み速度に比例して働く力であり、運動を減衰させるものである。またすべりを考慮するためのスライダを設定している。このように、スプリング、ダンパー、スライダを設定して衝突を考えることは従来の個別要素法と同じである。
【0017】
(解析装置のハードウエア構成)
図2は、本実施形態における解析装置が動作する計算装置を示すブロック図である。情報処理装置(コンピュータ)10は、各種判断及び処理を行う中央処理装置(CPU)11と、処理プログラム及び固定データを格納するROM12と、処理データを記憶するRAM13と、入出力回路(I/O)14とから構成されている。また必要に応じて、情報処理装置10には、I/O14を介して記憶装置、入力装置、表示装置、他のコンピュータなどが接続される。I/O14は、これら外部装置と情報処理装置10との間でデータをやり取りするための回路である。この情報処理装置10には、入力データ15がI/O14を介して入力される。計算結果は、I/O14を介して出力データ16として出力される。
【0018】
(解析装置の機能)
図3は、粒子挙動解析を行う解析プログラムによって実現される機能の構成を示すブロック図である。解析プログラムは、ROM12や記憶装置などのコンピュータ読み取り可能な記録媒体に記憶されており、必要に応じて、CPU11によって読み込まれ実行されるソフトウエアである。この解析プログラムは、主な機能(モジュール)として、入力データ読込部(取得部)B110、接触判定部B120、粒子受力計算部B130、粒子運動計算部B140、計算結果出力部B150を備えている。全体制御部B100は、これらのモジュールの処理の順番やデータの引渡しなどの全体制御を担っている。
【0019】
入力データ読込部B110は、粒子形状データ、壁形状データ、及び各種パラメータを読み込んでRAM13に格納する。粒子形状データとは、粒子の表面を複数の多角形(ポリゴン)で表現したものである。ここで多角形としてはその頂点が一平面上にあることが望ましく、3角形を用いるのが最も単純である。また粒子は凸形状(凸多面体)に限定すると、他の粒子や壁との接触状態の判定が簡便になる。壁形状データも同様であり、壁の表面を複数の多角形で表現したものである。粒子形状データ、壁形状データともに、多角形の頂点座標と、各多角形を構成する頂点の番号とで構成されるデータである。各種パラメータには、粒子と壁の機械特性(ヤング率、ポアソン比、減衰係数、摩擦係数、比重)、粒子に働く力(重力、付着力、電磁力、空気の粘性特性等)、及び計算条件としての計算刻み時間(Δt)、計算終了時刻がある。なお、壁とは、粒子が移動可能な空間を形成する(規定する)境界面である。
【0020】
接触判定部B120は、粒子の位置情報(各頂点の座標、粒子の中心座標)に基づいて
、粒子が他の物体(周囲の粒子または壁)と接触しているかどうか、またどのように接触しているかを判定する。粒子受力計算部B130は、各粒子が他の物体から受ける力を計算する機能である。粒子は他の粒子または壁と接触している場合に、そのめり込み量に応じて接触抗力を受ける。粒子運動計算部B140は、粒子受力計算部B130で求めた粒子に働く力による、各粒子の刻み時間後の速度と位置を求めるものである。計算結果出力部B150は、得られた各粒子の位置と速度の結果を出力データ16として出力するものである。
【0021】
以下に、接触判定部B120、粒子受力計算部B130、及び粒子運動計算部B140の詳しい内容と計算方法を示す。
【0022】
(接触判定部B120)
まずは、接触判定部B120における粒子同士の接触判定の内容を図4を用いて説明する。図4の上段は4種類の接触パターンを3次元的に示したものであり、下段は各パターンにおける2つの粒子の接触によるめり込みの様子を示すものである。図4において、実線は6面体粒子i、破線は6面体粒子jを示す。i−v0は粒子iを構成する多角形の頂点、i−e0は粒子iを構成する多角形の辺、j−e0とj−e1は粒子jを構成する多角形の辺、j−f0は粒子jを構成する多角形の面、星印は粒子iと粒子jの接触点を示す。また図4の上段における矢印は粒子iが粒子jに衝突する方向を示し、また下段における黒丸は粒子jの辺を示す。粒子が凸形状である場合、粒子iと粒子jの接触は、図4に示す次の(a)〜(d)の4つのパターンのいずれかとなる。なお、図4では、粒子同士の接触判定を例に挙げているが、粒子と壁の接触判定も同じように考えることができる。
【0023】
(a)頂点のめり込み:
粒子iを構成する多角形の頂点が粒子jの1つの面にめり込む場合である。粒子iの頂点が粒子jの内部にあれば、接触していると判定する。図4(a)においては、粒子iの頂点i−v0が粒子jの面j−f0にめり込んでいる。このパターンでは、頂点i−v0を、粒子iの粒子jに対する接触点として考える。
【0024】
(b)辺のめり込み(ケース1):
上記(a)に加えて、めり込んだ頂点を端点に持つ粒子iの辺が粒子jの辺にもめり込む場合である。(a)のめり込んだ頂点を端点に持つ粒子iの辺において、粒子j構成面との交点数が1であり、かつその交点を持つ面が(a)におけるめり込み面でなければ、これに該当する。図4(b)においては、粒子iの頂点i−v0が粒子jの面j−f0にめり込む(上記(a)に該当)とともに、粒子iの辺i−e0が粒子jの辺j−e0にもめり込んでいる。このパターンでは、頂点i−v0に加え、辺j−e0に最も近い辺i−e0上の点も、粒子iの粒子jに対する接触点として考える。
【0025】
(c)辺のめり込み(ケース2):
粒子iの辺が粒子jの1つの辺だけにめり込む場合である。粒子iの辺i−e0において、粒子j構成面との交点数が2であり、その交点を持つ2つの面が共有辺を持ち、かつその共有辺が粒子iの辺に近接していれば、これに該当する。図4(c)においては、粒子iの辺i−e0が粒子jの辺j−e0にめり込んでいる。このパターンでは、辺j−e0に最も近い辺i−e0上の点を、粒子iの粒子jに対する接触点として考える。
【0026】
(d)辺のめり込み(ケース3):
粒子iの辺が粒子jの2つの辺にめり込む場合である。粒子iの辺i−e0において、粒子j構成面との交点数が2であり、(c)ではない場合がこれに該当する。図4(d)においては、粒子iの辺i−e0が粒子jの辺j−e0とj−e1にめり込んでいる。こ
のパターンでは、辺j−e0に最も近い辺i−e0上の点、及び、辺j−e1に最も近い辺i−e0上の点を、粒子iの粒子jに対する接触点として考える。
【0027】
上記の接触判定を行うには、図4(a)の場合には、粒子iの頂点と粒子jの面の位置関係、図4(b)〜(d)においては、粒子iの辺と粒子jの面の交差を調べる必要がある。辺と面のめり込み量の計算を行うための接触判定の仕方を6面体の粒子を例に、図5を用いて説明する。
【0028】
図5の20は粒子jを構成する1つの多角形の面を表し、この法線ベクトルをnとする。21は粒子iを構成する辺の1つi−e0を表している。この辺21の両端の頂点をそれぞれP0(px0,py0,pz0),P1(px1,py1,pz1)とする。また、頂点j−v0,j−v1,j−v2,j−v3を含む平面(無限)と辺21の交差点を点Qとする。このとき、点Qが多角形面20上にあるか否かの判定を行う。
【0029】
まず、粒子iの辺21が粒子jの多角形面20の4つの頂点j−v0,j−v1,j−v2,j−v3を含む平面(無限)を横切っているかどうかを調べる。
【0030】
粒子jの多角形面20上の一つの任意点A0と粒子iの辺21の頂点P0,P1をそれぞれ結び、ベクトルP0A0,P1A0とする。ベクトルP0A0は、点P0から点A0に向かうベクトルであり、ベクトルP1A0は、点P1から点A0に向かうベクトルである。
【0031】
このとき、2つのベクトルP0A0,P1A0と法線ベクトルnの内積L0=P0A0・nとL1=P1A0・nが同じ符号ならば、粒子iの辺21が粒子jの多角形面20の頂点を含む平面(無限)を横切っていないことがわかる。逆に、内積L0とL1の符号が異なる場合は、粒子iの辺21が粒子jの多角形面20の頂点を含む平面(無限)を横切っていることがわかる。
【0032】
次に、粒子iの辺21が粒子jの多角形面20の頂点を含む平面(無限)を横切っている場合、粒子jの多角形面20の頂点を含む平面(無限)と粒子iの辺21との交点Qの座標(qx,qy,qz)を下記式で求める。
【数1】
ここで、rは内分比であり、r=L0/(L0−L1)で求まる。
【0033】
次に、交点Qと頂点j−v0,j−v1,j−v2,j−v3を結ぶ4つのベクトルQv0,Qv1,Qv2,Qv3について、隣のベクトルとの外積を下記式を用いて求め、ベクトルV0,V1,V2,V3を得る。
【数2】
【0034】
ベクトルV0は、ベクトルQv0とQv1の両方に垂直なベクトル、すなわち多角形面20に対し垂直なベクトルとなり、その向きはベクトルQv0とQv1のなす角が0〜πかπ〜2πかで反転する。他のベクトルV1〜V3も同様の性質をもつ。交点Qが多角形面20の内部にある場合は、Qv0とQv1、Qv1とQv2、Qv2とQv3、Qv3とQv0のいずれのなす角も0〜πとなるから、ベクトルV0〜V3の向きは一致する。一方、交点Qが多角形面20の外部にある場合は、なす角が0〜πとなる組と、π〜2πとなる組とがでるため、ベクトルV0〜V3の向きは一致しなくなる。このような性質を利用することで、交点Qが多角形面20の内側に存在するか否か、つまり粒子iの辺21と粒子jの多角形面20とが交差するか否かを判定することができる。
【0035】
ここでは、下記式のように内積M0〜M3を計算し、それらの符号を調べることで判定を行う。
【数3】
M0〜M3の符号が全て同じ場合は、粒子jの多角形面20と粒子iの辺21は交差しており、一つでも符号が逆のものがあれば交差していないことがわかる。
【0036】
上記のような接触判定では、1つの四角形面に対して1つの辺が交差していることを判定するのに、43個の加減算、47個の乗算、5回の条件演算を要する。そのため、粒子の多面体の面数が多いほど、また粒子の数が多いほど、膨大な計算時間がかかってしまう。そこで、本実施形態では接触判定の前に接触可能頂点を絞り込み、その接触可能頂点を含む辺、面のみを接触の可能性がある辺、面として接触判定を行う。以下、接触の可能性がある辺及び面を抽出する方法として、2つの方法を説明する。
【0037】
(第1の抽出方法)
図6は、辺及び面の第1の抽出方法について説明する図である。粒子i、jは3次元形状であるが、簡単のため2次元で表示している。
【0038】
第1の抽出方法は、粒子iの粒子jに対する接触を判定する際に、粒子iの中心と粒子jの中心を結ぶ直線に交わる2つの平面61,62を設定し、平面61,62で挟まれた空間に位置する粒子iの辺及び粒子jの面のみを判定対象として抽出するものである。ここで、平面61(第1の平面)と平面62(第2の平面)はそれぞれ粒子j,iに接し、且つ、互いに平行になるように設定される。言い換えると、第1の抽出方法は、平面61よりも粒子jの中心側の空間に位置する粒子iの辺と、平面62よりも粒子iの中心側の空間に位置する粒子jの面とを、判定対象として抽出する方法である。なお、辺又は面が「空間に位置する」とは、辺又は面の少なくとも一部分が空間内に存在すること(空間と交わりを有すること)を意味する。
【0039】
第1の抽出方法を実現する具体的なアルゴリズムとして、本実施形態の接触判定部B120では次のような計算を行う。粒子iの中心から粒子jの中心に向かう中心結線ベクトルを考え、原点を通り中心結線ベクトルに垂直な面を基準面Sとする。粒子iの各頂点と基準面Sとの距離D1を計算し、最大値をD1maxとする。粒子jの各頂点と基準面Sとの距離を計算し、最小値をD1minとする。基準面Sとの距離がD1min以上D1
max以下となる粒子i、jの各頂点を接触可能頂点として選ぶ。図6で塗りつぶし(黒丸)で示されている頂点が接触可能頂点である。そして、接触可能頂点を含む辺及び面が判定対象として抽出される。図6で実線で示されている辺が抽出された辺である。
【0040】
D1max、D1minの算出方法をより詳しく説明する。中心結線ベクトルと向きが同じで原点を起点とする単位ベクトルをn1=(n1x,n1y,n1z)とし、粒子iの各頂点の位置ベクトルをPik=(xik,yik,zik)とする。n1のことを中心結線単位ベクトルとも称す。ここで、kは粒子iの各構成頂点の番号である。基準面Sと粒子iの各頂点との距離D1は、下記式のように、単位ベクトルn1と頂点の位置ベクトルPikの内積n1・Pikで算出される。
【数4】
同様に、粒子jの各頂点の位置ベクトルをPjk=(xjk,yjk,zjk)とすると、基準面Sと粒子jの各頂点との距離D1は下記式により算出される。
【数5】
【0041】
粒子i及び粒子jの全ての頂点について距離D1を求めた後、D1max及びD1minは下記式で算出される。
【数6】
【0042】
なお、説明を簡単にするためD1を距離と表現したが、実際にはD1は内積n1・Pik、内積n1・Pjkのようにベクトルの内積で定義されるものである。よって、n1とPik又はPjkの位置関係によっては、各頂点に対するD1の一部またはすべてが負になることもあるが、その場合でも上記式によりD1max、D1minを求めることができる。また、ここでは簡単のためn1の起点を原点としたが、ベクトルの平行移動に対して内積の大小は変わらないため、起点をどの位置にとってもよい。また、ここでは単位ベクトルn1を中心結線ベクトルに平行にとったが、ベクトルn1の向きはこれに限られない。ベクトルn1が中心結線ベクトルに対して直交していなければ(つまり、平面61,62が粒子i,jの中心を結んだ直線に交わっていれば)、同様の処理が可能である。
【0043】
以上述べた方法により接触可能頂点を選択し、判定対象とする粒子iの辺と粒子jの面を絞り込むことで、接触判定を行う辺、面の組み合わせを減らし、計算時間を短縮することができる。
【0044】
(第2の抽出方法)
上述した第1の抽出方法では、接触判定を行う範囲を平面61と62で挟まれた空間に限定している。しかし、図6で示されるように、平面61と62のあいだに、実際には他の粒子と接触していない頂点が多く含まれる場合もある。そこで、第2の抽出方法として、接触可能頂点をさらに絞り込む方法について説明する。
【0045】
第2の抽出方法は、図7に示すように、平面61,62とは異なる角度で平面71,72を設定し、4つの平面61,62,71,72で挟まれた空間に位置する粒子iの辺及
び粒子jの面のみを判定対象として抽出するものである。ここで、平面71(第3の平面)と平面72(第4の平面)はそれぞれ粒子j,iに接し、且つ、互いに平行になるように設定される。言い換えると、第2の抽出方法は、平面61及び平面71よりも粒子jの中心側の空間に位置する粒子iの辺と、平面62及び平面72よりも粒子iの中心側の空間に位置する粒子jの面とを、判定対象として抽出する方法である。
【0046】
第2の抽出方法を実現する具体的なアルゴリズムを説明する。図7は2つのベクトルによる接触可能頂点の絞り込み方法を示す図である。図7左上は上記の中心結線単位ベクトルn1によって絞り込まれた接触可能頂点を示している。塗りつぶし(黒丸)で示されているのが接触可能頂点である。
【0047】
図7左下は、重なり最小単位ベクトルn2によって絞り込まれた接触可能頂点を表している。「重なり最小単位ベクトル」とは、粒子iと粒子jの重なりを最小とする向きの単位ベクトルをいい、以降の説明では単に「重なり最小ベクトル」とも称す。n2による接触可能頂点の絞り込み方法はn1による接触可能頂点の絞り込み方法と同じである。つまり、ベクトルn2と粒子iの各頂点座標の位置ベクトルPikの内積n2・Pikの最大値D2maxと、ベクトルn2と粒子jの各頂点座標の位置ベクトルPjkの内積n2・Pjkの最小値D2minを求める。そして、内積がD2min以上D2max以下となる頂点を接触可能頂点として抽出する。
【0048】
図7右は中心結線ベクトルによる接触可能頂点集合をA、重なり最小ベクトルによる接触可能頂点集合をBとしたときに、共通部分である積集合A∩Bで選択される頂点を表している。図7において、集合Aに含まれる頂点数は10、集合A内の頂点を構成頂点とする辺数は12、集合Bに含まれる頂点数は8、辺数は10である。一方、積集合A∩Bに含まれる頂点数は4、辺数は6となり、1つのベクトルのみの場合より判定対象を絞り込むことができる。よって、積集合A∩Bに含まれる頂点を最終的な接触可能頂点と定義する。
【0049】
積集合A∩Bが空集合でも接触する場合がある。図8を用いて説明する。四角で表されている頂点が中心結線ベクトルにより選択された頂点(集合A)、三角で表されているのが重なり最小ベクトルにより選択された頂点(集合B)である。塗りつぶしの円で表されているのが積集合A∩Bに含まれる接触可能頂点である。粒子jは接触可能頂点を持たないが、図8に示すように粒子iと接触している。このような場合を含めるため、判定対象とする辺、面は次のように決定する。
・積集合A∩Bに含まれる頂点(接触可能頂点)を持つ辺、面。
・集合Aに含まれる頂点と集合Bに含まれる頂点の両方を持つ辺、面。
【0050】
以上の2パターンによって、全ての接触の可能性がある辺と面を選択することができる。本方法により、接触判定を行う辺、面の組み合わせを大幅に減らすことができ、計算時間のより一層の短縮が可能となる。
【0051】
本方法で用いる重なり最小ベクトルn2の算出方法について説明する。図9は重なり最小ベクトルを求めるフローチャートである。図9に示す処理は、接触判定部B120が実行するものである。
【0052】
まず、重なり最小ベクトルの初期値を設定する(ステップS1)。初期値は中心結線単位ベクトルと平行な単位ベクトルとする。粒子iの中心位置ベクトルをCi、粒子jの中心位置ベクトルをCjとすると、重なり最小ベクトルn2の初期値は下記式で表される。
【数7】
以降の処理で、ベクトルn2の向きを微小に変動させながら、粒子iと粒子jの重なりが最小となるものを見つける。その処理で用いる微小量δの初期値δmax(=0.1程度)をステップS1で設定する。
【0053】
次に、2粒子の重なり量L(=D2max−D2min)を算出する(ステップS2)。
次に、接触の可能性があるか否かを判定する(ステップS3)。Lが0以下の場合、2粒子は非接触であるので、接触判定から除外される(ステップS4)。Lが0より大きい場合は接触の可能性があるため、重なり最小ベクトルn2を更新(探索)するためのループに入る。
【0054】
重なり最小ベクトルn2に直交し、たがいに直交するベクトルu、vを適当に定める(ステップS5)。そして、試行する重なり最小ベクトルn2(1)〜n2(4)を下記式のように設定する(ステップS6)。
【数8】
上記式の1行目で決定される試行重なり最小ベクトルn2(1)は、図9中に示されるように、直交ベクトルuの方向へ微小量δで決まる量だけ回転させたものとなる。
【0055】
このようにして決定された各試行重なり最小ベクトルn2(k)に対して2粒子の重なり量Lnew(k)を新たに算出する(k=1,2,3,4)。算出された4つのLnew(k)の最小値とLを比較する(ステップS7)。min{Lnew(k)}がLより小さければ、重なり最小ベクトルn2をn2(k)に更新する。また、LもLnew(k)に更新する(ステップS8)。重なり量Lを最小とするループにおいて、min{Lnew(k)}がLより大きくなった場合は(ステップS9)、微小量δをδ/2と小さくした後、試行重なりベクトルの設定から繰り返す(ステップS10)。
【0056】
上記のループを繰り返して、δがδmin(=0.001程度)より小さくなったときのn2が最終的な重なり最小ベクトルとなる(ステップS11)。このような処理により、粒子iとjの重なり量Lを最も小さくするベクトルn2を得ることができる。
【0057】
なお、図9のステップS5で示したように、ループを繰り返すたびにu,vを面内で回転させると、局所解への陥りを抑制し、重なり最小ベクトルの最適解を得やすいという効果が得られる。
【0058】
図9で示した方法は重なり最小ベクトルn2を決定するための一手法にすぎない。他の公知の最適化手法を利用して、重なり量Lを最小とするベクトルn2を求めることも可能である。また、少なくともベクトルn1とn2の向きが異なっていれば、第1の抽出方法よりも判定対象を絞り込む効果は得られるため、ベクトルn1に対して任意の回転を行ったものをベクトルn2として用いるだけでもよい。
【0059】
(接触判定処理)
接触判定部B120の処理フローを図10で説明する。
まず、接触判定を行う2粒子i、jを設定する(ステップS100)。次に2粒子i、jの中心座標から中心結線単位ベクトルn1を求める(ステップS110)。n1を基に2粒子i、jの重なり量Lを算出する(ステップS120)。重なり量Lを基に接触可能性を判定し(ステップS130)、L>0でなければ、2粒子は非接触として接触判定を終了する(ステップS135)。次に、2粒子i、jの位置座標情報から重なり最小単位ベクトルn2を求める(ステップS140)。ステップS140の処理内容は、図9で詳しく説明したとおりである。
【0060】
ここで、ステップS110で設定したn1を用いて接触可能頂点集合Aを設定し(ステップS150)、ステップS140で設定したn2を用いて接触可能頂点集合Bを設定する(ステップS160)。次に、接触可能頂点集合A∩Bを設定する(ステップS170)。こうして設定した接触可能頂点を含む粒子iの辺と粒子jの面を抽出する(ステップS180)。以上で、接触判定に用いる判定対象が絞り込まれる。
【0061】
次に、粒子iが粒子jに接触しているか否かの判定処理を行う。まず、接触判定を行う粒子iの辺を設定する(ステップS190)。接触判定を行う粒子jの面を設定する(ステップS200)。ここで設定した粒子iの辺と粒子jの面との交差の有無を判定する(ステップS210)。ここで、粒子jの面に粒子iの辺が交差していれば、交差回数のカウントアップを行う(ステップS220)。この操作をステップS180で抽出された粒子jの面の全てに対して行う(ステップS230)。次に、粒子iの辺と粒子jの面の交差回数が2回かどうかの判定を行う(ステップS240)。交差回数が2回ならば、めり込み量を算出し、メモリに記憶しておく(ステップS250)。本操作をS180で抽出された粒子iの辺の全てに対して行う(ステップS260)。
【0062】
なお、図10では、説明を簡単にするため、粒子iのある辺が粒子jの2つの面と交差した場合に、接触有りと判定し、粒子iとjのあいだのめり込み量を算出する処理例を示した。しかし実際の処理では、図4に示したように、粒子iと粒子jの接触を4つのパターンで判定する。前述したようにパターンごとに判定条件が異なるが、いずれのパターンにおいても粒子iの辺と粒子jの面との交差判定が基本となるので、図10のステップS180で抽出した辺及び面を利用すればよい。
【0063】
各パターン(a)〜(d)におけるめり込み量の定義について、図4中の下段の図を用いて説明する。
(a)頂点のめり込み:粒子iの頂点i−v0と粒子jの面j−f0との距離をめり込み量とする。
(b)辺のめり込み(ケース1):粒子iの辺i−e0と粒子jの辺j−e0との距離をめり込み量とする。
(c)辺のめり込み(ケース2):粒子iの辺i−e0と粒子jの辺j−e0との距離をめり込み量とする。
(d)辺のめり込み(ケース3):粒子iの辺i−e0に対する、粒子jの辺j−e0、j−e1との距離をそれぞれの辺とのめり込み量とする。
【0064】
(粒子受力計算部B130)
以上の4パターンにおいて、めり込み量(距離)の計算に用いた各粒子表面の2点を結ぶ方向を接触面法線方向と定める。この接触面法線方向は、接触点の(粒子jの面又は辺に対する)めり込み方向ということもできる。そして、接触判定部B120で求めためり込み量に基づいて、ヘルツの式を用いて、粒子iに働く接触面法線方向の接触力(バネ力)を求める。また各接触点に対して、接触が始まってからの接触面(上記接触面法線方向に垂直な面)内方向の移動量を求め、ミンドリンの式を用いて粒子iに働く接触面内方向の接触力(バネ力)を求める。また接触面法線方向の運動速度(めり込み速度)と面内方向の各運動速度(ずり速度)から、各方向に作用する粘性力(ダンパー力)を求める。そしてそれら接触力と粘性力の和に、粒子iに働くその他の力(重力、付着力、電磁力、空気の粘性抵抗等)を加えて、各粒子iが受ける並進力と回転力を求める。なお、本めり込み量から接触力を求める過程は、上記非特許文献1に記載されている手法と同じであるため、詳しい説明は割愛する。
【0065】
(粒子運動計算部B140)
次に、粒子運動計算部B140における各粒子の刻み時間後の速度と位置の算出方法を説明する。この処理は、粒子受力計算部B130で求めた粒子に働く力による、各粒子の刻み時間後の速度と位置を求めるものである。すなわち、粒子運動計算部B140は、並進力からニュートンの運動方程式を用いて並進方向の加速度を求め、更に速度と位置を求める。また粒子運動計算部B140は、回転力からオイラーの運動方程式を用いて角加速度を求め、更に回転速度と回転位置を求める。本処理は、非特許文献1に記載されている手法と同じであるため、詳しい説明は割愛する。
【0066】
(実施例)
以上の接触判定方法を用いて粒子挙動計算を実施した例を、図11〜図12を用いて説明する。図11(a)は解析モデルを示す。解析モデルは電子写真技術を用いた画像形成装置におけるクリーニングプロセスである。0.1m/secで矢印の方向に移動する感光体ドラムに対してクリーニングブレードをβ=30°で当接させておき、感光体ドラム上に乗って運ばれてきたトナーの運動を見る。各トナーの形状を粒子形状データとして与え、感光体ドラム及びクリーニングブレードの形状を壁形状データとして与える。
【0067】
図11(b)は、解析条件として与えた、トナー、感光体ドラム、クリーニングブレードそれぞれの機械特性(ヤング率、ポアソン比、減衰係数、摩擦係数、比重)を示している。この条件で、刻み時間Δtを10nsecに設定し、約2百万ステップの計算を実行した。
【0068】
図12は、(a)球形粒子と(b)異形粒子の計算結果を比較したものである。球形粒子の計算は従来の計算方法で実施している。異形粒子は4面体の角をとった形状であり、その表面を8つの3角形と6つの4角形の合計12の多角形で構成している。なお本計算においては、トナーがブレードに堰き止められた際の挙動をみるため、強制的にトナーがすり抜けないようにしている。球形粒子に対して異形粒子は回転しにくいことから、全体的に動き辛く、トナー粒子の密集度が上がる傾向にある。図12の計算結果では、異形粒子の密集度が高くなっている様子が再現されている。
【0069】
このトナーがブレードに堰き止められた際の挙動は、クリーニング不良であるトナーのすり抜けとの関係があり、流動的である程すり抜けやすいといわれている。このことから、製品設計を行う上で、トナーの形状によるクリーニング不良の傾向を粒子挙動計算で予測することが可能となる。
【0070】
また、図13は面数の異なる異形粒子の自由落下の計算を示した図である。(a)は、
頂点数12、面数14、辺数24の場合の異形粒子で、(b)は頂点数98、面数108、辺数204の異形粒子の場合である。(a)と(b)の場合において、256個の異形粒子の自由落下の計算を刻み時間Δt=10nsecで8百万ステップ実行し、本発明を使用しない場合と使用した場合での計算時間の比較を行った。(a)では、従来の方法では計算に19時間35分かかったのに対し、中心結線ベクトルによる接触可能頂点の絞り込み(第1の抽出方法)を用いた場合では、8時間09分となり、高速化率は2.4倍となる。(b)では、従来の方法では計算に524時間32分かかったのに対し、中心結線ベクトルによる接触可能頂点の絞り込みを用いると22時間24分となり、高速化率は23.4倍となった。このことから、粒子の面の数が多くなればなるほど、本発明を用いることによる計算時間の短縮効果が大きくなることがわかる。
【0071】
図14は中心結線ベクトルと重なり最小ベクトルを用いた高速化の効果を示す図である。計算には頂点数198、面数392、辺数588の異形粒子を用い、図13と同様の自由落下計算を300000ステップ、Δt=10nsecで行った。接触判定に中心結線ベクトルのみを用いた場合(第1の抽出方法)と中心結線ベクトルと重なり最小ベクトルの両方を用いた場合(第2の抽出方法)で計算時間を比較した。中心結線ベクトルのみを用いた場合は4726秒、中心結線ベクトルと重なり最小ベクトルの両方を用いた場合は2009秒となり、高速化率は2.35倍となった。このことから、中心結線ベクトルと重なり最小ベクトルの両方を用いた接触判定により、さらなる計算時間の短縮が実現できていることが分かる。
【符号の説明】
【0072】
10:情報処理装置
B100:全体制御部
B110:入力データ読込部
B120:接触判定部
B130:粒子受力計算部
B140:粒子運動計算部
B150:計算結果出力部
【技術分野】
【0001】
本発明は、密集状態にある多数の粒子について、その形状を考慮して挙動を解析する技術に関するものであり、特に挙動解析計算における粒子同士の接触判定に関する。
【背景技術】
【0002】
粉体や粒体などの粒子を取り扱う分野では、個々の粒子の挙動を知ることが重要である。従来これらの分野では、実験と観察から粒子の挙動を把握することが多かった。しかし近年、計算機内でその運動を再現させ、その挙動を把握する、いわゆるシミュレーション技術の適用が活発に行われている。正確な粒子挙動のシミュレーションを行うには、粒子のもつ形状、機械的特性等の情報をできるだけ詳細に計算モデルに反映させ、それらの因子を考慮して解を求めることが重要である。また、土木分野における砕石、砂利等の比較的大きな物体も「粒子」と考えることにより、上記シミュレーション技術をこれらの物体の挙動を計算する場合へも適用可能である。
【0003】
一方、このような粒子を扱う装置の1つに、プリンタ、複写機、ファクシミリ等の電子写真技術を用いた画像形成装置がある。これらの装置では、直径数ミクロンの粉体粒子からなるトナーを用いて、帯電、露光、現像、転写、定着、クリーニングという6つのプロセスを経て、紙上に画像を形成する。このような画像形成装置では、トナー粒子の形状が、作成される画像に大きな影響を与えることがわかっている。そこでこのような画像形成装置の開発においても、シミュレーション技術を用いて、密集状態にある個々のトナー粒子の挙動を求める試みが活発に行われ、近年の傾向として特にトナー粒子の形状を考慮することが求められている。
【0004】
粒子が密集した状態での各粒子の挙動をシミュレーションする代表的な方法として個別要素法(DEM)がある。個別要素法の技術は非特許文献1に詳細に記載されているが、個々の粒子を球形で表現し、それらの接触に際してはそのめり込み量からヘルツの式とミンドリンの式を用いることで粒子の持つ機械特性を考慮した接触抗力を求める。そしてニュートンの運動方程式(並進方向)とオイラーの運動方程式(回転方向)を用いて、その接触抗力をもとに個々の粒子の時間進展に伴う運動を求めるものである。
【0005】
個別要素法の特徴は個々の粒子を要素と捉え、それらが接触する部分にバネ、ダンパー、スライダを仮定して、その接触力を求め、運動方程式を解くところにある。この考え方を球形以外の形状をもつ粒子の挙動計算に適用したものとして、非特許文献2、非特許文献3がある。これらの文献では粒子の形状を多面体で表現し上述の個別要素法を用いてその挙動を計算している。そして、粒子の接触の検出に関して、Common-planeと呼ばれる面を想定して、接触の有無、接触力の作用点、接触力の作用方向、及び接触力の大きさを決定する。しかしながら、同文献の方法ではCommon-planeと粒子の接触断面積を求めることが必要となるが、断面積を求めるには粒子の各頂点、辺、面とCommon-planeとの接触状態を調べなければならないため、長い計算時間を要する。また本発明者らが同文献の方法を実際に試行しようとしたところ、同文献は接触力を作用させる位置についての情報開示が乏しく、再現することが困難であることが分かった。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】粉体工学会編、粉体シミュレーション入門(1998)
【非特許文献2】P.A. Cundall: Formulation of a three-dimensional distinct element model - Part I. a scheme to detect and represent contacts in a system composed of many polyhedral blocks, Int. J. Rock Mech. Min. Sci. & Geomech. Abstr., 25(3), pp.107-116 (1988)
【非特許文献3】R. Hart, P.A. Cundall, and J. Lemos: Formulation of a three-dimensional distinct element model - Part II. mechanical calculations for motion and interaction of a system composed of many polyhedral blocks, Int. J. Rock Mech. Min. Sci. & Geomech. Abstr., 25(3), pp.117-125 (1988)
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の目的は、密集状態にある多数の粒子の挙動を、その形状も考慮して高速に計算することにある。また本発明の目的は、密集状態にある多数の粒子の挙動を計算するに際し、粒子同士の接触判定を高速に行うことにある。
【課題を解決するための手段】
【0008】
上記課題を解決するために、本発明は以下の構成を採用する。
本発明の第一態様は、情報処理装置により、密集状態にある複数の粒子の運動を計算する方法であって、情報処理装置が、複数の粒子それぞれの形状を多面体により定義するデータを取得する取得ステップと、情報処理装置が、前記複数の粒子それぞれの位置情報に基づいて、各粒子が他の物体に接触しているか否かを判定する接触判定ステップと、情報処理装置が、前記接触判定ステップで接触していると判定された他の物体から各粒子が受ける力を計算し、その力による各粒子の運動を計算する計算ステップと、情報処理装置が、前記計算ステップで計算された各粒子の運動を出力する出力ステップと、を含み、前記接触判定ステップにおいて、粒子iが粒子jに接触しているか否かを判定する場合に、粒子iの中心と粒子jの中心を結ぶ直線に交わり且つ粒子jに接する第1の平面よりも粒子jの中心側の空間に位置する粒子iの辺、及び、前記第1の平面に平行で且つ粒子iに接する第2の平面よりも粒子iの中心側の空間に位置する粒子jの面、を抽出し、前記抽出した粒子iの辺と粒子jの面とのあいだで接触判定を行うことを特徴とする粒子挙動解析方法である。
【0009】
本発明の第二態様は、情報処理装置により、密集状態にある複数の粒子の運動を計算する方法であって、情報処理装置が、複数の粒子それぞれの形状を多面体により定義するデータを取得する取得ステップと、情報処理装置が、前記複数の粒子それぞれの位置情報に基づいて、各粒子が他の物体に接触しているか否かを判定する接触判定ステップと、情報処理装置が、前記接触判定ステップで接触していると判定された他の物体から各粒子が受ける力を計算し、その力による各粒子の運動を計算する計算ステップと、情報処理装置が、前記計算ステップで計算された各粒子の運動を出力する出力ステップと、を含み、前記接触判定ステップにおいて、粒子iが粒子jに接触しているか否かを判定する場合に、粒子iの中心と粒子jの中心を結ぶ直線に交わり且つ粒子jに接する第1の平面よりも粒子jの中心側であって、且つ、前記第1の平面とは異なる角度で前記直線に交わり且つ粒子jに接する第3の平面よりも粒子jの中心側の空間に位置する粒子iの辺、及び、前記第1の平面に平行で且つ粒子iに接する第2の平面よりも粒子iの中心側であって、且つ、前記第3の平面に平行で且つ粒子iに接する第4の平面よりも粒子iの中心側の空間に位置する粒子jの面、を抽出し、前記抽出した粒子iの辺と粒子jの面とのあいだで接触判定を行うことを特徴とする粒子挙動解析方法である。
【0010】
本発明の第三態様は、密集状態にある複数の粒子の運動を計算する粒子挙動解析装置であって、複数の粒子それぞれの形状を多面体により定義するデータを取得する取得部と、前記複数の粒子それぞれの位置情報に基づいて、各粒子が他の物体に接触しているか否かを判定する接触判定部と、前記接触判定部で接触していると判定された他の物体から各粒子が受ける力を計算し、その力による各粒子の運動を計算する計算部と、前記計算部で計
算された各粒子の運動を出力する計算結果出力部と、を含み、前記接触判定部は、粒子iが粒子jに接触しているか否かを判定する場合に、粒子iの中心と粒子jの中心を結ぶ直線に交わり且つ粒子jに接する第1の平面よりも粒子jの中心側の空間に位置する粒子iの辺、及び、前記第1の平面に平行で且つ粒子iに接する第2の平面よりも粒子iの中心側の空間に位置する粒子jの面、を抽出し、前記抽出した粒子iの辺と粒子jの面とのあいだで接触判定を行うことを特徴とする粒子挙動解析装置である。
【0011】
本発明の第四態様は、密集状態にある複数の粒子の運動を計算する粒子挙動解析装置であって、複数の粒子それぞれの形状を多面体により定義するデータを取得する取得部と、前記複数の粒子それぞれの位置情報に基づいて、各粒子が他の物体に接触しているか否かを判定する接触判定部と、前記接触判定部で接触していると判定された他の物体から各粒子が受ける力を計算し、その力による各粒子の運動を計算する計算部と、前記計算部で計算された各粒子の運動を出力する計算結果出力部と、を含み、前記接触判定部は、粒子iが粒子jに接触しているか否かを判定する場合に、粒子iの中心と粒子jの中心を結ぶ直線に交わり且つ粒子jに接する第1の平面よりも粒子jの中心側であって、且つ、前記第1の平面とは異なる角度で前記直線に交わり且つ粒子jに接する第3の平面よりも粒子jの中心側の空間に位置する粒子iの辺、及び、前記第1の平面に平行で且つ粒子iに接する第2の平面よりも粒子iの中心側であって、且つ、前記第3の平面に平行で且つ粒子iに接する第4の平面よりも粒子iの中心側の空間に位置する粒子jの面、を抽出し、前記抽出した粒子iの辺と粒子jの面とのあいだで接触判定を行うことを特徴とする粒子挙動解析装置である。
【0012】
本発明の第五態様は、上述した粒子挙動解析方法の各ステップを情報処理装置(コンピュータ)に実行させる解析プログラムである。
【発明の効果】
【0013】
本発明によれば、粒子同士の接触判定に要する時間を短縮でき、密集状態にある多数の粒子の挙動を、その形状も考慮して高速に計算することができる。
【図面の簡単な説明】
【0014】
【図1】粒子挙動計算の力学モデルを説明する図。
【図2】解析装置のハードウエア構成を示す図。
【図3】解析装置の機能構成を示す図。
【図4】接触パターンと各パターンにおける粒子めり込み量を示す図。
【図5】辺と面の交差の有無の判定方法を示す図。
【図6】接触可能頂点の絞り込み方法を示す図。
【図7】2ベクトルによる接触可能頂点の絞り込み方法を示す図。
【図8】接触可能頂点を持たない粒子との接触を示す図。
【図9】重なり最小ベクトルを求める方法を示す図。
【図10】接触判定部の処理フローを示す図。
【図11】実施例の計算条件を示す図。
【図12】実施例の計算結果を示す図。
【図13】中心結線ベクトルを用いた高速化の効果を示す図。
【図14】中心結線ベクトルと重なり最小ベクトルを用いた高速化の効果を示す図。
【発明を実施するための形態】
【0015】
本発明の実施形態は、密集状態にある多数の粒子の挙動をコンピュータ・シミュレーションにより計算するための粒子挙動解析方法及び装置を提供するものである。本実施形態に係る粒子挙動解析方法の特徴の一つは、多数の多角形から構成される多面体(ポリゴンモデル)により各粒子の形状を定義した点である。これにより任意の粒子形状を表現でき
るようになり、多様なケースのシミュレーションを精度良く行うことが可能になる。本方法のもう一つの特徴は、粒子同士の接触判定を行う際に、全ての頂点、辺、面について網羅的に接触判定計算を行うのではなく、予め接触可能性のある辺及び面を特定し、それらのあいだについてのみ接触判定を行う点である。これにより、接触判定に要する時間を短縮でき、粒子の挙動計算の高速化を図ることができる。以下、本実施形態の具体的な構成及び特徴について図に基づき詳しく説明する。
【0016】
(粒子挙動計算のモデル)
図1は、本実施形態における粒子挙動計算の力学モデルを説明するものであり、異形粒子(非球形粒子)が他の物体と接触した際に働く接触力を説明する図である。このモデルでは、粒子が他の物体と接触した際に発生するめり込みを、その接触面に対して法線方向と接線方向に分解して考える。粒子には、それぞれのめり込み量に対してスプリングで押し返す力が働く。また各スプリングと並列にダンパーを設定する。これはめり込み速度に比例して働く力であり、運動を減衰させるものである。またすべりを考慮するためのスライダを設定している。このように、スプリング、ダンパー、スライダを設定して衝突を考えることは従来の個別要素法と同じである。
【0017】
(解析装置のハードウエア構成)
図2は、本実施形態における解析装置が動作する計算装置を示すブロック図である。情報処理装置(コンピュータ)10は、各種判断及び処理を行う中央処理装置(CPU)11と、処理プログラム及び固定データを格納するROM12と、処理データを記憶するRAM13と、入出力回路(I/O)14とから構成されている。また必要に応じて、情報処理装置10には、I/O14を介して記憶装置、入力装置、表示装置、他のコンピュータなどが接続される。I/O14は、これら外部装置と情報処理装置10との間でデータをやり取りするための回路である。この情報処理装置10には、入力データ15がI/O14を介して入力される。計算結果は、I/O14を介して出力データ16として出力される。
【0018】
(解析装置の機能)
図3は、粒子挙動解析を行う解析プログラムによって実現される機能の構成を示すブロック図である。解析プログラムは、ROM12や記憶装置などのコンピュータ読み取り可能な記録媒体に記憶されており、必要に応じて、CPU11によって読み込まれ実行されるソフトウエアである。この解析プログラムは、主な機能(モジュール)として、入力データ読込部(取得部)B110、接触判定部B120、粒子受力計算部B130、粒子運動計算部B140、計算結果出力部B150を備えている。全体制御部B100は、これらのモジュールの処理の順番やデータの引渡しなどの全体制御を担っている。
【0019】
入力データ読込部B110は、粒子形状データ、壁形状データ、及び各種パラメータを読み込んでRAM13に格納する。粒子形状データとは、粒子の表面を複数の多角形(ポリゴン)で表現したものである。ここで多角形としてはその頂点が一平面上にあることが望ましく、3角形を用いるのが最も単純である。また粒子は凸形状(凸多面体)に限定すると、他の粒子や壁との接触状態の判定が簡便になる。壁形状データも同様であり、壁の表面を複数の多角形で表現したものである。粒子形状データ、壁形状データともに、多角形の頂点座標と、各多角形を構成する頂点の番号とで構成されるデータである。各種パラメータには、粒子と壁の機械特性(ヤング率、ポアソン比、減衰係数、摩擦係数、比重)、粒子に働く力(重力、付着力、電磁力、空気の粘性特性等)、及び計算条件としての計算刻み時間(Δt)、計算終了時刻がある。なお、壁とは、粒子が移動可能な空間を形成する(規定する)境界面である。
【0020】
接触判定部B120は、粒子の位置情報(各頂点の座標、粒子の中心座標)に基づいて
、粒子が他の物体(周囲の粒子または壁)と接触しているかどうか、またどのように接触しているかを判定する。粒子受力計算部B130は、各粒子が他の物体から受ける力を計算する機能である。粒子は他の粒子または壁と接触している場合に、そのめり込み量に応じて接触抗力を受ける。粒子運動計算部B140は、粒子受力計算部B130で求めた粒子に働く力による、各粒子の刻み時間後の速度と位置を求めるものである。計算結果出力部B150は、得られた各粒子の位置と速度の結果を出力データ16として出力するものである。
【0021】
以下に、接触判定部B120、粒子受力計算部B130、及び粒子運動計算部B140の詳しい内容と計算方法を示す。
【0022】
(接触判定部B120)
まずは、接触判定部B120における粒子同士の接触判定の内容を図4を用いて説明する。図4の上段は4種類の接触パターンを3次元的に示したものであり、下段は各パターンにおける2つの粒子の接触によるめり込みの様子を示すものである。図4において、実線は6面体粒子i、破線は6面体粒子jを示す。i−v0は粒子iを構成する多角形の頂点、i−e0は粒子iを構成する多角形の辺、j−e0とj−e1は粒子jを構成する多角形の辺、j−f0は粒子jを構成する多角形の面、星印は粒子iと粒子jの接触点を示す。また図4の上段における矢印は粒子iが粒子jに衝突する方向を示し、また下段における黒丸は粒子jの辺を示す。粒子が凸形状である場合、粒子iと粒子jの接触は、図4に示す次の(a)〜(d)の4つのパターンのいずれかとなる。なお、図4では、粒子同士の接触判定を例に挙げているが、粒子と壁の接触判定も同じように考えることができる。
【0023】
(a)頂点のめり込み:
粒子iを構成する多角形の頂点が粒子jの1つの面にめり込む場合である。粒子iの頂点が粒子jの内部にあれば、接触していると判定する。図4(a)においては、粒子iの頂点i−v0が粒子jの面j−f0にめり込んでいる。このパターンでは、頂点i−v0を、粒子iの粒子jに対する接触点として考える。
【0024】
(b)辺のめり込み(ケース1):
上記(a)に加えて、めり込んだ頂点を端点に持つ粒子iの辺が粒子jの辺にもめり込む場合である。(a)のめり込んだ頂点を端点に持つ粒子iの辺において、粒子j構成面との交点数が1であり、かつその交点を持つ面が(a)におけるめり込み面でなければ、これに該当する。図4(b)においては、粒子iの頂点i−v0が粒子jの面j−f0にめり込む(上記(a)に該当)とともに、粒子iの辺i−e0が粒子jの辺j−e0にもめり込んでいる。このパターンでは、頂点i−v0に加え、辺j−e0に最も近い辺i−e0上の点も、粒子iの粒子jに対する接触点として考える。
【0025】
(c)辺のめり込み(ケース2):
粒子iの辺が粒子jの1つの辺だけにめり込む場合である。粒子iの辺i−e0において、粒子j構成面との交点数が2であり、その交点を持つ2つの面が共有辺を持ち、かつその共有辺が粒子iの辺に近接していれば、これに該当する。図4(c)においては、粒子iの辺i−e0が粒子jの辺j−e0にめり込んでいる。このパターンでは、辺j−e0に最も近い辺i−e0上の点を、粒子iの粒子jに対する接触点として考える。
【0026】
(d)辺のめり込み(ケース3):
粒子iの辺が粒子jの2つの辺にめり込む場合である。粒子iの辺i−e0において、粒子j構成面との交点数が2であり、(c)ではない場合がこれに該当する。図4(d)においては、粒子iの辺i−e0が粒子jの辺j−e0とj−e1にめり込んでいる。こ
のパターンでは、辺j−e0に最も近い辺i−e0上の点、及び、辺j−e1に最も近い辺i−e0上の点を、粒子iの粒子jに対する接触点として考える。
【0027】
上記の接触判定を行うには、図4(a)の場合には、粒子iの頂点と粒子jの面の位置関係、図4(b)〜(d)においては、粒子iの辺と粒子jの面の交差を調べる必要がある。辺と面のめり込み量の計算を行うための接触判定の仕方を6面体の粒子を例に、図5を用いて説明する。
【0028】
図5の20は粒子jを構成する1つの多角形の面を表し、この法線ベクトルをnとする。21は粒子iを構成する辺の1つi−e0を表している。この辺21の両端の頂点をそれぞれP0(px0,py0,pz0),P1(px1,py1,pz1)とする。また、頂点j−v0,j−v1,j−v2,j−v3を含む平面(無限)と辺21の交差点を点Qとする。このとき、点Qが多角形面20上にあるか否かの判定を行う。
【0029】
まず、粒子iの辺21が粒子jの多角形面20の4つの頂点j−v0,j−v1,j−v2,j−v3を含む平面(無限)を横切っているかどうかを調べる。
【0030】
粒子jの多角形面20上の一つの任意点A0と粒子iの辺21の頂点P0,P1をそれぞれ結び、ベクトルP0A0,P1A0とする。ベクトルP0A0は、点P0から点A0に向かうベクトルであり、ベクトルP1A0は、点P1から点A0に向かうベクトルである。
【0031】
このとき、2つのベクトルP0A0,P1A0と法線ベクトルnの内積L0=P0A0・nとL1=P1A0・nが同じ符号ならば、粒子iの辺21が粒子jの多角形面20の頂点を含む平面(無限)を横切っていないことがわかる。逆に、内積L0とL1の符号が異なる場合は、粒子iの辺21が粒子jの多角形面20の頂点を含む平面(無限)を横切っていることがわかる。
【0032】
次に、粒子iの辺21が粒子jの多角形面20の頂点を含む平面(無限)を横切っている場合、粒子jの多角形面20の頂点を含む平面(無限)と粒子iの辺21との交点Qの座標(qx,qy,qz)を下記式で求める。
【数1】
ここで、rは内分比であり、r=L0/(L0−L1)で求まる。
【0033】
次に、交点Qと頂点j−v0,j−v1,j−v2,j−v3を結ぶ4つのベクトルQv0,Qv1,Qv2,Qv3について、隣のベクトルとの外積を下記式を用いて求め、ベクトルV0,V1,V2,V3を得る。
【数2】
【0034】
ベクトルV0は、ベクトルQv0とQv1の両方に垂直なベクトル、すなわち多角形面20に対し垂直なベクトルとなり、その向きはベクトルQv0とQv1のなす角が0〜πかπ〜2πかで反転する。他のベクトルV1〜V3も同様の性質をもつ。交点Qが多角形面20の内部にある場合は、Qv0とQv1、Qv1とQv2、Qv2とQv3、Qv3とQv0のいずれのなす角も0〜πとなるから、ベクトルV0〜V3の向きは一致する。一方、交点Qが多角形面20の外部にある場合は、なす角が0〜πとなる組と、π〜2πとなる組とがでるため、ベクトルV0〜V3の向きは一致しなくなる。このような性質を利用することで、交点Qが多角形面20の内側に存在するか否か、つまり粒子iの辺21と粒子jの多角形面20とが交差するか否かを判定することができる。
【0035】
ここでは、下記式のように内積M0〜M3を計算し、それらの符号を調べることで判定を行う。
【数3】
M0〜M3の符号が全て同じ場合は、粒子jの多角形面20と粒子iの辺21は交差しており、一つでも符号が逆のものがあれば交差していないことがわかる。
【0036】
上記のような接触判定では、1つの四角形面に対して1つの辺が交差していることを判定するのに、43個の加減算、47個の乗算、5回の条件演算を要する。そのため、粒子の多面体の面数が多いほど、また粒子の数が多いほど、膨大な計算時間がかかってしまう。そこで、本実施形態では接触判定の前に接触可能頂点を絞り込み、その接触可能頂点を含む辺、面のみを接触の可能性がある辺、面として接触判定を行う。以下、接触の可能性がある辺及び面を抽出する方法として、2つの方法を説明する。
【0037】
(第1の抽出方法)
図6は、辺及び面の第1の抽出方法について説明する図である。粒子i、jは3次元形状であるが、簡単のため2次元で表示している。
【0038】
第1の抽出方法は、粒子iの粒子jに対する接触を判定する際に、粒子iの中心と粒子jの中心を結ぶ直線に交わる2つの平面61,62を設定し、平面61,62で挟まれた空間に位置する粒子iの辺及び粒子jの面のみを判定対象として抽出するものである。ここで、平面61(第1の平面)と平面62(第2の平面)はそれぞれ粒子j,iに接し、且つ、互いに平行になるように設定される。言い換えると、第1の抽出方法は、平面61よりも粒子jの中心側の空間に位置する粒子iの辺と、平面62よりも粒子iの中心側の空間に位置する粒子jの面とを、判定対象として抽出する方法である。なお、辺又は面が「空間に位置する」とは、辺又は面の少なくとも一部分が空間内に存在すること(空間と交わりを有すること)を意味する。
【0039】
第1の抽出方法を実現する具体的なアルゴリズムとして、本実施形態の接触判定部B120では次のような計算を行う。粒子iの中心から粒子jの中心に向かう中心結線ベクトルを考え、原点を通り中心結線ベクトルに垂直な面を基準面Sとする。粒子iの各頂点と基準面Sとの距離D1を計算し、最大値をD1maxとする。粒子jの各頂点と基準面Sとの距離を計算し、最小値をD1minとする。基準面Sとの距離がD1min以上D1
max以下となる粒子i、jの各頂点を接触可能頂点として選ぶ。図6で塗りつぶし(黒丸)で示されている頂点が接触可能頂点である。そして、接触可能頂点を含む辺及び面が判定対象として抽出される。図6で実線で示されている辺が抽出された辺である。
【0040】
D1max、D1minの算出方法をより詳しく説明する。中心結線ベクトルと向きが同じで原点を起点とする単位ベクトルをn1=(n1x,n1y,n1z)とし、粒子iの各頂点の位置ベクトルをPik=(xik,yik,zik)とする。n1のことを中心結線単位ベクトルとも称す。ここで、kは粒子iの各構成頂点の番号である。基準面Sと粒子iの各頂点との距離D1は、下記式のように、単位ベクトルn1と頂点の位置ベクトルPikの内積n1・Pikで算出される。
【数4】
同様に、粒子jの各頂点の位置ベクトルをPjk=(xjk,yjk,zjk)とすると、基準面Sと粒子jの各頂点との距離D1は下記式により算出される。
【数5】
【0041】
粒子i及び粒子jの全ての頂点について距離D1を求めた後、D1max及びD1minは下記式で算出される。
【数6】
【0042】
なお、説明を簡単にするためD1を距離と表現したが、実際にはD1は内積n1・Pik、内積n1・Pjkのようにベクトルの内積で定義されるものである。よって、n1とPik又はPjkの位置関係によっては、各頂点に対するD1の一部またはすべてが負になることもあるが、その場合でも上記式によりD1max、D1minを求めることができる。また、ここでは簡単のためn1の起点を原点としたが、ベクトルの平行移動に対して内積の大小は変わらないため、起点をどの位置にとってもよい。また、ここでは単位ベクトルn1を中心結線ベクトルに平行にとったが、ベクトルn1の向きはこれに限られない。ベクトルn1が中心結線ベクトルに対して直交していなければ(つまり、平面61,62が粒子i,jの中心を結んだ直線に交わっていれば)、同様の処理が可能である。
【0043】
以上述べた方法により接触可能頂点を選択し、判定対象とする粒子iの辺と粒子jの面を絞り込むことで、接触判定を行う辺、面の組み合わせを減らし、計算時間を短縮することができる。
【0044】
(第2の抽出方法)
上述した第1の抽出方法では、接触判定を行う範囲を平面61と62で挟まれた空間に限定している。しかし、図6で示されるように、平面61と62のあいだに、実際には他の粒子と接触していない頂点が多く含まれる場合もある。そこで、第2の抽出方法として、接触可能頂点をさらに絞り込む方法について説明する。
【0045】
第2の抽出方法は、図7に示すように、平面61,62とは異なる角度で平面71,72を設定し、4つの平面61,62,71,72で挟まれた空間に位置する粒子iの辺及
び粒子jの面のみを判定対象として抽出するものである。ここで、平面71(第3の平面)と平面72(第4の平面)はそれぞれ粒子j,iに接し、且つ、互いに平行になるように設定される。言い換えると、第2の抽出方法は、平面61及び平面71よりも粒子jの中心側の空間に位置する粒子iの辺と、平面62及び平面72よりも粒子iの中心側の空間に位置する粒子jの面とを、判定対象として抽出する方法である。
【0046】
第2の抽出方法を実現する具体的なアルゴリズムを説明する。図7は2つのベクトルによる接触可能頂点の絞り込み方法を示す図である。図7左上は上記の中心結線単位ベクトルn1によって絞り込まれた接触可能頂点を示している。塗りつぶし(黒丸)で示されているのが接触可能頂点である。
【0047】
図7左下は、重なり最小単位ベクトルn2によって絞り込まれた接触可能頂点を表している。「重なり最小単位ベクトル」とは、粒子iと粒子jの重なりを最小とする向きの単位ベクトルをいい、以降の説明では単に「重なり最小ベクトル」とも称す。n2による接触可能頂点の絞り込み方法はn1による接触可能頂点の絞り込み方法と同じである。つまり、ベクトルn2と粒子iの各頂点座標の位置ベクトルPikの内積n2・Pikの最大値D2maxと、ベクトルn2と粒子jの各頂点座標の位置ベクトルPjkの内積n2・Pjkの最小値D2minを求める。そして、内積がD2min以上D2max以下となる頂点を接触可能頂点として抽出する。
【0048】
図7右は中心結線ベクトルによる接触可能頂点集合をA、重なり最小ベクトルによる接触可能頂点集合をBとしたときに、共通部分である積集合A∩Bで選択される頂点を表している。図7において、集合Aに含まれる頂点数は10、集合A内の頂点を構成頂点とする辺数は12、集合Bに含まれる頂点数は8、辺数は10である。一方、積集合A∩Bに含まれる頂点数は4、辺数は6となり、1つのベクトルのみの場合より判定対象を絞り込むことができる。よって、積集合A∩Bに含まれる頂点を最終的な接触可能頂点と定義する。
【0049】
積集合A∩Bが空集合でも接触する場合がある。図8を用いて説明する。四角で表されている頂点が中心結線ベクトルにより選択された頂点(集合A)、三角で表されているのが重なり最小ベクトルにより選択された頂点(集合B)である。塗りつぶしの円で表されているのが積集合A∩Bに含まれる接触可能頂点である。粒子jは接触可能頂点を持たないが、図8に示すように粒子iと接触している。このような場合を含めるため、判定対象とする辺、面は次のように決定する。
・積集合A∩Bに含まれる頂点(接触可能頂点)を持つ辺、面。
・集合Aに含まれる頂点と集合Bに含まれる頂点の両方を持つ辺、面。
【0050】
以上の2パターンによって、全ての接触の可能性がある辺と面を選択することができる。本方法により、接触判定を行う辺、面の組み合わせを大幅に減らすことができ、計算時間のより一層の短縮が可能となる。
【0051】
本方法で用いる重なり最小ベクトルn2の算出方法について説明する。図9は重なり最小ベクトルを求めるフローチャートである。図9に示す処理は、接触判定部B120が実行するものである。
【0052】
まず、重なり最小ベクトルの初期値を設定する(ステップS1)。初期値は中心結線単位ベクトルと平行な単位ベクトルとする。粒子iの中心位置ベクトルをCi、粒子jの中心位置ベクトルをCjとすると、重なり最小ベクトルn2の初期値は下記式で表される。
【数7】
以降の処理で、ベクトルn2の向きを微小に変動させながら、粒子iと粒子jの重なりが最小となるものを見つける。その処理で用いる微小量δの初期値δmax(=0.1程度)をステップS1で設定する。
【0053】
次に、2粒子の重なり量L(=D2max−D2min)を算出する(ステップS2)。
次に、接触の可能性があるか否かを判定する(ステップS3)。Lが0以下の場合、2粒子は非接触であるので、接触判定から除外される(ステップS4)。Lが0より大きい場合は接触の可能性があるため、重なり最小ベクトルn2を更新(探索)するためのループに入る。
【0054】
重なり最小ベクトルn2に直交し、たがいに直交するベクトルu、vを適当に定める(ステップS5)。そして、試行する重なり最小ベクトルn2(1)〜n2(4)を下記式のように設定する(ステップS6)。
【数8】
上記式の1行目で決定される試行重なり最小ベクトルn2(1)は、図9中に示されるように、直交ベクトルuの方向へ微小量δで決まる量だけ回転させたものとなる。
【0055】
このようにして決定された各試行重なり最小ベクトルn2(k)に対して2粒子の重なり量Lnew(k)を新たに算出する(k=1,2,3,4)。算出された4つのLnew(k)の最小値とLを比較する(ステップS7)。min{Lnew(k)}がLより小さければ、重なり最小ベクトルn2をn2(k)に更新する。また、LもLnew(k)に更新する(ステップS8)。重なり量Lを最小とするループにおいて、min{Lnew(k)}がLより大きくなった場合は(ステップS9)、微小量δをδ/2と小さくした後、試行重なりベクトルの設定から繰り返す(ステップS10)。
【0056】
上記のループを繰り返して、δがδmin(=0.001程度)より小さくなったときのn2が最終的な重なり最小ベクトルとなる(ステップS11)。このような処理により、粒子iとjの重なり量Lを最も小さくするベクトルn2を得ることができる。
【0057】
なお、図9のステップS5で示したように、ループを繰り返すたびにu,vを面内で回転させると、局所解への陥りを抑制し、重なり最小ベクトルの最適解を得やすいという効果が得られる。
【0058】
図9で示した方法は重なり最小ベクトルn2を決定するための一手法にすぎない。他の公知の最適化手法を利用して、重なり量Lを最小とするベクトルn2を求めることも可能である。また、少なくともベクトルn1とn2の向きが異なっていれば、第1の抽出方法よりも判定対象を絞り込む効果は得られるため、ベクトルn1に対して任意の回転を行ったものをベクトルn2として用いるだけでもよい。
【0059】
(接触判定処理)
接触判定部B120の処理フローを図10で説明する。
まず、接触判定を行う2粒子i、jを設定する(ステップS100)。次に2粒子i、jの中心座標から中心結線単位ベクトルn1を求める(ステップS110)。n1を基に2粒子i、jの重なり量Lを算出する(ステップS120)。重なり量Lを基に接触可能性を判定し(ステップS130)、L>0でなければ、2粒子は非接触として接触判定を終了する(ステップS135)。次に、2粒子i、jの位置座標情報から重なり最小単位ベクトルn2を求める(ステップS140)。ステップS140の処理内容は、図9で詳しく説明したとおりである。
【0060】
ここで、ステップS110で設定したn1を用いて接触可能頂点集合Aを設定し(ステップS150)、ステップS140で設定したn2を用いて接触可能頂点集合Bを設定する(ステップS160)。次に、接触可能頂点集合A∩Bを設定する(ステップS170)。こうして設定した接触可能頂点を含む粒子iの辺と粒子jの面を抽出する(ステップS180)。以上で、接触判定に用いる判定対象が絞り込まれる。
【0061】
次に、粒子iが粒子jに接触しているか否かの判定処理を行う。まず、接触判定を行う粒子iの辺を設定する(ステップS190)。接触判定を行う粒子jの面を設定する(ステップS200)。ここで設定した粒子iの辺と粒子jの面との交差の有無を判定する(ステップS210)。ここで、粒子jの面に粒子iの辺が交差していれば、交差回数のカウントアップを行う(ステップS220)。この操作をステップS180で抽出された粒子jの面の全てに対して行う(ステップS230)。次に、粒子iの辺と粒子jの面の交差回数が2回かどうかの判定を行う(ステップS240)。交差回数が2回ならば、めり込み量を算出し、メモリに記憶しておく(ステップS250)。本操作をS180で抽出された粒子iの辺の全てに対して行う(ステップS260)。
【0062】
なお、図10では、説明を簡単にするため、粒子iのある辺が粒子jの2つの面と交差した場合に、接触有りと判定し、粒子iとjのあいだのめり込み量を算出する処理例を示した。しかし実際の処理では、図4に示したように、粒子iと粒子jの接触を4つのパターンで判定する。前述したようにパターンごとに判定条件が異なるが、いずれのパターンにおいても粒子iの辺と粒子jの面との交差判定が基本となるので、図10のステップS180で抽出した辺及び面を利用すればよい。
【0063】
各パターン(a)〜(d)におけるめり込み量の定義について、図4中の下段の図を用いて説明する。
(a)頂点のめり込み:粒子iの頂点i−v0と粒子jの面j−f0との距離をめり込み量とする。
(b)辺のめり込み(ケース1):粒子iの辺i−e0と粒子jの辺j−e0との距離をめり込み量とする。
(c)辺のめり込み(ケース2):粒子iの辺i−e0と粒子jの辺j−e0との距離をめり込み量とする。
(d)辺のめり込み(ケース3):粒子iの辺i−e0に対する、粒子jの辺j−e0、j−e1との距離をそれぞれの辺とのめり込み量とする。
【0064】
(粒子受力計算部B130)
以上の4パターンにおいて、めり込み量(距離)の計算に用いた各粒子表面の2点を結ぶ方向を接触面法線方向と定める。この接触面法線方向は、接触点の(粒子jの面又は辺に対する)めり込み方向ということもできる。そして、接触判定部B120で求めためり込み量に基づいて、ヘルツの式を用いて、粒子iに働く接触面法線方向の接触力(バネ力)を求める。また各接触点に対して、接触が始まってからの接触面(上記接触面法線方向に垂直な面)内方向の移動量を求め、ミンドリンの式を用いて粒子iに働く接触面内方向の接触力(バネ力)を求める。また接触面法線方向の運動速度(めり込み速度)と面内方向の各運動速度(ずり速度)から、各方向に作用する粘性力(ダンパー力)を求める。そしてそれら接触力と粘性力の和に、粒子iに働くその他の力(重力、付着力、電磁力、空気の粘性抵抗等)を加えて、各粒子iが受ける並進力と回転力を求める。なお、本めり込み量から接触力を求める過程は、上記非特許文献1に記載されている手法と同じであるため、詳しい説明は割愛する。
【0065】
(粒子運動計算部B140)
次に、粒子運動計算部B140における各粒子の刻み時間後の速度と位置の算出方法を説明する。この処理は、粒子受力計算部B130で求めた粒子に働く力による、各粒子の刻み時間後の速度と位置を求めるものである。すなわち、粒子運動計算部B140は、並進力からニュートンの運動方程式を用いて並進方向の加速度を求め、更に速度と位置を求める。また粒子運動計算部B140は、回転力からオイラーの運動方程式を用いて角加速度を求め、更に回転速度と回転位置を求める。本処理は、非特許文献1に記載されている手法と同じであるため、詳しい説明は割愛する。
【0066】
(実施例)
以上の接触判定方法を用いて粒子挙動計算を実施した例を、図11〜図12を用いて説明する。図11(a)は解析モデルを示す。解析モデルは電子写真技術を用いた画像形成装置におけるクリーニングプロセスである。0.1m/secで矢印の方向に移動する感光体ドラムに対してクリーニングブレードをβ=30°で当接させておき、感光体ドラム上に乗って運ばれてきたトナーの運動を見る。各トナーの形状を粒子形状データとして与え、感光体ドラム及びクリーニングブレードの形状を壁形状データとして与える。
【0067】
図11(b)は、解析条件として与えた、トナー、感光体ドラム、クリーニングブレードそれぞれの機械特性(ヤング率、ポアソン比、減衰係数、摩擦係数、比重)を示している。この条件で、刻み時間Δtを10nsecに設定し、約2百万ステップの計算を実行した。
【0068】
図12は、(a)球形粒子と(b)異形粒子の計算結果を比較したものである。球形粒子の計算は従来の計算方法で実施している。異形粒子は4面体の角をとった形状であり、その表面を8つの3角形と6つの4角形の合計12の多角形で構成している。なお本計算においては、トナーがブレードに堰き止められた際の挙動をみるため、強制的にトナーがすり抜けないようにしている。球形粒子に対して異形粒子は回転しにくいことから、全体的に動き辛く、トナー粒子の密集度が上がる傾向にある。図12の計算結果では、異形粒子の密集度が高くなっている様子が再現されている。
【0069】
このトナーがブレードに堰き止められた際の挙動は、クリーニング不良であるトナーのすり抜けとの関係があり、流動的である程すり抜けやすいといわれている。このことから、製品設計を行う上で、トナーの形状によるクリーニング不良の傾向を粒子挙動計算で予測することが可能となる。
【0070】
また、図13は面数の異なる異形粒子の自由落下の計算を示した図である。(a)は、
頂点数12、面数14、辺数24の場合の異形粒子で、(b)は頂点数98、面数108、辺数204の異形粒子の場合である。(a)と(b)の場合において、256個の異形粒子の自由落下の計算を刻み時間Δt=10nsecで8百万ステップ実行し、本発明を使用しない場合と使用した場合での計算時間の比較を行った。(a)では、従来の方法では計算に19時間35分かかったのに対し、中心結線ベクトルによる接触可能頂点の絞り込み(第1の抽出方法)を用いた場合では、8時間09分となり、高速化率は2.4倍となる。(b)では、従来の方法では計算に524時間32分かかったのに対し、中心結線ベクトルによる接触可能頂点の絞り込みを用いると22時間24分となり、高速化率は23.4倍となった。このことから、粒子の面の数が多くなればなるほど、本発明を用いることによる計算時間の短縮効果が大きくなることがわかる。
【0071】
図14は中心結線ベクトルと重なり最小ベクトルを用いた高速化の効果を示す図である。計算には頂点数198、面数392、辺数588の異形粒子を用い、図13と同様の自由落下計算を300000ステップ、Δt=10nsecで行った。接触判定に中心結線ベクトルのみを用いた場合(第1の抽出方法)と中心結線ベクトルと重なり最小ベクトルの両方を用いた場合(第2の抽出方法)で計算時間を比較した。中心結線ベクトルのみを用いた場合は4726秒、中心結線ベクトルと重なり最小ベクトルの両方を用いた場合は2009秒となり、高速化率は2.35倍となった。このことから、中心結線ベクトルと重なり最小ベクトルの両方を用いた接触判定により、さらなる計算時間の短縮が実現できていることが分かる。
【符号の説明】
【0072】
10:情報処理装置
B100:全体制御部
B110:入力データ読込部
B120:接触判定部
B130:粒子受力計算部
B140:粒子運動計算部
B150:計算結果出力部
【特許請求の範囲】
【請求項1】
情報処理装置により、密集状態にある複数の粒子の運動を計算する方法であって、
情報処理装置が、複数の粒子それぞれの形状を多面体により定義するデータを取得する取得ステップと、
情報処理装置が、前記複数の粒子それぞれの位置情報に基づいて、各粒子が他の物体に接触しているか否かを判定する接触判定ステップと、
情報処理装置が、前記接触判定ステップで接触していると判定された他の物体から各粒子が受ける力を計算し、その力による各粒子の運動を計算する計算ステップと、
情報処理装置が、前記計算ステップで計算された各粒子の運動を出力する出力ステップと、を含み、
前記接触判定ステップにおいて、粒子iが粒子jに接触しているか否かを判定する場合に、
粒子iの中心と粒子jの中心を結ぶ直線に交わり且つ粒子jに接する第1の平面よりも粒子jの中心側の空間に位置する粒子iの辺、及び、
前記第1の平面に平行で且つ粒子iに接する第2の平面よりも粒子iの中心側の空間に位置する粒子jの面、を抽出し、
前記抽出した粒子iの辺と粒子jの面とのあいだで接触判定を行う
ことを特徴とする粒子挙動解析方法。
【請求項2】
粒子iの辺及び粒子jの面を抽出するステップは、
前記第1の平面に垂直で且つ粒子jの中心側を向く単位ベクトルn1を決定し、
単位ベクトルn1と粒子iの各頂点の位置ベクトルPiの内積n1・Piを計算し、
単位ベクトルn1と粒子jの各頂点の位置ベクトルPjの内積n1・Pjを計算し、
粒子iの全ての頂点についての内積n1・Piのうち、最大となるものをD1max、粒子jの全ての頂点についての内積n1・Pjのうち、最小となるものをD1minとした場合に、内積n1・PiがD1min以上D1max以下となる粒子iの頂点、及び、内積n1・PjがD1min以上D1max以下となる粒子jの頂点からなる集合Aを定義し、
集合Aに含まれる頂点を含む粒子iの辺及び粒子jの面を抽出するステップである
ことを特徴とする請求項1に記載の粒子挙動解析方法。
【請求項3】
情報処理装置により、密集状態にある複数の粒子の運動を計算する方法であって、
情報処理装置が、複数の粒子それぞれの形状を多面体により定義するデータを取得する取得ステップと、
情報処理装置が、前記複数の粒子それぞれの位置情報に基づいて、各粒子が他の物体に接触しているか否かを判定する接触判定ステップと、
情報処理装置が、前記接触判定ステップで接触していると判定された他の物体から各粒子が受ける力を計算し、その力による各粒子の運動を計算する計算ステップと、
情報処理装置が、前記計算ステップで計算された各粒子の運動を出力する出力ステップと、を含み、
前記接触判定ステップにおいて、粒子iが粒子jに接触しているか否かを判定する場合に、
粒子iの中心と粒子jの中心を結ぶ直線に交わり且つ粒子jに接する第1の平面よりも粒子jの中心側であって、且つ、前記第1の平面とは異なる角度で前記直線に交わり且つ粒子jに接する第3の平面よりも粒子jの中心側の空間に位置する粒子iの辺、及び、
前記第1の平面に平行で且つ粒子iに接する第2の平面よりも粒子iの中心側であって、且つ、前記第3の平面に平行で且つ粒子iに接する第4の平面よりも粒子iの中心側の空間に位置する粒子jの面、を抽出し、
前記抽出した粒子iの辺と粒子jの面とのあいだで接触判定を行う
ことを特徴とする粒子挙動解析方法。
【請求項4】
粒子iの辺及び粒子jの面を抽出するステップは、
前記第1の平面に垂直で且つ粒子jの中心側を向く単位ベクトルn1を決定し、
単位ベクトルn1と粒子iの各頂点の位置ベクトルPiの内積n1・Piを計算し、
単位ベクトルn1と粒子jの各頂点の位置ベクトルPjの内積n1・Pjを計算し、
粒子iの全ての頂点についての内積n1・Piのうち、最大となるものをD1max、粒子jの全ての頂点についての内積n1・Pjのうち、最小となるものをD1minとした場合に、内積n1・PiがD1min以上D1max以下となる粒子iの頂点、及び、内積n1・PjがD1min以上D1max以下となる粒子jの頂点からなる集合Aを定義し、
前記第3の平面に垂直で且つ粒子jの中心側を向く単位ベクトルn2を決定し、
単位ベクトルn2と粒子iの各頂点の位置ベクトルPiの内積n2・Piを計算し、
単位ベクトルn2と粒子jの各頂点の位置ベクトルPjの内積n2・Pjを計算し、
粒子iの全ての頂点についての内積n2・Piのうち、最大となるものをD2max、粒子jの全ての頂点についての内積n2・Pjのうち、最小となるものをD2minとした場合に、内積n2・PiがD2min以上D2max以下となる粒子iの頂点、及び、内積n2・PjがD2min以上D2max以下となる粒子jの頂点からなる集合Bを定義し、
集合Aと集合Bの積集合に含まれる頂点を含む粒子iの辺及び粒子jの面と、集合Aに含まれる頂点と集合Bに含まれる頂点の両方を含む粒子iの辺及び粒子jの面とを抽出するステップである
ことを特徴とする請求項3に記載の粒子挙動解析方法。
【請求項5】
前記単位ベクトルn1を、粒子iの中心と粒子jの中心を結ぶ直線に平行となるように決定する
ことを特徴とする請求項2又は4に記載の粒子挙動解析方法。
【請求項6】
前記単位ベクトルn1を、粒子iの中心と粒子jの中心を結ぶ直線に平行となるように決定し、
前記単位ベクトルn2を、D2max−D2minがD1max−D1minよりも小さくなるように決定する
ことを特徴とする請求項4に記載の粒子挙動解析方法。
【請求項7】
密集状態にある複数の粒子の運動を計算する粒子挙動解析装置であって、
複数の粒子それぞれの形状を多面体により定義するデータを取得する取得部と、
前記複数の粒子それぞれの位置情報に基づいて、各粒子が他の物体に接触しているか否かを判定する接触判定部と、
前記接触判定部で接触していると判定された他の物体から各粒子が受ける力を計算し、その力による各粒子の運動を計算する計算部と、
前記計算部で計算された各粒子の運動を出力する計算結果出力部と、を含み、
前記接触判定部は、粒子iが粒子jに接触しているか否かを判定する場合に、
粒子iの中心と粒子jの中心を結ぶ直線に交わり且つ粒子jに接する第1の平面よりも粒子jの中心側の空間に位置する粒子iの辺、及び、
前記第1の平面に平行で且つ粒子iに接する第2の平面よりも粒子iの中心側の空間に位置する粒子jの面、を抽出し、
前記抽出した粒子iの辺と粒子jの面とのあいだで接触判定を行う
ことを特徴とする粒子挙動解析装置。
【請求項8】
前記接触判定部は、
前記第1の平面に垂直で且つ粒子jの中心側を向く単位ベクトルn1を決定し、
単位ベクトルn1と粒子iの各頂点の位置ベクトルPiの内積n1・Piを計算し、
単位ベクトルn1と粒子jの各頂点の位置ベクトルPjの内積n1・Pjを計算し、
粒子iの全ての頂点についての内積n1・Piのうち、最大となるものをD1max、粒子jの全ての頂点についての内積n1・Pjのうち、最小となるものをD1minとした場合に、内積n1・PiがD1min以上D1max以下となる粒子iの頂点、及び、内積n1・PjがD1min以上D1max以下となる粒子jの頂点からなる集合Aを定義し、
集合Aに含まれる頂点を含む粒子iの辺及び粒子jの面を抽出する
ことを特徴とする請求項7に記載の粒子挙動解析装置。
【請求項9】
密集状態にある複数の粒子の運動を計算する粒子挙動解析装置であって、
複数の粒子それぞれの形状を多面体により定義するデータを取得する取得部と、
前記複数の粒子それぞれの位置情報に基づいて、各粒子が他の物体に接触しているか否かを判定する接触判定部と、
前記接触判定部で接触していると判定された他の物体から各粒子が受ける力を計算し、その力による各粒子の運動を計算する計算部と、
前記計算部で計算された各粒子の運動を出力する計算結果出力部と、を含み、
前記接触判定部は、粒子iが粒子jに接触しているか否かを判定する場合に、
粒子iの中心と粒子jの中心を結ぶ直線に交わり且つ粒子jに接する第1の平面よりも粒子jの中心側であって、且つ、前記第1の平面とは異なる角度で前記直線に交わり且つ粒子jに接する第3の平面よりも粒子jの中心側の空間に位置する粒子iの辺、及び、
前記第1の平面に平行で且つ粒子iに接する第2の平面よりも粒子iの中心側であって、且つ、前記第3の平面に平行で且つ粒子iに接する第4の平面よりも粒子iの中心側の空間に位置する粒子jの面、を抽出し、
前記抽出した粒子iの辺と粒子jの面とのあいだで接触判定を行う
ことを特徴とする粒子挙動解析装置。
【請求項10】
前記接触判定部は、
前記第1の平面に垂直で且つ粒子jの中心側を向く単位ベクトルn1を決定し、
単位ベクトルn1と粒子iの各頂点の位置ベクトルPiの内積n1・Piを計算し、
単位ベクトルn1と粒子jの各頂点の位置ベクトルPjの内積n1・Pjを計算し、
粒子iの全ての頂点についての内積n1・Piのうち、最大となるものをD1max、粒子jの全ての頂点についての内積n1・Pjのうち、最小となるものをD1minとした場合に、内積n1・PiがD1min以上D1max以下となる粒子iの頂点、及び、内積n1・PjがD1min以上D1max以下となる粒子jの頂点からなる集合Aを定義し、
前記第3の平面に垂直で且つ粒子jの中心側を向く単位ベクトルn2を決定し、
単位ベクトルn2と粒子iの各頂点の位置ベクトルPiの内積n2・Piを計算し、
単位ベクトルn2と粒子jの各頂点の位置ベクトルPjの内積n2・Pjを計算し、
粒子iの全ての頂点についての内積n2・Piのうち、最大となるものをD2max、粒子jの全ての頂点についての内積n2・Pjのうち、最小となるものをD2minとした場合に、内積n2・PiがD2min以上D2max以下となる粒子iの頂点、及び、内積n2・PjがD2min以上D2max以下となる粒子jの頂点からなる集合Bを定義し、
集合Aと集合Bの積集合に含まれる頂点を含む粒子iの辺及び粒子jの面と、集合Aに含まれる頂点と集合Bに含まれる頂点の両方を含む粒子iの辺及び粒子jの面とを抽出する
ことを特徴とする請求項9に記載の粒子挙動解析装置。
【請求項11】
前記接触判定部は、前記単位ベクトルn1を、粒子iの中心と粒子jの中心を結ぶ直線に平行となるように決定する
ことを特徴とする請求項8又は10に記載の粒子挙動解析装置。
【請求項12】
前記接触判定部は、
前記単位ベクトルn1を、粒子iの中心と粒子jの中心を結ぶ直線に平行となるように決定し、
前記単位ベクトルn2を、D2max−D2minがD1max−D1minよりも小さくなるように決定する
ことを特徴とする請求項10に記載の粒子挙動解析装置。
【請求項13】
請求項1〜6のうちいずれか1項に記載の粒子挙動解析方法の各ステップを情報処理装置に実行させることを特徴とする解析プログラム。
【請求項1】
情報処理装置により、密集状態にある複数の粒子の運動を計算する方法であって、
情報処理装置が、複数の粒子それぞれの形状を多面体により定義するデータを取得する取得ステップと、
情報処理装置が、前記複数の粒子それぞれの位置情報に基づいて、各粒子が他の物体に接触しているか否かを判定する接触判定ステップと、
情報処理装置が、前記接触判定ステップで接触していると判定された他の物体から各粒子が受ける力を計算し、その力による各粒子の運動を計算する計算ステップと、
情報処理装置が、前記計算ステップで計算された各粒子の運動を出力する出力ステップと、を含み、
前記接触判定ステップにおいて、粒子iが粒子jに接触しているか否かを判定する場合に、
粒子iの中心と粒子jの中心を結ぶ直線に交わり且つ粒子jに接する第1の平面よりも粒子jの中心側の空間に位置する粒子iの辺、及び、
前記第1の平面に平行で且つ粒子iに接する第2の平面よりも粒子iの中心側の空間に位置する粒子jの面、を抽出し、
前記抽出した粒子iの辺と粒子jの面とのあいだで接触判定を行う
ことを特徴とする粒子挙動解析方法。
【請求項2】
粒子iの辺及び粒子jの面を抽出するステップは、
前記第1の平面に垂直で且つ粒子jの中心側を向く単位ベクトルn1を決定し、
単位ベクトルn1と粒子iの各頂点の位置ベクトルPiの内積n1・Piを計算し、
単位ベクトルn1と粒子jの各頂点の位置ベクトルPjの内積n1・Pjを計算し、
粒子iの全ての頂点についての内積n1・Piのうち、最大となるものをD1max、粒子jの全ての頂点についての内積n1・Pjのうち、最小となるものをD1minとした場合に、内積n1・PiがD1min以上D1max以下となる粒子iの頂点、及び、内積n1・PjがD1min以上D1max以下となる粒子jの頂点からなる集合Aを定義し、
集合Aに含まれる頂点を含む粒子iの辺及び粒子jの面を抽出するステップである
ことを特徴とする請求項1に記載の粒子挙動解析方法。
【請求項3】
情報処理装置により、密集状態にある複数の粒子の運動を計算する方法であって、
情報処理装置が、複数の粒子それぞれの形状を多面体により定義するデータを取得する取得ステップと、
情報処理装置が、前記複数の粒子それぞれの位置情報に基づいて、各粒子が他の物体に接触しているか否かを判定する接触判定ステップと、
情報処理装置が、前記接触判定ステップで接触していると判定された他の物体から各粒子が受ける力を計算し、その力による各粒子の運動を計算する計算ステップと、
情報処理装置が、前記計算ステップで計算された各粒子の運動を出力する出力ステップと、を含み、
前記接触判定ステップにおいて、粒子iが粒子jに接触しているか否かを判定する場合に、
粒子iの中心と粒子jの中心を結ぶ直線に交わり且つ粒子jに接する第1の平面よりも粒子jの中心側であって、且つ、前記第1の平面とは異なる角度で前記直線に交わり且つ粒子jに接する第3の平面よりも粒子jの中心側の空間に位置する粒子iの辺、及び、
前記第1の平面に平行で且つ粒子iに接する第2の平面よりも粒子iの中心側であって、且つ、前記第3の平面に平行で且つ粒子iに接する第4の平面よりも粒子iの中心側の空間に位置する粒子jの面、を抽出し、
前記抽出した粒子iの辺と粒子jの面とのあいだで接触判定を行う
ことを特徴とする粒子挙動解析方法。
【請求項4】
粒子iの辺及び粒子jの面を抽出するステップは、
前記第1の平面に垂直で且つ粒子jの中心側を向く単位ベクトルn1を決定し、
単位ベクトルn1と粒子iの各頂点の位置ベクトルPiの内積n1・Piを計算し、
単位ベクトルn1と粒子jの各頂点の位置ベクトルPjの内積n1・Pjを計算し、
粒子iの全ての頂点についての内積n1・Piのうち、最大となるものをD1max、粒子jの全ての頂点についての内積n1・Pjのうち、最小となるものをD1minとした場合に、内積n1・PiがD1min以上D1max以下となる粒子iの頂点、及び、内積n1・PjがD1min以上D1max以下となる粒子jの頂点からなる集合Aを定義し、
前記第3の平面に垂直で且つ粒子jの中心側を向く単位ベクトルn2を決定し、
単位ベクトルn2と粒子iの各頂点の位置ベクトルPiの内積n2・Piを計算し、
単位ベクトルn2と粒子jの各頂点の位置ベクトルPjの内積n2・Pjを計算し、
粒子iの全ての頂点についての内積n2・Piのうち、最大となるものをD2max、粒子jの全ての頂点についての内積n2・Pjのうち、最小となるものをD2minとした場合に、内積n2・PiがD2min以上D2max以下となる粒子iの頂点、及び、内積n2・PjがD2min以上D2max以下となる粒子jの頂点からなる集合Bを定義し、
集合Aと集合Bの積集合に含まれる頂点を含む粒子iの辺及び粒子jの面と、集合Aに含まれる頂点と集合Bに含まれる頂点の両方を含む粒子iの辺及び粒子jの面とを抽出するステップである
ことを特徴とする請求項3に記載の粒子挙動解析方法。
【請求項5】
前記単位ベクトルn1を、粒子iの中心と粒子jの中心を結ぶ直線に平行となるように決定する
ことを特徴とする請求項2又は4に記載の粒子挙動解析方法。
【請求項6】
前記単位ベクトルn1を、粒子iの中心と粒子jの中心を結ぶ直線に平行となるように決定し、
前記単位ベクトルn2を、D2max−D2minがD1max−D1minよりも小さくなるように決定する
ことを特徴とする請求項4に記載の粒子挙動解析方法。
【請求項7】
密集状態にある複数の粒子の運動を計算する粒子挙動解析装置であって、
複数の粒子それぞれの形状を多面体により定義するデータを取得する取得部と、
前記複数の粒子それぞれの位置情報に基づいて、各粒子が他の物体に接触しているか否かを判定する接触判定部と、
前記接触判定部で接触していると判定された他の物体から各粒子が受ける力を計算し、その力による各粒子の運動を計算する計算部と、
前記計算部で計算された各粒子の運動を出力する計算結果出力部と、を含み、
前記接触判定部は、粒子iが粒子jに接触しているか否かを判定する場合に、
粒子iの中心と粒子jの中心を結ぶ直線に交わり且つ粒子jに接する第1の平面よりも粒子jの中心側の空間に位置する粒子iの辺、及び、
前記第1の平面に平行で且つ粒子iに接する第2の平面よりも粒子iの中心側の空間に位置する粒子jの面、を抽出し、
前記抽出した粒子iの辺と粒子jの面とのあいだで接触判定を行う
ことを特徴とする粒子挙動解析装置。
【請求項8】
前記接触判定部は、
前記第1の平面に垂直で且つ粒子jの中心側を向く単位ベクトルn1を決定し、
単位ベクトルn1と粒子iの各頂点の位置ベクトルPiの内積n1・Piを計算し、
単位ベクトルn1と粒子jの各頂点の位置ベクトルPjの内積n1・Pjを計算し、
粒子iの全ての頂点についての内積n1・Piのうち、最大となるものをD1max、粒子jの全ての頂点についての内積n1・Pjのうち、最小となるものをD1minとした場合に、内積n1・PiがD1min以上D1max以下となる粒子iの頂点、及び、内積n1・PjがD1min以上D1max以下となる粒子jの頂点からなる集合Aを定義し、
集合Aに含まれる頂点を含む粒子iの辺及び粒子jの面を抽出する
ことを特徴とする請求項7に記載の粒子挙動解析装置。
【請求項9】
密集状態にある複数の粒子の運動を計算する粒子挙動解析装置であって、
複数の粒子それぞれの形状を多面体により定義するデータを取得する取得部と、
前記複数の粒子それぞれの位置情報に基づいて、各粒子が他の物体に接触しているか否かを判定する接触判定部と、
前記接触判定部で接触していると判定された他の物体から各粒子が受ける力を計算し、その力による各粒子の運動を計算する計算部と、
前記計算部で計算された各粒子の運動を出力する計算結果出力部と、を含み、
前記接触判定部は、粒子iが粒子jに接触しているか否かを判定する場合に、
粒子iの中心と粒子jの中心を結ぶ直線に交わり且つ粒子jに接する第1の平面よりも粒子jの中心側であって、且つ、前記第1の平面とは異なる角度で前記直線に交わり且つ粒子jに接する第3の平面よりも粒子jの中心側の空間に位置する粒子iの辺、及び、
前記第1の平面に平行で且つ粒子iに接する第2の平面よりも粒子iの中心側であって、且つ、前記第3の平面に平行で且つ粒子iに接する第4の平面よりも粒子iの中心側の空間に位置する粒子jの面、を抽出し、
前記抽出した粒子iの辺と粒子jの面とのあいだで接触判定を行う
ことを特徴とする粒子挙動解析装置。
【請求項10】
前記接触判定部は、
前記第1の平面に垂直で且つ粒子jの中心側を向く単位ベクトルn1を決定し、
単位ベクトルn1と粒子iの各頂点の位置ベクトルPiの内積n1・Piを計算し、
単位ベクトルn1と粒子jの各頂点の位置ベクトルPjの内積n1・Pjを計算し、
粒子iの全ての頂点についての内積n1・Piのうち、最大となるものをD1max、粒子jの全ての頂点についての内積n1・Pjのうち、最小となるものをD1minとした場合に、内積n1・PiがD1min以上D1max以下となる粒子iの頂点、及び、内積n1・PjがD1min以上D1max以下となる粒子jの頂点からなる集合Aを定義し、
前記第3の平面に垂直で且つ粒子jの中心側を向く単位ベクトルn2を決定し、
単位ベクトルn2と粒子iの各頂点の位置ベクトルPiの内積n2・Piを計算し、
単位ベクトルn2と粒子jの各頂点の位置ベクトルPjの内積n2・Pjを計算し、
粒子iの全ての頂点についての内積n2・Piのうち、最大となるものをD2max、粒子jの全ての頂点についての内積n2・Pjのうち、最小となるものをD2minとした場合に、内積n2・PiがD2min以上D2max以下となる粒子iの頂点、及び、内積n2・PjがD2min以上D2max以下となる粒子jの頂点からなる集合Bを定義し、
集合Aと集合Bの積集合に含まれる頂点を含む粒子iの辺及び粒子jの面と、集合Aに含まれる頂点と集合Bに含まれる頂点の両方を含む粒子iの辺及び粒子jの面とを抽出する
ことを特徴とする請求項9に記載の粒子挙動解析装置。
【請求項11】
前記接触判定部は、前記単位ベクトルn1を、粒子iの中心と粒子jの中心を結ぶ直線に平行となるように決定する
ことを特徴とする請求項8又は10に記載の粒子挙動解析装置。
【請求項12】
前記接触判定部は、
前記単位ベクトルn1を、粒子iの中心と粒子jの中心を結ぶ直線に平行となるように決定し、
前記単位ベクトルn2を、D2max−D2minがD1max−D1minよりも小さくなるように決定する
ことを特徴とする請求項10に記載の粒子挙動解析装置。
【請求項13】
請求項1〜6のうちいずれか1項に記載の粒子挙動解析方法の各ステップを情報処理装置に実行させることを特徴とする解析プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2013−89100(P2013−89100A)
【公開日】平成25年5月13日(2013.5.13)
【国際特許分類】
【出願番号】特願2011−230304(P2011−230304)
【出願日】平成23年10月20日(2011.10.20)
【出願人】(000001007)キヤノン株式会社 (59,756)
【公開日】平成25年5月13日(2013.5.13)
【国際特許分類】
【出願日】平成23年10月20日(2011.10.20)
【出願人】(000001007)キヤノン株式会社 (59,756)
[ Back to top ]