This shows you the differences between two versions of the page.
quantumespresso:フォノンの状態密度と分散 [2020/11/20 01:19] koudai [固有振動モードの可視化] |
quantumespresso:フォノンの状態密度と分散 [2021/06/27 22:04] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== 概要 ====== | ||
- | |||
- | Siのフォノンを例に、状態密度と分散の計算を行う。 これらの計算には任意の波数におけるフォノンの情報が必要であるので、事前に実空間におけるdynamical matrixの計算を行う必要がある。 | ||
- | |||
- | ====== 準備 ====== | ||
- | |||
- | ===== 電子状態計算 ===== | ||
- | |||
- | <file - Si.scf.in> | ||
- | & | ||
- | calculation = ' | ||
- | prefix | ||
- | pseudo_dir | ||
- | outdir | ||
- | / | ||
- | &system | ||
- | ibrav = 2, | ||
- | celldm(1) = 10.2656, | ||
- | nat = 2, | ||
- | ntyp = 1, | ||
- | ecutwfc | ||
- | / | ||
- | & | ||
- | conv_thr = 1.0d-12 | ||
- | / | ||
- | 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 | ||
- | </ | ||
- | |||
- | $ pw.x < Si.scf.in > Si.scf.out | ||
- | |||
- | |||
- | ===== dynamical matrixの計算 ===== | ||
- | |||
- | <file - Si.ph.in> | ||
- | phonons of Si | ||
- | & | ||
- | tr2_ph = 1.0d-14, | ||
- | prefix = ' | ||
- | outdir = ' | ||
- | fildyn = ' | ||
- | ldisp = .true., | ||
- | nq1 = 4, | ||
- | nq2 = 4, | ||
- | nq3 = 4, | ||
- | / | ||
- | </ | ||
- | |||
- | ^変数^説明^ | ||
- | |ldisp|.true.とした場合、波数空間を指定したメッシュ数に区切り、その点におけるフォノンの固有振動数を求める。| | ||
- | |nq1, | ||
- | |||
- | 実行は次のようにする。 | ||
- | |||
- | $ ph.x < Si.ph.in > Si.ph.out | ||
- | |||
- | フォノンの計算には時間がかかるので、メッシュのとりすぎに注意。 | ||
- | |||
- | ===== 実空間へのフーリエ変換 ===== | ||
- | |||
- | q2r.xというプログラムを使って、dynamical matrixを波数空間から実空間に変換する。 | ||
- | 次のファイルを用意する。 | ||
- | |||
- | <file - Si.q2r.in> | ||
- | &input | ||
- | fildyn = ' | ||
- | flfrc = ' | ||
- | / | ||
- | </ | ||
- | |||
- | fildynにはさきほど用意した波数空間のdynamical matrixの出力ファイルを指定する。 | ||
- | 出力先はSi.fcになる。 実行は次のようにする。 | ||
- | |||
- | $ q2r.x < Si.q2r.in > Si.q2r.out | ||
- | |||
- | 以上で準備は終了である。 | ||
- | |||
- | |||
- | ====== フォノンの状態密度と分散 ====== | ||
- | |||
- | ===== 状態密度 ===== | ||
- | |||
- | 次の入力ファイルを用意する。 | ||
- | |||
- | <file - Si.matdyn.phdos.in> | ||
- | &input | ||
- | flfrc = ' | ||
- | fldos = ' | ||
- | asr = ' | ||
- | dos = .true. | ||
- | nk1 = 16, | ||
- | nk2 = 16, | ||
- | nk3 = 16, | ||
- | / | ||
- | </ | ||
- | |||
- | ^変数^説明^ | ||
- | |flfrc|さきほど作成した実空間のdynamical matrixを指定する| | ||
- | |fldos|出力ファイル名。| | ||
- | |asr|acoustic sum ruleの略で、q=0で音響フォノンがゼロになるように指定している。実は数値誤差の関係で音響フォノンはq=0でもゼロになってくれない。また、一次元系ではasr = ' | ||
- | |dos|状態密度を計算する。| | ||
- | |nk1, | ||
- | |||
- | 詳しくはmatdyn.f90の先頭にあるコメントを参照のこと。 | ||
- | |||
- | 実行は次のようにする。 | ||
- | |||
- | $ matdyn.x < Si.matdyn.phdos.in > Si.matdyn.phdos.out | ||
- | |||
- | 下図は Si.phdos に出力されたデータをプロットした。 | ||
- | |||
- | {{: | ||
- | |||
- | |||
- | ===== 分散 ===== | ||
- | |||
- | 分散の場合は計算する波数点の経路(デカルト座標で、単位は格子定数aを使って2π/ | ||
- | |||
- | <file - Si.matdyn.freq.in> | ||
- | &input | ||
- | asr = ' | ||
- | flfrc = ' | ||
- | flfrq = ' | ||
- | q_in_band_form=.true. | ||
- | / | ||
- | 3 | ||
- | 0.5 0.5 0.5 20 | ||
- | 0.0 0.0 0.0 20 | ||
- | 1.0 0.0 0.0 1 | ||
- | </ | ||
- | |||
- | ^変数^説明^ | ||
- | |flfrq|出力するファイル名| | ||
- | |q_in_band_form|バンドの経路を指定。もしも.false.ならすべての波数点を列挙する。| | ||
- | |||
- | 実行はさきほどと同様。 | ||
- | |||
- | $ matdyn.x < Si.matdyn.freq.in > Si.matdyn.freq.out | ||
- | |||
- | 結果はSi.freqに出力される。 | ||
- | 分散はplotband.xでプロットできる。 | ||
- | |||
- | $ plotband.x | ||
- | Input file > Si.freq | ||
- | Reading 6 bands at 41 k-points | ||
- | Range: 0.0000 510.2482eV Emin, Emax > 0, 550 | ||
- | high-symmetry point: 0.5000 0.5000 0.5000 x coordinate 0.0000 | ||
- | high-symmetry point: 0.0000 0.0000 0.0000 x coordinate 0.8660 | ||
- | high-symmetry point: 1.0000 0.0000 0.0000 x coordinate 1.8660 | ||
- | output file (gnuplot/ | ||
- | bands in gnuplot/ | ||
- | output file (ps) > freq.ps | ||
- | Efermi > 0 | ||
- | deltaE, reference E (for tics) 50,0 | ||
- | bands in PostScript? format written to file freq.ps | ||
- | |||
- | なお、縦軸の単位はcm^{-1}である。 | ||
- | |||
- | {{: | ||
- | |||
- | * GNUPLOTでプロットしたい場合は Si.freq.gp に出力されているものを使うと便利です。 | ||
- | |||
- | |||
- | ==== 固有振動モードの可視化 ==== | ||
- | |||
- | * [[http:// | ||
- | |||
- | ホームディレクトリに戻り、Githubから必要なソフトをダウンロードします | ||
- | < | ||
- | $ cd | ||
- | $ git clone https:// | ||
- | </ | ||
- | |||
- | インストールします | ||
- | < | ||
- | $ cd phononwebsite-gh-pages | ||
- | $ python setup.py install --user | ||
- | </ | ||
- | |||
- | フォノン計算の作業ディレクトリに入り、SCF計算の入力ファイルをprefix.scf、フォノン分散の計算で得られたmatdyn.modesをprefix.modesという名前にコピーします。 | ||
- | prefixの部分はなんでも良いです。 | ||
- | * 結晶の基本並進ベクトル CELL_PARAMETERS を指定している場合は、ボーア半径で指定してください。 | ||
- | * 原子位置 (ATOMIC_POSITIONS) は分率座標 (crystal) で指定してください。 | ||
- | |||
- | そして次のコマンドを実行します。 | ||
- | < | ||
- | $ read_qe_phonon.py prefix | ||
- | </ | ||
- | すると prefix.json というファイルが得られます。 | ||
- | |||
- | さきほどダウンロードしたディレクトリの中にある phononwebsite-gh-pages/ | ||
- | |||
- | * エネルギー分散をクリックすることで、そのエネルギーに対応する固有振動モードのアニメーションを見ることができます | ||
- | * 振動のアニメーションを保存したい場合は Export movie の [gif] をクリックすると録画が開始します。 | ||
- | ===== 注意 ===== | ||
- | |||
- | 構造が不安定な系では、対応するモードのフォノンの波数が負になる。 | ||
- | もし有限温度で構造相転移があるのであれば、pw.xで計算する際に& | ||
- | 1[Ry]=158000[K]なので、例えばdegaus=0.001とすれば158Kで構造が安定か調べることができる。 | ||
- | |||
- | (ただし、pw.x計算の際にk点の数はかなりたくさん必要になる) | ||