User Tools

Site Tools


Sidebar

wien2k:scf計算

This is an old revision of the document!


この節では炭化チタンTiCを例に電子状態計算を行います。

第一原理計算の基本的な流れは

  1. 結晶構造データの用意
  2. 計算方法の設定
  3. 実際の電子状態計算(self-consistent field計算、SCF計算)
  4. 各種物理量の計算

となります。 ここでは3番目までの方法を解説します。

SCF計算

結晶構造データの作成

WIEN2kでは結晶構造はcase.structというファイルに保存されます。 caseはプロジェクト名であり自由に名付けることができますが、今回はTiC.structというファイルを作りましょう。

作業ディレクトリTiCを作成し、その中で作業します。 作業ディレクトリ名は必ずプロジェクト名と同じにします。 ターミナルを立ち上げて、次のように入力します。

$ mkdir TiC
$ cd TiC

structファイルの作り方は、プログラムmakestruct_lapwを使って自分で結晶構造を入力する方法と、結晶構造の統一フォーマットであるCIFファイルを変換する方法の2通りがあります。 既知の物質を調べる場合、結晶構造は論文か物質科学系のデータベースサイトを参照すると良いでしょう。

今回は以下のサイトに記載されているTiCの情報を使います。

makestruct_lapwを使う方法

基本的には質問に答えていくだけで完了します。 SPHERE RadIIやRMTの設定はとりあえずデフォルトのままにします。

$ makestruct_lapw

************************************************
*                                              *
**********   Terminal struct maker    **********
********** (C) 2012 by Morteza Jamal  **********
*                                              *
************************************************
TITLE :TiC

 This Program accepts a SPACE GROUP  (symbol or number)   or a
                        LATTICE TYPE (P, F, B, H, R, CXY, CXZ, CYZ ).
 But, with LATTICE TYPE YOU HAVE TO put in all the atomic positions by hand.

Would you like to enter  Spacegroup or Lattice (S/L)(def=S)? S
SPACE GROUP: (type ENTER or give first LETTER for a list) 
give SPACE GROUP as SYMBOL or NUMBER: 225
 Info:  space group is : 225 F Fm-3m -F4;2;3

Units of lattice parameters (Bohr/Angstrom) (b/A) (def=ANG):A
Lattice PARAMETERS as a b c (3 numbers):4.29 4.29 4.29
ANGLES BETWEEN lattice vectors, as alpha beta gamma (def=90.0 90.0 90.0):90.0 90.0 90.0
NUMBER INEQUEVALENT ATOMS :2
ATOM  1 (ELEMENT): Ti
POSITION OF ATOM Ti as X,Y,Z (def=0 0 0) :0 0 0
ATOM  2 (ELEMENT): C
POSITION OF ATOM C as X,Y,Z (def=0 0 0) :0.5 0.5 0.5

 Now, 'datastruct' file is ready.
We Run 'Tmaker' for making WIEN2k struct file.

 Fm-3m                         
   8.10692830565198        8.10692830565198        8.10692830565198     
   90.0000000000000        90.0000000000000        90.0000000000000     
 ATOM NAME:Ti        
 Ti/1        0.00000000  0.00000000  0.00000000
 ATOM NAME:C         
 C/1         0.50000000  0.50000000  0.50000000
 
 'init.struct' file is ready
 
SETTING UP SPHERE RadII:
SPECIFY possible REDUCTION of SPHERE RADII in % (def=0)
0
 specify nn-bondlength factor: (usually=2) [and optionally dlimit, dstmax (about
  1.d-5, 20)]
 DSTMAX:   20.0000000000000     
 iix,iiy,iiz           5           5           5   40.5346400000000     
   40.5346400000000        40.5346400000000     

    ATOM  1  Ti         ATOM  2  C         
 RMT(  1)=2.00000 AND RMT(  2)=2.00000
 SUMS TO 4.00000  LT.  NN-DIST= 4.05346

    ATOM  2  C          ATOM  1  Ti        
 RMT(  2)=2.00000 AND RMT(  1)=2.00000
 SUMS TO 4.00000  LT.  NN-DIST= 4.05346
NN ENDS
0.0u 0.0s 0:00.02 0.0% 0+0k 2240+32io 9pf+0w
atom  Z   RMT-max   RMT 
 1  22.0  2.22   2.22  
 2   6.0  1.81   1.81  
file    init.struct_setrmt   generated  
rerun setrmt ?(y,N) (def=N): 
N
The file   init.struct   has been created
 
  for modifications of your input you can also edit file datastruct and run
  Tmaker / setrmt init -r X    individually
$

init.structというファイルを (プロジェクト名).struct に変更しておきます。

$ mv init.struct TiC.struct

CIFファイルからstructファイルを生成する方法

実際にWIEN2kを使った第一原理計算を行うときは、対話形式でstructファイルを作成するよりも、結晶構造データの統一フォーマットであるCIFファイルから生成することが多くなると思います。 上記のサイトからCIFファイルをダウンロードし、ファイル名をTiC.cifに変更して作業ディレクトリに保存します。

用意ができたら、プログラムcif2structを使ってstructファイルに変換します。

$ cif2struct TiC.cif

これで入力ファイルTiC.structができます。 ただし、このままだとマフィンチン半径$R_{\rm MT}$が正しく設定されていないので計算します。

$ setrmt_lapw TiC

