Skip to the content.

AkaiKKR Inputファイルの解説

計算モードを”go”と指定することにより、最も基本的であるSCF計算が実行できる。ここでは、計算モードを”go”と指定するときのInputについて解説する。

Inputファイルの構成

Inputファイルには主に結晶格子に関する情報が書かれる。まず、Inputファイルの記述例を示したい。

c----------------------Fe------------------------------------
c    go   file
     go   data/fe
c------------------------------------------------------------
c   brvtyp     a        c/a   b/a   alpha   beta   gamma
     bcc      5.27  ,      ,      ,      ,       ,      ,
c------------------------------------------------------------
c   edelt    ewidth    reltyp   sdftyp   magtyp   record
    0.001     1.0       nrl      mjw      mag      2nd
c------------------------------------------------------------
c   outtyp    bzqlty   maxitr   pmix
    update      4        50    0.023
c------------------------------------------------------------
c    ntyp
      1
c------------------------------------------------------------
c   type    ncmp    rmt    field   mxl  anclr   conc
    Fe       1       1      0.0     2
                                          26    100
c------------------------------------------------------------
c   natm
     1
c------------------------------------------------------------
c   atmicx                        type
     0          0          0        Fe
c------------------------------------------------------------

この中で、cまたは#から始まる行はコメント行であり、計算の際には読み込まれない。また、空行は読み飛ばされる。 この例には含まれていないが、ひとつのファイルの中に複数のInputファイルを続けて書いておくと計算は順番に実行される。また、コメントアウトされていないendを読み取ると、以降の記述は読み込まれない。

実際にコメント行と空白を読み飛ばすと次のようになる。プログラムは、このような状態のInputを読み込んでいる。

go   data/fe

bcc      5.27  ,      ,      ,      ,       ,      ,
0.001     1.0       nrl      mjw      mag      2nd
update      4        50    0.023
1
Fe       1       1      0.0     2
                                          26    100
1
0          0          0        Fe

読みやすさのためにコメント行やキーワード名が記述されていることに注意されたい。プログラム上は、1個以上の空白またはカンマがデータの区切りとなる。 連続する空白は1個の空白と同じ意味を持つ。改行も同様である。また、どこで改行してもよい。さらに省略された状態を次に示す。

go data/fe bcc 5.27,,,,,,0.001 1.0 nrl mjw mag 2nd
update 4 50 0.023 1 Fe 1  1  0.0 2 26 100
1 0 0 0 Fe

Inputとして読み込まれるものは順序付けられたデータの並びであるので、記述する順番さえ守ればよい。ほとんど全てのデータやキーワードは省略可能だが、省略したことを示すために、データ区切りのカンマをいれておく。 また、Inputは必ずしもファイルとして用意する必要はない。実際には、ターミナル上でAkaiKKRプログラムを起動した際に、キーボードからの標準入力で記述すれば、計算を行うことが出来る。

> specx (or ./specx, run specx, etc.)
go
data/fe
bcc 
5.27,,,,,,
0.001 1.0 nrl mjw mag 2nd
update 4 50 0.023 1 Fe 1  1  0.0 2 26 100
1 0 0 0 
Fe
(計算開始)
...
Ctl-d
>

実際のところはInputファイルを準備して計算するほうが便利だろう。

キーワード解説

コメント行でpartをわけているものとして、以下キーワードの解説を行う。

c----------------------Fe------------------------------------
c    go   file
     go   data/fe
c------------------------------------------------------------
c   brvtyp     a        c/a   b/a   alpha   beta   gamma
     bcc      5.27  ,      ,      ,      ,       ,      ,
c------------------------------------------------------------
c   edelt    ewidth    reltyp   sdftyp   magtyp   record
    0.001     1.0       nrl      mjw      mag      2nd
c------------------------------------------------------------
c   outtyp    bzqlty   maxitr   pmix
    update      4        50    0.023
c------------------------------------------------------------
c    ntyp
      1
c------------------------------------------------------------
c   type    ncmp    rmt    field   mxl  anclr   conc
    Fe       1       1      0.0     2
                                          26    100
