quantumespresso:phonon:フォノンの計算
Siを例に、フォノンの簡単な計算を実行してみます。
SCF計算
事前にpw.xによるSCF計算を行います。
- Si.scf.in
&control calculation='scf', prefix='Si' pseudo_dir = './pseudo/', outdir='./tmp/' / &system ibrav=2, celldm(1)=10.26, nat=2, ntyp=1, ecutwfc=18.0 / &electrons / ATOMIC_SPECIES Si 28.086 Si.pz-vbc.UPF 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,0,0)のΓ点におけるフォノンを計算してみる。 以下のファイルを用意する。
- Si.phG.in
phonons of Si at Gamma &inputph tr2_ph=1.0d-14, prefix='Si', epsil=.true., outdir='./tmp/', fildyn='Si.dynG', / 0.0 0.0 0.0
第1行はコメント行とみなされ無視されます。 また、最後の行は計算する波数(デカルト座標で、単位は格子定数aを使って2π/a)を表します。
各引数の意味は次のとおりです。
変数 | 初期値 | 説明 |
---|---|---|
tr2_ph | 1.0d-12 | フォノンの計算の収束条件。経験的に1.0d-14を使ったほうがよい |
prefix | pwscf | SCF計算で使用したプレフィックスと同じにする |
epsil | .false. | 誘電率を計算する。Γ点の計算に必要。ただし.true.にする場合は、半導体かつΓ点の計算でないとエラーが出る |
outdir | ./ | 出力ファイルの場所。SCF計算のものと同じにする |
fildyn | matdyn | 結果であるdynamical matrixを出力するファイル名 |
- 金属の場合は、epsil=.false.として、計算するk点を 0.01 0.0 0.0 のようにΓ点から少しずらしてやるとうまくいきます。
実行は次のようにします。
$ ph.x < Si.phG.in > Si.phG.out
結果はfildynで指定したもの(今の場合はSi.dynG)に出力されます。
- Si.dynG
(中略) ************************************************************************** freq ( 1) = -0.170404 [THz] = -5.684069 [cm-1] ( 0.274931 0.000000 -0.504256 0.000000 -0.412479 0.000000 ) ( 0.274931 0.000000 -0.504256 0.000000 -0.412479 0.000000 ) freq ( 2) = -0.170404 [THz] = -5.684069 [cm-1] ( -0.161796 0.000000 0.380828 0.000000 -0.573404 0.000000 ) ( -0.161796 0.000000 0.380828 0.000000 -0.573404 0.000000 ) freq ( 3) = -0.170404 [THz] = -5.684069 [cm-1] ( 0.631059 0.000000 0.317327 0.000000 0.032690 0.000000 ) ( 0.631059 0.000000 0.317327 0.000000 0.032690 0.000000 ) freq ( 4) = 15.296893 [THz] = 510.249417 [cm-1] ( -0.463984 0.000000 0.270574 0.000000 0.459900 0.000000 ) ( 0.463984 0.000000 -0.270574 0.000000 -0.459900 0.000000 ) freq ( 5) = 15.296893 [THz] = 510.249417 [cm-1] ( 0.527053 0.000000 0.327503 0.000000 0.339053 0.000000 ) ( -0.527053 0.000000 -0.327503 0.000000 -0.339053 0.000000 ) freq ( 6) = 15.296893 [THz] = 510.249417 [cm-1] ( -0.083269 0.000000 0.565271 0.000000 -0.416575 0.000000 ) ( 0.083269 0.000000 -0.565271 0.000000 0.416575 0.000000 ) **************************************************************************
- 6つの振動モードがあって、それぞれのΓ点における振動数がわかる。
- 音響モード(-0.170404 THz とあるが、これは0と見てよい)と光学モード(15.296893 THz)がそれぞれ三重に縮退している。
- 音響モードの振動数を0にしたければ構造緩和を行うとよい。
- 原子の変位ベクトルは、例えばfreq 4であれば1番目のSiが(-0.463984, 0.270574, 0.459900)方向、2番目のSiが(0.463984, -0.270574, -0.459900)である(デカルト座標)。
- 振動モードの既約表現はSi.phG.out内に出力されている。
フォノンの振動に対応する変位ベクトルはXcrysDenを使って見ることができます。 次のファイルを用意します。
- Si.dynmatG.in
&inputfil dyn ='Si.dynG', filxsf = 'dynmatG.axsf' asr ='simple', 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 の極限をとることを指定します。
- Si.phG.inで波数を 0.01 0.0 0.0 とした場合はasrおよびlpermの行を削除して q(1) = 0.01 としてください。
- asrはacoustic sum ruleの略で、'simple'にするとΓ点で音響フォノンの振動数がゼロになるようにします。デフォルトは'no'(何もしない)です。このほか、次のものが指定できます
- 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π/a,0,0)のフォノンを調べます。 手順はさきほどと同じですが、誘電率の計算が不要です。
- Si.phX.in
phonons of Si at X &inputph tr2_ph=1.0d-14, prefix='Si', outdir='./tmp/', fildyn='Si.dynX', / 1.0 0.0 0.0
$ ph.x < Si.phX.in > Si.phX.out
結果は Si.dynX に出力されます。
(中略) ************************************************************************** freq ( 1) = 4.207901 [THz] = 140.360482 [cm-1] ( -0.000000 0.000000 -0.023972 0.000000 0.706700 0.000000 ) ( -0.000000 0.000000 0.706700 0.000000 -0.023972 0.000000 ) freq ( 2) = 4.207901 [THz] = 140.360482 [cm-1] ( -0.000000 0.000000 -0.706700 0.000000 -0.023972 0.000000 ) ( -0.000000 0.000000 -0.023972 0.000000 -0.706700 0.000000 ) freq ( 3) = 12.236850 [THz] = 408.177391 [cm-1] ( -0.999882 0.000000 0.000000 0.000000 0.000000 0.000000 ) ( -0.015351 0.000000 -0.000000 0.000000 0.000000 0.000000 ) freq ( 4) = 12.236850 [THz] = 408.177391 [cm-1] ( -0.015351 0.000000 0.000000 0.000000 0.000000 0.000000 ) ( 0.999882 0.000000 -0.000000 0.000000 0.000000 0.000000 ) freq ( 5) = 13.746712 [THz] = 458.540957 [cm-1] ( 0.000000 0.000000 -0.000000 0.000000 0.707107 0.000000 ) ( -0.000000 0.000000 -0.707107 0.000000 0.000000 0.000000 ) freq ( 6) = 13.746712 [THz] = 458.540957 [cm-1] ( 0.000000 0.000000 0.707107 0.000000 0.000000 0.000000 ) ( 0.000000 0.000000 0.000000 0.000000 -0.707107 0.000000 ) **************************************************************************
2重に縮退したものが3つあることがわかります。
変位ベクトルを計算する場合は次のファイルを用意して、Γ点と同じように計算してください。
- Si.dynmatX.in
&inputfil dyn ='Si.dynX', filxsf = 'dynmatX.axsf' /
$ dynmat.x < Si.dynmatX.in > Si.dynmatX.out
quantumespresso/phonon/フォノンの計算.txt · Last modified: 2021/06/27 22:04 by 127.0.0.1