(58)【調査した分野】(Int.Cl.,DB名)
前記粒子群特定部は、前記定義系に含まれる複数の粒子のなかから、前記数値演算部による更新の前後で相対距離が実質的に保存される粒子群を特定することを特徴とする請求項1に記載の解析装置。
【発明を実施するための形態】
【0015】
以下、各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。
【0016】
図1は、仮想2次元空間6内に定義された3つの粒子からなる系を粒子法を使用して演算した場合の、演算前の初期状態2と演算後の定常状態4とを示す模式図である。粒子法を使用した演算により、初期状態2における粒子8、10、12はそれぞれ定常状態4における粒子14、16、18となる。このときの各粒子の移動は
図1において一点鎖線で示されている。初期状態2と定常状態4とでは粒子の位置は全て異なっている。このように、粒子法による演算の場合、有限要素法などとは異なり、演算の前後で系全体が移動することがよくある。
【0017】
実施の形態に係る解析装置は、初期状態2の系に含まれる粒子の間の相対的な位置関係と、定常状態4の系に含まれる粒子の間の相対的な位置関係と、を比較する。特に解析装置は、演算の前後で相対距離すなわち粒子間距離が実質的に変わらない粒子のペアを探索する。
図1に示される例では、粒子8と粒子12との粒子間距離が実質的に変わっていない、すなわち粒子8−粒子12の粒子間距離と粒子14−粒子18の粒子間距離とが実質的に等しいとする。
【0018】
解析装置は、初期状態2の系の粒子8、粒子12が定常状態4の系の粒子14、粒子18にそれぞれ重なるように、初期状態2の系を合同変換する。例えば解析装置は、粒子8が粒子14に重なるように初期状態2の系を平行移動させ、次に粒子12が粒子18に重なるように初期状態2の系を回転させる。
図2は、初期状態2の系に平行移動および回転を施した後の状態を示す模式図である。
【0019】
解析装置は、初期状態2の系に平行移動および回転を施した後の状態で、合同変換の基準とされていない粒子10の位置から対応する粒子16の位置への差分ベクトル20を求める。解析装置は、差分ベクトル20をα(α>1)倍し、そのように拡大された差分ベクトル20の終点に対応する位置に粒子16を移動させる。
図3は、差分ベクトル20をα倍して得られる拡大差分ベクトル22の終点に粒子16が移動される様子を示す模式図である。
【0020】
このように、本実施の形態に係る解析装置では、系内の所定の参照部分を基準にして、粒子法による演算前後の差分が増大される。粒子法では演算により系全体が動いてしまうことがよくあるのであるが、本実施の形態に係る手法を採用することで、そのような系全体の動きを参照部分の比較により吸収した上で、系の変形を大げさにして可視化することができる。
【0021】
本実施の形態ではMD法に倣って粒子系を解析する場合について説明するが、繰り込み群分子動力学法(Renormalized Molecular Dynamics)やDEM(Distinct Element Method)やSPH(Smoothed Particle Hydrodynamics)やMPS(Moving Particle Semi-implicit)などの他の粒子法に倣って粒子系を解析する場合にも、本実施の形態に係る技術的思想を適用できることは本明細書に触れた当業者には明らかである。
【0022】
図4は、実施の形態に係る解析装置100の機能および構成を示すブロック図である。ここに示す各ブロックは、ハードウエア的には、コンピュータのCPU(central processing unit)をはじめとする素子や機械装置で実現でき、ソフトウエア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウエア、ソフトウエアの組合せによっていろいろなかたちで実現できることは、本明細書に触れた当業者には理解されるところである。
【0023】
解析装置100は入力装置102およびディスプレイ104と接続される。入力装置102は、解析装置100で実行される処理に関係するユーザの入力を受けるためのキーボード、マウスなどであってもよい。入力装置102は、インターネットなどのネットワークやCD、DVDなどの記録媒体から入力を受けるよう構成されていてもよい。
【0024】
解析装置100は、定義系取得部110と、数値演算部114と、粒子群特定部128と、系位置調整部134と、位置関係変更部140と、表示制御部148と、定義系保持部112と、一時保持部126と、更新系保持部124と、デフォルメ系保持部152と、を備える。
【0025】
定義系取得部110は、仮想空間内に定義されたN(Nは自然数)個の粒子を含む系を定義系Pとして取得する。定義系Pは歯車やモータなどの現実の物体を模するものとして定義される。特に定義系取得部110は、入力装置102を介してユーザから取得する入力情報に基づき、仮想空間内にN個の粒子を配置し、配置された各粒子に速度を付与する。定義系Pはこのように定義されたN個の粒子の系である。定義系取得部110は、配置された粒子を特定する粒子IDと、その粒子の位置と、その粒子の速度と、を対応付けて定義系保持部112に登録する。
なお、粒子を現実世界の原子または分子に対応させてもよい。また、定義系取得部110は、定義系Pのデータをネットワークや記録媒体を介して外部から取得し、取得されたデータを定義系保持部112に登録してもよい。
【0026】
以下では定義系Pの粒子は全て同質または同等なものとして設定され、かつ、ポテンシャルエネルギ関数は2体のポテンシャルであって粒子によらずに同じ形を有するものとして設定される場合について説明する。しかしながら、他の場合にも本実施の形態に係る技術的思想を適用できることは、本明細書に触れた当業者には明らかである。
【0027】
数値演算部114は、定義系保持部112を参照し、定義系Pの各粒子の運動を支配する支配方程式を数値的に演算する。特に数値演算部114は、離散化された粒子の運動方程式にしたがった繰り返し演算を行う。数値演算部114は、その演算結果に基づいて定義系Pの各粒子の位置を更新する。
数値演算部114は、力演算部116と、粒子状態演算部118と、状態更新部120と、終了条件判定部122と、を含む。
【0028】
数値演算部114は演算を開始する前に、定義系保持部112によって保持される定義系Pのデータを一時保持部126に複製する。数値演算部114は、一時保持部126に保持される各粒子の位置および速度を、定義系保持部112から複製された各粒子の位置および速度を初期値として、数値演算が繰り返されるごとに更新する。この更新は、定義系Pの各粒子の位置および速度の更新に相当する。数値演算を終了する際、数値演算部114は、一時保持部126に保持されている各粒子の位置および速度を、更新系Qの各粒子の位置および速度として更新系保持部124に登録する。
系が定常状態となるまで数値演算が続けられる場合、定義系Pは系の初期状態に対応し、更新系Qは系の定常状態に対応する。
【0029】
力演算部116は一時保持部126に保持されるデータを参照し、各粒子について、粒子間の距離に基づきその粒子に働く力を演算する。力演算部116は、i番目(1≦i≦N)の粒子について、そのi番目の粒子との距離が所定のカットオフ距離よりも小さな粒子(以下、近接粒子と称す)を決定する。力演算部116は、各近接粒子について、その近接粒子とi番目の粒子との間のポテンシャルエネルギ関数およびその近接粒子とi番目の粒子との距離に基づいて、その近接粒子がi番目の粒子に及ぼす力を演算する。特に力演算部116は、その近接粒子とi番目の粒子との距離の値におけるポテンシャルエネルギ関数のグラジエント(Gradient)の値から力を算出する。力演算部116は、近接粒子がi番目の粒子に及ぼす力を全ての近接粒子について足し合わせることによって、i番目の粒子に働く力を算出する。
【0030】
粒子状態演算部118は一時保持部126に保持されるデータを参照し、各粒子について、離散化された粒子の運動方程式に力演算部116によって演算された力を適用することによって粒子の位置および速度のうちの少なくともひとつを演算する。本実施の形態では、粒子状態演算部118は粒子の位置および速度の両方を演算する。
【0031】
粒子状態演算部118は、力演算部116によって演算された力を含む離散化された粒子の運動方程式から粒子の速度を演算する。粒子状態演算部118は、i番目の粒子について、蛙跳び法やオイラー法などの所定の数値解析の手法に基づき所定の微小な時間刻みΔtを使用して離散化された粒子の運動方程式に、力演算部116によって演算された力を代入することによって、粒子の速度を演算する。この演算には以前の繰り返し演算のサイクルで演算された粒子の速度が使用される。
【0032】
粒子状態演算部118は、演算された粒子の速度に基づいて粒子の位置を算出する。粒子状態演算部118は、i番目の粒子について、所定の数値解析の手法に基づき時間刻みΔtを使用して離散化された粒子の位置と速度の関係式に、演算された粒子の速度を適用することによって、粒子の位置を演算する。この演算には以前の繰り返し演算のサイクルで演算された粒子の位置が使用される。
【0033】
状態更新部120は、一時保持部126に保持される各粒子の位置および速度のそれぞれを、粒子状態演算部118によって演算された位置および速度で更新する。
【0034】
終了条件判定部122は、数値演算部114における繰り返し演算を終了すべきか否かを判定する。繰り返し演算を終了すべき終了条件は、例えば繰り返し演算が所定の回数行われたことや、外部から終了の指示を受け付けたことや、系が定常状態に達したことである。終了条件判定部122は、終了条件が満たされる場合、数値演算部114における繰り返し演算を終了させると共に、一時保持部126に保持される各粒子の位置および速度を、更新系Qの各粒子の位置および速度として更新系保持部124に登録する。したがって、更新系Qは数値演算部114による定義系Pの各粒子の位置および速度の更新の結果得られる系である。終了条件判定部122は、終了条件が満たされない場合、処理を力演算部116に戻す。
【0035】
粒子群特定部128は、定義系Pに含まれるN個の粒子のなかから、数値演算部114による位置の更新の前後で相対的な位置関係が実質的に保存される粒子群を特定する。特に粒子群特定部128は、位置の更新の前後で粒子間距離が実質的に保存される粒子群を特定する。定義系Pが定義される仮想空間が2次元の場合は最近接の粒子ペア(以下、粒子間距離保存ペアと称す)が粒子群として特定され、3次元の場合は最小の三角要素をなす3つの粒子が粒子群として特定される。以下、定義系Pは2次元の仮想空間内に定義される場合について説明する。
【0036】
粒子群特定部128は、定義系粒子群選択部130と、保存判定部132と、を含む。
定義系粒子群選択部130は、定義系保持部112を参照し、定義系Pに含まれるN個の粒子のなかから、一方の粒子が他方の粒子の最近接粒子すなわち他方の粒子に最も近い粒子となっている粒子ペアを候補ペアとして選択する。定義系粒子群選択部130は、選択された候補ペアの粒子間距離を演算する。
【0037】
保存判定部132は、更新系保持部124を参照し、更新系Qに含まれるN個の粒子のなかから、定義系粒子群選択部130によって選択された候補ペアに対応する粒子ペアを特定する。特に保存判定部132は、候補ペアに含まれる2つの粒子の粒子IDと同じ粒子IDを有する更新系Qの2つの粒子を特定する。保存判定部132は特定された粒子ペアの粒子間距離を演算する。保存判定部132はそのように演算された粒子間距離と定義系粒子群選択部130によって演算された候補ペアの粒子間距離とを比較し、両者が所定の誤差範囲内で一致する場合、候補ペアは位置の更新の前後で粒子間距離が実質的に保存されるペアであると判定し、候補ペアを粒子間距離保存ペアとして特定する。また保存判定部132は、保存判定部132によって特定された更新系Qの粒子ペアを対応ペアとして特定する。
両者が一致しない場合、保存判定部132は処理を定義系粒子群選択部130に戻し、定義系粒子群選択部130は別の候補ペアを選択する。
【0038】
系位置調整部134は、粒子間距離保存ペアと対応ペアとが重なるように、定義系Pと更新系Qとの相対位置を調整する。特に系位置調整部134は、定義系Pおよび更新系Qのうちの少なくともひとつを合同変換することによりそれらの相対位置を調整する。合同変換は、平行移動に対応する変換および回転に対応する変換を含む。
系位置調整部134は、平行移動部136と、回転部138と、を含む。
【0039】
平行移動部136は、粒子間距離保存ペアの一方の粒子の位置が対応ペアの対応する一方の粒子の位置と実質的に同じとなるように、定義系P全体を平行移動させる。この平行移動は、定義系Pの各粒子の位置ベクトルに所定の平行移動ベクトルを加算することにより行われてもよい。平行移動部136は、定義系保持部112に保持されている各粒子の位置を、そのような平行移動の結果得られる各粒子の位置で更新する。
【0040】
回転部138は、平行移動部136によって粒子間距離保存ペアの一方の粒子の位置が対応ペアの対応する一方の粒子の位置と合わされた後、粒子間距離保存ペアの他方の粒子の位置が対応ペアの対応する他方の粒子の位置と実質的に同じとなるように、定義系P全体を回転させる。この回転は、平行移動部136による更新後の定義系Pの各粒子の位置ベクトルに所定の回転行列を積算することにより行われてもよい。回転部138は、定義系保持部112に保持されている各粒子の位置を、そのような回転の結果得られる各粒子の位置で更新する。
【0041】
位置関係変更部140は、系位置調整部134によって相対位置が調整された定義系Pおよび更新系Qについて、定義系Pに含まれる粒子とその粒子に対応する更新系Qに含まれる粒子との間の相対的な位置関係を変更する。特に位置関係変更部140は、定義系Pに含まれる粒子とその粒子に対応する更新系Qに含まれる粒子との粒子間距離を所定の比率で変更する。
位置関係変更部140は、差分ベクトル演算部142と、差分ベクトル拡大部144と、拡大結果登録部146と、を含む。
【0042】
差分ベクトル演算部142は、回転部138による更新後の定義系保持部112および更新系保持部124を参照し、各粒子について、回転部138による更新後の定義系保持部112に保持される位置を始点、更新系保持部124に保持される位置を終点とする差分ベクトルを演算する。より具体的には、差分ベクトル演算部142は、粒子IDごとに、更新系保持部124に保持される位置に対応する位置ベクトルから、回転部138による更新後の定義系保持部112に保持される位置に対応する位置ベクトルを減算することにより、差分ベクトルを演算する。
【0043】
差分ベクトル拡大部144は、差分ベクトル演算部142によって演算された差分ベクトルに、1よりも大きな比率γを乗算することにより、拡大差分ベクトルを演算する。
拡大結果登録部146は、粒子IDごとに、回転部138による更新後の定義系保持部112に保持される位置に対応する位置ベクトルに、差分ベクトル拡大部144によって演算された拡大差分ベクトルを加算し、新たな位置ベクトルを得る。拡大結果登録部146は、粒子IDと、新たな位置ベクトルに対応する位置と、を対応付けてデフォルメ系保持部152に登録する。
【0044】
表示制御部148は、デフォルメ系保持部152に保持される各粒子の位置に基づくシミュレーション結果をディスプレイ104に表示させる。
図5(a)〜(d)は、解析装置100によるシミュレーション結果の例を示す代表画面図である。
図5(a)〜(d)は噛み合う歯車の一方をシミュレートしたものであり、噛み合いにより歯車の歯面がどのように変形しうるかが関心の対象である。
【0045】
図5(a)は位置関係変更部140による変更がなされていない更新系すなわちγ=1に対応する更新系を示す。なお、定義系と更新系との差は
図5(a)の縮尺に対して僅かであり、定義系も系の全体的な位置を除けば
図5(a)と同様に描画されうる。
図5(b)、(c)、(d)はそれぞれγ=16、128、512に対応する更新系を示す。デフォルメの比率γを大きくしていくと、歯面がどのように変形するかを視覚的により容易に把握できるようになることが分かる。
【0046】
図6は、定義系保持部112の一例を示すデータ構造図である。定義系保持部112は、粒子IDと、粒子の位置と、粒子の速度と、を対応付けて保持する。一時保持部126、更新系保持部124、デフォルメ系保持部152も
図6と同様のデータ構造を有する。
【0047】
上述の実施の形態において、保持部の例は、ハードディスクやメモリである。また、本明細書の記載に基づき、各部を、図示しないCPUや、インストールされたアプリケーションプログラムのモジュールや、システムプログラムのモジュールや、ハードディスクから読み出したデータの内容を一時的に記憶するメモリなどにより実現できることは本明細書に触れた当業者には理解されるところである。
【0048】
以上の構成による解析装置100の動作を説明する。
図7は、解析装置100における一連の処理の一例を示すフローチャートである。定義系取得部110は、定義系Pを表すデータを取得する(S202)。数値演算部114は、定義系PについてMD法による数値演算を行い、その演算結果に基づいて定義系Pを更新する(S204)。粒子群特定部128は、数値演算前の定義系Pに含まれるN個の粒子のなかから、それまでに候補ペアとして選択されていない候補ペアを選択する(S206)。なお、粒子群特定部128は選択すべき候補ペアが存在しない場合、エラーを返してもよい。粒子群特定部128は、候補ペアの粒子間距離を演算する(S208)。粒子群特定部128は、候補ペアに対応する更新系Qの粒子ペアの粒子間距離を演算する(S210)。粒子群特定部128は、演算された2つの粒子間距離が実質的に一致するか否かを判定する(S212)。一致しないと判定された場合(S212のN)、粒子群特定部128は別の候補ペアを選択する(S206)。一致すると判定された場合(S212のY)、粒子群特定部128はそのような候補ペアを粒子間距離保存ペアとして特定し、そのような候補ペアに対応する更新系Qの粒子ペアを対応ペアとして特定する(S214)。系位置調整部134は、粒子間距離保存ペアと対応ペアとを重ね合わせる(S216)。位置関係変更部140は、重ね合わせの結果から、各粒子について差分ベクトルを演算する(S218)。位置関係変更部140は、所定の比率で差分ベクトルを拡大する(S220)。表示制御部148は、拡大された差分ベクトルに基づくシミュレーション結果をディスプレイ104に表示させる(S222)。
【0049】
本実施の形態に係る解析装置100によると、粒子法を使用したシミュレーションにおいて、数値演算の前後での変化を誇張して可視化することができる。変化を大げさに(デフォルメして)表示することにより、ユーザは実際の変化が小さい場合でもその変化を定性的により的確に把握することができる。
【0050】
例えば、
図5(a)や
図5(b)を参照しても、シミュレーションの結果どこがどのように変形しうるかを把握することは一般には難しい。しかしながら
図5(c)や
図5(d)を参照すると、歯面のどの部分がどのように変形するかを視覚的に容易に把握できる。このように、本実施の形態に係る手法は、荷重を受け変形しうる構造物を可視化するために好適に使用されうる。
【0051】
また、本実施の形態に係る解析装置100では、定義系と更新系との差分が演算される前に、定義系と更新系との相対位置が調整される。これにより、粒子法のように定義系の全体的な位置と更新系の全体的な位置とが容易に変わってしまうようなシミュレーション手法を採用する場合でも、定義系と更新系との的確な比較が可能となる。
【0052】
本発明者は、当業者としての経験から、粒子法を使用してシミュレーションを行った場合、定義系の全体的な位置と更新系の全体的な位置とが異なっていても、大抵の場合、数値演算の前後で粒子間距離が実質的に変わらない粒子ペアが存在することを認識した。本実施の形態では本発明者のこの認識に基づき、粒子間距離保存ペアを特定し、この粒子間距離保存ペアを基準にして定義系と更新系とを重ね合わせることとしている。したがって、本実施の形態に係る手法の適用可能性を高めることができる。
【0053】
以上、実施の形態に係る解析装置100の構成と動作について説明した。これらの実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0054】
実施の形態では、数値演算部114において粒子の位置と速度の両方を演算する場合について説明したが、これに限られない。例えば、数値解析の手法にはVerlet法のように、粒子の位置を演算する際に粒子に働く力から粒子の位置を直接演算し、粒子の速度は陽に計算しなくてもよい手法もあり、本実施の形態に係る技術的思想をそのような手法に適用してもよい。
【0055】
実施の形態では、粒子群特定部128によって定義系Pから特定される粒子群は最近接の粒子ペアである場合について説明したが、これに限られず、最近接以外の粒子ペアが特定されてもよい。しかしながら、最近接の粒子とする場合、演算が簡素化され、演算量を低減できる。
【0056】
実施の形態では、定義系Pから候補ペアが選択される場合について説明したが、これに限られず、更新系Qから候補ペアが選択されてもよい。
【0057】
実施の形態では、系位置調整部134は定義系Pを移動させる場合について説明したが、これに限られず、系位置調整部は定義系Pの代わりに更新系Qを移動させてもよく、あるいはまた両者を移動させてもよい。
【0058】
実施の形態では、位置関係変更部140が更新系Qの各粒子の位置を変更する場合について説明したが、これに限られず、例えば定義系Pの各粒子の位置が変更されてもよく、あるいはまた、定義系Pおよび更新系Qの両方の粒子の位置が変更されてもよい。
【0059】
実施の形態では、位置関係変更部140が差分ベクトルを大きくする場合について説明したが、これに限られず、例えば位置関係変更部は差分ベクトルを小さくしてもよい。この場合、例えば更新系における変化が大きすぎて分かりにくい場合に、その変化を小さくすることで分かり易くできる。
【0060】
実施の形態では、保存判定部132が演算された粒子間距離と定義系粒子群選択部130によって演算された候補ペアの粒子間距離とを比較し、両者が所定の誤差範囲内で一致する場合、候補ペアは位置の更新の前後で粒子間距離が実質的に保存されるペアであると判定する場合について説明したが、これに限られない。例えば、保存判定部は、定義系Pの最近接の粒子ペアの全てについて、対応する更新系Qの粒子ペアとの間で粒子間距離を比較し、それらの差が最も小さいすなわち粒子間距離が最も変化していない候補ペアを粒子間距離保存ペアとして特定してもよい。