User Tools

Site Tools


quantumespresso:構造緩和

Differences

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

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
quantumespresso:構造緩和 [2018/02/22 20:20]
koudai 作成
quantumespresso:構造緩和 [2018/11/26 18:06]
koudai [概要]
Line 5: Line 5:
 構造緩和には次の2通りの方法があります。 構造緩和には次の2通りの方法があります。
  
-  - 格子定数はそのままで、単位胞内の原子の位置について構造緩和 +  - 格子定数はそのままで、単位胞内の原子の内部座標最適化 
-  - 単位胞の原子位置はそのままで、格子定数についての構造緩和+  - 内部座標とともに格子定数も変化させる構造緩和
  
 通常は2つを繰り返すことで、安定な結晶構造を探します。 通常は2つを繰り返すことで、安定な結晶構造を探します。
Line 16: Line 16:
 格子定数はそのままに、単位胞内の原子の位置を緩和させます。 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
Line 31: Line 31:
 / /
 &electrons &electrons
 +   conv_thr = 1.0d-8
 / /
 &ions &ions
Line 41: Line 42:
 K_POINTS automatic K_POINTS automatic
   6 6 6 1 1 1   6 6 6 1 1 1
-  </file>+</file>
  
 構造緩和計算では、calculation='relax'を指定します。 関連するオプションの意味は次の通りです。 構造緩和計算では、calculation='relax'を指定します。 関連するオプションの意味は次の通りです。
-etot_conv_thr 構造緩和の各ステップで、エネルギーの変化がこの値よりも小さくなったときに収束したと判断する。デフォルトは1.d-4だが、経験的にはもう少し厳しいほうが良い。 
-forc_conv_thr 構造緩和の各ステップで、原子に加わる力の変化がこの値よりも小さくなったときに収束したと判断する。デフォルトは1.d-3だが、経験的にはもう少し厳しいほうが良い。 
  
-エネルギーのカットオフecutwfcは普段よりも多めにとっておす。+^変数^初期値^説明^ 
 +|etot_conv_thr|1.d-4|構造緩和の各ステップで、エネルギーの変化がこの値よりも小さくなったとき収束した判断する。初期値のままだと粗いので小さくする。| 
 +|forc_conv_thr|1.d-3|構造緩和の各ステップで、原子に加わる力の変化がこの値よりも小さくなたとに収束したと判断する。こちらも初期値だと粗いので小さく|
  
 また、relax計算の際は&ionsという項目が必要です。 ここに必要に応じて構造緩和計算のオプションを書き加えますが、今はデフォルトのままとします。 また、relax計算の際は&ionsという項目が必要です。 ここに必要に応じて構造緩和計算のオプションを書き加えますが、今はデフォルトのままとします。
  
-原子位置について、原点にあるSiは動いてほしくないので、座標の最後に0 0 0を付け加えます。 他にも動いてくな原子があれば、同様に書き加えます。+原子位置について、原点にあるSiは動いてほしくないので、座標の最後に0 0 0を付け加えます。 
 +第3成分だけ動いてしい場合は0 0 1とします。 
 +何も指定していなければ1 1 1となります(すべての方向に動ける) 
  
 実行は次のようにします。 実行は次のようにします。
  
-    $ pw.x < si.relax.in > si.relax.out+  $ pw.x < si.relax.in > si.relax.out
  
 結果は次のようになります。 結果は次のようになります。
  
-    si.relax.out +<file - si.relax.out>
 (略) (略)
 Begin final coordinates Begin final coordinates
Line 69: Line 72:
 End final coordinates End final coordinates
 (略) (略)
 +</file>
  
 原子位置が(0.25,0.25,0.25)付近に動いたことが確認できます。 原子位置が(0.25,0.25,0.25)付近に動いたことが確認できます。
- 
-格子定数の構造緩和 † 
  
-今度は格子定数の構造緩和を行います。 Siの格子定数はボーア半径単位で10.2程度ですが、ここから少しずらして構造緩和をさせてみます。 
  
