This shows you the differences between two versions of the page.
Next revision | Previous revision Next revision Both sides next revision | ||
quantumespresso:phonon:フォノンの計算 [2020/11/18 19:42] koudai 作成 |
quantumespresso:phonon:フォノンの計算 [2020/11/18 20:32] koudai [Γ点のフォノン] |
||
---|---|---|---|
Line 4: | Line 4: | ||
Siを例に、フォノンの簡単な計算を実行してみる。 事前にpw.xによる電子状態計算を行う。 | Siを例に、フォノンの簡単な計算を実行してみる。 事前にpw.xによる電子状態計算を行う。 | ||
- | <file - si.scf.in> | + | <file - Si.scf.in> |
& | & | ||
| | ||
- | | + | |
- | | + | |
- | | + | |
/ | / | ||
&system | &system | ||
Line 26: | Line 26: | ||
</ | </ | ||
- | $ pw.x < si.scf.in > si.scf.out | + | |
+ | |||
+ | < | ||
+ | $ pw.x < Si.scf.in > Si.scf.out | ||
+ | </ | ||
Line 33: | Line 37: | ||
電子状態の計算が終われば、フォノンの振動数を計算できるようになる。 まず、k=(0, | 電子状態の計算が終われば、フォノンの振動数を計算できるようになる。 まず、k=(0, | ||
- | <file - si.phG.in> | + | <file - Si.phG.in> |
phonons of Si at Gamma | phonons of Si at Gamma | ||
& | & | ||
tr2_ph=1.0d-14, | tr2_ph=1.0d-14, | ||
- | prefix=' | + | prefix=' |
epsil=.true., | epsil=.true., | ||
- | outdir=' | + | outdir=' |
- | fildyn=' | + | fildyn=' |
/ | / | ||
0.0 0.0 0.0 | 0.0 0.0 0.0 | ||
</ | </ | ||
- | 第1行はコメント行とみなされ無視される。 また、最後の行は計算する波数(デカルト座標で、単位は格子定数aを使って2π/ | + | 第1行はコメント行とみなされ無視されます。 |
- | 各引数の意味は次のとおりである。 | + | また、最後の行は計算する波数(デカルト座標で、単位は格子定数aを使って2π/ |
- | 詳細はマニュアルを参照のこと。 | + | |
- | |tr2_ph|フォノンの計算の収束条件。デフォルトは1.0d-12であるが、経験的に1.0d-14を使ったほうがよい。| | + | 各引数の意味は次のとおりです。 |
- | |prefix|si.scf.inで使用したプレフィックスと同じにする。| | + | |
- | |epsil|デフォルトは.false.だが、誘電率を計算するならば.true.を指定する。ただし.true.にする場合は、半導体かつΓ点の計算でないとエラーが出る。| | + | |
- | |outdir|出力ファイルの場所。| | + | |
- | |fildyn|結果であるdynamical matrixを出力するファイル名。| | + | |
- | 実行は次のようにする。 | + | ^変数^初期値^説明^ |
+ | |tr2_ph|1.0d-12|フォノンの計算の収束条件。経験的に1.0d-14を使ったほうがよい。| | ||
+ | |prefix|pwscf|SCF計算で使用したプレフィックスと同じにする。| | ||
+ | |epsil|.false.|誘電率を計算する。Γ点の計算に必要。ただし.true.にする場合は、半導体かつΓ点の計算でないとエラーが出る。| | ||
+ | |outdir|./ | ||
+ | |fildyn|matdyn|結果であるdynamical matrixを出力するファイル名。| | ||
- | | + | |
- | 結果はsi.dynGで見ることができる。 | + | 実行は次のようにします。 |
- | <file - si.dynG> | + | < |
+ | $ ph.x < Si.phG.in > Si.phG.out | ||
+ | </ | ||
+ | |||
+ | * 金属の計算で |ddv_scf|^2 が発散してしまう場合は、SCF計算の際にdegauss=0.001など小さいものを使ってください。計算がうまく行けば、収束がうまくいく範囲でdegaussを大きくします。 | ||
+ | |||
+ | 結果はfildynで指定したもの(今の場合はSi.dynG)に出力されます。 | ||
+ | |||
+ | <file - Si.dynG> | ||
(中略) | (中略) | ||
| | ||
Line 91: | Line 103: | ||
* 振動モードの既約表現はSi.phG.out内に出力されている。 | * 振動モードの既約表現はSi.phG.out内に出力されている。 | ||
+ | |||
+ | フォノンの振動に対応する変位ベクトルはXcrysDenを使って見ることができます。 | ||
+ | 次のファイルを用意します。 | ||
+ | |||
+ | <file - Si.dynmat.in> | ||
+ | & | ||
+ | dyn =' | ||
+ | asr =' | ||
+ | lperm = .true., | ||
+ | q(1)=1.0, | ||
+ | q(2)=0.0, | ||
+ | q(3)=0.0 | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Γ点のフォノンは q->0 の極限で定義されます。lpermは q=(q(1), q(2), q(3)) に沿って q->0 の極限をとることを指定します。 | ||
+ | |||
+ | 実行は次のようにします。 | ||
+ | < | ||
+ | $ dynmat.x < Si.dynmat.in > Si.dynmat.out | ||
+ | </ | ||
+ | |||
+ | すると dynmat.axsf というファイルができるので、以下の手順で変位ベクトルを表示します。 | ||
+ | |||
+ | - XCrysDenを起動して、[File] -> [Open Structure] -> [Open AXSF] よりdynmat.axsfを開く | ||
+ | - ウィンドウが開くので、矢印ボタンを押して変位ベクトルを表示したいフォノンを選ぶ(エネルギーの低い順です) | ||
+ | - いったん [Hide] ボタンを押してウィンドウを最小化する | ||
+ | - [Display] から [Forces] を選ぶ | ||
+ | - このままだと矢印が長すぎるので、[Modify] -> [Force Settings] でLength Factorの大きさを調節する(デフォルトは200だが30くらいがちょうどよい) | ||
===== X点のフォノン ===== | ===== X点のフォノン ===== | ||
- | 今度はX点(2π/ | + | 今度はX点(2π/ |
+ | 手順はさきほどと同じですが、誘電率の計算が不要です。 | ||
- | <file - si.phX.in> | + | <file - Si.phX.in> |
phonons of Si at X | phonons of Si at X | ||
& | & | ||
tr2_ph=1.0d-14, | tr2_ph=1.0d-14, | ||
- | prefix=' | + | prefix=' |
amass(1)=28.08, | amass(1)=28.08, | ||
- | outdir=' | + | outdir=' |
- | fildyn=' | + | fildyn=' |
/ | / | ||
1.0 0.0 0.0 | 1.0 0.0 0.0 | ||
</ | </ | ||
- | $ ph.x < si.phX.in > si.phX.out | + | $ ph.x < Si.phX.in > Si.phX.out |
- | 結果はsi.dynXに出力される。 | + | 結果は |
- | <file -si.dynX> | + | <file -Si.dynX> |
(中略) | (中略) | ||
| | ||
Line 136: | Line 178: | ||
</ | </ | ||
- | 2重に縮退したものが3つあることがわかる。 | + | 2重に縮退したものが3つあることがわかります。 |
+ | |||
+ | 変位ベクトルを計算する場合は次のファイルを用意して、Γ点と同じように計算してください。 | ||
+ | |||
+ | |||
+ | <file - Si.dynmat.in> | ||
+ | & | ||
+ | dyn =' | ||
+ | asr =' | ||
+ | / | ||
+ | </ |