マフィンチン半径が正しく設定された入力ファイルTiC.struct_setrmtというファイルができるので、さきほどの入力ファイルに上書きします。

$ mv -f TiC.struct_setrmt TiC.struct

計算の設定の初期化

SCF計算に入る前に、計算の設定の初期化をおこないます。 ここではk点数とRKmaxを設定しましょう。 k点数やRKmaxを増やせば計算の精度はあがりますが、計算時間もかかるようになります。 最終的にほしい物理量がこれらのユーザー側が設定した量に対して収束しているか確認する必要があります。

なお、RKmaxは波動関数のカットオフを決めます。原子の種類によって必要な大きさが異なるので、選び方は http://susi.theochem.tuwien.ac.at/reg_user/faq/rkmax.html を参照してください。

ここではk点数を1000に、RKmaxを7.5にしてみましょう。

$ init_lapw -b -numk 1000 -rkmax 7.5

ここでフラグ -b はバッチモードで、これをつけることで指定のもの以外はすべてまとめてデフォルトの値に設定されます。

オプションの意味は次のとおりです

オプション初期値説明
-rkmax7.0RKmax
-numk1000k点数

他の設定はフラグ-hにより参照できます。

$ init_lapw -h

SCF計算の実行

これで準備が整いましたので計算を実行します。 run_lapw を使用します。

$ run_lapw -cc 0.0001 -ec 0.00001 -i 100
オプション初期値説明
-ccなし電荷の収束。単位はe。指定しなければ電荷の収束はチェックされないが、見ておいたほうが無難
-ec0.0001エネルギーの収束。単位はRy。デフォルトだと少し荒い
-i40SCF計算を行うときの、繰り返し回数の最大値。40回だと足りないこともあるので少し多めに。

他のオプションはフラグ-hで確認できます。

$ run_lapw -h

実行後、いろいろなファイルができますが、計算の経過や重要な情報は TiC.scf で確認できます。

$ grep ":ENE" TiC.scf     # 全エネルギー
$ grep ":FER" TiC.scf     # フェルミ準位。単位は Ry です。
$ grep ":GAP" TiC.scf     # エネルギーギャップ。金属の場合は0になります。

これで電子状態が得られましたので、これをもとに状態密度やバンド分散などを計算することになります。

k点数の変更

計算の収束を見るために、k点数を変更したいとします。 再び init_lapw を走らせると全ての設定が初期化されますので、k点数だけ変更するために x_lapw kgen を使います。

$ x_lapw kgen
  NUMBER OF K-POINTS IN WHOLE CELL: (0 allows to specify 3 divisions of G)
2000
 length of reciprocal lattice vectors:   1.342   1.342   1.342  12.599  12.599  12.599
          72  k-points generated, ndiv=          12          12          12
KGEN ENDS
0.0u 0.0s 0:05.99 0.6% 0+0k 0+304io 0pf+0w

再び計算を実行するには、フラグ-NIをつけて run_lapw を実行します。

$ run_lapw -cc 0.0001 -ec 0.00001 -i 100 -NI

あるいはブロイデン法を使ってSCF計算を収束させているので、その計算履歴を削除して

$ rm *.broyd*
$ run_lapw -cc 0.0001 -ec 0.00001 -i 100

でも可能です(電子密度の分布は前回の計算のものが引き継がれます)。

最初は少ないk点数(それこそ10くらい)から初めて、徐々に増やしていきましょう。 k点数に対して全エネルギーやフェルミ準位(半導体の場合はエネルギーギャップの大きさ)をプロットしてみて、収束しているかどうか必ず確認しましょう。

SCF計算結果の保存

計算の入出力ファイルを残しておきたい場合は save_lapw を使用します。 例えばk点を増やして計算する際に、k点数を1000で計算したときの入力ファイルや結果を k1000 という名前のディレクトリに保存しておきたい場合は次のようにします。

$ save_lapw -d k1000

また、この保存したファイルを復活させる場合は次のようにします。-fは同じ名前のファイルがあった時に、強制的に上書きするオプションです。

$ restore_lapw -d k1000 -f

ジョブの一時停止

ジョブを一旦止めたい時には、作業ディレクトリに.stopという名前の空のファイルを置けばよいようになっています。

$ touch .stop

この空のファイルは、ジョブが止まった後に自動的に削除されます。

プログラム名について

プログラム名の最後に _lapw をつけていましたが、これを省略しても良いようになっています。 例えば x_lapw は単に x だけで実行可能です。

エラーや警告への対処

atom 1 has a large sphere , consider setting HDLOs and/or larger LVNS

init_lapw を実行したとき、lstartの段階で、このようなメッセージが出たときはオプション -LVNS X (Xは4から10までの整数)をつけて、エラーが消えるまでXを増やしてください。

$ init_lapw -b -numk 1000 -rkmax 7.5 -lvns 5

もし“atom 1 has a large sphere , consider setting HDLOs”だけが残ったら、LVNSを増やすのはそこで打ち切り、setrmt_lapw でマフィンチン半径を減らしてから再度 init_lapw を実行してください

$ setrmt_lapw -r 1 case
$ cp -f case.struct_setrmt case.struct
$ init_lapw -b -numk 1000 -rkmax 7.5 -lvns 5
wien2k/scf計算.1585722753.txt.gz · Last modified: 2021/06/27 22:01 (external edit)