(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023127881
(43)【公開日】2023-09-14
(54)【発明の名称】シミュレーションプログラム、シミュレーション方法及びシミュレーション装置
(51)【国際特許分類】
G16C 10/00 20190101AFI20230907BHJP
G16Z 99/00 20190101ALI20230907BHJP
【FI】
G16C10/00
G16Z99/00
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022031831
(22)【出願日】2022-03-02
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】田宮 豊
【テーマコード(参考)】
5L049
【Fターム(参考)】
5L049DD02
(57)【要約】 (修正有)
【課題】カットオフ判定の回数の削減を実現するシミュレーションプログラム、方法及び装置を提供する。
【解決手段】シミュレーションプログラムを実行するサーバ装置10において、ペア生成部17は、仮想空間に配置される粒子の座標を取得し、仮想空間上の座標を定める座標軸のうち第1の座標軸方向に2粒子間の相互作用計算のカットオフに用いるカットオフ半径の幅を有するウィンドウを第1の座標軸方向に移動し、移動によりウィンドウに入る第1の粒子と、ウィンドウ内に位置する第2の粒子との間でカットオフ半径内にあるか否かを判定して、第1の粒子と第2の粒子が存在する場合に粒子ペアとして生成し、ウィンドウの移動と粒子ペアの生成を反復する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
仮想空間に配置される粒子の座標を取得し、
前記仮想空間上の座標を定める座標軸のうち第1の座標軸方向に2粒子間の相互作用計算のカットオフに用いるカットオフ半径の幅を有するウィンドウを前記第1の座標軸方向に移動し、
前記移動により前記ウィンドウに入る第1の粒子と、前記ウィンドウ内に位置する第2の粒子との間で前記カットオフ半径内にあるか否かを判定して、前記第1の粒子と前記第2の粒子が存在する場合に粒子ペアとして生成し、
前記ウィンドウの移動と前記粒子ペアの生成を反復する、
処理をコンピュータに実行させることを特徴とするシミュレーションプログラム。
【請求項2】
前記仮想空間に配置される粒子ごとに前記カットオフ半径に基づくエリアを設定し、
前記第1の粒子および前記第2の粒子の組合せのうち、前記エリアが重複する粒子同士を前記粒子ペアの候補として抽出する、
処理を前記コンピュータにさらに実行させ、
前記生成する処理は、前記抽出する処理で抽出された候補が前記カットオフ半径内であるか否かを判定して、前記カットオフ半径以内である候補が存在する場合に粒子ペアとして生成する処理を含む、
ことを特徴とする請求項1に記載のシミュレーションプログラム。
【請求項3】
前記反復する処理は、前記エリアの前記第1の座標軸方向上の始点および前記エリアの前記第1の座標軸方向上の終点に基づいて前記ウィンドウの移動を反復する処理を含む、
ことを特徴とする請求項2に記載のシミュレーションプログラム。
【請求項4】
前記第1の座標軸と直交する第2の座標軸の座標値で前記第2の粒子がソートされた第1のリスト、および、前記第1の座標軸および前記第2の座標軸と直交する第3の座標軸の座標値で前記第2の粒子がソートされた第2のリストの各々から、前記移動により前記ウィンドウから出る第3の粒子に対応する第2の粒子を検索して前記第1のリストおよび前記第2のリストから削除する、
処理を前記コンピュータにさらに実行させることを特徴とする請求項1~3のいずれか1つに記載のシミュレーションプログラム。
【請求項5】
前記第1の座標軸と直交する第2の座標軸の座標値で前記第2の粒子がソートされた第1のリストに、前記移動により前記ウィンドウに入る第1の粒子が前記第2の粒子として登録されるソート位置を計算すると共に、前記第1の座標軸および前記第2の座標軸と直交する第3の座標軸の座標値で前記第2の粒子がソートされた第2のリストに、前記移動により前記ウィンドウに入る第1の粒子が前記第2の粒子として登録されるソート位置を計算する、
処理を前記コンピュータにさらに実行させることを特徴とする請求項1~3のいずれか1つに記載のシミュレーションプログラム。
【請求項6】
仮想空間に配置される粒子の座標を取得し、
前記仮想空間上の座標を定める座標軸のうち第1の座標軸方向に2粒子間の相互作用計算のカットオフに用いるカットオフ半径の幅を有するウィンドウを前記第1の座標軸方向に移動し、
前記移動により前記ウィンドウに入る第1の粒子と、前記ウィンドウ内に位置する第2の粒子との間で前記カットオフ半径内にあるか否かを判定して、前記第1の粒子と前記第2の粒子が存在する場合に粒子ペアとして生成し、
前記ウィンドウの移動と前記粒子ペアの生成を反復する、
処理をコンピュータが実行することを特徴とするシミュレーション方法。
【請求項7】
仮想空間に配置される粒子の座標を取得し、
前記仮想空間上の座標を定める座標軸のうち第1の座標軸方向に2粒子間の相互作用計算のカットオフに用いるカットオフ半径の幅を有するウィンドウを前記第1の座標軸方向に移動し、
前記移動により前記ウィンドウに入る第1の粒子と、前記ウィンドウ内に位置する第2の粒子との間で前記カットオフ半径内にあるか否かを判定して、前記第1の粒子と前記第2の粒子が存在する場合に粒子ペアとして生成し、
前記ウィンドウの移動と前記粒子ペアの生成を反復する、
処理を実行する制御部を有することを特徴とするシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、シミュレーション技術に関する。
【背景技術】
【0002】
量子化学シミュレーションで用いられる密度汎関数法(DFT:Density Functional Theory)では、電子ペアの相互作用の計算、すなわち2電子積分の計算量がボトルネックの1つとして挙げられる。
【0003】
このような相互作用の計算を高速化する側面から、相互作用の計算を打ち切る距離の閾値がカットオフ半径rcとして設定されることがある。すなわち、電子ペア間の距離が離れるに従って相互作用が弱くなる側面から、カットオフ半径rc以内の電子ペアに絞り込んで相互作用を計算することにより、相互作用の計算量が削減される。
【0004】
ところが、上記のカットオフ半径を導入したとしても、汎用のプロセッサによる実行時間の90%以上が2電子積分に費やされるので、依然として、相互作用の計算量を高速化することが困難な一面がある。
【0005】
例えば、相互作用の計算を分散並列化することにより高速化を目指す量子化学シミュレータのフレームワークが提案されている。この量子化学シミュレータでは、シミュレーションで扱われる電子のリストに含まれる電子を先頭から順に等分割し、等分割された電子が複数の計算機ノードに割り当てられる。各計算機ノードは、割り当てられた電子ごとに当該電子の近傍を探索してペアとなる電子を抽出する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2013-211006号公報
【特許文献2】特開平8-285757号公報
【特許文献3】米国特許出願公開第2017/0193251号明細書
【特許文献4】米国特許第4908781号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、上記の量子化学シミュレータは、全ての電子ペアの組合せごとに電子ペア間の距離がカットオフ半径以内であるか否かのカットオフ判定が実施されるので、カットオフ判定の回数を削減できない側面がある。なお、ここでは、あくまで1つの側面として、量子化学シミュレーションを例に挙げたが、分子動力学などの多粒子系の力学シミュレーション全般にも同様の課題が生じ得る。
【0008】
1つの側面では、本発明は、カットオフ判定の回数の削減を実現できるシミュレーションプログラム、シミュレーション方法及びシミュレーション装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
一態様にかかるシミュレーションプログラムは、仮想空間に配置される粒子の座標を取得し、前記仮想空間上の座標を定める座標軸のうち第1の座標軸方向に2粒子間の相互作用計算のカットオフに用いるカットオフ半径の幅を有するウィンドウを前記第1の座標軸方向に移動し、前記移動により前記ウィンドウに入る第1の粒子と、前記ウィンドウ内に位置する第2の粒子との間で前記カットオフ半径内にあるか否かを判定して、前記第1の粒子と前記第2の粒子が存在する場合に粒子ペアとして生成し、前記ウィンドウの移動と前記粒子ペアの生成を反復する、処理をコンピュータに実行させる。
【発明の効果】
【0010】
カットオフ判定の回数の削減を実現できる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、サーバ装置の機能構成例を示すブロック図である。
【
図2】
図2は、ペア生成部の機能構成例を示すブロック図である。
【
図3】
図3は、カットオフエリアの一例を示す模式図である。
【
図4】
図4は、ウィンドウの遷移例を示す模式図(1)である。
【
図5】
図5は、ウィンドウの遷移例を示す模式図(2)である。
【
図6】
図6は、ウィンドウの遷移例を示す模式図(3)である。
【
図7】
図7は、ウィンドウの遷移例を示す模式図(4)である。
【
図8】
図8は、ウィンドウの遷移例を示す模式図(5)である。
【
図9】
図9は、ペア生成処理の手順を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、添付図面を参照して本願に係るシミュレーションプログラム、シミュレーション方法及びシミュレーション装置の実施例について説明する。各実施例には、あくまで1つの例や側面を示すに過ぎず、このような例示により数値や機能の範囲、利用シーンなどは限定されない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例0013】
図1は、サーバ装置10の機能構成例を示すブロック図である。
図1に示すサーバ装置10は、量子化学や分子動力学などの多粒子系のシミュレーション機能を提供するものである。
【0014】
サーバ装置10は、上記のシミュレーション機能を提供するコンピュータの一例である。一実施形態として、サーバ装置10は、上記のシミュレーション機能を実現するシミュレーションプログラムを実行することにより、上記のシミュレーション機能を提供できる。例えば、サーバ装置10は、上記のシミュレーション機能をオンプレミスに提供するサーバとして実現できる。この他、サーバ装置10は、PaaS(Platform as a Service)型、あるいはSaaS(Software as a Service)型のアプリケーションとして実現することもできる。これにより、サーバ装置10は、上記のシミュレーション機能をHPC(High Performance Computing)向けのクラウドサービスとして提供することもできる。
【0015】
図1に示すように、サーバ装置10は、ネットワークNWを介して、クライアント端末30と通信可能に接続され得る。例えば、ネットワークNWは、有線または無線を問わず、インターネットやLAN(Local Area Network)などの任意の種類の通信網であってよい。なお、
図1には、1つのサーバ装置10につき1つのクライアント端末30が接続される例を挙げたが、任意の台数のクライアント端末30が接続されることを妨げない。
【0016】
クライアント端末30は、上記のシミュレーション機能の提供を受けるコンピュータの一例に対応する。例えば、クライアント端末30は、デスクトップ型またはラップトップ型のパーソナルコンピュータなどにより実現されてよい。これはあくまで一例に過ぎず、クライアント端末30は、携帯端末装置やウェアラブル端末などの任意のコンピュータであってよい。
【0017】
なお、
図1には、上記のシミュレーション機能がクライアントサーバシステムで提供される例を挙げるが、これはあくまで一例であって、上記のシミュレーション機能はスタンドアロンで提供されることとしてもよい。
【0018】
次に、本実施例に係るサーバ装置10の機能構成例について説明する。
図1には、サーバ装置10が有するシミュレーション機能に関連するブロックが模式化されている。
図1に示すように、サーバ装置10は、シミュレーション部11を有する。なお、
図1には、上記のシミュレーション機能に関連する機能部が抜粋して示されているに過ぎず、図示以外の機能部、例えば図示しない通信制御部や記憶部などがサーバ装置10に備わることとしてもよい。
【0019】
シミュレーション部11は、上記のシミュレーション機能を提供する処理部である。あくまで一例として、シミュレーション部は、ハードウェアプロセッサにより実現され得る。例えば、プロセッサは、上記のシミュレーションプログラムを実行することにより、上記のシミュレーション部11に対応するプロセスが図示しないメモリ上に展開される。これにより、上記のシミュレーション部11がプロセスとして仮想的に実現される。この他、シミュレーション部11またはシミュレーション部11の一部は、ハードワイヤードロジックによって実現されてもよい。
【0020】
図1に示すように、シミュレーション部11は、モデリング部13と、条件設定部15と、ペア生成部17と、量子化学計算部19とを有する。これらモデリング部13、条件設定部15、ペア生成部17および量子化学計算部19などの機能部は、上記のシミュレーション機能としてパッケージ化された状態で提供されずともよい。例えば、上記の機能部のうち一部がライブラリとして参照されたり、あるいはモジュールとして提供されたりしてもよい。
【0021】
モデリング部13は、粒子のモデリングを実行する処理部である。このように粒子をモデリングする環境のあくまで一例として、モデリング部13は、分子の2次元または3次元の表示や化学構造の作画に関する操作などが可能なGUI(Graphical User Interface)環境を提供できる。この他、製薬、創薬、あるいは材料などの利用シーンに応じた種類の分子や分子構造が収集されたデータベースに対する検索により、多粒子の系をモデリングできる。このような多粒子系のモデリングにより、座標付きの粒子の一覧が粒子リストとして得られる。
【0022】
条件設定部15は、量子化学計算に関する条件を設定する処理部である。あくまで一例として、条件設定部15は、温度や圧力などの実験環境に関する条件の設定を受け付けることができる。この他、条件設定部15は、密度汎関数法で用いられるポテンシャル関数の設定なども受け付けることができる。
【0023】
ペア生成部17は、量子化学計算で2粒子間の相互作用の計算に用いられる粒子のペアを生成する処理部である。詳細は
図2~
図8を用いて後述するが、ペア生成部17は、カットオフ判定の回数を削減する側面から、次のようなペア生成機能を実現する。すなわち、ペア生成部17は、モデリングの結果として得られる粒子リストのうち、3次元のx方向、y方向およびz方向のうちいずれかの方向の座標差がカットオフ半径より大きい粒子のペアを除外しつつ、カットオフ半径以内の粒子のペアを生成する。このようなペア生成機能により、粒子ペアの一覧が粒子ペアリストとして得られる。
【0024】
量子化学計算部19は、密度汎関数法に基づいて量子化学計算を実行する処理部である。あくまで一例として、量子化学計算部19は、ペア生成部17により生成された粒子ペアに絞り込んで2粒子間の相互作用の計算を実行することにより、分子軌道、すなわち基底状態の電子密度分布およびエネルギーを計算する。その上で、量子化学計算部19は、分子軌道に基づいて分子の構造や反応性、物性などの各種のシミュレーションを実行する。このように得られたシミュレーション結果がクライアント端末30などの任意の出力先へ出力される。
【0025】
次に、上記のペア生成機能の詳細について説明する。
図2は、ペア生成部17の機能構成例を示すブロック図である。
図2には、量子化学シミュレーションが実行される利用シーンで適用されるペア生成機能に関連するブロックが模式化されると共に、各部が入出力するデータに対応するブロックが破線で模式化されている。なお、
図2には、利用シーンのあくまで一例として、量子化学シミュレーションを例に挙げたが、これに限定されない。例えば、電子を一般の粒子に読み替えることにより、分子動力学シミュレーションや重力を扱う天文学シミュレーションなどの多粒子系の力学シミュレーション全般に上記のペア生成機能を適用できる点をあらかじめ付言しておく。
【0026】
図2に示すペア生成部17は、粒子リストの一例に対応する電子リストListを入力として、粒子ペアリストの一例に対応する電子ペアリストPListを出力する。同図に示すように、ペア生成部17は、ウィンドウ移動部17Aと、リスト更新部17Bと、候補抽出部17Cと、カットオフ判定部17Dと、電子ペア生成部17Eとを有する。
【0027】
ウィンドウ移動部17Aは、仮想化された3次元空間(以下、「仮想空間」と記載)に存在する電子を探索するウィンドウWを移動させる処理部である。以下、仮想空間上の座標が互いに直交するx軸、y軸およびz軸の3つの座標軸で表現される直交座標系により定義される例を挙げる。このような座標系の下、z方向にカットオフ半径rcに対応する幅を有するウィンドウWを例に挙げ、以下の説明を続ける。
【0028】
一実施形態として、ウィンドウ移動部17Aは、モデリング部13によるモデリングで得られた電子リストListを取得する。例えば、電子リストListは、仮想空間に存在する電子がリスト化されたデータを指し、各電子の座標が含まれてよい。ここで言う「電子の座標」とは、電子の軌道中心、すなわち原子の中心の位置を指す。
【0029】
このような電子リストListの取得後、ウィンドウ移動部17Aは、電子リストListに含まれる電子を3つの座標軸のうちいずれか1つの座標軸に対応する座標値に基づいてソートする。このとき、ソートに用いられる座標値およびソートの種類は、ウィンドウWが移動する方向に対応する。例えば、ウィンドウWをz軸の正の方向に移動させる場合、電子リストListに含まれる電子は、z座標の昇順にソートされる。
【0030】
そして、ウィンドウ移動部17Aは、ウィンドウWの初期位置をz座標の最小値とし、そこからz軸の正の方向にウィンドウWを特定のシフト量Δzずつスライドさせる。このようにウィンドウWがスライドされる度、ウィンドウ移動部17Aは、ウィンドウWに入る電子S_inおよびウィンドウWから出る電子S_outを算出する。その後、ウィンドウ移動部17Aは、ウィンドウWの移動の終了条件を満たすまで、例えば電子リストListおよびウィンドウ内電子集合Sの両方が空集合φになるまでウィンドウWの移動を反復する。
【0031】
リスト更新部17Bは、電子リストListおよびウィンドウ内電子集合Sを更新する処理部である。例えば、ウィンドウ内電子集合Sは、現在位置のウィンドウWに含まれる電子の集合がリスト化されたデータを指す。
【0032】
一実施形態として、リスト更新部17Bは、ウィンドウ移動部17AによるウィンドウWに入る電子S_inおよびウィンドウWから出る電子S_outの算出結果に基づいて、電子リストListおよびウィンドウ内電子集合Sを更新する。
【0033】
1つの側面として、リスト更新部17Bは、電子リストListに含まれる電子のうちウィンドウWに入る電子S_inを削除する更新を実行する。他の側面として、リスト更新部17Bは、ウィンドウ内電子集合SにウィンドウWに入る電子S_inを追加する更新、あるいはウィンドウ内電子集合SからウィンドウWから出る電子S_outを削除する更新を実行する。
【0034】
候補抽出部17Cは、互いのカットオフエリアが重複する電子ペアを電子ペア候補として抽出する処理部である。ここで言う「カットオフエリア」とは、電子リストListに含まれる電子ごとにカットオフ半径rcに基づいて設定される。
【0035】
あくまで一例として、候補抽出部17Cは、電子リストListに含まれる電子ごとに、電子の座標を始点に設定すると共に、始点のx座標、y座標およびz座標にカットオフ半径rcが加算された座標を終点に設定する。これにより、始点および終点を含む線分を対角線に含む立方体のエリアがカットオフエリアとして得られる。
【0036】
このようなカットオフエリアの設定の下、候補抽出部17Cは、ウィンドウ内電子集合SおよびウィンドウWに入る電子S_inの間でカットオフエリアが重複するか否かを判定する。
【0037】
ここで、互いのカットオフエリアが重複する場合、x方向、y方向およびz方向の全ての方向でカットオフエリアが重複する電子ペアの距離がカットオフ半径rc以下であることを確認できる。この場合、候補抽出部17Cは、カットオフエリアが重複する電子ペアを電子ペア候補(S,S_in)として抽出する。
【0038】
カットオフ判定部17Dは、上記のカットオフ判定を実行する処理部である。一実施形態として、カットオフ判定部17Dは、候補抽出部17Cにより抽出された電子ペア候補(S,S_in)の距離を算出する。その上で、カットオフ判定部17Dは、電子ペア候補(S,S_in)の距離がカットオフ半径rc以下であるか否かを判定する。
【0039】
電子ペア生成部17Eは、電子ペアを生成する処理部である。一実施形態として、電子ペア生成部17Eは、候補抽出部17Cにより抽出された電子ペア候補(S,S_in)のうち、カットオフ判定部17Dにより距離がカットオフ半径rc以下と判定された電子ペア候補(S,S_in)を電子ペアS′として生成する。そして、電子ペア生成部17Eは、電子ペアの一覧がリスト化された電子ペアリストPListに電子ペアS′を追加する。
【0040】
次に、
図3~
図8を用いて電子ペアの生成方法の具体例を説明する。以下、電子リストListに含まれる電子及びその電子に設定されるカットオフエリアの例を挙げ、ウィンドウWが移動する様子を時系列に例示しながら各段階で実行されるカットオフエリアの重複判定やカットオフ判定、電子ペアの生成を説明することとする。
【0041】
図3は、カットオフエリアの一例を示す模式図である。
図3には、電子リストListに含まれる電子の一例として、電子A、電子Bおよび電子Cの3個の電子が例示されると共に、3個の電子の座標が丸印のマークで例示されている。さらに、
図3には、電子A、電子Bおよび電子Cの3個の電子ごとに設定されるカットオフエリアの外形が破線で示されている。なお、
図3には、説明の便宜上、x方向およびz方向の2次元平面を例に挙げて説明するが、y方向を含めた3次元空間でもx方向と同様の処理をy方向で実行すればよく、3次元空間への拡張が可能であることは自明である。
【0042】
図3に示すように、電子A、電子Bおよび電子Cの各々の座標が始点に設定されると共に、始点のx座標およびz座標にカットオフ半径rcが加算された座標、すなわちバツ印のマークが終点に設定される。これにより、電子A、電子Bおよび電子Cごとに、始点および終点を対角に含む正方形のエリアがカットオフエリアとして得られる。
【0043】
このように全ての電子の間で共通のルール、例えば電子の各座標値に対するカットオフ半径rcの加算に従ってカットオフエリアを設定する。これにより、全ての電子の間のカットオフエリアの相対位置を電子の座標を中心としてカットオフエリアが設定される場合と同定できる。
【0044】
さらに、矩形状のカットオフエリアを設定することで、カットオフエリア間の重複判定を簡素化できる。例えば、2次元平面で言えば、矩形状のカットオフエリアの重なりによりカットオフエリアの重複を判定できるので、電子の座標を中心とする円状のカットオフエリアの重なりを判定する場合に比べて、計算量を削減できる。また、3次元空間であっても、立方体のカットオフエリアの重なりによりカットオフエリアの重複を判定できるので、電子の座標を中心とする球状のカットオフエリアの重なりを判定する場合に比べて、計算量を削減できる。
【0045】
これら電子A、電子Bおよび電子Cのカットオフエリアの設定の下、z方向にカットオフ半径rcに対応する幅を有するウィンドウWの移動が開始される。
【0046】
図4~
図8は、ウィンドウWの遷移例を示す模式図(1)~(5)である。
図4には、ウィンドウWの初期位置が示されている一方で、
図5~
図8には、ウィンドウWが初期位置からz軸の正の方向へ向けて時系列に移動される様子が
図5~
図8の図番順に示されている。
【0047】
図4に示すように、ウィンドウWが初期位置にある状態では、ウィンドウWには、電子A、電子Bおよび電子Cのいずれもが含まれない。このため、ウィンドウWが初期位置にある段階ではリスト更新部17Bや候補抽出部17C、カットオフ判定部17D、電子ペア生成部17Eによる処理は実行されない。なお、ウィンドウWの初期位置における各リストは、下記の通りとなる。
【0048】
電子リストList={A,B,C}
ウィンドウ内電子集合S={φ}
電子ペアリストPList={φ}
【0049】
その後、ウィンドウ移動部17Aは、
図4に示すウィンドウWの初期位置から
図5に示すウィンドウWの位置までウィンドウWを移動する。この時点では、
図5に示すように、電子Aの始点がウィンドウWに入るので、ウィンドウ移動部17Aにより電子AがウィンドウWに入る電子S_inと識別される。このため、電子リストListから電子Aを削除する更新、並びに、ウィンドウ内電子集合Sに電子Aを追加する更新がリスト更新部17Bにより実行される。この段階では、電子A以外がウィンドウWに含まれないので、候補抽出部17C、カットオフ判定部17D、電子ペア生成部17Eによる処理は実行されない。
【0050】
ウィンドウWに入る電子S_in={A}
電子リストList={B,C}
ウィンドウ内電子集合S={A}
電子ペアリストPList={φ}
【0051】
続いて、ウィンドウ移動部17Aは、
図5に示すウィンドウWの位置から
図6に示すウィンドウWの位置までウィンドウWを移動する。この時点では、
図6に示すように、電子Bの始点がウィンドウWに入るので、ウィンドウ移動部17Aにより電子BがウィンドウWに入る電子S_inと識別される。このため、電子リストListから電子Bを削除する更新、並びに、ウィンドウ内電子集合Sに電子Bを追加する更新がリスト更新部17Bにより実行される。さらに、候補抽出部17Cは、ウィンドウ内電子集合Sに対応する電子Aと、ウィンドウWに入る電子S_inに対応する電子Bとの間でカットオフエリアが重複するか否かを判定する。この場合、電子Aのカットオフエリアおよび電子Bのカットオフエリアは重複しないので、電子Aおよび電子Bのペアは、電子ペア候補として抽出されず、カットオフ判定部17Dおよび電子ペア生成部17Eによる処理は実行されない。
【0052】
ウィンドウWに入る電子S_in={B}
電子リストList={C}
ウィンドウ内電子集合S={A,B}
電子ペアリストPList={φ}
【0053】
さらに、ウィンドウ移動部17Aは、
図6に示すウィンドウWの位置から
図7に示すウィンドウWの位置までウィンドウWを移動する。この時点では、
図7に示すように、電子Cの始点がウィンドウWに入るので、ウィンドウ移動部17Aにより電子CがウィンドウWに入る電子S_inと識別される。このため、電子リストListから電子Cを削除する更新、並びに、ウィンドウ内電子集合Sに電子Cを追加する更新がリスト更新部17Bにより実行される。
【0054】
さらに、候補抽出部17Cは、ウィンドウ内電子集合Sに対応する電子Aおよび電子Bと、ウィンドウWに入る電子S_inに対応する電子Cとの間でカットオフエリアが重複するか否かを判定する。この場合、
図7にハッチングで示された通り、電子Aおよび電子Cの間でカットオフエリアが重複し、さらに、電子Bおよび電子Cのカットオフエリアが重複する。このようなカットオフエリアの重複により、電子Aおよび電子Cのx方向の距離がカットオフ半径rc以内であること、さらには、電子Bおよび電子Cのx方向の距離がカットオフ半径rc以内であることを識別できる。このため、電子Aおよび電子Cと、電子Bおよび電子Cとが候補抽出部17Cにより電子ペア候補(S,S_in)として抽出される。
【0055】
ここで、カットオフ判定部17Dは、電子Aおよび電子Cの電子ペア候補の距離がカットオフ半径rc以内であるか否か、並びに、電子Bおよび電子Cの電子ペア候補の距離がカットオフ半径rc以内であるか否かを判定する。このとき、本例では、電子Aおよび電子Cの電子候補ペアの距離がカットオフ半径rc以内であり、かつ電子Bおよび電子Cの電子ペア候補の距離がカットオフ半径rc以内であるとする。この場合、電子ペア生成部17Eは、電子Aおよび電子Cの電子ペアS′1の生成「S′1=MakePair(電子A,電子C)」と、電子Bおよび電子Cの電子ペアS′2の生成「S′2=MakePair(電子B,電子C)」とを実行する。そして、電子ペア生成部17Eは、電子ペアS′1および電子ペアS′2を電子ペアリストPListに追加する更新「PList=φ+電子ペアS′1+電子ペアS′2」を実行する。
【0056】
ウィンドウWに入る電子S_in={C}
電子リストList={φ}
ウィンドウ内電子集合S={A,B,C}
電子ペアリストPList={S′1,S′2}
【0057】
その後、ウィンドウ移動部17Aは、
図7に示すウィンドウWの位置から
図8に示すウィンドウWの位置までウィンドウWを移動する。この時点では、
図8に示すように、電子Aの終点がウィンドウWから出るので、ウィンドウ移動部17Aにより電子AがウィンドウWから出る電子S_outと識別される。このため、ウィンドウ内電子集合Sから電子Aを削除する更新がリスト更新部17Bにより実行される。この場合、ウィンドウWに入る電子S_inが存在しないので、候補抽出部17C、カットオフ判定部17Dおよび電子ペア生成部17Eによる処理は実行されない。
【0058】
ウィンドウWから出る電子S_out={A}
電子リストList={φ}
ウィンドウ内電子集合S={B,C}
電子ペアリストPList={S′1,S′2}
【0059】
その後、図示は省略したが、ウィンドウ移動部17AによりウィンドウWが電子Bの終点を超える位置まで移動されると、ウィンドウ移動部17Aにより電子BがウィンドウWから出る電子S_outと識別される。すると、ウィンドウ内電子集合Sから電子Bを削除する更新がリスト更新部17Bにより実行される。この場合、ウィンドウWに入る電子S_inが存在しないので、候補抽出部17C、カットオフ判定部17Dおよび電子ペア生成部17Eによる処理は実行されない。
【0060】
ウィンドウWから出る電子S_out={B}
電子リストList={φ}
ウィンドウ内電子集合S={C}
電子ペアリストPList={S′1,S′2}
【0061】
さらに、ウィンドウ移動部17AによりウィンドウWが電子Cの終点を超える位置まで移動されると、ウィンドウ移動部17Aにより電子CがウィンドウWから出る電子S_outと識別される。すると、ウィンドウ内電子集合Sから電子Cを削除する更新がリスト更新部17Bにより実行される。この場合、ウィンドウWに入る電子S_inが存在しないので、候補抽出部17C、カットオフ判定部17Dおよび電子ペア生成部17Eによる処理は実行されない。
【0062】
ウィンドウWから出る電子S_out={C}
電子リストList={φ}
ウィンドウ内電子集合S={φ}
電子ペアリストPList={S′1,S′2}
【0063】
このように、電子リストListおよびウィンドウ内電子集合Sが空集合φになると、電子ペアの生成が終了される。この結果、電子ペアとして、電子ペアS′1および電子ペアS′2が生成される。これら電子ペアS′1および電子ペアS′2を生成するために、本実施例に係る電子ペア生成機能によれば、電子Aおよび電子Cの間のカットオフ判定と、電子Bおよび電子Cの間のカットオフ判定との計2回のカットオフ判定が実施される。その一方で、電子Aおよび電子Bの間のカットオフエリアの重複判定により、電子Aおよび電子Bの間のカットオフ判定が回避される。
【0064】
一方、上記の従来技術によれば、電子A、電子Bおよび電子Cの3個の電子が電子リストに含まれる場合、全ての組合せ3C2に対応する3回にわたってカットオフ判定が実施されることにより、本実施例に係る電子ペア生成機能と同様の電子ペアが列挙され得る。
【0065】
したがって、本実施例に係る電子ペア生成機能によれば、上記の従来技術に比べて、電子Aおよび電子Bの間のカットオフ判定を削減できる。
【0066】
ここで、
図3~
図8には、あくまで一例として、電子A、電子Bおよび電子Cの全ての組合せについてz座標の差がカットオフ半径rc以内である例を挙げたが、電子リストListにz座標の差がカットオフ半径rcを超える電子の組合せが存在してもよい。このようにz座標の差がカットオフ半径rcを超える電子の組合せが存在する場合、当該組合せは、電子ペア候補および電子ペアのターゲットとするウィンドウ内電子集合SおよびウィンドウWに入る電子S_inの組合せから除外される。したがって、本実施例に係る電子ペア生成機能によれば、z座標の差がカットオフ半径rcを超える電子の組合せに関するカットオフエリアの重複判定およびカットオフ判定を削減できるのは自明である。
【0067】
さらに、本実施例に係る電子ペア生成機能は、電子集合の座標をウィンドウで管理することにより、カットオフ半径以内の電子ペア候補を、そのウィンドウ内に限定できる。例えば、電子数をNとすると、計算時間はO(N log2 N)になる。これは、上記の従来技術による全電子ペア候補にする計算時間O(N^2)の手法よりも効率的である。
【0068】
次に、本実施例に係るサーバ装置10の処理の流れについて説明する。
図9は、ペア生成処理の手順を示すフローチャートである。この処理は、あくまで一例として、電子リストListが取得された場合に開始できる。
【0069】
図9に示すように、電子リストList、ウィンドウ内電子集合Sおよび電子ペアリストPListが初期化される(ステップS101)。例えば、電子リストListは、z座標の昇順にソートされると共に、ウィンドウ内電子集合Sおよび電子ペアリストPListは空集合φが設定される。
【0070】
その後、電子リストListおよびウィンドウ内電子集合Sの両方が空集合φとなるまで(ステップS102No)、下記のステップS103から下記のステップS110までの処理が反復される。
【0071】
すなわち、ウィンドウ移動部17Aは、ウィンドウWの底面の初期位置をz座標の最小値とし、そこからz軸の正の方向にウィンドウWを特定のシフト量Δzずつ移動させる(ステップS103)。続いて、ウィンドウ移動部17Aは、ウィンドウWに入る電子S_inおよびウィンドウWから出る電子S_outを算出する(ステップS104)。
【0072】
そして、リスト更新部17Bは、電子リストListに含まれる電子のうちウィンドウWに入る電子S_inを削除する更新を実行する(ステップS105)。さらに、リスト更新部17Bは、ウィンドウ内電子集合SにウィンドウWに入る電子S_inを追加する更新、ウィンドウ内電子集合SからウィンドウWから出る電子S_outを削除する更新、あるいは追加と削除の両方の更新を実行する(ステップS106)。
【0073】
その後、候補抽出部17Cは、ウィンドウ内電子集合SおよびウィンドウWに入る電子S_inの間でカットオフエリアが重複する電子ペアを電子ペア候補(S,S_in)として抽出する(ステップS107)。
【0074】
そして、カットオフ判定部17Dは、ステップS107で抽出された電子ペア候補(S,S_in)の距離がカットオフ半径rc以下であるか否かを判定する(ステップS108)。
【0075】
このとき、電子ペア候補(S,S_in)の距離がカットオフ半径rc以下である場合(ステップS108Yes)、電子ペア生成部17Eは、電子ペア候補(S,S_in)を電子ペアS′として生成する(ステップS109)。そして、電子ペア生成部17Eは、ステップS109で生成された電子ペアS′を電子ペアリストPListに追加し(ステップS110)、ステップS102の処理へ移行する。
【0076】
一方、電子ペア候補(S,S_in)の距離がカットオフ半径rc以下でない場合(ステップS108No)、ステップS109およびステップS110の処理をスキップし、ステップS102の処理へ移行する。
【0077】
その後、電子リストListおよびウィンドウ内電子集合Sの両方が空集合φとなった場合(ステップS102Yes)、処理を終了する。
【0078】
上述してきたように、本実施例に係るサーバ装置10は、1つの軸方向に2粒子間の相互作用計算のカットオフ半径rcの幅を持つ窓の移動を反復し、窓に入る電子と窓内の電子の間でrc以内のペアを生成する。したがって、本実施例に係るサーバ装置10によれば、座標差がrcを超える電子間のカットオフ判定を削減できる。さらに、シミュレーション時間の経過に従って電子の座標が更新される量子ダイナミクス系のシミュレーションへの適用時にカットオフ判定の回数を削減する効果がより顕著に高まる。
【0079】
さらに、本実施例に係るサーバ装置10は、電子リストに含まれる電子ごとにカットオフ半径rcに基づいて設定されるカットオフエリアが重複する電子ペアを電子ペア候補として抽出する。したがって、本実施例に係るサーバ装置10によれば、カットオフ判定よりも計算量が少ないカットオフエリアの重複判定の結果に応じて座標差がrc以内である電子間のカットオフ判定を削減できる。
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
なお、上記のシミュレーションプログラム170aは、必ずしも最初からHDD170やROM160に記憶されておらずともかまわない。例えば、コンピュータ100に挿入されるフレキシブルディスク、いわゆるFD、CD-ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」にシミュレーションプログラム170aを記憶させる。そして、コンピュータ100がこれらの可搬用の物理媒体からシミュレーションプログラム170aを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WANなどを介してコンピュータ100に接続される他のコンピュータまたはサーバ装置などにシミュレーションプログラム170aを記憶させておく。このように記憶されたシミュレーションプログラム170aをコンピュータ100にダウンロードさせた上で実行させるようにしてもよい。
(付記3)前記反復する処理は、前記エリアの前記第1の座標軸方向上の始点および前記エリアの前記第1の座標軸方向上の終点に基づいて前記ウィンドウの移動を反復する処理を含む、
ことを特徴とする付記2に記載のシミュレーションプログラム。
(付記4)前記第1の座標軸と直交する第2の座標軸の座標値で前記第2の粒子がソートされた第1のリスト、および、前記第1の座標軸および前記第2の座標軸と直交する第3の座標軸の座標値で前記第2の粒子がソートされた第2のリストの各々から、前記移動により前記ウィンドウから出る第3の粒子に対応する第2の粒子を検索して前記第1のリストおよび前記第2のリストから削除する、
処理を前記コンピュータにさらに実行させることを特徴とする付記1に記載のシミュレーションプログラム。
(付記5)前記第1の座標軸と直交する第2の座標軸の座標値で前記第2の粒子がソートされた第1のリストに、前記移動により前記ウィンドウに入る第1の粒子が前記第2の粒子として登録されるソート位置を計算すると共に、前記第1の座標軸および前記第2の座標軸と直交する第3の座標軸の座標値で前記第2の粒子がソートされた第2のリストに、前記移動により前記ウィンドウに入る第1の粒子が前記第2の粒子として登録されるソート位置を計算する、
処理を前記コンピュータにさらに実行させることを特徴とする付記1に記載のシミュレーションプログラム。
(付記8)前記反復する処理は、前記エリアの前記第1の座標軸方向上の始点および前記エリアの前記第1の座標軸方向上の終点に基づいて前記ウィンドウの移動を反復する処理を含む、
ことを特徴とする付記7に記載のシミュレーション方法。
(付記9)前記第1の座標軸と直交する第2の座標軸の座標値で前記第2の粒子がソートされた第1のリスト、および、前記第1の座標軸および前記第2の座標軸と直交する第3の座標軸の座標値で前記第2の粒子がソートされた第2のリストの各々から、前記移動により前記ウィンドウから出る第3の粒子に対応する第2の粒子を検索して前記第1のリストおよび前記第2のリストから削除する、
処理を前記コンピュータがさらに実行することを特徴とする付記6に記載のシミュレーション方法。
(付記10)前記第1の座標軸と直交する第2の座標軸の座標値で前記第2の粒子がソートされた第1のリストに、前記移動により前記ウィンドウに入る第1の粒子が前記第2の粒子として登録されるソート位置を計算すると共に、前記第1の座標軸および前記第2の座標軸と直交する第3の座標軸の座標値で前記第2の粒子がソートされた第2のリストに、前記移動により前記ウィンドウに入る第1の粒子が前記第2の粒子として登録されるソート位置を計算する、
処理を前記コンピュータがさらに実行することを特徴とする付記6に記載のシミュレーション方法。
(付記13)前記反復する処理は、前記エリアの前記第1の座標軸方向上の始点および前記エリアの前記第1の座標軸方向上の終点に基づいて前記ウィンドウの移動を反復する処理を含む、
ことを特徴とする付記12に記載のシミュレーション装置。
(付記14)前記第1の座標軸と直交する第2の座標軸の座標値で前記第2の粒子がソートされた第1のリスト、および、前記第1の座標軸および前記第2の座標軸と直交する第3の座標軸の座標値で前記第2の粒子がソートされた第2のリストの各々から、前記移動により前記ウィンドウから出る第3の粒子に対応する第2の粒子を検索して前記第1のリストおよび前記第2のリストから削除する、
処理を前記制御部がさらに実行することを特徴とする付記11に記載のシミュレーション装置。
(付記15)前記第1の座標軸と直交する第2の座標軸の座標値で前記第2の粒子がソートされた第1のリストに、前記移動により前記ウィンドウに入る第1の粒子が前記第2の粒子として登録されるソート位置を計算すると共に、前記第1の座標軸および前記第2の座標軸と直交する第3の座標軸の座標値で前記第2の粒子がソートされた第2のリストに、前記移動により前記ウィンドウに入る第1の粒子が前記第2の粒子として登録されるソート位置を計算する、
処理を前記制御部がさらに実行することを特徴とする付記11に記載のシミュレーション装置。