User Tools

Site Tools


wien2k:scf計算

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
wien2k:scf計算 [2017/10/27 23:13]
koudai 作成
wien2k:scf計算 [2019/01/26 01:34]
koudai [k点数の変更]
Line 1: Line 1:
 この節では炭化チタンTiCを例に電子状態計算を行います。 この節では炭化チタンTiCを例に電子状態計算を行います。
  
-====== 準備 ======+  * [[https://ja.wikipedia.org/wiki/%E7%82%AD%E5%8C%96%E3%83%81%E3%82%BF%E3%83%B3|炭化チタン - Wikipedia]] 
 + 
 +第一原理計算の基本的な流れは 
 + 
 +  - 結晶構造データの用意 
 +  - 計算方法の設定 
 +  - 実際の電子状態計算(self-consistent field計算、SCF計算) 
 +  - 各種物理量の計算 
 + 
 +となります。 
 +ここでは3番目までの方法を解説します。 
 + 
 + 
 +====== 結晶構造データの作成 ======
  
 WIEN2kでは結晶構造はcase.structというファイルに保存されます。 WIEN2kでは結晶構造はcase.structというファイルに保存されます。
 +caseはプロジェクト名であり自由に名付けることができますが、今回はTiC.structというファイルを作りましょう。
 +
 +作業ディレクトリTiCを作成し、その中で作業します。
 +作業ディレクトリ名は必ずプロジェクト名と同じにします。
 +ターミナルを立ち上げて、次のように入力します。
 +
 +<code>
 +$ mkdir TiC
 +$ cd TiC
 +</code>
 +
 +structファイルの作り方は、プログラムmakestruct_lapwを使って自分で結晶構造を入力する方法と、結晶構造の統一フォーマットであるCIFファイルを変換する方法の2通りがあります。
 +既知の物質を調べる場合、結晶構造は論文か物質科学系のデータベースサイトを参照すると良いでしょう。
 +
 +今回は以下のサイトに記載されているTiCの情報を使います。
 +
 +  * [[http://www.crystallography.net/cod/5910091.html|Crystallography Open Database: Information card for entry 5910091]]
 +
 +
 +===== makestruct_lapwを使う方法 =====
 +
 +基本的には質問に答えていくだけで完了します。
 +SPHERE RadIIやRMTの設定はとりあえずデフォルトのままにします。
 +
 +<code>
 +$ 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/       0.00000000  0.00000000  0.00000000
 + ATOM NAME:        
 + C/        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                                 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 
 +  22.0  2.22   2.22  
 +   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
 +$
 +</code>
 +
 +init.structというファイルができます(この他にもいろいろできますが、今は無視)ので、適当な名前に変更しておきます。
 +
 +<code>
 +$ mv init.struct TiC.struct
 +</code>
 +
 +
 +===== CIFファイルからstructファイルを生成する方法 =====
 +
 +実際にWIEN2kを使った第一原理計算を行うときは、対話形式でstructファイルを作成するよりもCIFファイルから生成することが多くなると思います。
 +上記のサイトからCIFファイルをダウンロードし、ファイル名をTiC.cifに変更して作業ディレクトリに保存します。
 +
 +用意ができたら、プログラムcif2structを使ってstructファイルに変換します。
 +
 +<code>
 +$ cif2struct TiC.cif
 +</code>
 +
 +これで入力ファイルTiC.structができます。
 +ただし、このままだとマフィンチン半径$R_{\rm MT}$が正しく設定されていないので計算します。
 +
 +<code>
 +$ setrmt_lapw TiC
 +</code>
 +
 +マフィンチン半径が正しく設定された入力ファイルTiC.struct_setrmtというファイルができるので、さきほどの入力ファイルに上書きします。
 +
 +<code>
 +$ mv -f TiC.struct_setrmt TiC.struct
 +</code>
 +
 +
 +====== 計算の設定の初期化 ======
 +
 +SCF計算に入る前に、計算の設定の初期化をおこないます。
 +ほとんどの場合はデフォルトのままでよいですが、ここではk点数だけを設定しましょう。
 +k点数を増やせば計算の精度はあがりますが、計算時間もかかるようになります。
 +最終的にほしい物理量がk点数に対して収束しているか、確認する必要があります。
 +
 +ここではk点数を1000にしてみましょう(ちなみにデフォルトも1000です)。
 +
 +<code>
 +$ init_lapw -b -numk 2000
 +</code>
 +
 +ここでオプション -b はバッチモードで、これをつけることで指定のもの以外はすべてまとめてデフォルトの値に設定されます。
 +他の設定はオプション -h により参照できます。
 +
 +<code>
 +$ init_lapw -h
 +</code>
 +
 +
 +====== SCF計算の実行 ======
 +
 +これで準備が整いましたので計算を実行します。
 +run_lapw を使用します。
 +
 +<code>
 +$ run_lapw -ec 0.0001 -cc 0.0001 -i 100
 +</code>
 +
 +ここでオプション -ec はエネルギーの収束で、オプション -cc は電荷の収束です。
 +デフォルトはエネルギーの収束しか見ませんが、電荷の収束も見ておいたほうが無難です。
 +また、オプション -i で最大何回までSCF計算を行うかを指定できます。
 +
 +他のオプションはオプション-hで確認できます。
 +
 +<code>
 +$ run_lapw -h
 +</code>
 +
 +実行後、いろいろなファイルができますが、計算の経過や重要な情報は TiC.scf で確認できます。
 +
 +  $ grep ":ENE" TiC.scf     # 全エネルギーを確認します。
 +  $ grep ":FER" TiC.scf     # フェルミ準位を確認します。単位は Ry です。
 +  $ grep ":GAP" TiC.scf     # エネルギーギャップを確認します。金属の場合は0になります。
 +
 +これで電子状態が得られましたので、これをもとに状態密度やバンド分散などを計算することになります。
 +
 +
 +====== k点数の変更 ======
 +
 +計算の収束を見るために、k点数を変更したいとします。
 +再び init_lapw を走らせると全ての設定が初期化されますので(今は全てデフォルトなのでさほど問題ないですが)、k点数だけ変更するために x_lapw kgen を使います。
 +
 +<code>
 +$ 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
 +</code>
 +
 +再び計算を実行するには TiC.broydX を削除してから run_lapw を実行します。
 +
 +<code>
 +$ rm *.broyd*
 +$ run_lapw -ec 0.0001 -cc 0.0001
 +</code>
 +
 +case.broydX を削除せずに run_lapw を実行した場合は、60秒後に自動で削除してSCF計算がスタートします(その間にジョブのキャンセルが可能です)。
 +
 +
 +====== ジョブの一時停止 ======
 +
 +ジョブを一旦止めたい時には、作業ディレクトリに.stopという名前の空のファイルを置けばよいようになっています。
 +
 +<code>
 +$ touch .stop
 +</code>
  
wien2k/scf計算.txt · Last modified: 2023/04/23 19:47 by koudai