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計算 [2020/03/28 18:48] koudai [SCF計算結果の保存] |
wien2k:scf計算 [2020/07/07 15:52] koudai |
||
---|---|---|---|
Line 14: | Line 14: | ||
- | ====== 結晶構造データの作成 | + | |
+ | ====== SCF計算 ====== | ||
+ | |||
+ | ===== 結晶構造データの作成 ===== | ||
WIEN2kでは結晶構造はcase.structというファイルに保存されます。 | WIEN2kでは結晶構造はcase.structというファイルに保存されます。 | ||
Line 36: | Line 39: | ||
- | ===== makestruct_lapwを使う方法 | + | ==== makestruct_lapwを使う方法 ==== |
基本的には質問に答えていくだけで完了します。 | 基本的には質問に答えていくだけで完了します。 | ||
Line 121: | Line 124: | ||
- | ===== CIFファイルからstructファイルを生成する方法 | + | ==== CIFファイルからstructファイルを生成する方法 ==== |
実際にWIEN2kを使った第一原理計算を行うときは、対話形式でstructファイルを作成するよりも、結晶構造データの統一フォーマットであるCIFファイルから生成することが多くなると思います。 | 実際にWIEN2kを使った第一原理計算を行うときは、対話形式でstructファイルを作成するよりも、結晶構造データの統一フォーマットであるCIFファイルから生成することが多くなると思います。 | ||
Line 134: | Line 137: | ||
これで入力ファイルTiC.structができます。 | これで入力ファイルTiC.structができます。 | ||
ただし、このままだとマフィンチン半径$R_{\rm MT}$が正しく設定されていないので計算します。 | ただし、このままだとマフィンチン半径$R_{\rm MT}$が正しく設定されていないので計算します。 | ||
+ | 拡張子の.structは不要です。 | ||
< | < | ||
Line 146: | Line 150: | ||
- | ====== 計算の設定の初期化 | + | ===== 計算の設定の初期化 ===== |
SCF計算に入る前に、計算の設定の初期化をおこないます。 | SCF計算に入る前に、計算の設定の初期化をおこないます。 | ||
Line 160: | Line 164: | ||
$ init_lapw -b -numk 1000 -rkmax 7.5 | $ init_lapw -b -numk 1000 -rkmax 7.5 | ||
</ | </ | ||
- | + | * ここでフラグ -b はバッチモードで、これをつけることで指定のもの以外はすべてまとめてデフォルトの値に設定されます。 | |
- | ここでフラグ -b はバッチモードで、これをつけることで指定のもの以外はすべてまとめてデフォルトの値に設定されます。 | + | * 最後に init_lapw finished ok と出たら正孔です。このメッセージが出てこなかった場合、どこかで問題が起こっているので修正します。 |
+ | | ||
オプションの意味は次のとおりです | オプションの意味は次のとおりです | ||
Line 177: | Line 181: | ||
- | ====== SCF計算の実行 | + | ===== SCF計算の実行 ===== |
これで準備が整いましたので計算を実行します。 | これで準備が整いましたので計算を実行します。 | ||
Line 199: | Line 203: | ||
実行後、いろいろなファイルができますが、計算の経過や重要な情報は TiC.scf で確認できます。 | 実行後、いろいろなファイルができますが、計算の経過や重要な情報は TiC.scf で確認できます。 | ||
- | $ grep ": | + | $ grep ": |
- | $ grep ": | + | $ grep ": |
- | $ grep ": | + | $ grep ": |
これで電子状態が得られましたので、これをもとに状態密度やバンド分散などを計算することになります。 | これで電子状態が得られましたので、これをもとに状態密度やバンド分散などを計算することになります。 | ||
+ | |||
+ | |||
+ | ===== SCF計算の再実行 ===== | ||
+ | |||
+ | SCF計算を再度実行したい場合は、フラグ-NIをつけて run_lapw を実行します。 | ||
+ | |||
+ | < | ||
+ | $ run_lapw -cc 0.0001 -ec 0.00001 -i 100 -NI | ||
+ | </ | ||
+ | |||
+ | もしrun_lapwのフラグに変更がある場合は、ブロイデン法を使ってSCF計算を収束させているので、その履歴を削除してから再実行します。 | ||
+ | (電子密度の分布は前回の計算のものが引き継がれます) | ||
+ | |||
+ | < | ||
+ | $ rm *.broyd* | ||
+ | $ run_lapw -cc 0.0001 -ec 0.00001 -i 100 | ||
+ | </ | ||
Line 209: | Line 230: | ||
計算の収束を見るために、k点数を変更したいとします。 | 計算の収束を見るために、k点数を変更したいとします。 | ||
- | 再び init_lapw を走らせると全ての設定が初期化されますので、k点数だけ変更するために x_lapw kgen を使います。 | + | 再び init_lapw を走らせると全ての設定や計算結果が初期化されますので、k点数だけ変更するために x_lapw kgen を使います。 |
< | < | ||
Line 222: | Line 243: | ||
再び計算を実行するには、フラグ-NIをつけて run_lapw を実行します。 | 再び計算を実行するには、フラグ-NIをつけて run_lapw を実行します。 | ||
- | |||
< | < | ||
- | $ run_lapw -cc 0.0001 -ec 0.00001 -NI | + | $ run_lapw -cc 0.0001 -ec 0.00001 |
</ | </ | ||
- | 全エネルギーやフェルミ準位(半導体の場合はギャップ)が、k点数に対して収束しているか必ず確認しましょう。 | + | 最初は少ないk点数(それこそ10くらい)から初めて、徐々に増やしていきましょう。 |
+ | k点数に対して全エネルギーやフェルミ準位(半導体の場合はエネルギーギャップの大きさ)をプロットしてみて、収束しているかどうか必ず確認しましょう。 | ||
+ | |||
+ | |||
Line 233: | Line 257: | ||
====== SCF計算結果の保存 ====== | ====== SCF計算結果の保存 ====== | ||
- | 構造最適化前のstructファイルや計算結果のファイルを残しておきたい場合は save_lapw を使用します。 | + | 計算の入出力ファイルを残しておきたい場合は save_lapw を使用します。 |
例えばk点を増やして計算する際に、k点数を1000で計算したときの入力ファイルや結果を k1000 という名前のディレクトリに保存しておきたい場合は次のようにします。 | 例えばk点を増やして計算する際に、k点数を1000で計算したときの入力ファイルや結果を k1000 という名前のディレクトリに保存しておきたい場合は次のようにします。 | ||
Line 257: | Line 281: | ||
プログラム名の最後に _lapw をつけていましたが、これを省略しても良いようになっています。 | プログラム名の最後に _lapw をつけていましたが、これを省略しても良いようになっています。 | ||
例えば x_lapw は単に x だけで実行可能です。 | 例えば 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 | ||
+ | </ | ||
+ |