(57)【特許請求の範囲】
【請求項１】
評価対象の原子炉の炉心を複数の領域に分割し、分割で形成された各領域を各プロセッサに割当て、各プロセッサが割当てられた領域について、通信キューを用いて、相互に必要なデータの交換を行いつつ並列計算して炉心解析を行う並列計算のための分割領域管理方法であって、
水平面（ｘ軸とｙ軸方向）は、評価対象の原子炉の炉心を燃料集合体に対応した升目の１／２〜１／１６の大きさに分割してなるブロックを、前記各プロセッサが作成するブロック作成ステップと、
前記複数の領域への分割を前記ブロックの境界に沿って、前記各プロセッサが行う領域作成ステップと、
前記作成された各領域について、その内部の各ブロックに、当該ブロックの位置にある炉心構成要素の種類に対応したフラグを付し、さらに所定のフラグが付されたブロックについて一定の手順で、前記各プロセッサが識別番号を付ける領域内ブロック管理ステップと、
前記作成された各領域について、その内部にある各ブロックに当該領域の計算を担当するプロセッサの識別番号を、前記各プロセッサが付す担当プロセッサ番号付与ステップと、
前記領域内ブロック管理ステップと前記担当プロセッサ番号付与ステップで作成されたデータを基に、前記作成された各領域の各ブロックについて、各ブロックの水平面における４方向（ｘ軸とｙ軸の±方向）の各辺について隣接するブロックを担当するプロセッサを調べ、他のプロセッサが担当するならば、その辺とプロセッサの番号とからなる情報と、当該隣接するブロックについてもペアとなる情報とを含む通信キュー情報を前記通信キューに作成し、前記通信キューを用いてプロセッサ間通信に利用可能とする通信キュー情報作成管理ステップと、
を有していることを特徴とする並列計算のための分割領域管理方法。
【請求項２】
前記ブロック作成ステップは、水平面においては、解析対象箇所の燃料集合体に対応した升目をｘ軸方向、ｙ軸方向は、共に２分割するものであることを特徴とする請求項１に記載の並列計算のための分割領域管理方法。
【請求項３】
前記領域作成ステップは、領域に凹みが生じない様に評価対象の原子炉の炉心を分割するものであり、
前記領域内ブロック管理ステップにおける当該ブロックの位置にある炉心構成要素の種類に対応したフラグとは、少なくとも当該ブロックが燃料領域、反射体領域、真空領域の何れの領域に属するかを示す３種のフラグを含むものであり、
同じく所定のフラグが付されたブロックについて一定の手順で識別番号を付けるとは、水平面上での位置を示す整数値を原点を基点としてｘ軸とｙ軸の一方を他方より優先して、何れの方向も昇順に付すものであることを特徴とする請求項１または請求項２に記載の並列計算のための分割領域管理方法。
【請求項４】
前記ブロックの種類に応じたフラグとは、当該ブロックが燃料領域、反射体領域、真空領域の何れの領域に属するかに応じて、各々正整数、負の整数、０または各々負の整数、０、正整数であることを特徴とする請求項３に記載の並列計算のための分割領域管理方法。
【請求項５】
通信キュー情報作成ステップは、前記ブロック作成ステップにて水平面に碁盤の升目状に形成された各ブロックについて、先ずｙ軸（ｘ軸）の座標値が少ない（大きい）こと、次いでｘ軸（ｙ軸）の座標値が少ない（大きい）ことを優先して、同じ方向に一列に並んだブロックについて、その４辺に隣接する各ブロックを担当するプロセッサが当該ブロックと相違するか否かを調査するものであることを特徴とする請求項１ないし請求項４のいずれかに記載の並列計算のための分割領域管理方法。
【請求項６】
前記ブロック作成ステップはさらに、上下方向（ｚ軸方向）にもブロック分割するものであり、
前記領域作成ステップはさらに、前記複数の領域への分割を前記上下のブロックの境界に沿っても行うものであり、
前記領域内ブロック管理ステップはさらに、前記所定のフラグが付されたブロックについて上下方向に沿っても一定の手順で識別番号を付けるものであり、
前記通信キュー情報作成管理ステップはさらに、各ブロックの水平方向の４面の他に上下方向の２面についても、隣接するブロックを担当するプロセッサが同じか否かを調べ、他のプロセッサが担当するならば、その面とプロセッサの番号とからなる情報と、併せて当該隣接するブロックについてもペアとなる方法とを含む通信キュー情報を作成し、プロセッサ間通信に利用可能とするものであることを特徴とする請求項１ないし請求項５のいずれかに記載の並列計算のための分割領域管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は並列計算のための分割領域管理方法に関し、特に複数のプロセッサを使用して原子炉の炉心解析を行う際に、解析対象の３次元詳細メッシュ体系を適切に分割して並列計算が効率よく行える様にする分割領域管理方法に関する。
【背景技術】
【０００２】
原子炉の炉心の詳細な解析においては、炉心、その周囲の水反射体等を含むスペースを細かく３次元メッシュ分割し、メッシュ毎にその種類や性質に応じて核分裂、中性子流、発熱量、熱流等の各種計算が何度も繰返して行われ、さらに各繰返し計算の各ステップの開始時には計算に必要なデータの入力が行われ、同じく各ステップの終了時には必要なデータの出力や書換えや交換等が行われる。
【０００３】
先ず、３次元メッシュ分割について説明する。
実際の原子炉は円筒形であるが、計算コードでは図１に示す様に外部との境界条件を直線として取扱うのが一般的である。図１は、計算コード上での原子炉の水平面（ｘ軸とｙ軸方向）のメッシュ分割の様子を概念的に示す図である。図１において、１０は燃料集合体が配置されている燃料装荷部であり、２０はその周囲の冷却水等が充たされている反射体部であり、３０は現実には何も存在しないため中性子輸送計算が行われない箇所、非計算領域（いわゆる真空領域）である。
【０００４】
太線は燃料装荷部１０の外部境界線であり、太い破線は内側の反射体部２０と隅側の真空領域３０の境界である。さらに、実線または太線で区切られた升目は燃料集合体の寸法と配置に対応しており、升目の内部の点線は前記升目がさらにｘ軸方向、ｙ軸方向とも等分割されていることを示す。即ち、水平面は１４×１４にメッシュ分割され、各メッシュは燃料集合体の１／４の大きさである。
【０００５】
ただし、図１はあくまでも概念図であり、実際の原子炉では燃料集合体は大よそ１５０体から２００体近く装荷される。
また同じく、水平面での詳細メッシュは燃料集合体の１／４よりさらに細かく、例えば燃料集合体の１／４００程度、即ち１個の燃料集合体やこれに相当する反射体領域が２０×２０程度に分割されるのが普通である。
また、高さ方向（ｚ方向）にも、６０程度に分割される。
その結果、実際の炉心解析においては、３次元詳細メッシュの総数が数百万から数千万となるだけでなく、必要な記憶容量も膨大になり、さらに計算負荷も極めて大きくなり、時間もかかる。
【０００６】
計算速度を上げるために、計算体系の特定の対象、例えばエネルギー群、中性子等の移動する角度、スペース、を複数に分割して（ドメイン分割）、分割した対象毎に複数のプロセッサに割当て、各プロセッサが割当てられた対象を分担して解析すること、即ち複数のプロセッサによる並列計算が行われている。
複数のプロセッサによる並列計算においては、計算速度を上げる面からは各プロセッサの計算負荷を均等にすること、その他必要なメモリの最適化やメモリアクセスに要する時間を少なくすること等が重要である。
【０００７】
また、計算コストを下げる面からは、計算速度を上げたりすることの他に、各プロセッサの計算に要するコスト（計算コスト）と各プロセッサ間の通信に要するコスト（通信コスト）とのバランスをとることも重要となる。並列計算においては、計算コストの通信コストに対する比率に対して「粒度」という尺度を用いるが、並列計算の高効率化のためには粒度を出来るだけ大きくすることが必要である。
【０００８】
計算負荷を均等にし、粒度を大きくするために、並列計算では以下の事項が心がけられている。
１．ドメイン分割の対象は、出来るだけ大きな数がある計算対象とする。
２．通信量（ペイロード）を最小とするため、通信が必要な境界面積を最小にする。
３．通信遅延（レイテンシー）を最小とするために、通信相手のプロセッサ数（通信コネクション数）を最小とする。
【０００９】
具体的には、分割の対象は個数が少ないエネルギー群や角度等ではなく、総数が数百万以上となる３次元メッシュとされ、この下で各プロセッサの担当する領域の広さ（メッシュ数）のみならず、各担当する領域内の燃料体がある部分と水反射体がある部分の比率をも同じである様にすることがなされている。これは、燃料体部分と水反射体部では、燃焼計算の必要性の有無等の条件の違いにより、計算負荷が異なるためである。
データファイルの管理もこれらに対応した方法とされている。具体的には、例えばデータ管理単位を燃料集合体１体とし、燃料集合体の数だけデータファイルを用意する等の方法である。
【００１０】
以上の他、並列計算のために、Ｃ＋＋を初めとするオブジェクト指向プログラム、さらにはこれらのプログラムを使用したプログラム技術、例えばＣｏｌｌｅｃｔｉｖｅ  Ｉ／Ｏ  と不連続アクセスを組合わせた「Ｌｅｖｅｌ−３  アクセス」（非特許文献１）、その他Ｂｌｉｔｚ＋＋、ｂｏｏｓｔ、ｓｌｉｃｉｎｇ等のプログラム技術が開発されている。
【００１１】
さらに、リスタートファイルやプロセッサのメモリ等には、各核種の中性子エネルギー毎の中性子との反応の種類やその確率、例えばＵ２３５の吸収断面積等、その他Ｕ２３５の濃縮度等がデータとして入力されている。そして、それらのデータを使用して核分裂による中性子や熱の発生、外部への放出等についての各種の逐次の計算、即ち炉心解析が複数のプロセッサにより並列して行われる。
また、複数のプロセッサによる並列計算では、前記の並列計算のためのプログラムやプログラム技術を使用して、逐次計算の途中においても必要に応じて各プロセッサ間での直接的、間接的な各種のデータの交換、例えば次の計算サイクルの開始に先立って前のサイクルの計算結果の交換等、も行われることとなる。
【非特許文献１】Ｗｉｌｌｉａｍ  Ｇｒｏｐｐ，ｅｔ．ａｌ．，ＵｓｉｎｇＭＰＩ  Ｐｒｅｓｓ（１９９９）
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、真空領域では計算がなされず、燃料装荷部と反射体部では計算負荷が異なる。図１に示す正方形の炉心のモデルを複数のプロセッサに計算負荷が均等になる様にドメイン分割、具体的には３次元メッシュを対象としての領域（スペース）分割をしようとすれば、かなり複雑となる。
即ち、確かに丁度２台のプロセッサで図１に示すモデルを並列計算するのであればｘ軸方向あるいはｙ軸方向の炉心中央部を通る直線で等分割し、また４台のプロセッサであればｘ軸方向とｙ軸方向について各々の炉心中央部を通る２本の直線で４個に等分割すればよい。これらの場合には、境界も直線であるため、並列計算のアルゴリズムも簡単になる。
【００１３】
しかし、３台あるいは５台のプロセッサで並列計算をする場合には、計算負荷が均等となり、かつ直線で分割する方法は存在しない。計算速度の向上を目指してさらにプロセッサの台数を増やせば、計算負荷が均等であり、境界も簡単な直線となる分割はますます困難となる。
例えば、計算負荷を極力均等とするために、燃料集合体あるいは１／４燃料集合体を単位とするブロックや簡単な境界線等で領域分割をするのではなく、３次元の詳細メッシュ単位で領域を対象に分割することも考えられるが、この場合にはどうしても境界線が複雑となりがちであり、このためプログラムが複雑化する。特に並列計算の途中で各プロセッサが相互のデータを交換する際に、通信が輻輳したり、矛盾したりしない様にするためには、通信キューについてのプログラム作成が面倒となる。しかも、プログラムの作成等が面倒となる割には、プロセッサ間の負荷の均等と粒度の上昇を得ることは、なかなか困難である。
【００１４】
このため、中性子輸送計算等の原子炉の炉心解析を複数のプロセッサを使用する並列計算により行う場合に、各プロセッサの計算負荷が一層均等になり、さらに粒度も上昇し、しかもプログラム作成が、特に通信キューについてのプログラム作成が、容易となる技術の開発が望まれていた。
【課題を解決するための手段】
【００１５】
本発明は、以上の課題を解決することを目的としてなされたものであり、分割された各領域のブロック相互の接続関係を簡便に構築することが可能な分割領域管理方法としたものである。以下、各請求項の発明を説明する。
【００１６】
請求項１に記載の発明は、
評価対象の原子炉の炉心を複数の領域に分割し、分割で形成された各領域を各プロセッサに割当て、各プロセッサが割当てられた領域について、通信キューを用いて、相互に必要なデータの交換を行いつつ並列計算して炉心解析を行う並列計算のための分割領域管理方法であって、
水平面（ｘ軸とｙ軸方向）は、評価対象の原子炉の炉心を燃料集合体に対応した升目の１／２〜１／１６の大きさに分割してなるブロックを、前記各プロセッサが作成するブロック作成ステップと、
前記複数の領域への分割を前記ブロックの境界に沿って、前記各プロセッサが行う領域作成ステップと、
前記作成された各領域について、その内部の各ブロックに、当該ブロックの位置にある炉心構成要素の種類に対応したフラグを付し、さらに所定のフラグが付されたブロックについて一定の手順で、前記各プロセッサが識別番号を付ける領域内ブロック管理ステップと、
前記作成された各領域について、その内部にある各ブロックに当該領域の計算を担当するプロセッサの識別番号を、前記各プロセッサが付す担当プロセッサ番号付与ステップと、
前記領域内ブロック管理ステップと前記担当プロセッサ番号付与ステップで作成されたデータを基に、前記作成された各領域の各ブロックについて、各ブロックの水平面における４方向（ｘ軸とｙ軸の±方向）の各辺について隣接するブロックを担当するプロセッサを調べ、他のプロセッサが担当するならば、その辺とプロセッサの番号とからなる情報と、当該隣接するブロックについてもペアとなる情報とを含む通信キュー情報を前記通信キューに作成し、前記通信キューを用いてプロセッサ間通信に利用可能とする通信キュー情報作成管理ステップと、
を有していることを特徴とする並列計算のための分割領域管理方法である。
【００１７】
本請求項の発明においては、各プロセッサが担当する領域の分割が、単に直線からなるメッシュ境界に沿って分割するのではなく、燃料集合体と言う意味のある構成部に着目して作成されたブロックの境界に沿って行われるため、各プロセッサ間の計算負荷の均等化、その他効率的なメモリの使用やメモリへのアクセス等が容易となる。
また、各プロセッサ間の通信の制御、管理を通信キューを用いて行うが、その具体的方法として、各ブロックの水平面における４方向（ｘ軸とｙ軸の±方向あるいは東西南北）の各辺について隣接するブロックを担当するプロセッサを調べ、他のプロセッサが担当するならば、その辺とプロセッサの番号とからなる情報と、当該隣接するブロックについてもペアとなる情報とを含む通信キュー情報を、プログラムを工夫したことによりペアの情報として作成することとなるため、各プロセッサが相互に計算に必要なデータを交換する際の通信キューの内容に矛盾が発生せず、プログラム作成も容易となり、データ交換も効率的となり、粒度も向上する。
【００１８】
以上の下で、３次元の原子炉解析の並列アルゴリズムが実行されるため、計算は迅速であり、粒度も大きくなる。
【００１９】
ここに、「その辺とプロセッサの番号とからなる情報」とは、隣接するブロックの計算を担当するプロセッサが相違する辺が、正方形の何れの方向（ｘ軸の±あるいはｙ軸の±の何れの方向）を向いた辺（実際にはブロックは直方体であるため、面で隣接する）であるかの情報と、隣接する領域の計算を担当するプロセッサの番号を特定する情報を指す。
また、「当該隣接するブロックについてもペアとなる情報」とは、隣接するブロックから見た場合には、隣接する方向が逆であり、さらにその逆の方向のブロックを担当するプロセッサを特定する番号となることを指す。
【００２０】
また、「燃料集合体に対応した升目」とは、炉内に装荷された状態の燃料集合体の水平断面がなす正方形の各辺と平行あるいは直交する様に升目を構成するｘ軸方向、ｙ軸方向を定め、さらにその正方形を基準としてブロック分割等を行うことを指す。
【００２１】
さらに、領域分割は、各プロセッサの計算負荷が均等になされ、各領域の境界面は極力少なくなる様になされる、具体的には例えば凹部を作らない様になされ、フラグを付ける対象となる炉心構成要素の種類は予め入力されていたりする。
なお、ブロック作成ステップにおいて、水平面を評価対象の原子炉の炉心を燃料集合体に対応した升目の１／２〜１／１６の大きさのブロックに分割するのは、燃料体部分と水反射体部では、燃焼計算の必要性の有無等の条件の違いにより、計算負荷が異なるため、各プロセッサの計算負荷が均等となる様にするためには各プロセッサの担当する領域の広さ（メッシュ数）のみならず、各担当する領域内の燃料体がある部分と水反射体がある部分の比率をも同じである様にする必要があり、トータルの分割数（メッシュ数）をハードやソフトに負担が生じない範囲である程度多くする必要があるためである。
また、ブロックの境界に沿っての領域分割は、分割数等の情報を解析者からインプットされたプロセッサが行うのではなく、炉心のブロック図を参照しつつ解析者が行って、各プロセッサに入力してもよい。
【００２２】
さらに、同一ブロック内での相互に隣接する３次元詳細メッシュ間のデータ交換は、当該ブロックを管理するプロセッサが行うこととなる。
ただし、これらは自明の事項であるため、これ以上の説明は省略する。
なおここで、「評価対象の原子炉の炉心」とは、原子炉全体ではなく、１／４炉心等であってもよい。
また、真空領域のブロックについては、通信キュー情報作成管理ステップが実質的になされない様になっていてもよい（本発明に含まれる）。
【００２３】
請求項２に記載の発明は、前記の並列計算のための分割領域管理方法において、
前記ブロック作成ステップは、水平面においては、解析対象箇所の燃料集合体に対応した升目をｘ軸方向、ｙ軸方向は、共に２分割するものであることを特徴とする並列計算のための分割領域管理方法である。
【００２４】
本請求項の発明においては、ブロックの水平面の広さが燃料集合体の１／４の広さとなるため、現実の炉心解析において、領域分割等が複雑化せず、また各プロセッサへの均等な計算負荷の割当てが容易となる。
【００２５】
請求項３に記載の発明は、前記の並列計算のための分割領域管理方法において、
前記領域作成ステップは、領域に凹みが生じない様に評価対象の原子炉の炉心を分割するものであり、
前記領域内ブロック管理ステップにおける当該ブロックの位置にある炉心構成要素の種類に対応したフラグとは、少なくとも当該ブロックが燃料領域、反射体領域、真空領域の何れの領域に属するかを示す３種のフラグを含むものであり、
同じく所定のフラグが付されたブロックについて一定の手順で識別番号を付けるとは、水平面上での位置を示す整数値を原点を基点としてｘ軸とｙ軸の一方を他方より優先して、何れの方向も昇順に付すものであることを特徴とする並列計算のための分割領域管理方法である。
【００２６】
本請求項の発明においては、領域に凹みが生じない様に評価対象の原子炉の炉心を分割するため、各領域内のブロックに水平面上での位置を示す整数値を原点（正方形の評価対象の原子炉の炉心のいずれか１の頂点）を基点としてｘ軸とｙ軸の一方を他方より優先して、何れの方向も昇順に付すことを行うプログラムの作成が容易となる。また、各領域の表面積、即ち他のプロセッサが担当する領域に隣接することとなるブロックの個数も増加しないため、粒度の増加に寄与することとなる。
また、各ブロックが燃料領域、反射体領域、真空（非計算）領域の何れの領域に属するかに応じてフラグを付すため、各プロセッサへの均等な計算負荷の割振りが、プログラム作成上からも容易となる。
【００２７】
なおここで、前記３種のフラグは一般的な原子炉、一般的な炉心解析で最も多い炉心構成要素を列挙したものであり、他の種類のフラグがあってもよく、燃料領域を示すフラグはウラン燃料を示すフラグとＭＯＸ燃料を示すフラグ等に細分化されていてもよい。
さらに、昇順とは、１ずつに限定されず、所定数だけ、例えば１０ずつ、増加することをも含み、負の整数であれば絶対値が同様に順に大きくなることを指す。
【００２８】
請求項４に記載の発明は、前記の並列計算のための分割領域管理方法において、
前記ブロックの種類に応じたフラグとは、当該ブロックが燃料領域、反射体領域、真空領域の何れの領域に属するかに応じて、各々正整数、負の整数、０または各々負の整数、０、正整数であることを特徴とする並列計算のための分割領域管理方法である。
【００２９】
本請求項の発明においては、当該ブロックが燃料領域、反射体領域、真空領域の何れの領域に属するかに応じて、各々正整数、負の整数、０または各々負の整数、０、正整数が付されているため、プログラム作成が容易となる。また、真空領域のブロックのフラグは全て０であるので、非計算領域の多数のブロックに対して、一律に０か否かを判断して不必要な計算を行わない様にすることも可能となる。さらに、整数は正負に応じて対応する計算がなされるため、計算速度の効率化もなされる。
【００３０】
請求項５に記載の発明は、前記の並列計算のための分割領域管理方法において、
通信キュー情報作成ステップは、前記ブロック作成ステップにて水平面に碁盤の升目状に形成された各ブロックについて、先ずｙ軸（ｘ軸）の座標値が少ない（大きい）こと、次いでｘ軸（ｙ軸）の座標値が少ない（大きい）ことを優先して、同じ方向に一列に並んだブロックについて、その４辺に隣接する各ブロックを担当するプロセッサが当該ブロックと相違するか否かを調査するものであることを特徴とする並列計算のための分割領域管理方法である。
【００３１】
本請求項の発明においては、相互に隣接することとなる、そして担当するプロセッサが相違するブロックについてのデータの交換先のプロセッサを、正方形の升目の１の隅のブロックから１の行あるいは列（正方形の１辺）の方向に順に行い、当該行（列）が済めば次の行（列）という風に順に行うため、プログラム作成が容易であり、また調査漏れが生じなく、さらに作成された通信キューについての情報は、相互に隣接するブロック間で対称（ペア）の内容となり、粒度向上にも寄与する。
【００３２】
請求項６に記載の発明は、前記の並列計算のための分割領域管理方法において、
前記ブロック作成ステップはさらに、上下方向（ｚ軸方向）にもブロック分割するものであり、
前記領域作成ステップはさらに、前記複数の領域への分割を前記上下のブロックの境界に沿っても行うものであり、
前記領域内ブロック管理ステップはさらに、前記所定のフラグが付されたブロックについて上下方向に沿っても一定の手順で識別番号を付けるものであり、
前記通信キュー情報作成管理ステップはさらに、各ブロックの水平方向の４面の他に上下方向の２面についても、隣接するブロックを担当するプロセッサが同じか否かを調べ、他のプロセッサが担当するならば、その面とプロセッサの番号とからなる情報と、併せて当該隣接するブロックについてもペアとなる方法とを含む通信キュー情報を作成し、プロセッサ間通信に利用可能とするものであることを特徴とする並列計算のための分割領域管理方法である。
【００３３】
本請求項の発明においては、領域分割が上下方向にも行われるため、各プロセッサ間のデータの交換は上下方向にもなされる。またこのため、上下方向のブロック分割やブロックの管理、隣接するブロック相互の調査も行われる事となる。
【発明の効果】
【００３４】
本発明においては、中性子輸送計算等の原子炉の炉心解析を複数のプロセッサによる並列計算で行う場合に、ブロックの境界に沿って各プロセッサが担当する領域の分割が行われるため、各プロセッサ間の計算負荷の均等化、その他効率的なメモリの使用やメモリへのアクセス等が容易となる。
【００３５】
また同じく、各ブロックの水平面における４方向（ｘ軸とｙ軸の±方向）の各辺について隣接するブロックを担当するプロセッサを調べる手順も、一定の簡単なアルゴリズムで作成するため、当該隣接するブロックについてもペアとなる情報となり、矛盾も生じない。このため、各プロセッサが相互に計算に必要なデータを交換する際の通信キューの内容に矛盾が発生せず、粒度も向上する。
【発明を実施するための最良の形態】
【００３６】
以下、本発明をその最良の実施の形態に基づいて説明する。なお、本発明は、以下の実施の形態に限定されるものではない。本発明と同一および均等の範囲内において、以下の実施の形態に対して種々の変更を加えることが可能である。
【００３７】
（第１の実施の形態）
本実施の形態は、水平面内においてのみ領域分割を行うものである。
先ず、ブロックを単位とする領域分割と、領域毎に所属するブロックにその種類に応じたフラグを付して番号付けをすることについて説明する。  
図２に、その様子を示す。図２は、図１に示したのと同じ原子炉の構成要素を、燃料装荷部、反射体部、真空領域の３種に区分けし、さらに水平面（ｘ軸とｙ軸面）は１／４燃料集合体の大きさにブロック分割し、このブロックを単位として太鎖線で示す様に３個の領域に分割を行い、さらに各領域のブロックについて、そのブロックが真空領域に位置すれば０を付し、燃料装荷部、反射体部の何れかに該当すれば、それに応じて領域毎に正整数と負整数を、ｘ座標値が小さいこと、ｙ座標値が小さいことの順に優先して、昇順に付けたものである。ただし、スペースの都合で、負整数のマイナス記号（−）は、数字の上に記載している。
【００３８】
従って、各ブロックの番号が正整数であること、負整数であること、０であることが、当該ブロックがいずれの種類の原子炉の構成要素に対応しているかを示すフラグとなる。
また、負整数の昇順とは、絶対値が順に大きくなることを指す。
また、領域分割は凹みが生じない様にしている。このため、各領域内において、前記の優先順位による昇順の番号付けが混乱することがない。
なお、図２において、太破線と太鎖線が重なる箇所は、太破線は図１と同じであるので、太鎖線を優先して示してある。
【００３９】
次に、図３を参照しつつ、プロセッサマップについて説明する。
図３は、図２に示す３個の領域の各ブロックに、当該領域の計算を担当するプロセッサを特定する符号を付したものである。図３において、図上左上の領域、同じく右上の領域、下方の領域内の全てのブロックに、各々０、１、２が付されているが、これは当該領域の計算を各々プロセッサ０、同１、同２が担当することを示す。ただし、前記の理由により、真空領域の計算は実際には行われない。
なお、図３においても、太破線と太鎖線が重なる箇所は太鎖線を優先して示してある。
【００４０】
次に、繰返し計算により炉心の経時変化を解析するためには、新しい計算ステップの開始に先立って各ブロックは隣接するブロックと前回の計算サイクルの計算結果等を交換する必要がある。このため、各プロセッサは、自分が担当する領域の全てのブロックについて、当該ブロックの東西南北（プログラムでは、各々Ｅａｓｔ、Ｗｅｓｔ、Ｓｏｕｔｈ、Ｎｏｒｔｈであり、図面では各、右、左、下、上）、上下（プログラムでは、各々Ｔｏｐ、Ｂｏｔｔｏｍ。ただし、本実施の形態においては、上下方向の領域の隣接はないため、これは無関係である）何れの面についても、隣接するブロックを認識しておく必要がある。
そこで各プロセッサは、図２と図３に示す情報から、自分が担当する領域の各ブロックの各面（ただし、領域分割は平面であり、このため図面は平面図であるので、現実には各辺となる）について前記の情報を取得することとなる。
【００４１】
また、隣接するブロックが他のプロセッサが担当する領域であれば、当該他のプロセッサの番号も認識し、その内容を通信キューとして作成し、管理しておく必要がある。さらにこの場合には、当該隣接する２つのブロックは相互に所属する領域が、即ち計算を担当するプロセッサが、相違するため、当該他のプロセッサについても同様のことがなされることとなる。
【００４２】
以下、図２に概念的に示すような各プロセッサの担当する領域内のブロックについての情報と図３に概念的に示す様なプロセッサマップとから、２つのプロセッサが整合を取りつつ通信キューを作成する方法を、図４と図５を参照しつつ説明する。
プロセッサマップから、座標（ｘ，ｙ）に位置するブロックについて、方向ｄｉｒにあるプロセッサ番号を検索する。それを、ｐｒｏｃ（ｘ，ｙ，ｄｉｒ）と表記する。ここにｄｉｒは東西南北のいずれかである。なお、本実施の形態では、領域分割は水平面（ｘ軸とｙ軸方向）についてのみ行っているため、上下方向（ｚ軸方向）は検索しない。
【００４３】
図４は、ｘ方向（東方向、図では右）、ｙ方向（南方向、図では下）に多数（各ｍ個）のブロックが並んだ体系を、多数のプロセッサで領域分割し、その（ｘ，ｙ）が（０，０）に近い（図上左上）部分のブロックをプロセッサ０（Ｐ０）からプロセッサ４（Ｐ４）までの５つのプロセッサ用に割当てた場合に、各ブロックについて、その東西南北の各辺で隣接するブロックの計算を担当するプロセッサの番号がどの様になるかを概念的に示した図である。
【００４４】
なお、図４に示す領域の境界は、本発明のポイントである通信キューのデータ作成の様子を説明し易い様に作成したものであり、図２に示す境界とは相違する。ただし、太い１点鎖線は領域の境界、即ち分割線を指すのは同じである。また、正方形は各ブロックを示し、その４辺の中央の数字が、当該辺の方向で隣接するブロックを担当するプロセッサの番号を示す。
【００４５】
図４を見ると、相互に隣接する、そして担当するプロセッサが相違するブロックについては、通信キューについての情報の内容が相互にペアとなっていることが判る。具体的には、図４のプロセッサ０が担当する座標が（１，０）のブロックとプロセッサ１が担当する座標が（２，０）のブロックでは、前者は正方形の図上右にある東の隣接ブロックは担当するプロセッサ番号が１となり、後者では正方形の図上左にある西の隣接ブロックは担当するプロセッサ番号が０となっており、正方形の辺の隣接する方向、プロセッサ番号が相互に逆になっている。
【００４６】
その作成であるが、各行（各ｙの座標値）についてＮｏｒｔｈ、Ｗｅｓｔ、Ｅａｓｔ、Ｓｏｕｔｈの各方向について、ｘ方向にブロックを走査し、当該座標の方向におけるプロセッサ番号と当該座標のプロセッサの番号を比較する。つまり、以下のループ構造で走査する。
ｆｏｒ  ｅａｃｈ  ｙ
ｆｏｒ  ｅａｃｈ  ｄｉｒｅｃｔｉｏｎ  ｉｎ｛Ｎｏｒｔｈ，Ｗｅｓｔ，
Ｅａｓｔ，Ｓｏｕｔｈ｝
ｆｏｒ  ｅａｃｈ  ｘ
【００４７】
図５に、通信キュー作成におけるプロセッサ番号の調査順序の様子を概念的に示す。
図５に示す順番で、ｐｒｏｃ（ｘ，ｙ，ｄｉｒ）の内容を調べ、異なる場合には、その座標位置のブロックの番号、方向のデータの転送を、対象となるプロセッサ向けへの送信キューに登録する。
なお、図５においては、ｘ軸、ｙ軸方向とも、座標値はｍ個である。
【００４８】
以下、その様子を、プロセッサ０を例にとってより具体的に説明する。
行ｙ＝０では、ＮｏｒｔｈおよびＷｅｓｔ向けには通信は、発生しない。次に、Ｅａｓｔについては、（ｘ，ｙ）＝（１，０）に存在する。そこで、プロセッサマップから（１，０）を担当するプロセッサを調べ、担当するプロセッサ１向けの通信キューにこのことを登録する。
Ｑｕｅｕｅ（ｐｒｏｃ＝１，ｉｎｄｅｘ＝０）＝（１，０，Ｅａｓｔ）
ついで、Ｓｏｕｔｈについて調べるが、ｙ＝０ではプロセッサが相違することはないので、次の行（ｙ＝１）に移行する。
【００４９】
ｙ＝１では、Ｎｏｒｔｈ及びＷｅｓｔ方向には境界はない。Ｅａｓｔ方向では、ｐｒｏｃ（１，１，Ｅａｓｔ）＝１であり、その後ｐｒｏｃ（１，１，Ｓｏｕｔｈ）＝３を得る。次に、ｐｒｏｃ（０，２，Ｅａｓｔ）＝３，ｐｒｏｃ（０，３，Ｅａｓｔ）＝３を得る。
【００５０】
従って、プロセッサ０におけるＱｕｅｕｅは、以下の様になる。
Ｑｕｅｕｅ０（ｐｒｏｃ＝１）＝｛（１，０，Ｅａｓｔ），（１，１，Ｅａｓｔ）｝
Ｑｕｅｕｅ０（ｐｒｏｃ＝３）＝｛（１，１，Ｓｏｕｔｈ），（０，２，Ｅａｓｔ），
（０，３，Ｅａｓｔ）｝
【００５１】
また、プロセッサ１におけるＱｕｅｕｅは、以下の様になる。
Ｑｕｅｕｅ１（ｐｒｏｃ＝０）＝｛（２，０，Ｗｅｓｔ），（２，１，Ｗｅｓｔ）｝
Ｑｕｅｕｅ１（ｐｒｏｃ＝２）＝｛（３，０，Ｅａｓｔ），（３，１，Ｅａｓｔ）｝
Ｑｕｅｕｅ１（ｐｒｏｃ＝３）＝｛（２，１，Ｓｏｕｔｈ）｝
Ｑｕｅｕｅ１（ｐｒｏｃ＝４）＝｛（３，１，Ｓｏｕｔｈ）｝
【００５２】
例えば、Ｑｕｅｕｅ０（ｐｒｏｃ＝１）とＱｕｅｕｅ１（ｐｒｏｃ＝０）を見れば判る様に、送受信の対応関係が自動的に作成されている。このため、自動的に各プロセッサの通信キューの整合が取れていることとなる。
【００５３】
（第２の実施の形態）
本実施の形態は、上下方向にも領域分割を行うものである。
本実施の形態においても、基本的な考え方は第１の実施の形態と同じである。このため、第１の形態と相違する部分のみを説明する。
【００５４】
体系は３次元的な構造となっており、図２のプレーンがＺ軸に対して複数用意されている。領域分割を上下方向にも行うため、例えば１０のプレーンが準備されている場合には、上下方向にも最大で１０個のブロック分割が可能となる。
燃料領域と反射体領域に該当するブロックへの番号の付け方は、ｚ軸方向を優先し、ついでｘ軸方向を優先し、ついでｙ軸方向を優先する。このため、例えば図２に示す炉心配置においては、本実施の形態では、例えば−１の値が付けられているブロックの下のプレーンには−２の値が付けられたブロックが配置され、その下方（ｚ軸方向）の各ブロックは、順に−１ずつ大きくなる。また、同じく図２のー２ブロックは−１１の値が付けられ、その下方（ｚ軸方向）の各ブロックは、順に−１２、−１３、・・・、−２０となる。
【００５５】
上記のように番号付けられた体系に対する通信キューの作成は、２次元の場合と同様に実施することができる。具体的には、各行（各ｙの座標値）についてＴｏｐ、Ｂｏｔｔｏｍ、Ｎｏｒｔｈ、Ｗｅｓｔ、Ｅａｓｔ、Ｓｏｕｔｈの各方向について、ｘ方向にブロックを走査し、当該座標の方向におけるプロセッサ番号と当該座標のプロセッサの番号を比較する。これを、各プレーンについて実施する。つまり、以下のループ構造で走査する。
【００５６】
ｆｏｒ  ｅａｃｈ  ｚ
ｆｏｒ  ｅａｃｈ  ｙ
ｆｏｒ  ｅａｃｈ  ｄｉｒｅｃｔｉｏｎ  ｉｎ｛Ｔｏｐ，Ｂｏｔｔｏｍ，Ｎｏｒｔｈ，Ｗｅｓｔ，Ｅａｓｔ，Ｓｏｕｔｈ｝
ｆｏｒ  ｅａｃｈ  ｘ
【図面の簡単な説明】
【００５７】
【図１】計算コード上での原子炉の水平面（ｘｙ方向の断面）のメッシュ分割の様子を概念的に示す図である。
【図２】ブロックを単位とする領域分割と、領域毎に所属するブロックにその種類に応じたフラグを付して番号付けをしている様子を概念的に示す図である。
【図３】図２に示す３個の領域の各ブロックに、当該領域の計算を担当するプロセッサを特定する符号を付した様子を概念的に示す図である。
【図４】水平面を５つの領域に分割した場合に、各ブロックの各辺に隣接するブロックの計算を担当するプロセッサの番号がどの様になるかを概念的に示した図である。
【図５】図４の場合における通信キュー作成のためのプロセッサ番号の調査の様子を概念的に示す図である。
【符号の説明】
【００５８】
１０    燃料装荷部
２０    反射体部
３０    真空領域
【図１】
0004523565.tif 000002
【図２】
0004523565.tif 000003
【図３】
0004523565.tif 000004
【図４】
0004523565.tif 000005
【図５】
0004523565.tif 000006