(57)【特許請求の範囲】
【請求項１】
系に含まれる粒子間の近距離力を計算する多体問題計算装置であって、
前記近距離力の計算に必要な前記粒子毎のデータである粒子データを用いて前記近距離力を計算する力演算装置と、
前記系に含まれる全ての粒子の粒子データ、並びに前記系を分割して得られる空間であるセル毎の、前記セルを識別するための情報及び該セル内の粒子数の情報を含むセルデータが全て格納される記憶装置と、
前記近距離力を計算する粒子の粒子データを前記記憶装置からそれぞれ読み出し、前記力演算装置へ転送するメモリ制御装置と、
前記近距離力の計算対象となる粒子である中心粒子を含む中心セル及び該中心セルの周囲に存在する所定数の周辺セルのセルデータからなるセルリストを保持し、前記セルリスト内のセルデータで特定される前記中心セル及び前記周辺セル内の前記中心粒子及び該中心粒子の周囲に存在する粒子の粒子データを、前記メモリ制御装置により前記記憶装置から読み出させると共に、前記力演算装置による前記中心セル内の全ての粒子に対する、該粒子の周囲に存在する粒子との前記近距離力の計算が終了する毎に、前記系内の全てのセルが前記中心セルとなるように前記セルリストを所定の規則にしたがって順次更新するアドレス発生装置と、
を有し、
前記記憶装置に、
前記セル毎の全粒子の粒子データが前記メモリ制御装置により順次読み出し可能に格納され、
前記アドレス発生装置は、
前記更新前のセルリストに含まれる中心セルに対して、前記系のｘ方向、ｙ方向またはｚ方向のいずれか一方向に隣接するセルを、前記更新後のセルリストに含まれる中心セルとすることで、前記中心セルを隣接するセルへ順次移動させる多体問題計算装置。
【請求項２】
系に含まれる粒子間の近距離力を計算するための多体問題計算方法であって、
前記近距離力の計算に必要な粒子毎のデータである粒子データ、並びに前記系を分割して得られる空間であるセル毎の、前記セルを識別するための情報及び該セル内の粒子数の情報を含むセルデータを第１の記憶装置に全て格納しておき、
前記第１の記憶装置に、前記セル毎の全粒子の粒子データをメモリ制御装置により順次読み出し可能に格納しておき、
前記近距離力の計算対象となる粒子である中心粒子を含む中心セル及び該中心セルの周囲に存在する所定数の周辺セルのセルデータからなるセルリストを第２の記憶装置で保持し、
メモリ制御装置が、前記セルリスト内のセルデータで特定される前記中心セル及び前記周辺セル内の前記中心粒子及び該中心粒子の周囲に存在する粒子の粒子データを前記第１の記憶装置から読み出して粒子間の近距離力を計算する力演算装置へ転送し、
アドレス発生装置が、前記力演算装置による前記中心セル内の全ての粒子に対する、該粒子の周囲に存在する粒子との前記近距離力の計算が終了する毎に、前記系内の全てのセルが前記中心セルとなるように前記セルリストを所定の規則にしたがって順次更新し、
前記アドレス発生装置が、前記更新前のセルリストに含まれる中心セルに対して、前記系のｘ方向、ｙ方向またはｚ方向のいずれか一方向に隣接するセルを、前記更新後のセルリストに含まれる中心セルとすることで、前記中心セルを隣接するセルへ順次移動させる多体問題計算方法。
【請求項３】
近距離力の計算に必要な粒子毎のデータである粒子データを用いて前記近距離力を計算する力演算装置と、
系に含まれる全ての粒子の粒子データ、並びに前記系を分割して得られる空間であるセル毎の、前記セルを識別するための情報及び該セル内の粒子数の情報を含むセルデータが全て格納される記憶装置と、
前記近距離力を計算する粒子の粒子データを前記記憶装置からそれぞれ読み出し、前記力演算装置へ転送するメモリ制御装置と、
を有し、前記系に含まれる前記粒子間の前記近距離力を計算する多体問題計算装置が備える、計算対象となる粒子とその周辺に存在する粒子を選択するためのアドレス発生装置であって、
前記系を分割して得られる空間であるセルを識別するための情報及び該セル内の粒子数の情報を含むセルデータを、前記近距離力の計算対象となる粒子である中心粒子を含む中心セル及び該中心セルの周囲に存在する所定数の周辺セル単位で、セルリストとして保持するリストメモリと、
前記セルリスト内のセルデータで特定される前記中心セル及び前記周辺セル内の前記中心粒子及び該中心粒子の周囲に存在する粒子の粒子データを、前記メモリ制御装置により前記記憶装置から読み出させると共に、前記力演算装置による前記中心セル内の全ての粒子に対する、該粒子の周囲に存在する粒子との前記近距離力の計算が終了する毎に、前記系内の全てのセルが前記中心セルとなるように前記セルリストを所定の規則にしたがって順次更新するシーケンサと、
を有し、
前記記憶装置に、
前記セル毎の全粒子の粒子データが前記メモリ制御装置により順次読み出し可能に格納され、
前記シーケンサは、
前記更新前のセルリストに含まれる中心セルに対して、前記系のｘ方向、ｙ方向またはｚ方向のいずれか一方向に隣接するセルを、前記更新後のセルリストに含まれる中心セルとすることで、前記中心セルを隣接するセルへ順次移動させるアドレス発生装置。
【請求項４】
近距離力の計算に必要な粒子毎のデータである粒子データを用いて前記近距離力を計算する力演算装置と、
系に含まれる全ての粒子の粒子データ、並びに前記系を分割して得られる空間であるセル毎の、前記セルを識別するための情報及び該セル内の粒子数の情報を含むセルデータが全て格納される記憶装置と、
前記近距離力を計算する粒子の粒子データを前記記憶装置からそれぞれ読み出し、前記力演算装置へ転送するメモリ制御装置と、
を有し、前記系に含まれる前記粒子間の前記近距離力を計算する多体問題計算装置で実行する、計算対象となる粒子とその周辺に存在する粒子を選択するためのアドレス発生方法であって、
前記記憶装置に、前記セル毎の全粒子の粒子データを前記メモリ制御装置により順次読み出し可能に格納しておき、
コンピュータが、
前記系を分割して得られる空間であるセルを識別するための情報及び該セル内の粒子数の情報を含むセルデータを、前記近距離力の計算対象となる粒子である中心粒子を含む中心セル及び該中心セルの周囲に存在する所定数の周辺セル単位で、記憶装置にセルリストとして保持し、
前記セルリスト内のセルデータで特定される前記中心セル及び前記周辺セル内の前記中心粒子及び該中心粒子の周囲に存在する粒子の粒子データを、前記メモリ制御装置により前記記憶装置から読み出させると共に、前記力演算装置による前記中心セル内の全ての粒子に対する、該粒子の周囲に存在する粒子との前記近距離力の計算が終了する毎に、前記系内の全てのセルが前記中心セルとなるように前記セルリストを所定の規則にしたがって順次更新し、
前記更新前のセルリストに含まれる中心セルに対して、前記系のｘ方向、ｙ方向またはｚ方向のいずれか一方向に隣接するセルを、前記更新後のセルリストに含まれる中心セルとすることで、前記中心セルを隣接するセルへ順次移動させるアドレス発生方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は系に含まれる粒子間に働く力を計算することで多体問題を解くための多体問題計算装置及び方法に関する。
【背景技術】
【０００２】
分子動力学を含む多体問題では、ある系の性質を説明したり変化を予測するために、その系に含まれる多数の粒子間に働く力を計算する必要がある。但し、全ての粒子どうしに働く力をそれぞれ計算していたのでは、その計算量が膨大なものとなってしまう。そのため、要求される計算精度に応じて所定のカットオフ距離を定め、ある特定の粒子からカットオフ距離内に存在する粒子との間に働く力のみを計算することで計算量を低減する方法が従来から採用されている。
【０００３】
しかしながら、そのような方法でも、カットオフ距離内に存在する粒子であるか否かを調べるためには、特定の粒子と系に含まれる他の全ての粒子との距離をそれぞれ求めてカットオフ距離と比較する必要がある。一般に、Ｎ個の粒子を含む系では、この計算量がＮ2に比例して増大するため、Ｎが大きくなるほど多くの計算が必要となる。
【０００４】
したがって、従来から粒子間のファンデルワールス力等の近距離力を計算するためには、ハードウェアによる専用の演算装置が用いられてきた。また、粒子間の近距離力を効率よく計算するためには、特定の粒子の近傍に存在する粒子を効率よく選択し、粒子間の距離計算を節減することが望ましい。
【０００５】
そのため、例えば特許文献１には、多数の粒子を含む計算対象となる空間（系）を分割して直方体から成る複数のサブセルを定義し、サブセルどうしの近接関係に基づいて近距離力の計算対象となる粒子を効率よく選択する方法が記載されている。
【特許文献１】特開２００１−２３６３４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述した特許文献１に記載された多体問題計算装置は、各粒子の座標が格納される粒子座標メモリと、各粒子の座標が格納された粒子座標メモリのアドレスを記憶するインデックスメモリとを備え、粒子毎に対応する粒子座標メモリのアドレスを、粒子の座標に基づいて割り振ったサブセルに関連付けてインデックスメモリに格納している。そして、粒子間の近距離力の計算時に、サブセルどうしの近接関係に基づいて特定の粒子が存在するサブセル及びその近傍に存在するサブセルをそれぞれ指定し、指定されたサブセルに所属する粒子を距離力計算の対象として選択し、選択した粒子の座標を粒子座標メモリから取得している。
【０００７】
そのため、系に含まれる全ての粒子について、その座標と所属するサブセルを示す情報とをそれぞれ記憶する必要があり、サブセルに関する情報も粒子の数と同じ数になるため、メモリに格納するデータが膨大な量となってしまう。したがって、多体問題計算装置に巨大な容量を持つメモリが必要となり、多体問題計算装置、及び該多体問題計算装置が備える、計算対象となる粒子とその周辺に存在する粒子を選択するためのアドレス発生装置のコストが上昇する問題がある。
【０００８】
本発明は上記したような従来の技術が有する問題点を解決するためになされたものであり、特定の粒子の近傍に存在する粒子を効率よく選択して粒子間の近距離力計算量を節減しつつ、コストの上昇を抑制できる多体問題計算装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため本発明の多体問題計算装置は、系に含まれる粒子間の近距離力を計算する多体問題計算装置であって、
前記近距離力の計算に必要な前記粒子毎のデータである粒子データを用いて前記近距離力を計算する力演算装置と、
前記系に含まれる全ての粒子の粒子データ、並びに前記系を分割して得られる空間であるセル毎の、前記セルを識別するための情報及び該セル内の粒子数の情報を含むセルデータが全て格納される記憶装置と、
前記近距離力を計算する粒子の粒子データを前記記憶装置からそれぞれ読み出し、前記力演算装置へ転送するメモリ制御装置と、
前記近距離力の計算対象となる粒子である中心粒子を含む中心セル及び該中心セルの周囲に存在する所定数の周辺セルのセルデータからなるセルリストを保持し、前記セルリスト内のセルデータで特定される前記中心セル及び前記周辺セル内の前記中心粒子及び該中心粒子の周囲に存在する粒子の粒子データを、前記メモリ制御装置により前記記憶装置から読み出させると共に、前記力演算装置による前記中心セル内の全ての粒子に対する、該粒子の周囲に存在する粒子との前記近距離力の計算が終了する毎に、前記系内の全てのセルが前記中心セルとなるように前記セルリストを所定の規則にしたがって順次更新するアドレス発生装置と、
を有し、
前記記憶装置に、
前記セル毎の全粒子の粒子データが前記メモリ制御装置により順次読み出し可能に格納され、
前記アドレス発生装置は、
前記更新前のセルリストに含まれる中心セルに対して、前記系のｘ方向、ｙ方向またはｚ方向のいずれか一方向に隣接するセルを、前記更新後のセルリストに含まれる中心セルとすることで、前記中心セルを隣接するセルへ順次移動させる構成である。
【００１０】
一方、本発明の多体問題計算方法は、系に含まれる粒子間の近距離力を計算するための多体問題計算方法であって、
前記近距離力の計算に必要な粒子毎のデータである粒子データ、並びに前記系を分割して得られる空間であるセル毎の、前記セルを識別するための情報及び該セル内の粒子数の情報を含むセルデータを第１の記憶装置に全て格納しておき、
前記第１の記憶装置に、前記セル毎の全粒子の粒子データをメモリ制御装置により順次読み出し可能に格納しておき、
前記近距離力の計算対象となる粒子である中心粒子を含む中心セル及び該中心セルの周囲に存在する所定数の周辺セルのセルデータからなるセルリストを第２の記憶装置で保持し、
メモリ制御装置が、前記セルリスト内のセルデータで特定される前記中心セル及び前記周辺セル内の前記中心粒子及び該中心粒子の周囲に存在する粒子の粒子データを前記第１の記憶装置から読み出して粒子間の近距離力を計算する力演算装置へ転送し、
アドレス発生装置が、前記力演算装置による前記中心セル内の全ての粒子に対する、該粒子の周囲に存在する粒子との前記近距離力の計算が終了する毎に、前記系内の全てのセルが前記中心セルとなるように前記セルリストを所定の規則にしたがって順次更新し、
前記アドレス発生装置が、前記更新前のセルリストに含まれる中心セルに対して、前記系のｘ方向、ｙ方向またはｚ方向のいずれか一方向に隣接するセルを、前記更新後のセルリストに含まれる中心セルとすることで、前記中心セルを隣接するセルへ順次移動させる方法である。
【００１１】
上記のような多体問題計算装置及び方法では、各セルの一辺の長さを最適に定めることにより、中心粒子とカットオフ距離内に存在する粒子を効率よく選択することができる。また、系内の全てのセルが中心セルとなるようにセルリストを所定の規則にしたがって順次更新することで、装置内でセルリストの更新処理を自律的に実行できる。さらに、セルデータとして、セルを識別するための情報及び該セルに含まれる粒子の数のみを用いるため、従来の多体問題計算装置に比べて記憶装置に格納するデータ量を低減できる。
【発明の効果】
【００１２】
本発明によれば、各セルの一辺の長さを最適に定めることにより、中心粒子とカットオフ距離内に存在する粒子を効率よく選択することができるため、不要な粒子間の距離計算を節減できる。また、系内の全てのセルが中心セルとなるようにセルリストを所定の規則にしたがって順次更新することで、装置内でセルリストの更新処理を自律的に実行できるため、外部装置の介入をなくして効率よく系内の各粒子に働く近距離力を計算できる。さらに、セルデータとして、セルを識別するための情報及び該セルに含まれる粒子数のみを用いるため、従来の多体問題計算装置に比べて記憶装置に格納するデータ量を低減できる。したがって、多体問題計算回路に備える記憶装置のメモリ容量が少なくて済むため、多体問題計算回路のコストを低減できる。
【発明を実施するための最良の形態】
【００１３】
次に本発明について図面を参照して説明する。
【００１４】
本発明では、計算対象となる系を、図１に示すように複数の空間から成るセルに分割する。そして、ある特定の粒子（以下、中心粒子と称す）に働く力を計算する場合、その粒子を含むセル（以下、中心セルと称す）とその周囲のセル（以下、周辺セルと称す）とを指定し、中心粒子と、中心セルに含まれる他の粒子及び周辺セルに含まれる全ての粒子との距離及び粒子間に働く力（近距離力）をそれぞれ計算する。具体的には、粒子間に働く力を、３×３×３（ｘ方向、ｙ方向、ｚ方向のセルの数）＝２７個、あるいは５×５×５＝１２５個のセル単位で計算する。それ以外のセルに含まれる粒子については、要求された計算精度に応じて近距離力の計算を省略したり、周知の近似方法を用いて計算すればよい。
【００１５】
なお、図１では、系を８×８×８＝５１２個のセルに分割し、各セルに対応する座標（ｘ、ｙ、ｚ）を付与した様子を示している。また、粒子間に働く力を計算するセルの単位は、上記２７個や１２５個に限らず、例えば７×７×７＝３４３個等、ｘ方向、ｙ方向、ｚ方向のセルの数がそれぞれ奇数個であればいくつであってもよい。但し、計算単位となるセル数が増えると、後述するリストメモリの容量を大きくする必要があるため、粒子間に働く力を計算するセルの単位は上記２７個や１２５個が望ましい。
【００１６】
本発明の多体問題計算装置は、この２７個または１２５個のセルに関する情報を一時的に保持するリストメモリを備え、リストメモリから計算対象となる中心セル及び周辺セルを選択し、選択したセルに含まれる各粒子に関する情報を順次読み出すことで粒子間の距離や粒子間に働く近距離力を計算する。以下、各セルに関する情報をセルデータと称し、リストメモリで保持する複数のセルデータをセルリストと称す。また、各粒子に関する情報を粒子データと称す。系に含まれる全ての粒子の粒子データ及び系を構成する全てのセルのセルデータは、粒子間の近距離力を計算する前に多体問題計算装置が有する記憶装置に予め格納される。粒子データは、粒子毎の位置座標（ｘ、ｙ、ｚ）や電荷Ｑの値のように粒子間の近距離力（非結合力）の計算に必要なデータである。また、セルデータは、セルを識別するための情報、例えば計算対象の粒子としてセル内で最初に選択される中心粒子（以下、先頭粒子と称す）が格納された記憶装置のアドレスと、セルに含まれる粒子数である。ここで、セルを識別するための情報は先頭粒子が格納された記憶装置のアドレスに限るものではなく、各セルを識別できればどのようなものでもよく、例えば、先頭粒子の座標データを用いてもよく、各セルに付与した識別番号や名称等を用いてもよい。
【００１７】
本発明では、中心セル内の全ての粒子について、中心セルに含まれる他の粒子及び周辺セルに含まれる全ての粒子（中心粒子の周囲に存在する粒子）から働く近距離力の計算が終了すると、該中心セルの隣接セルを新たな中心セルとして定義し、その周囲のセルを新たな周辺セルとして定義する。そして、新たに定義した中心セル及び周辺セルに応じてセルリストを更新し、更新したセルリストに基づきセルデータを順次読み出し、新たに定義した中心セル内の全ての粒子について、該中心セルに含まれる他の粒子及びその周辺セルに含まれる全ての粒子から働く近距離力をそれぞれ計算する。以降、系を構成する全てのセルが中心セルとなるように、同様の処理を繰り返し実行することで、系に含まれる全ての粒子間に働く近距離力を計算する。
【００１８】
図２は本発明の多体問題計算装置の一構成例を示すブロック図である。
【００１９】
図２に示すように、本発明の多体問題計算装置は、粒子データを用いて近距離力を計算する力演算装置４０と、計算対象となる系に含まれる全ての粒子の粒子データ及び全てのセルのセルデータが格納される記憶装置３０と、中心粒子を含む中心セル及び該中心セルの周囲に存在する所定数の周辺セルのセルデータからなるセルリストを保持し、セルリスト内のセルデータから近距離力を計算する中心粒子及び該中心粒子の周囲に存在する粒子の粒子データをそれぞれ指定すると共に、中心セル内の全ての粒子に対する、該粒子の周囲に存在する粒子との近距離力の計算が終了する毎に、系内の全てのセルが中心セルとなるようにセルリストを所定の規則にしたがって順次更新するアドレス発生装置１０と、アドレス発生装置１０によって指定された、近距離力を計算する粒子の粒子データを記憶装置３０からそれぞれ読み出し、力演算装置４０へ転送するメモリ制御装置２０とを有する。
【００２０】
アドレス発生装置１０は、セルリストを一時的に保持するリストメモリ１１と、リストメモリ１１で保持されたセルリストにしたがって記憶装置３０から力演算装置４０へ転送する粒子データをメモリ制御装置２０に対して指定すると共に、リストメモリ１１で保持されたセルリストを所定の規則にしたがって更新するシーケンサ１２とを備えている。
【００２１】
シーケンサ１２には、系のｘ方向、ｙ方向及びｚ方向毎のセルの移動数をカウントするための第１のカウンタ〜第３のカウンタ、中心セルの粒子数を計数するための第４のカウンタ、セルリストに登録されたセル数を計数するための第５のカウンタ、中心セルのセルデータを一時的に保持する中心セルデータ記憶装置、リストメモリ１１からセルデータを読み出すためのリードアドレス及びリストメモリ１１にセルデータを格納するためのライトアドレスをそれぞれ保持するレジスタ等、処理に必要なカウンタ、レジスタ、タイマー等をそれぞれ複数備えている。
【００２２】
記憶装置３０には、上述したように計算対象となる系に含まれる全ての粒子の粒子データや系を構成する全てのセルのセルデータが操作者あるいはコンピュータ等の情報処理装置によって予め格納される。アドレス発生装置１０及びメモリ制御装置２０は、例えば論理回路やメモリ等を用いて構成してもよく、ＣＰＵ（またはＤＳＰ）とメモリとを備え、該メモリに格納されたプログラムにしたがってＣＰＵ（またはＤＳＰ）により以下に記載するアドレス発生装置１０及びメモリ制御装置２０の各種機能を実現する構成であってもよい。力演算装置４０は、例えばＣＰＵ、ＤＳＰ、論理回路、メモリ等を組み合わせた演算専用のコンピュータ等の情報処理装置により構成すればよい。
【００２３】
このような構成において、図２に示した多体問題計算装置を用いて系内の粒子間に働く近距離力を計算する場合、シーケンサ１２は、メモリ制御装置２９を用いて計算対象となる中心粒子を含む中心セル及びその周辺セルのセルデータをそれぞれ記憶装置３０から読み出し、リストメモリ１１にセルリストとして登録する。
【００２４】
リストメモリ１１にセルリストが登録されると、メモリ制御装置２０は、シーケンサ１２からの指示により、セルリストで指定された中心セルに含まれる先頭粒子の粒子データを記憶装置３０から読み出し、力演算装置４０へ転送する。
【００２５】
次に、メモリ制御装置２０は、シーケンサ１２からの指示により、セルリストに登録された複数のセルのうち、所定のセル（中心セルまたは周辺セル）のセルデータを記憶装置３０から読み出し、該セルに含まれる全ての粒子の粒子データを読み出して力演算装置４０へ転送する。力演算装置４０は、先に転送された先頭粒子の粒子データと、それに続いて転送される粒子データを用いて先頭粒子に働く近距離力を計算する。
【００２６】
メモリ制御装置２０は、最初に読み出したセルに含まれる全粒子の粒子データの読み出しが終了すると、シーケンサ１２の指示により、セルリストに登録された次のセルのセルデータを読み出し、該セルに含まれる全ての粒子の粒子データを読み出して力演算装置４０へ転送する。力演算装置４０は、先に転送された先頭粒子の粒子データと、それに続いて転送される粒子データを用いて先頭粒子に働く近距離力を計算する。
【００２７】
以下、同様の処理を繰り返し、セルリストに登録されている全てのセルについて、それぞれに含まれる全ての粒子の粒子データを読み出し、その粒子データを力演算装置４０へ転送する。セルリストに登録された全てのセルの粒子データの読み出しが終了すると、メモリ制御装置２０は、シーケンサ１２の指示により、中心セルに含まれる、次に計算対象となる粒子（中心粒子）の粒子データを記憶装置３０から読み出し、力演算装置４０へ転送する。力演算装置４０は、先頭粒子に対する処理と同様に、次に読み出した中心粒子に対して各セル（中心セルまたは周辺セル）に含まれる全粒子から働く近距離力を順次計算する。
【００２８】
力演算装置４０により中心セルに含まれる全ての粒子に対する近距離力の計算が終了すると、シーケンサ１２は、中心セルの隣接セルを新たな中心セルとして定義し、その周囲のセルを新たな周辺セルとして定義する。そして、メモリ制御装置２０を用いて新たな中心セル及び周辺セルのセルデータを記憶装置３０から読み出し、リストメモリ１１へ格納してセルリストを更新する。
【００２９】
以降、新たに定義された中心セルに含まれる全ての粒子に対する近距離力をそれぞれ計算し、さらに、系を構成する全てのセルが中心セルとなるようにセルリストの更新処理を繰り返し実行することで、系に含まれる全ての粒子間の近距離力を計算する。
【００３０】
本発明によれば、各セルの一辺の長さを最適に定めることにより、中心粒子とカットオフ距離内に存在する粒子を効率よく選択することができるため、不要な粒子間の距離計算を節減できる。また、系内の全てのセルが中心セルとなるようにセルリストを所定の規則にしたがって順次更新することで、装置内でセルリストの更新処理を自律的に実行できるため、外部装置の介入をなくして効率よく系内の各粒子に働く力を計算できる。
【００３１】
次に、上述したシーケンサの処理手順について図面を用いて説明する。
【００３２】
図３〜図５は図２に示したシーケンサの処理手順を示すフローチャートであり、図６は図３から図５に示した処理により中心セルが移動していく様子を示す模式図である。
【００３３】
以下では、計算対象となる系に含まれる全ての粒子の粒子データ及びセルデータが既に記憶装置３０に格納されているものとする。また、粒子間に働く近距離力を３×３×３（ｘ方向、ｙ方向、ｚ方向のセルの数）＝２７個単位で計算するものとし、リストメモリ１１には２７個のセルに対応するセルデータがセルリストとして登録されるものとする。
【００３４】
図３〜図５に示すように、アドレス発生装置１０のシーケンサ１２は、リストメモリ１１からセルデータを読み出すためのリードアドレス及びリストメモリ１１にセルデータを格納するためのライトアドレスをそれぞれ保持するレジスタの値を初期化し、それぞれに「０」をセットする（ステップＳ１）。
【００３５】
次に、シーケンサ１２は、計算対象となる系のセル構成に応じてｘ方向、ｙ方向及びｚ方向毎の分割数（ｘ方向、ｙ方向及びｚ方向毎のセル数）を、第１のカウンタ〜第３のカウンタへそれぞれセットする（ステップＳ２〜Ｓ４）。ここでは、第１のカウンタにｚ方向の分割数がセットされ（ステップＳ２）、第２のカウンタにｙ方向の分割数がセットされ（ステップＳ３）、第３のカウンタにｘ方向の分割数がセットされるものとする（ステップＳ４）。
【００３６】
続いて、シーケンサ１２は、最初に計算対象となる中心セル及び周辺セルのセルデータを、メモリ制御装置２０を用いて記憶装置３０から読み出し、それぞれリストメモリ１１へ格納する。このとき、記憶装置３０からは、ｘ方向、ｙ方向またはｚ方向のいずれか一方向に９セル単位でセルデータが読み出される。例えば、ｘ方向に読み出す場合は１×３×３単位で各セルデータが読み出され、ｙ方向に読み出す場合は３×１×３単位で各セルデータが読み出され、ｚ方向に読み出す場合は３×３×１単位で各セルデータが読み出される。また、シーケンサ１２が有するリストメモリ１１のライトアドレスを格納するレジスタの値は、「９」単位で増加し、セルリストに登録する全てのセルのセルデータをリストメモリ１１へ格納して「２７」になると「０」に戻る。シーケンサ１２は、セルリストとして登録する全てのセルのセルデータをリストメモリ１１に格納すると、中心セルのセルデータを上述した中心セルデータ記憶装置へ格納する（ステップＳ５）。
【００３７】
次に、シーケンサ１２は、中心セルから先頭粒子または中心粒子を抽出し、該先頭粒子または中心粒子の粒子データをメモリ制御装置２０により記憶装置３０から読み出し、力演算装置４０へ転送する（ステップＳ６）。また、中心セルのセルデータに基づき、セルの粒子数を計数するための第４のカウンタに中心セルの粒子数と等しい値「ｎ」をセットし（ステップＳ７）、セルリストに登録されたセル数を計数するための第５のカウンタにセルリスト内のセルデータ数「２７」をセットする（ステップＳ８）。
【００３８】
次に、シーケンサ１２は、セルリストに登録された中心セルまたは周辺セルのうち、所定のセルを選択し、選択したセルのセルデータをリストメモリ１１から読み出し（ステップＳ９）、該セルに含まれる粒子の粒子データをメモリ制御装置２０により記憶装置３０からそれぞれ読み出して力演算装置４０へ転送する（ステップＳ１０）。力演算装置４０は、先に転送された先頭粒子または中心粒子の粒子データと、それに続いて転送される、選択されたセルに含まれる粒子の粒子データを用いて先頭粒子または中心粒子に働く近距離力をそれぞれ計算する。そして、選択されたセルに含まれる全ての粒子の粒子データを力演算装置４０へ転送したか否かを判定し（ステップＳ１１）、全ての粒子の粒子データを力演算装置４０へ転送していない場合は、ステップＳ１０の処理に戻って粒子データの力演算装置４０への転送処理を繰り返す。
【００３９】
力演算装置４０に対する選択されたセルに含まれる全ての粒子の粒子データの転送が完了した場合は、セルリストに登録されたセル数を計数するための第５のカウンタの値を「１」だけデクリメントし（ステップＳ１２）、セルリストに登録された全てのセルの粒子データの転送が完了したか否かを判断するために、第５のカウンタの値が「０」であるか否かを判定する（ステップＳ１３）。そして、第５のカウンタの値が「０」でない場合は、ステップＳ９の処理に戻ってセルリストに登録された中心セルまたは周辺セルのうち、粒子データの転送が終了していないセルを選択し、該セルに対してステップＳ９からステップＳ１３の処理を実行する。このとき、シーケンサ１２が有するリストメモリ１１のリードアドレスを格納するレジスタの値は「１」だけインクリメントされ、セルリストに登録された全てのセルデータを読み出すことで「２７」になると「０」へ戻る。
【００４０】
第５のカウンタの値が「０」の場合は、第４のカウンタの値を「１」だけデクリメントし（ステップＳ１４）、中心セルに含まれる全ての粒子に対する近距離力の計算が終了したか否かを判断するために、第４のカウンタの値が「０」であるか否かを判定する（ステップＳ１５）。そして、第４のカウンタの値が「０」でない場合、ステップＳ６の処理に戻って先頭粒子または中心粒子となっていない粒子を選択し、該粒子（新たな中心粒子）に対してステップＳ６からステップＳ１５の処理を実行する。
【００４１】
第４のカウンタの値が「０」の場合は、第３のカウンタの値を「１」だけデクリメントし（ステップＳ１６）、ｘ方向への中心セルの移動が終了したか否か（系の端部へ到達したか否か）を判断するために、第３のカウンタの値が「０」であるか否かを判定する（ステップＳ１７）。そして、第３のカウンタの値が「０」でない場合、ステップＳ５の処理に戻って、先の中心セルとｘ方向に隣接するセルを新たな中心セルと定義し、該中心セル及びその周辺セルのセルデータを、メモリ制御装置２０を用いて記憶装置３０から読み出し、それぞれリストメモリ１１へ格納し、更新したセルリストに基づいてステップＳ５からステップＳ１７の処理を実行する。
【００４２】
第３のカウンタの値が「０」の場合は、第２のカウンタの値を「１」だけデクリメントし（ステップＳ１８）、ｘ方向及びｙ方向への中心セルの移動が終了したか否か（系の端部へ到達したか否か）を判断するために、第２のカウンタの値が「０」であるか否かを判定する（ステップＳ１９）。そして、第２のカウンタの値が「０」でない場合、ステップＳ４の処理に戻って第３のカウンタの値に系のｘ方向の分割数をセットし、ステップＳ４からステップＳ１９の処理を実行する。
【００４３】
第２のカウンタの値が「０」の場合は、第１のカウンタの値を「１」だけデクリメントし（ステップＳ２０）、ｘ方向、ｙ方向及びｚ方向への中心セルの移動が終了したか否か（系の端部へ到達したか否か）を判断するために、第１のカウンタの値が「０」であるか否かを判定する（ステップＳ２１）。そして、第１のカウンタの値が「０」でない場合、ステップＳ３の処理に戻って第２のカウンタの値に系のｙ方向の分割数をセットし、ステップＳ３からステップＳ２１の処理を実行する。第１のカウンタの値が「０」の場合は処理を終了する。
【００４４】
なお、図２は、中心セルを、系のｘ方向の一端部から他端部へ移動させ、その処理をｙ方向に１セルづつ移動させつつ繰り返し、さらに、ｘ方向とｙ方向で構成されるセル面をｚ方向に１セルずつ移動させつつ繰り返すことで全てのセルが順次中心セルとなる手順を示しているが、ｘ方向、ｙ方向及びｚ方向の移動順は上記に限るものではなく、中心セルをｘ方向、ｙ方向またはｚ方向のいずれかの方向と隣接するセルへ移動させ、かつ全てのセルが順次中心セルとなれば、移動方向の順序はどのようなものであってもよい。
【００４５】
以上の処理によって計算対象となる中心セルが移動していく様子を示したのが図６である。図６では、説明を簡単にするために、系が平面で構成され、かつ系が５×５＝２５個のセルに分割され、各セルに対応する座標（ｘ、ｙ）が付与された様子を示している。また、図６に示す例では、３×３＝９個単位で粒子間に働く近距離力を計算するものとする。
【００４６】
図６に示す例では、セルデータを、ｙ方向に３セル単位（図６の縦線、斜線、横線を記したセル）で記憶装置３０から読み出し、セルリストに登録する。そして、次に読み出すセルデータをｘ＝０，１，２，３，４の順にｘ方向へ移動させ、系のｘ方向の端部（ｘ＝４）に到達すると、ｙ方向に一つ移動させ、再びｘ＝０，１，２，３，４の順に読み出すセルデータをｘ方向へ移動させている。この場合、中心セルは、座標（０，１）のセルから座標（４，１）のセル、座標（０，２）のセルから座標（４，２）のセル、座標（０，３）のセルから座標（４，３）のセル、座標（０，４）のセルから座標（４，４）のセルの順に移動する（図６の格子を記したセル）。
【００４７】
なお、図６では、中心セルを、ｘ方向に走査させつつ、ｙ方向に一つずつ移動させる例を示しているが、全てのセルが中心セルとなるように移動できれば、中心セルをｙ方向に走査させつつ、ｘ方向に一つずつ移動させてもよい。
【００４８】
本発明の多体問題計算装置では、中心セルを隣接するセルに順次移動させるため、中心セルの移動に伴ってセルリストを更新する場合に、一部の周辺セルのセルデータを共有可能であり、その周辺セルのセルデータを記憶装置３０からリストメモリ１１へ読み出す処理を節減できる。したがって、セルリストの更新処理に要する時間を節減できる。上述したように、本発明ではシーケンサ１２により所定の規則にしたがって次に計算する中心セル及び周辺セルを決定するため、セルリストの更新処理をシーケンサ１２により自律して実行できる。したがって、粒子間に働く近距離力を効率よく計算できる。
【００４９】
また、本発明の多体問題計算装置では、上述したように、セルを識別するために用いる識別情報として先頭粒子が格納された記憶装置３０のアドレスを用い、セルデータとして、該アドレスとセルに含まれる粒子数のみを用いている。したがって、従来の多体問題計算装置に比べて記憶装置３０やリストメモリ１１に格納するデータ量を低減できる。そのため、多体問題計算回路に備える記憶装置のメモリ容量が少なくて済み、多体問題計算回路のコストを低減できる。
【図面の簡単な説明】
【００５０】
【図１】系を複数のセルに分割した様子を示す模式図である。
【図２】本発明の多体問題計算装置の一構成例を示すブロック図である。
【図３】図２に示したシーケンサの処理手順を示すフローチャートである。
【図４】図２に示したシーケンサの処理手順を示すフローチャートである。
【図５】図２に示したシーケンサの処理手順を示すフローチャートである。
【図６】図３から図５に示した処理により中心セルが移動していく様子を示す模式図である。
【符号の説明】
【００５１】
１０    アドレス発生装置１０
１１    リストメモリ
１２    シーケンサ
２０    メモリ制御装置
３０    記憶装置
４０    力演算装置
【図１】
0004475419.tif 000002
【図２】
0004475419.tif 000003
【図３】
0004475419.tif 000004
【図４】
0004475419.tif 000005
【図５】
0004475419.tif 000006
【図６】
0004475419.tif 000007