FAQ¶
本家の FAQ も参考にして下さい。 以下は私の個人的な経験をもとにしたものです。
計算がうまく動かない
このドキュメントでは、出力をファイルに保存するため、
% pw.x < graphene.scf.in > graphene.scf.out
のように出力ファイルを指定していますが、うまく動かない場合はまず
% pw.x < graphene.scf.in
と実行してみましょう。よくあるエラーメッセージは以下のように擬ポテンシャルファイルが見つからないというものです。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Error in routine readpp (1): file ./C.pz-van_ak.UPF not found %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
この場合、指定した場所に擬ポテンシャルファイルがあるか確認しましょう。
また、以下のように namelist 関連のエラーがでる場合は、インプットの形式が間違っています。 pp.x を動かすべきときに、pw.x を動かしてしまっていないか、またインプット内の変数名を間違っていないか、などを確認してください。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Error in routine read_namelists (1): bad line in namelist &control: "/" (error could be in the previous line) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
scf 計算が収束しない。
いくつか原因が考えられます。
まず、よくあるのがインプットの構造が間違っている場合です。原子間距離が異常に近い、あるいはある原子が孤立している、といった場合収束しないことがあります。XCrysden で構造を確認してみて下さい。
scf のループを繰り返しても estimated scf accuracy が大きくなったり小さくなったりを繰り返して収束しない場合、mixing_beta を小さくしてみて下さい。この値は、scf のループで新しい電荷密度を作る際、古い電荷密度をどれぐらいの割合残すかを表しています。小さければ小さいほど、ゆっくり収束させていくことになりますが、振動は起こりにくくなります。
また、金属にも関わらず、occupations を指定していない、あるいは小さすぎる degauss を設定している場合も振動が起きやすくなることがあります。occupations="smearing"を設定の上、適切な degauss を設定して下さい。
どうしてもうまく収束しない場合、scf の収束のさせ方として、default の daivdson 法ではなく CG 法を試してみて下さい。(diagonalization = "cg") 計算はかなり遅くなりますが、安定して収束するようになります。
いずれにせよ、経験上、収束しにくいときは構造そのものがあまり安定でない場合が多いように思います。計算そのものが意味のある計算か、よく確認してみて下さい。
バンド構造が明らかにおかしい。
構造が間違っている可能性が高いです。scf.outの出力で、単位胞にかかる圧力と各原子に働く力を確認してみてください。 例えば、グラフェンの場合
Forces acting on atoms (cartesian axes, Ry/au): atom 1 type 1 force = 0.00000000 0.00000000 0.00000000 atom 2 type 1 force = 0.00000000 0.00000000 0.00000000 Total force = 0.000000 Total SCF correction = 0.000000 Computing stress (Cartesian axis) and pressure total stress (Ry/bohr**3) (kbar) P= 13.33 0.00014329 0.00000000 0.00000000 21.08 0.00 0.00 0.00000000 0.00014329 -0.00000000 0.00 21.08 -0.00 0.00000000 -0.00000000 -0.00001479 0.00 -0.00 -2.18
とあります。これは、原子に働く力がつりあっていること、また、単位胞にかかる圧力がxy面内で21kbar(最適構造より格子定数aが少しだけ小さい)、面間-2kbarとなっていることを意味しています。 構造を間違えている場合、これらの値がかなり大きなものになります。構造最適化(relax, vc-relax)などを試して構造がどう変化するかみてみてもよいでしょう。
バンドのエネルギーの絶対値の意味は?
意味はありません。プロットするときは、フェルミエネルギーや真空準位が0eVになるように適宜シフトさせて下さい。 なお、真空準位を3次元バルク結晶に対して求めるのは困難です。グラフェンのような低次元物質なら、グラフェンから遠く離れた真空中でのポテンシャル(pp.x で plotnum=11 でプロットできる)の値を真空準位とみなすことで計算可能です。
Pseudopotential はどう選べば良いか?
計算を始めるときに最も気を遣う部分です。 真面目にやるなら、単体での計算を Wien2k などの全電子計算コードと比較します。 既に計算されている論文と比較してもよいでしょう。 quantum ESPRESSO のページにあるものは玉石混合なので、注意してください。 5章も参考にしてください。
実験構造と構造最適化した構造、どちらを使って計算するのがよいのか?
目的によります。実験で構造がわかっているなら実験構造を使って計算してもよいでしょう。実際、実験を説明する場合は実験構造を使って計算している論文は多いです。 一方、原子層物質や圧力下の物質などの構造がわかっていないものに対しては、当然ながら構造最適化した構造を用いることになります。 構造最適化の結果は、交換相関汎関数や擬ポテンシャルによって変わってくるので論文などをみる際は注意してください。
フェルミ面を計算したい。軌道磁化、ベリー曲率を計算したい。
Wannier90 を用いて計算できます。 但し、軌道磁化は現在ノルム保存擬ポテンシャルにしか対応していないので、擬ポテンシャル作成が必要になります。
LDA+U の計算をしたい。
INPUT_PW.html を参考に lda_plus_u オプションおよびそれに関連するオプションを指定してください。