This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
wien2k:scf計算 [2017/10/28 01:55] koudai [k点数の変更] |
wien2k:scf計算 [2023/04/23 19:45] koudai [k点数の変更] |
||
---|---|---|---|
Line 14: | Line 14: | ||
- | ====== 結晶構造データの作成 | + | |
+ | ====== SCF計算 ====== | ||
+ | |||
+ | ===== 結晶構造データの作成 ===== | ||
WIEN2kでは結晶構造はcase.structというファイルに保存されます。 | WIEN2kでは結晶構造はcase.structというファイルに保存されます。 | ||
Line 20: | Line 23: | ||
作業ディレクトリTiCを作成し、その中で作業します。 | 作業ディレクトリTiCを作成し、その中で作業します。 | ||
+ | 作業ディレクトリ名は必ずプロジェクト名と同じにします。 | ||
ターミナルを立ち上げて、次のように入力します。 | ターミナルを立ち上げて、次のように入力します。 | ||
Line 35: | Line 39: | ||
- | ===== makestruct_lapwを使う方法 | + | ==== makestruct_lapwを使う方法 ==== |
基本的には質問に答えていくだけで完了します。 | 基本的には質問に答えていくだけで完了します。 | ||
- | SPHERE RadIIやRMTの設定はとりあえず無視で。 | + | SPHERE RadIIやRMTの設定はとりあえずデフォルトのままにします。 |
< | < | ||
Line 113: | Line 117: | ||
</ | </ | ||
- | init.structというファイルができます(この他にもいろいろできますが、今は無視)ので、適当な名前に変更しておきます。 | + | init.structというファイルを (プロジェクト名).struct |
< | < | ||
Line 120: | Line 124: | ||
- | ===== CIFファイルからstructファイルを生成する方法 | + | ==== CIFファイルからstructファイルを生成する方法 ==== |
- | 実際にWIEN2kを使った第一原理計算を行うときは、対話形式でstructファイルを作成するよりもCIFファイルから生成することが多くなると思います。 | + | 実際にWIEN2kを使った第一原理計算を行うときは、対話形式でstructファイルを作成するよりも、結晶構造データの統一フォーマットであるCIFファイルから生成することが多くなると思います。 |
- | 上記のサイトからCIFファイルをダウンロードし、作業ディレクトリに保存します。 | + | 上記のサイトからCIFファイルをダウンロードし、ファイル名をTiC.cifに変更して作業ディレクトリに保存します。 |
用意ができたら、プログラムcif2structを使ってstructファイルに変換します。 | 用意ができたら、プログラムcif2structを使ってstructファイルに変換します。 | ||
< | < | ||
- | \ cif2struct | + | $ cif2struct |
</ | </ | ||
- | 5910091.structというファイルができますので、適当な名前に変更しておきます。 | + | これで入力ファイルTiC.structができます。 |
+ | ただし、このままだとマフィンチン半径$R_{\rm MT}$が正しく設定されていないので計算します。 | ||
+ | 拡張子の.structは不要です。 | ||
< | < | ||
- | $ mv 5910091.struct | + | $ setrmt_lapw |
</ | </ | ||
+ | マフィンチン半径が正しく設定された入力ファイルTiC.struct_setrmtというファイルができるので、さきほどの入力ファイルに上書きします。 | ||
- | ====== 計算の設定の初期化 | + | < |
+ | $ mv -f TiC.struct_setrmt TiC.struct | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== 計算の設定の初期化 ===== | ||
SCF計算に入る前に、計算の設定の初期化をおこないます。 | SCF計算に入る前に、計算の設定の初期化をおこないます。 | ||
- | ほとんどの場合はデフォルトのままでよいですが、ここではk点数だけを設定しましょう。 | + | ここではk点数とRKmaxを設定しましょう。 |
- | k点数を増やせば計算の精度はあがりますが、計算時間もかかるようになります。 | + | k点数やRKmaxを増やせば計算の精度はあがりますが、計算時間もかかるようになります。 |
- | 最終的にほしい物理量がk点数に対して収束しているか、確認する必要があります。 | + | 最終的にほしい物理量がこれらのユーザー側が設定した量に対して収束しているか確認する必要があります。 |
+ | |||
+ | なお、RKmaxは波動関数のカットオフを決めます。原子の種類によって必要な大きさが異なるので、選び方は http:// | ||
+ | |||
+ | ここではk点数を1000に、RKmaxを7.5にしてみましょう。 | ||
< | < | ||
- | $ init_lapw -b -numk 1000 | + | $ init_lapw -b -numk 1000 -rkmax 7.5 |
</ | </ | ||
+ | * ここでフラグ -b はバッチモードで、これをつけることで指定のもの以外はすべてまとめてデフォルトの値に設定されます。 | ||
+ | * 最後に init_lapw finished ok と出たらうまく行っています。このメッセージが出てこなかった場合、どこかで問題が起こっているので修正します。 | ||
+ | | ||
+ | オプションの意味は次のとおりです | ||
- | ここでオプション-bはバッチモードで、これをつけることで指定のもの以外はすべてデフォルトの値に設定されます。 | + | ^オプション^初期値^説明^ |
- | なお、他の設定はオプション-hにより参照できます。 | + | |-rkmax|7.0|RKmax| |
+ | |-numk|1000|k点数| | ||
+ | |||
+ | |||
+ | 他の設定はフラグ-hにより参照できます。 | ||
< | < | ||
Line 157: | Line 181: | ||
- | ====== SCF計算の実行 | + | ===== SCF計算の実行 ===== |
- | これで準備が整いましたので、計算を実行します。 | + | これで準備が整いましたので計算を実行します。 |
- | プログラムrun_lapwを使用します。 | + | run_lapw を使用します。 |
< | < | ||
- | $ run_lapw -ec 0.0001 -cc 0.0001 -i 100 | + | $ run_lapw -cc 0.0001 -ec 0.00001 -i 100 |
</ | </ | ||
- | ここでオプション-ecはエネルギーの収束で、オプション-ccは電荷の収束です。 | + | ^オプション^初期値^説明^ |
- | デフォルトはエネルギーの収束しか見ませんが、電荷の収束も見ておいたほうが無難です。 | + | |-cc|なし|電荷の収束。単位はe。指定しなければ電荷の収束はチェックされないが、見ておいたほうが無難| |
- | また、オプション-iで最大何回までSCF計算を行うかを指定できます。 | + | |-ec|0.0001|エネルギーの収束。単位はRy。デフォルトだと少し荒い| |
+ | |-i|40|SCF計算を行うときの、繰り返し回数の最大値。40回だと足りないこともあるので少し多めに。| | ||
- | 他のオプションはオプション-hで確認できます。 | + | 他のオプションはフラグ-hで確認できます。 |
< | < | ||
Line 176: | Line 201: | ||
</ | </ | ||
- | 実行後、いろいろなファイルができますが、計算の経過や重要な情報はTiC.scfで確認できます。 | + | 実行後、いろいろなファイルができますが、計算の経過や重要な情報は TiC.scf で確認できます。 |
- | 今回は金属なのでフェルミエネルギーが出力されています。 | + | < |
- | 半導体であればギャップサイズが出力されます。 | + | $ grep ": |
+ | (略) | ||
+ | :ENE : ********** TOTAL ENERGY IN Ry = -1783.96056300 | ||
+ | $ grep ": | ||
+ | (略) | ||
+ | :FER : F E R M I - ENERGY(TETRAH.M.)= | ||
+ | $ grep ": | ||
+ | (略) | ||
+ | :GAP (global) | ||
+ | </ | ||
これで電子状態が得られましたので、これをもとに状態密度やバンド分散などを計算することになります。 | これで電子状態が得られましたので、これをもとに状態密度やバンド分散などを計算することになります。 | ||
+ | |||
+ | |||
+ | ===== SCF計算の再実行 ===== | ||
+ | |||
+ | SCF計算を再度実行したい場合は、ブロイデン法の履歴を削除してから再実行します。 | ||
+ | (電子密度の分布は前回の計算のものが引き継がれます) | ||
+ | |||
+ | < | ||
+ | $ rm *.broyd* | ||
+ | $ run_lapw -cc 0.0001 -ec 0.00001 -i 100 | ||
+ | </ | ||
+ | |||
+ | フラグ-NIをつけて再実行することも可能ですが、計算条件を変更する場合は使えません(エラーが出ます)。 | ||
+ | |||
+ | < | ||
+ | $ run_lapw -cc 0.0001 -ec 0.00001 -i 100 -NI | ||
+ | </ | ||
====== k点数の変更 ====== | ====== k点数の変更 ====== | ||
- | 計算の収束を見るために、k点数を変更したいとします。 | + | k点数が十分であったかを見るために、k点数を変更したいとします。 |
- | 再びプログラムinit_lapwを走らせると、すべての設定が初期化されますので(今はすべてデフォルトなのでさほど問題ないですが)、k点数だけ変更するためにプログラムx_lapwを使います。 | + | 再び init_lapw を走らせると全ての設定や計算結果が初期化されますので、k点数だけ変更するために x_lapw |
< | < | ||
Line 198: | Line 249: | ||
</ | </ | ||
- | 再び計算を実行するには、TiC.broydXを削除してからrun_lapwを実行します。 | + | 計算の再実行は上で述べたようブロイデン法の履歴を削除してから行います。 |
+ | 最初は少ないk点数(10くらい)から初めて、徐々に増やしていきましょう。 | ||
+ | k点数に対して全エネルギーやフェルミ準位(半導体の場合はエネルギーギャップの大きさ)をプロットしてみて、収束しているかどうか必ず確認しましょう。 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====== 計算結果の保存 ====== | ||
+ | |||
+ | 計算の入出力ファイルを残しておきたい場合は save_lapw を使用します。 | ||
+ | 例えばk点を増やして計算する際に、k点数を1000で計算したときの入力ファイルや結果を k1000 という名前のディレクトリに保存しておきたい場合は次のようにします。 | ||
< | < | ||
- | $ rm *.broyd* | + | $ save_lapw |
- | $ run_lapw | + | |
</ | </ | ||
- | なお、case.broydXを削除せずにrun_lapwを実行した場合は、60秒後に自動で削除してSCF計算がスタートします(その間にジョブのキャンセルが可能です)。 | + | また、この保存したファイルを復活させる場合は次のようにします。-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 | ||
+ | </ | ||