wien2k:ハイブリッド汎関数法
This is an old revision of the document!
概要
密度汎関数理論によるバンド計算では、バンドギャップを過小評価してしまうことが知られています。 バンドギャップの大きさを改善する方法はいくつか考案されていて、その中の一つであるハイブリッド汎関数法による計算方法を解説します。
汎関数の種類は様々な人が考案していて、WIEN2kにも多くのものが実装されています。 必要に応じて汎関数を変えることになりますが、よくわからなければデフォルトのままで十分です。
事前に通常のSCF計算を行ってください。
計算方法
ハイブリッド汎関数を使ったSCF計算
ハイブリッド汎関数に使う入力ファイルを対話形式で生成してくれるプログラムinit_hf_lapwがあるので、これを使います。
$ init_hf_lapw
設定するのは次の項目です。
- バンドの数nband
- case.inhfというファイルが作成され、自動的に開きます。
- 計算に使うバンドの数を指定します。少なくとも電子が詰まっているバンド(価電子バンド)の数プラス1が必要です。
- バンドの数が増えれば計算精度はあがりますが、計算時間はnbandの自乗で増えていきます。
- case.scfが読み込まれ、価電子バンドの数や伝導バンドのエネルギー範囲などがわかるように画面に表示されますので、これを参考に指定します。
- 設定後は新しく生成されたファイルcase.in1の6行目を確認し、もし考慮する一番上の伝導バンドのエネルギーがemax(=Ef+de)よりも大きくなるようであれば、deの値を大きくします。
- k点数
- 時間を節約するため、SCF計算のときよりもk点数を減らすのが一般的です。
- SCF計算で使ったk点がfull Brillouin zone (FBZ)のk点数、ハイブリッド汎関数法で使うものがreduced Brillouin zone (RBZ)のk点数です。
- RBZの各方向のk点数はFBZのものの約数に限られます。
- 例えばFBZのk点数が10*10*10だった場合、RBZのk点数は1*1*1, 2*2*2, 5*5*5, などに限られます。
設定が終わればrun_lapwによりハイブリッド汎関数を使ったSCF計算を実行します。
$ run_lapw -hf -redklist -ec 0.0001 -cc 0.0001 -p
フラグ-hfでハイブリッド汎関数による計算を行います。 フラグ-redklistはRBZによる計算を行うときにつけますので、なければFBZでの計算となります。
条件を変えて計算
- バンドの数を変更したい場合はcase.inhfを編集してください。
- k点数を変えたい場合は、以下のファイルを削除(するか名前を変更)して、run_kgenhf_lapwを実行してください。そして、再度実行する際はオプション-newklistをつけます。
$ rm case.klist_fbz $ rm case.klist_ibz $ rm case.outputkgenhf $ rm case.klist_rfbz $ rm case.klist_ribz $ run_kgenhf_lapw $ run_lapw -hf -redklist -ec 0.0001 -cc 0.0001 -newklist -p
各種物理量の計算
x_lapw を実行する際にオプション -hf を付けてください。
バンド計算
通常通り、バンドの経路を指定するファイルcase.klist_bandを作成します。
続いてrun_bandplothf_lapwを実行します(これは通常の x_lapw lapw1 -band の計算に相当します)。 さきほどRBZを使った場合はオプション-redklistをつけます。
$ run_bandplothf_lapw -redklist
計算が終われば、通常通りcase.inspを作成し、フラグ-hfをつけて x_lapw spaghetti を実行します。
$ x_lapw spaghetti -hf
注意
- ハイブリッド汎関数法は計算コストの大きい計算手法です。大型計算機による並列化計算をおすすめします。
wien2k/ハイブリッド汎関数法.1593846523.txt.gz · Last modified: 2021/06/27 22:01 (external edit)