Quantum EspressoでSiのフォノンバンド図を作成する
Last Update:2023/09/05
MateriApps LIVE!にプレインストールされたQuantum Espressoで何か適当な物質のフォノンバンド図を描いてみようと思います。VirtualboxでMateriApps LIVE!2.0a1(α版)を使ってみました。Macbook Pro 15inch (2017)を使っており、Virtualboxの仮想マシンにCPUを4つ割り当ててみました。
まず、何かひな形がないかQuantum Espressoのウェブhttps://www.quantum-espresso.org/resources/tutorials を検索してみて、2014年のSummer Schoolのページに行き当たりました:
http://www.iiserpune.ac.in/~smr2626/talks-presentations.html
このページの”Hands on: Phonons”を参考にしようと思います。MateriApps LIVE!が起動できたら、スタートメニューからSystem Tools ->LXTerminal を起動し、まず作業ディレクトリを作成しました。
$ mkdir qe-ph-test $ cd qe-ph-test
Summer Schoolのページにあるtutorialをダウンロードして、解凍してみます。
$ wget --no-check-certificate http://www.iiserpune.ac.in/~smr2626/hands_on/week2/july9/Hands_on_phonons.tar.gz $ tar xzvf Hands_on_phonons.tar.gz $ cd Hands_on_phonons $ ls exercise-1 exercise-3 Instructions_slides.odp exercise-2 exercise-4 Instructions_slides.pdf
Instructions_slides.pdfを参考にします。フォノン分散の計算はexercise-2が対応するようです。まず最初にSiの自己無撞着計算を行い、電子密度を計算するようです。インプットファイルはsi_scf.in。せっかくなので並列実行してみます。
$ cd exercise-2 $ ls matdyn_Si_disp.in q2r.in run.sh si_scf.in matdyn_Si_dos.in reference si_ph.in $ mpirun -np 4 -x OMP_NUM_THREADS=1 pw.x < si_scf.in | tee si_scf.out ...(中略)... =------------------------------------------------------------------------------= Error in routine readpp (4): file ../../pseudo/Si.pbe-rrkj.UPF not found =------------------------------------------------------------------------------=
ということで、擬ポテンシャルファイルが見つからないようです。たしかに../../pseudoなどというディレクトリは存在しません。とりあえず、Si.pbe-rrkj.UPFでGoogle検索をしてみると、一番上に該当するファイルが表示されるので、ダウンロードして、改めて実行してみます。
$ cd ../../ $ mkdir pseudo $ cd pseudo $ wget http://www.quantum-espresso.org/wp-content/uploads/upf_files/Si.pbe-rrkj.UPF $ cd ../Hands_on_phonons/exercise-2/ $ mpirun -np 4 -x OMP_NUM_THREADS=1 pw.x < si_scf.in | tee si_scf.out ...(中略)... =------------------------------------------------------------------------------= JOB DONE. =------------------------------------------------------------------------------=
1秒で終わりました。うまくいったようです。次に、一様なq点グリッド(逆空間)で、dynamical matrixを計算するようです。
$ mpirun -np 4 -x OMP_NUM_THREADS=1 ph.x < si_ph.in | tee si_ph.out ...(中略)...
=------------------------------------------------------------------------------=
Error in routine phq_readin (29): Title line missing from input.
=------------------------------------------------------------------------------=
インプットに”title line”が無いと怒られます。(なお、MateriApps LIVE! v. 4.1 docker版にプレインストールされているQuantum Espressoでは指定しなくても実行できます。)とりあえずsi_ph.inの一行目に適当な文字列を追加して再実行してみます。
$ cat si_ph.in testsi #ココを追加 &inputph outdir='./tmp/', prefix='si', ldisp=.true. nq1=4,nq2=4,nq3=4 fildyn='si.dynmat', tr2_ph=1.0d-14, amass(1)=28.086 / $ mpirun -np 4 -x OMP_NUM_THREADS=1 ph.x < si_ph.in | tee si_ph.out ...(略)... =------------------------------------------------------------------------------= JOB DONE. =------------------------------------------------------------------------------=
outputが流れていき、6分ほどで終了しました。新たに、si.dynmat{0–8}というファイルが出力されています。dynamical matrixが計算出来たようです。次に、このdynamical matrixをq空間から実空間に逆フーリエ変換します。
$ mpirun -np 4 -x OMP_NUM_THREADS=1 q2r.x < q2r.in |tee q2r.out
一瞬で終わりました。si444.fcというファイルが新たに生成されており、どうもこれは実空間のforce constant行列の情報を格納しているようです。このファイルから、フーリエ補完により、任意のq点のフォノンを計算することができるとのことです。そのためのインプットファイルはmatdyn_Si_disp.inとして用意されており、中を見てみると、
$ cat matdyn_Si_disp.in &input asr='simple', amass(1)=28.0855, flfrc='si444.fc', flfrq='si.freq' q_in_band_form=.true. / 5 0.0000000 0.0000000 0.0000000 10 0.0000000 0.0000000 1.0000000 10 0.5000000 0.0000000 1.0000000 10 0.5000000 0.5000000 0.5000000 10 0.0000000 0.0000000 0.0000000 1
のように、バンド計算したいq点経路について記述されています。実行してみます。
$ mpirun -np 4 -x OMP_NUM_THREADS=1 matdyn.x < matdyn_Si_disp.in |tee matdyn_Si_disp.out
一瞬で終了し、q点経路上のフォノン振動数の情報が、si.freqに出力されました。Instructions_slide.pdfにはplotband.xを使うとinteractiveにプロットを作成できるとあるので、実行してみます。
$ plotband.x Input file > si.freq Reading 6 bands at 41 k-points Range: -0.0000 499.9411eV Emin, Emax > 0 500 high-symmetry point: 0.0000 0.0000 0.0000 x coordinate 0.0000 high-symmetry point: 0.0000 0.0000 1.0000 x coordinate 1.0000 high-symmetry point: 0.5000 0.0000 1.0000 x coordinate 1.5000 high-symmetry point: 0.5000 0.5000 0.5000 x coordinate 2.2071 high-symmetry point: 0.0000 0.0000 0.0000 x coordinate 3.0731 output file (gnuplot/xmgr) > siph.plot bands in gnuplot/xmgr format written to file siph.plot output file (ps) > siph.ps Efermi > 0 deltaE, reference E (for tics) 100 0 bands in PostScript format written to file siph.ps
evinceで表示してみます。
$ evince siph.ps
Γ点、X点などの情報は自分で追加する必要があるようです。
Related reading
- http://www.stat.phys.titech.ac.jp/SATL_qe_tutorial/phonon.html
- http://www.fisica.uniud.it/~giannozz/QE-Tutorial/tutorial_disp.html
変更履歴
- 2019/7/8 mpirunのオプションに、openMPによるスレッド並列をオフにするための”-x OMP_NUM_THREADS=1″を追記。
- 2023/9/5 チュートリアルファイルをダウンロードする際、wget実行時に–no-check-certificateを指定するよう修正。また、”title line”に関するエラーについて追記。