This shows you the differences between two versions of the page.
Next revision | Previous revision Next revision Both sides next revision | ||
wien2k:scf計算 [2017/10/27 23:13] koudai 作成 |
wien2k:scf計算 [2017/10/28 01:53] koudai [SCF計算の実行] |
||
---|---|---|---|
Line 1: | Line 1: | ||
この節では炭化チタンTiCを例に電子状態計算を行います。 | この節では炭化チタンTiCを例に電子状態計算を行います。 | ||
- | ====== | + | * [[https:// |
+ | |||
+ | 第一原理計算の基本的な流れは | ||
+ | |||
+ | - 結晶構造データの用意 | ||
+ | - 計算方法の設定 | ||
+ | - 実際の電子状態計算(self-consistent field計算、SCF計算) | ||
+ | - 各種物理量の計算 | ||
+ | |||
+ | となります。 | ||
+ | ここでは3番目までの方法を解説します。 | ||
+ | |||
+ | |||
+ | ====== | ||
WIEN2kでは結晶構造はcase.structというファイルに保存されます。 | WIEN2kでは結晶構造はcase.structというファイルに保存されます。 | ||
+ | caseはプロジェクト名であり自由に名付けることができますが、今回はTiC.structというファイルを作りましょう。 | ||
+ | |||
+ | 作業ディレクトリTiCを作成し、その中で作業します。 | ||
+ | ターミナルを立ち上げて、次のように入力します。 | ||
+ | |||
+ | < | ||
+ | $ mkdir TiC | ||
+ | $ cd TiC | ||
+ | </ | ||
+ | |||
+ | structファイルの作り方は、プログラムmakestruct_lapwを使って自分で結晶構造を入力する方法と、結晶構造の統一フォーマットであるCIFファイルを変換する方法の2通りがあります。 | ||
+ | 既知の物質を調べる場合、結晶構造は論文か物質科学系のデータベースサイトを参照すると良いでしょう。 | ||
+ | |||
+ | 今回は以下のサイトに記載されているTiCの情報を使います。 | ||
+ | |||
+ | * [[http:// | ||
+ | |||
+ | |||
+ | ===== makestruct_lapwを使う方法 ===== | ||
+ | |||
+ | 基本的には質問に答えていくだけで完了します。 | ||
+ | SPHERE RadIIやRMTの設定はとりあえず無視で。 | ||
+ | |||
+ | < | ||
+ | $ makestruct_lapw | ||
+ | |||
+ | ************************************************ | ||
+ | * * | ||
+ | ********** | ||
+ | ********** (C) 2012 by Morteza Jamal ********** | ||
+ | * * | ||
+ | ************************************************ | ||
+ | TITLE :TiC | ||
+ | |||
+ | This Program accepts a SPACE GROUP (symbol or number) | ||
+ | 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/ | ||
+ | SPACE GROUP: (type ENTER or give first LETTER for a list) | ||
+ | give SPACE GROUP as SYMBOL or NUMBER: 225 | ||
+ | | ||
+ | |||
+ | Units of lattice parameters (Bohr/ | ||
+ | Lattice PARAMETERS as a b c (3 numbers): | ||
+ | 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, ' | ||
+ | We Run ' | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | ATOM NAME: | ||
+ | | ||
+ | ATOM NAME: | ||
+ | | ||
+ | |||
+ | ' | ||
+ | |||
+ | SETTING UP SPHERE RadII: | ||
+ | SPECIFY possible REDUCTION of SPHERE RADII in % (def=0) | ||
+ | 0 | ||
+ | | ||
+ | 1.d-5, 20)] | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | ATOM 1 Ti | ||
+ | | ||
+ | SUMS TO 4.00000 | ||
+ | |||
+ | ATOM 2 C ATOM 1 Ti | ||
+ | | ||
+ | SUMS TO 4.00000 | ||
+ | NN ENDS | ||
+ | 0.0u 0.0s 0:00.02 0.0% 0+0k 2240+32io 9pf+0w | ||
+ | atom Z | ||
+ | | ||
+ | | ||
+ | file init.struct_setrmt | ||
+ | rerun setrmt ?(y,N) (def=N): | ||
+ | N | ||
+ | The file | ||
+ | |||
+ | for modifications of your input you can also edit file datastruct and run | ||
+ | Tmaker / setrmt init -r X individually | ||
+ | $ | ||
+ | </ | ||
+ | |||
+ | init.structというファイルができます(この他にもいろいろできますが、今は無視)ので、適当な名前に変更しておきます。 | ||
+ | |||
+ | < | ||
+ | $ mv init.struct TiC.struct | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== CIFファイルからstructファイルを生成する方法 ===== | ||
+ | |||
+ | 実際にWIEN2kを使った第一原理計算を行うときは、対話形式でstructファイルを作成するよりもCIFファイルから生成することが多くなると思います。 | ||
+ | 上記のサイトからCIFファイルをダウンロードし、作業ディレクトリに保存します。 | ||
+ | |||
+ | 用意ができたら、プログラムcif2structを使ってstructファイルに変換します。 | ||
+ | |||
+ | < | ||
+ | \ cif2struct 5910091.cif | ||
+ | </ | ||
+ | |||
+ | 5910091.structというファイルができますので、適当な名前に変更しておきます。 | ||
+ | |||
+ | < | ||
+ | $ mv 5910091.struct TiC.struct | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====== 計算の設定の初期化 ====== | ||
+ | |||
+ | SCF計算に入る前に、計算の設定の初期化をおこないます。 | ||
+ | ほとんどの場合はデフォルトのままでよいですが、ここではk点数だけを設定しましょう。 | ||
+ | k点数を増やせば計算の精度はあがりますが、計算時間もかかるようになります。 | ||
+ | 最終的にほしい物理量がk点数に対して収束しているか、確認する必要があります。 | ||
+ | |||
+ | < | ||
+ | $ init_lapw -b -numk 1000 | ||
+ | </ | ||
+ | |||
+ | ここでオプション-bはバッチモードで、これをつけることで指定のもの以外はすべてデフォルトの値に設定されます。 | ||
+ | なお、他の設定はオプション-hにより参照できます。 | ||
+ | |||
+ | < | ||
+ | $ init_lapw -h | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====== SCF計算の実行 ====== | ||
+ | |||
+ | これで準備が整いましたので、計算を実行します。 | ||
+ | プログラムrun_lapwを使用します。 | ||
+ | |||
+ | < | ||
+ | $ run_lapw -ec 0.0001 -cc 0.0001 -i 100 | ||
+ | </ | ||
+ | |||
+ | ここでオプション-ecはエネルギーの収束で、オプション-ccは電荷の収束です。 | ||
+ | デフォルトはエネルギーの収束しか見ませんが、電荷の収束も見ておいたほうが無難です。 | ||
+ | また、オプション-iで最大何回までSCF計算を行うかを指定できます。 | ||
+ | |||
+ | 他のオプションはオプション-hで確認できます。 | ||
+ | |||
+ | < | ||
+ | $ run_lapw -h | ||
+ | </ | ||
+ | |||
+ | 実行後、いろいろなファイルができますが、計算の経過や重要な情報はTiC.scfで確認できます。 | ||
+ | 今回は金属なのでフェルミエネルギーが出力されています。 | ||
+ | 半導体であればギャップサイズが出力されます。 | ||
+ | |||
+ | これで電子状態が得られましたので、これをもとに状態密度やバンド分散などを計算することになります。 | ||
+ | |||
+ | |||
+ | ====== k点数の変更 ====== | ||
+ | |||
+ | 計算の収束を見るために、k点数を変更したいとします。 | ||
+ | 再びプログラムinit_lapwを走らせると、すべての設定が初期化されますので(今はすべてデフォルトなのでさほど問題ないですが)、k点数だけ変更するためにプログラムx_lapwを使います。 | ||
+ | |||
+ | < | ||
+ | $ x_lapw kgen | ||
+ | NUMBER OF K-POINTS IN WHOLE CELL: (0 allows to specify 3 divisions of G) | ||
+ | 2000 | ||
+ | | ||
+ | 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 | ||
+ | </ | ||
+ | |||
+ | 再び計算を実行するには、TiC.broydXを削除してからrun_lapwを実行します。 | ||
+ | |||
+ | < | ||
+ | $ rm *.broyd* | ||
+ | $ run_lapw -ec 0.0001 -cc 0.000 | ||
+ | </ | ||
+ | |||
+ | なお、case.broydXを削除しなかった場合は、60秒後に自動で削除してSCF計算がスタートします(その間にジョブのキャンセルが可能です)。 | ||