c------------------------------------------------------------
c   natm
     1
c------------------------------------------------------------
c   atmicx                        type
     0          0          0        Fe
c------------------------------------------------------------

part1 計算を実行する

c----------------------Fe------------------------------------
c    go   file
     go   data/fe
c------------------------------------------------------------

go : 走らせる計算の種類

走らせる計算の種類を決定する。利用できるキーワードは以下の通り。

主要な略語の意味はそれぞれ、SCF (自己撞着場 self-consistent field)、dos (状態密度 density of states)、spc (ブロッホ・スペクトル関数 Bloch spectral function)である。

file : 利用するデータの保存されている場所

これは、どのようなファイル、ディレクトリでもよい。また、存在しないファイルでもよい。 初めてAkaiKKRをダウンロードして解凍した場合は、dataディレクトリには何も入っていない。dataディレクトリは、計算結果を保存するのに一般的に使う場所としてとらえておけばよい。

fileが存在する場合はアウトプットに

file to be accessed=data/fe


とだけ表示される。存在しないファイルを指定して計算を走らせた場合は、

file to be accessed=data/fe

created

このように表示され、同じ名前のfileが生成される。例えば、goを使ってSCF計算を行って、新しいfileを作成したのちに、SCF計算で保存されたfileを用いてdos計算を走らせることが可能である。

ブロッホ・スペクトル関数

ブロッホ・スペクトル関数に関する簡易的な補足を行う。 例えば、NiとNiMn合金のブロッホ・スペクトル関数は次のようになる。 NiとNiMn合金のブロッホ・スペクトル関数 エネルギー分散は次のようになる。 エネルギー分散

ブロッホ・スペクトル関数とエネルギー分散の対応を取ると次のようになる。 エネルギー分散

part2 結晶の構造を決定する

キーワードは、結晶の構造を示すものが並んでいる。

c------------------------------------------------------------
c   brvtyp     a        c/a   b/a   alpha   beta   gamma
     bcc      5.27  ,      ,      ,      ,       ,      ,
c------------------------------------------------------------

brvtyp : ブラベー格子

ここでは次のような構造を指定できる。

様々に指定が可能である。また、分からなければブランクでもよい。 AkaiKKR内にデータベースを備えており、ブランクの場合はこれを参照して適当に設定される。

a : 格子定数 a

これも分からなければブランクでもよい。理由はbrvtypと同様に、コード内のデータベースを参照できるからである。 なお、このコードで採用されている単位系はスレータの原子単位系であり、長さの単位はbohrである。

である。

例えばbrvtypがbcc構造である場合、c/a, b/a, α, β, γ は1, 1, 90, 90, 90と決まっているため、カンマで省略して表記できる。

part3 複素積分 

c------------------------------------------------------------
c   edelt    ewidth    reltyp   sdftyp   magtyp   record
    0.001     1.0       nrl      mjw      mag      2nd
c------------------------------------------------------------

edeltewidthは非常に注意深く決める必要のあるパラメータで、両方とも単位はRyである。

edeltとewidth

計算失敗の多くはここの不適切な設定に起因する。

edeltについて、このプログラムで計算される関数は、複素エネルギー上面の正の実軸がブランチカットになっておりGreen関数は定義されない。そこで複素平面上の虚数部分の正の側から実軸に近づいた極限として実エネルギーでのGreen関数が定義される。 数値計算上は有限の虚数部分を与えており、その大きさがedeltである。edeltは大きくすると,少ないk点でも計算はスムーズにいくが、精度が落ちる可能性がある。逆に小さくすると多くのk点が必要となるが、十分多数のk点がとれれば精度は高くなる。そこで「適当な値を見極める」ということが必要になるが、デフォルトの0.001Ryはまず安全な値である。

ewidthの決め方は次のようにする。 上図でいうなら、コア状態と価電子帯の中間あたりにくるように設定すると安全である。しかし、コア状態の位置、価電子帯の位置はあらかじめ分かっているものではないため、不適切な幅でewidthを設定してしまうことがある。この場合は計算が失敗してしまうので、注意深く設定する必要がある。

