User Tools

Site Tools


quantumespresso:構造緩和

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
quantumespresso:構造緩和 [2020/03/24 11:25]
koudai [擬ポテンシャルについて]
quantumespresso:構造緩和 [2024/03/30 23:58] (current)
koudai
Line 10: Line 10:
  
 以下ではケイ素を例に構造緩和計算を行います。 以下ではケイ素を例に構造緩和計算を行います。
 +
 +
 +===== 注意 =====
 +
 +  * 現在(2024年3月)のところ、noncolin=.true.のときは原子に加わる力の計算ができません
 +
  
 ====== 原子位置の構造緩和 ====== ====== 原子位置の構造緩和 ======
Line 15: Line 21:
 格子定数はそのままに、単位胞内の原子の位置を緩和させます。 Siの単位胞内における原子の位置は、格子定数を単位として安定な構造で(0,0,0)と(0.25,0.25,0.25)にありますが、原子を少しずらした点において構造緩和をさせてみます。 格子定数はそのままに、単位胞内の原子の位置を緩和させます。 Siの単位胞内における原子の位置は、格子定数を単位として安定な構造で(0,0,0)と(0.25,0.25,0.25)にありますが、原子を少しずらした点において構造緩和をさせてみます。
  
-<file - si.relax.in>+<file - Si.relax.in>
  
 &control &control
    calculation='relax'    calculation='relax'
-   prefix='si+   prefix='Si
-   pseudo_dir='./' +   pseudo_dir='./pseudo/' 
-   outdir = './'+   outdir = './tmp/'
    etot_conv_thr = 1.d-5    etot_conv_thr = 1.d-5
    forc_conv_thr = 1.d-4    forc_conv_thr = 1.d-4
Line 46: Line 52:
  
 ^変数^初期値^説明^ ^変数^初期値^説明^
-|etot_conv_thr|1.d-4|構造緩和の各ステップで、エネルギーの変化がこの値よりも小さくなったときに収束したと判断する。初期値のままだと粗いので小さくする。+|etot_conv_thr|1.d-4|構造緩和の各ステップで、エネルギーの変化がこの値よりも小さくなったときに収束したと判断する| 
-|forc_conv_thr|1.d-3|構造緩和の各ステップで、原子に加わる力の変化がこの値よりも小さくなったときに収束したと判断する。こちらも初期値だと粗いので小さくする。|+|forc_conv_thr|1.d-3|構造緩和の各ステップで、原子に加わる力の変化がこの値よりも小さくなったときに収束したと判断する|
  
 +DFTで求められる程度の原子位置の精度なので、多くの場合は収束の厳しさはここで指定した値で十分です。
 また、relax計算の際は&ionsという項目が必要です。 ここに必要に応じて構造緩和計算のオプションを書き加えますが、今はデフォルトのままとします。 また、relax計算の際は&ionsという項目が必要です。 ここに必要に応じて構造緩和計算のオプションを書き加えますが、今はデフォルトのままとします。
  
Line 58: Line 65:
 実行は次のようにします。 実行は次のようにします。
  
-  $ pw.x < si.relax.in > si.relax.out+  $ pw.x < Si.relax.in > Si.relax.out
  
 結果は次のようになります。 結果は次のようになります。
  
-<file - si.relax.out>+<file - Si.relax.out>
 (略) (略)
 Begin final coordinates Begin final coordinates
Line 82: Line 89:
  
 Siの格子定数はボーア半径単位で10.2程度ですが、ここから少しずらして構造緩和をさせてみます。 Siの格子定数はボーア半径単位で10.2程度ですが、ここから少しずらして構造緩和をさせてみます。
 +Si.relax.inをコピーしてSi.vc-relax.inを作成します。
 +以下の変更を行います
 +  * calculation='vc-relax'に変更
 +  * <nowiki>&cellフィールド</nowiki>を追加
 +  * (任意)press_conv_thrを指定
  
-<file - si.vc-relax.in>+<file - Si.vc-relax.in>
 &control &control
    calculation='vc-relax'    calculation='vc-relax'
-   prefix='si+   prefix='Si
-   pseudo_dir='./' +   pseudo_dir='./pseudo/' 
-   outdir = './'+   outdir = './tmp/'
    etot_conv_thr = 1.d-5    etot_conv_thr = 1.d-5
    forc_conv_thr = 1.d-4    forc_conv_thr = 1.d-4
Line 102: Line 114:
 / /
 &cell &cell
 +  press_conv_thr = 0.1
 / /
 ATOMIC_SPECIES ATOMIC_SPECIES