-    si.vc-relax.in+====== 格子定数の構造緩和 ======
  
 +今度は格子定数の構造緩和を行います。
 +先に原子位置の緩和を行ってください。
 +
 +Siの格子定数はボーア半径単位で10.2程度ですが、ここから少しずらして構造緩和をさせてみます。
 +
 +<file - si.vc-relax.in>
 &control &control
    calculation='vc-relax'    calculation='vc-relax'
Line 91: Line 98:
 / /
 &electrons &electrons
 +   conv_thr = 1.0d-8
 / /
 &ions &ions
Line 103: Line 111:
 K_POINTS automatic K_POINTS automatic
   6 6 6 1 1 1   6 6 6 1 1 1
 +</file>
  
 今度はcalculation='vc-relax'とします。 また、新しい項目&cellが必要です。 今度はcalculation='vc-relax'とします。 また、新しい項目&cellが必要です。
Line 108: Line 117:
 実行は次のようにします。 実行は次のようにします。
  
-    $ pw.x < si.vc-relax.in > si.vc-relax.out+  $ pw.x < si.vc-relax.in > si.vc-relax.out
  
 結果は次のとおりです。 結果は次のとおりです。
  
-    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 133: Line 141:
 End final coordinates End final coordinates
 (略) (略)
 +</file>
 +
 +もともと基本並進ベクトルが格子定数を単位としてa(1)=(-0.5, 0, 0.5)だったのが(-0.510132378, 0.000000000, 0.510132378)に拡大しています。
 +そのため、構造緩和によって得られた格子定数はボーア半径を単位として 10.0 * 0.510132378 / 0.5 = 10.20... となります。
 +
 +===== 注意 =====
 +
 +  * vc-relax計算は原子位置の緩和も同時に行っています。ほとんどの場合は同時緩和はうまくいかないので、先にrelax計算を行った上でvc-relaxを実行しましょう。
 +  * vc-relax計算で構造緩和を行うとき、計算に必要なパラメータは最初の格子定数と原子位置の計算から出したものを使い続けます。収束するまでvc-relax計算を繰り返してください。
 +  * conv_thrが大きいと、出力ファイルに"SCF correction compared to forces is large: reduce conv_thr to get better values"と注意が出てくるので小さくしましょう。
 +  * 構造緩和の結果、結晶が別の対称性になってしまう場合、プログラムが以下のエラーを出して止まってしまいます。その場合は&systemに対称性を考慮しないというオプションnosym=.true.を加えてください。
 +<code>
 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 +    Error in routine checkallsym (2):
 +    not orthogonal operation
 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 +</code>
 +
 +
 +
 +
 +====== 金属の場合 ======
  
-もともと基本並進ベクトルが格子定数を単位としてa(1)=(-0.5, 0, 0.5)だったのが(-0.510132378, 0.000000000, 0.510132378)に拡大していま。 そため構造緩和によって得られた格子定数はボーア半径を単位として10.0*0.510132378/0.5=10.20・・・となります。 +金属場合はFermi面の情報必要ですの
-↑ +
-注意 †+
  
-    実はvc-relax計算は原子位置の緩和も同時に行っていますが、ほとんどの場合はうまくいかないのでrelax計算と組み合わせる必要があります。 +  occupations='tetrahedra_opt'
-    vc-relax計算で構造緩和を行うとき、計算に必要なパラメータは最初の格子定数と原子位置の計算から出したものを使い続けます。計算が正しいか確認するため、入力ファイルを得られたパラメータでもう一度vc-relax計算をすると良いでしょう。 +
-    構造緩和の結果、結晶が別の対称性になってしまう場合、プログラムが以下のエラーを出して止まってしまいます。その場合は&systemに対称性を考慮しないというオプションnosym=.true.を加えてください。+
  
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +を使用してください。 
-        Error in routine checkallsym (2): +このときのk点は、原点を含む 
-        not orthogonal operation +  K_POINTS automatic 
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+    12 12 12 0 0 0 
 +などとします。
  
 +* http://qe-forge.org/pipermail/pw_forum/2017-October/114051.html
  
quantumespresso/構造緩和.txt · Last modified: 2024/03/30 23:58 by koudai