具体的には、フェルミエネルギーからewidthを引いたエネルギーがエネルギー積分の下端となるが、この下端が価電子帯の底より十分下(0.1Ry以上)にあり、しかも浅いコアレベルより十分上(0.1Ry以上)に来るように決める。

reltypは、相対論の扱いを決める。重い原子については原子核に近いあたりで電子の速度は非常に大きくなるために電子を相対論に基づいて取り扱う必要があり、問題によっては軽い原子の場合でも相対論的に取り扱うことがある。以下のキーワードのいずれかを指定する。

sdftypは、用いるLDA/GGA汎関数を決める。利用可能な交換相関ポテンシャルは例えば次の通りである。

magtypは磁性の取り扱いを決める。

recordはポテンシャルデータの利用に関するキーワードである。異常終了などで計算結果が失われてしまわないように、最新の計算結果と、その一つ前のバックアップの、二組のデータが常に保存されている。

part4 データの保存とパラメータの収束の指定

c------------------------------------------------------------
c   outtyp    bzqlty   maxitr   pmix
    update      4        50    0.023
c------------------------------------------------------------

outtypはポテンシャルデータの保存に関するキーワードである。

ここからはパラメータ値を指定する。

bzqltyの値は大切で、例えば状態密度を描くときには20以上に設定しておかないと、十分なめらかなバンドが描けないことがある。

pmixはポテンシャルの混合に関わるパラメータである。例えば次のような指定の仕方をする。

ここで使われている数字0.023は収束を制御するパラメータで、一般には大きいほど収束は速い。 単純な系なら0.035くらいで大丈夫であるが、大きなサイズの系では0.001以下にすることもある。

part5 タイプの数

c------------------------------------------------------------
c    ntyp
      1
c------------------------------------------------------------

異なったタイプの位置の数、つまり結晶学的に同等でない位置の数を示す。単位格子中の独立なサイトの種類の数を指す。

part6 サイトの特徴

c------------------------------------------------------------
c   type    ncmp    rmt    field   mxl  anclr   conc
    Fe       1       1      0.0     2     26    100
c------------------------------------------------------------

rmt(マフィン・ティン半径)について補足すると、この値は意図的に設定するのでなければ、ゼロを指定するか省略しておいてよい。ユニットセルに複数の異なった原子があるときには、コードに備えられたイオン半径のデータベースを参照して、適当な値が設定される。

fieldの値については、反強磁性などの磁気構造を指定したいときには、磁気モーメントの方向が安定するまで反復計算の初期に0.05程度の値を入れる必要がある。

mxlの値は、2を指定するとd波の散乱までが考慮される。より精度の高い計算がしたければ3を指定すればf波散乱まで考慮される。

part7 ユニットセルあたりの原子数

c------------------------------------------------------------
c   natm
     1
c------------------------------------------------------------

part8 原子の位置とタイプ名

c------------------------------------------------------------
c   atmicx                        type
     0          0          0        Fe
c------------------------------------------------------------

ここでのtypeは、part6のtypeとの間に対応が取れていなければならない。旧バージョンでは、atmtypという名前が使われていたが、実質同一であることから、2022年年始のアップデート(cpa2021.tgz January 15, 2023 [ 13:36:45 ])でatmtypからtypeへの置き換えが行われた。

part9 セルに複数の原子がある場合

ここまではセルにサイトが1つで、そのサイトにFeが100%占める場合について示した。このpartではセルに複数原子があり、さらにサイトを占める原子も複数ある場合の例であるFeRh0.5Pt0.5の例を示す。この例は、”FeRh0.5Pt0.5.cif“からAkaiKKRPythonUtilを用いて作成したインプットを編集したものである。

c----------------------FeRh0.5Pt0.5------------------------------------
c    go   file
     go   data/ferh0.5pt0.5
