This shows you the differences between two versions of the page.
quantumespresso:phonon:フォノンの計算 [2020/11/20 03:25] koudai [Γ点のフォノン] |
quantumespresso:phonon:フォノンの計算 [2021/06/27 22:04] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | Siを例に、フォノンの簡単な計算を実行してみます。 | ||
- | |||
- | ===== SCF計算 ===== | ||
- | |||
- | 事前にpw.xによるSCF計算を行います。 | ||
- | |||
- | <file - Si.scf.in> | ||
- | & | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | / | ||
- | &system | ||
- | | ||
- | | ||
- | / | ||
- | & | ||
- | / | ||
- | ATOMIC_SPECIES | ||
- | | ||
- | ATOMIC_POSITIONS (alat) | ||
- | Si 0.00 0.00 0.00 | ||
- | Si 0.25 0.25 0.25 | ||
- | K_POINTS automatic | ||
- | 8 8 8 1 1 1 | ||
- | </ | ||
- | |||
- | * 金属の場合はsmearingを指定する必要がありますが、テトラヘドロン法はフォノン計算に使えません(以下のph.x実行時にエラーが出ます)。 | ||
- | |||
- | < | ||
- | $ pw.x < Si.scf.in > Si.scf.out | ||
- | </ | ||
- | |||
- | |||
- | ===== Γ点のフォノン ===== | ||
- | |||
- | 電子状態の計算が終われば、フォノンの振動数を計算できるようになる。 まず、k=(0, | ||
- | |||
- | <file - Si.phG.in> | ||
- | phonons of Si at Gamma | ||
- | & | ||
- | tr2_ph=1.0d-14, | ||
- | prefix=' | ||
- | epsil=.true., | ||
- | outdir=' | ||
- | fildyn=' | ||
- | / | ||
- | 0.0 0.0 0.0 | ||
- | </ | ||
- | |||
- | 第1行はコメント行とみなされ無視されます。 | ||
- | また、最後の行は計算する波数(デカルト座標で、単位は格子定数aを使って2π/ | ||
- | |||
- | 各引数の意味は次のとおりです。 | ||
- | |||
- | ^変数^初期値^説明^ | ||
- | |tr2_ph|1.0d-12|フォノンの計算の収束条件。経験的に1.0d-14を使ったほうがよい| | ||
- | |prefix|pwscf|SCF計算で使用したプレフィックスと同じにする| | ||
- | |epsil|.false.|誘電率を計算する。Γ点の計算に必要。ただし.true.にする場合は、半導体かつΓ点の計算でないとエラーが出る| | ||
- | |outdir|./ | ||
- | |fildyn|matdyn|結果であるdynamical matrixを出力するファイル名| | ||
- | |||
- | * 金属の場合は、epsil=.false.として、計算するk点を 0.01 0.0 0.0 のようにΓ点から少しずらしてやるとうまくいきます。 | ||
- | |||
- | 実行は次のようにします。 | ||
- | |||
- | < | ||
- | $ ph.x < Si.phG.in > Si.phG.out | ||
- | </ | ||
- | |||
- | 結果はfildynで指定したもの(今の場合はSi.dynG)に出力されます。 | ||
- | |||
- | <file - Si.dynG> | ||
- | (中略) | ||
- | | ||
- | freq ( 1) = -0.170404 [THz] = -5.684069 [cm-1] | ||
- | | ||
- | | ||
- | freq ( 2) = -0.170404 [THz] = -5.684069 [cm-1] | ||
- | ( -0.161796 | ||
- | ( -0.161796 | ||
- | freq ( 3) = -0.170404 [THz] = -5.684069 [cm-1] | ||
- | | ||
- | | ||
- | freq ( 4) = 15.296893 [THz] = | ||
- | ( -0.463984 | ||
- | | ||
- | freq ( 5) = 15.296893 [THz] = | ||
- | | ||
- | ( -0.527053 | ||
- | freq ( 6) = 15.296893 [THz] = | ||
- | ( -0.083269 | ||
- | | ||
- | | ||
- | </ | ||
- | |||
- | * 6つの振動モードがあって、それぞれのΓ点における振動数がわかる。 | ||
- | * 音響モード(-0.170404 THz とあるが、これは0と見てよい)と光学モード(15.296893 THz)がそれぞれ三重に縮退している。 | ||
- | * 音響モードの振動数を0にしたければ構造緩和を行うとよい。 | ||
- | * 原子の変位ベクトルは、例えばfreq 4であれば1番目のSiが(-0.463984, | ||
- | * 振動モードの既約表現はSi.phG.out内に出力されている。 | ||
- | |||
- | |||
- | フォノンの振動に対応する変位ベクトルはXcrysDenを使って見ることができます。 | ||
- | 次のファイルを用意します。 | ||
- | |||
- | <file - Si.dynmatG.in> | ||
- | & | ||
- | dyn =' | ||
- | filxsf = ' | ||
- | 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 の極限をとることを指定します。 | ||
- | * asrはacoustic sum ruleの略で、' | ||
- | * zero-dim ... 分子の計算で使います | ||
- | * one-dim ... 1次元系の計算(カーボンナノチューブなど)に使います | ||
- | * crystal ... simpleよりも計算精度があがりますが、その分コストも増えます。simpleでうまく行かない場合はこちらにします。 | ||
- | |||
- | 実行は次のようにします。 | ||
- | < | ||
- | $ dynmat.x < Si.dynmatG.in > Si.dynmatG.out | ||
- | </ | ||
- | |||
- | すると dynmatG.axsf というファイルができるので、以下の手順で変位ベクトルを表示します。 | ||
- | |||
- | - XCrysDenを起動して、[File] -> [Open Structure] -> [Open AXSF] よりdynmatG.axsfを開く | ||
- | - ウィンドウが開くので、矢印ボタンを押して変位ベクトルを表示したいフォノンを選ぶ(エネルギーの低い順です) | ||
- | - いったん [Hide] ボタンを押してウィンドウを最小化する | ||
- | - [Display] から [Forces] を選ぶ | ||
- | - このままだと矢印が長すぎるので、[Modify] -> [Force Settings] でLength Factorの大きさを調節する(デフォルトは200だが30くらいがちょうどよい) | ||
- | |||
- | ===== X点のフォノン ===== | ||
- | |||
- | 今度はX点(2π/ | ||
- | 手順はさきほどと同じですが、誘電率の計算が不要です。 | ||
- | |||
- | <file - Si.phX.in> | ||
- | phonons of Si at X | ||
- | & | ||
- | tr2_ph=1.0d-14, | ||
- | prefix=' | ||
- | outdir=' | ||
- | fildyn=' | ||
- | / | ||
- | 1.0 0.0 0.0 | ||
- | </ | ||
- | |||
- | $ ph.x < Si.phX.in > Si.phX.out | ||
- | |||
- | 結果は Si.dynX に出力されます。 | ||
- | |||
- | <file -Si.dynX> | ||
- | (中略) | ||
- | | ||
- | freq ( 1) = | ||
- | ( -0.000000 | ||
- | ( -0.000000 | ||
- | freq ( 2) = | ||
- | ( -0.000000 | ||
- | ( -0.000000 | ||
- | freq ( 3) = 12.236850 [THz] = | ||
- | ( -0.999882 | ||
- | ( -0.015351 | ||
- | freq ( 4) = 12.236850 [THz] = | ||
- | ( -0.015351 | ||
- | | ||
- | freq ( 5) = 13.746712 [THz] = | ||
- | | ||
- | ( -0.000000 | ||
- | freq ( 6) = 13.746712 [THz] = | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | |||
- | 2重に縮退したものが3つあることがわかります。 | ||
- | |||
- | 変位ベクトルを計算する場合は次のファイルを用意して、Γ点と同じように計算してください。 | ||
- | |||
- | |||
- | <file - Si.dynmatX.in> | ||
- | & | ||
- | dyn =' | ||
- | filxsf = ' | ||
- | / | ||
- | </ | ||
- | |||
- | < | ||
- | $ dynmat.x < Si.dynmatX.in > Si.dynmatX.out | ||
- | </ |