next up previous contents index
Next: MPI並列化 Up: O(N)法 Previous: O(N) Krylov部分空間法   Contents   Index

ユーザーによるFNAN+SNANの定義

OpenMX Ver. 3.9で実装されているO($N$)法では、切り取られたクラスター内の原子は第1隣接第2隣接の 2種類の原子に分類されます。 中心原子上の基底関数のカットオフ半径$r_0$と隣接原子の基底関数のカットオフ半径$r_{\rm N}$の和 $(r_0+r_{\rm N})$が、 原子間距離より小さい場合、その原子は第1隣接原子に分類され、この条件を満たさないクラスター内の原子は 第2隣接原子に分類されます。 第2隣接原子の選択は、キーワード「orderN.HoppingRanges」によって決定されており、第1と第2隣接原子数は、 それぞれFNANおよびSNANとして標準出力に書き出されています。 さらに「orderN.HoppingRanges」 とは独立にSNANが決定するキーワード「orderN.FNAN+SNAN」が利用可能です。 このキーワードによって(FNAN+SNAN)の数値を以下の様にユーザーが直接、与えることができます。

  <orderN.FNAN+SNAN
    1  60 
    2  65 
    3  60
    4  50 
    ..
    .
  orderN.FNAN+SNAN>
この指定では、行数は原子数に等しくなければなりません。 最初の列は、キーワード
「Atoms.SpeciesAndCoordinates」の第1列と同一の通し番号であり、 2列目が(FNAN+SNAN)の値です。このキーワードを用いて、各原子に対して(FNAN+SNAN)が明示的に与えられた場合には、 (FNAN+SNAN)の値が指定された値になるように各原子毎にクラスターの球半径が調整されます。 キーワード「orderN.HoppingRanges」によってクラスターサイズを指定した場合の問題点は単位胞ベクトルを変化させた際 に顕在化します。この場合、単位胞ベクトルを変化に伴い、大きく(FNAN+SNAN)が変化し、その結果としてエネルギー曲線上に 大きな飛びが生じます。キーワード「orderN.FNAN+SNAN」によって明示的に(FNAN+SNAN)を与えることで、 この様なケースを避けることができます。