c----------------------------------------------------------------------
c   brvtyp         a                c/a         b/a  alpha  beta  gamma
     st    5.204307821390574 1.2817719680464779 1.0  90.0   90.0  90.0
c----------------------------------------------------------------------
c   edelt    ewidth    reltyp   sdftyp   magtyp   record
    0.001     1.0       sra      mjw      nmag     2nd 
c----------------------------------------------------------------------
c   outtyp    bzqlty   maxitr   pmix
    update      6       200     0.02
c----------------------------------------------------------------------
c    ntyp
      2
c----------------------------------------------------------------------
c   type            ncmp   rmt   field   mxl   anclr    conc
      Fe              1     0.0    0.0     2   
                                                 26     100.0
      Rh0.5Pt0.5      2     0.0    0.0     2
                                                 45      50.0
                                                 78      50.0
c----------------------------------------------------------------------
c    natm
      2
c----------------------------------------------------------------------
c   atmicx                                type
   0.00000000a 0.00000000b 0.00000000c   Fe
   0.50000000a 0.50000000b 0.50000000c   Rh0.5Pt0.5
c----------------------------------------------------------------------

上から5,6行目はセルの形状を示している。

c----------------------------------------------------------------------
c   brvtyp         a                c/a         b/a  alpha  beta  gamma
     st    5.204307821390574 1.2817719680464779 1.0  90.0   90.0  90.0
c----------------------------------------------------------------------

brvtypはst(単純正方格子)で、一つ目の格子ベクトルの長さが5.204307821390574 Bohrである。残りの格子ベクトルについては、1つ目の格子ベクトルの長さとの比で1.2817719680464779, 1.0となっている。格子ベクトル同士のなす角は全て90度である。

上から8行目から12行目に計算条件が示されている。

c----------------------------------------------------------------------
c   edelt    ewidth    reltyp   sdftyp   magtyp   record
    0.001     1.0       sra      mjw      nmag     2nd 
c----------------------------------------------------------------------
c   outtyp    bzqlty   maxitr   pmix
    update      6       200     0.02
c----------------------------------------------------------------------

先ほどのFeの例と大きく違う所として、reltypにsra(スカラー相対論効果)、magtypにnmag(非磁性)が指定されている。

上から14,15行目に異なったtypeの位置の数、つまり結晶学的に同等でない位置の数が示されている。

c----------------------------------------------------------------------
c    ntyp
      2
c----------------------------------------------------------------------

ここでは、Feというサイトと、Rhが50%、Ptが50%占めているRh0.5Pt0.5というサイトの2種類があるため、ntypは2である。

上から17行目から22行目に、各typeに対する入力パラメータが書かれている。

c----------------------------------------------------------------------
c   type            ncmp   rmt   field   mxl   anclr    conc
    Fe                1     0.0    0.0     2   
                                                 26     100.0
    Rh0.5Pt0.5        2     0.0    0.0     2
                                                 45      50.0
                                                 78      50.0
c----------------------------------------------------------------------

まず1種類目のtypeであるFeの入力パラメータが書かれている。ncmpはそのサイトに占める原子の種類の数であり、ここでは1である。anclr(原子番号)は26で、conc(サイトに原子が占める確率もしくは濃度)は100%である。続いて、2種類目のtypeであるRh0.5Pt0.5の入力パラメータが書かれている。RhとPtがあるためncmpは2である。一つ目のRhについてはanclr(原子番号)は45でconcは50%、二つ目のPtについてはanclrは78でconcは50%である。

上から24行目から29行目に、セル内のサイトについての記述がある。

c----------------------------------------------------------------------
c    natm
      2
c----------------------------------------------------------------------
c   atmicx                                type
   0.00000000a 0.00000000b 0.00000000c   Fe
   0.50000000a 0.50000000b 0.50000000c   Rh0.5Pt0.5
c----------------------------------------------------------------------

上から24,25行目はセル内のサイトの数でありここでは2である。また、上から26行目から28行目には原子の位置(後ろにa,b,cと書かれており、基本ベクトル指定となっている)とtype名が書かれている。