Line 112: Line 125:
 </file> </file>
  
-今度はcalculation='vc-relax'とします。 ま、新しい項目&cellが必要で+^変数^初期値^説明^ 
 +|press_conv_thr|0.5 (kbar)|構造緩和の各ステップで、単位胞に加わる力がこの値よりも小さくなったきに収束したと判断る|
  
 実行は次のようにします。 実行は次のようにします。
  
-  $ pw.x < si.vc-relax.in > si.vc-relax.out+  $ pw.x < Si.vc-relax.in > Si.vc-relax.out
  
 結果は次のとおりです。 結果は次のとおりです。
  
-<file - si.vc-relax.out>+<file - Si.vc-relax.out>
 (略) (略)
      crystal axes: (cart. coord. in units of alat)      crystal axes: (cart. coord. in units of alat)
Line 147: Line 161:
 ===== 注意 ===== ===== 注意 =====
  
-  * vc-relax計算は原子位置の緩和も同時に行っています。ほとんどの場合は同時緩和はうまくいかないので、先にrelax計算を行った上でvc-relaxを実行しましょう。+  * vc-relax計算は原子位置の緩和も同時に行っています。同時緩和はうまくいかないことがあるので、先にrelax計算を行った上でvc-relaxを実行しましょう。
   * vc-relax計算で構造緩和を行うとき、計算に必要なパラメータは最初の格子定数と原子位置の計算から出したものを使い続けます。結果が変わらなくなるまでvc-relax計算を繰り返してください。   * vc-relax計算で構造緩和を行うとき、計算に必要なパラメータは最初の格子定数と原子位置の計算から出したものを使い続けます。結果が変わらなくなるまでvc-relax計算を繰り返してください。
 +  * ecutwfcやk点数は多めに必要ですので、これらのパラメタについて収束を確認するようにします。
   * conv_thrが大きいと、出力ファイルに"SCF correction compared to forces is large: reduce conv_thr to get better values"と注意が出てくるので小さくしましょう。   * conv_thrが大きいと、出力ファイルに"SCF correction compared to forces is large: reduce conv_thr to get better values"と注意が出てくるので小さくしましょう。
-  * 構造緩和の結果、結晶が別の対称性になってしまう場合、プログラムが以下のエラーを出して止まってしまいます。その場合は&systemに対称性を考慮しないというオプションnosym=.true.を加えてください。+  * 構造緩和の結果、結晶が別の対称性になってしまう場合、プログラムが以下のエラーを出して止まってしまいます。その場合は&systemに対称性を考慮しないというオプションnosym=.true.を加えてください(ただし計算時間が非常に増大します)
 <code> <code>
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Line 163: Line 178:
 ====== 金属の場合 ====== ====== 金属の場合 ======
  
-金属の場合はフェルミの情報が必要ですので、&systemに+金属の場合はフェルミ準位の情報が必要ですので、&systemに
  
-  occupations='tetrahedra_opt'+  occupations='smearing', smearing='mp', degauss=0.02
  
 を追加してください。 を追加してください。
 +degaussの値はk点数に応じて適切な値を入れてください。
 +
 +また、k点数が十分たくさんとれる場合は
 +
 +  occupations='tetrahedra_opt'
 +
 +を使用することもできます。
 +
  
 * http://qe-forge.org/pipermail/pw_forum/2017-October/114051.html * http://qe-forge.org/pipermail/pw_forum/2017-October/114051.html
Line 175: Line 198:
 ====== 擬ポテンシャルについて ====== ====== 擬ポテンシャルについて ======
  
-一般に構造最適化で得られた格子定数は、PZ型などのLDA計算では過小評価され、PBE型などのGGA計算では過大評価されます。 +  * 一般に構造最適化で得られた格子定数は、PZ型などのLDA計算では過小評価され、PBE型などのGGA計算では過大評価されます。 
-最近ではPBEを改善したPBESOLという交換相関ポテンシャルが実験の格子定数をよく再現するうことで、構造最適化計算に使われること多いです。+  最近ではPBEを改善したPBESOLという交換相関ポテンシャルが実験の格子定数を比較的よく再現しま。 
 +    * 格子定数を求めのはろいろな困難があるので、実際の運用では格子定数は測定値を使用し、内部座標についてのみ最適化を行うこと多いです。
quantumespresso/構造緩和.1585016710.txt.gz · Last modified: 2021/06/27 22:00 (external edit)