PhonopyとQuantum ESPRESSOを用いたNaClのフォノン計算
Last Update:2024/10/04
1.はじめに
Phonopyは第一原理計算ソフトと組み合わせてフォノンの性質を抽出するポストプロセスプログラムです。VASPやWIEN2k, Quantum ESPRESSOなどの第一原理計算ソフトに対応しています。ここではDocker版のMateriApps LIVE!を利用して、PhonopyとQuantum ESPRESSOを組み合わせたNaClのフォノンの計算例を紹介します。Docker版のMateriApps LIVE!のインストール方法および使い方はここを参照してください。
2.下準備
まずDockerにログインし、phonopyをインストールします。
pip3 install phonopy
ローカルにインストールされるので、パスを通しておきます。
export PATH=$PATH:$HOME/.local/bin/
サンプルの入力ファイルを使うために、ソースコードもとってきておきます。(コンパイルの必要はありません。)
git clone https://github.com/phonopy/phonopy.git
作業用のディレクトリを作成し、入っておきます。
mkdir phonopy_test cd phonopy_test
サンプルの入力ファイルをとってきます。
cp ../phonopy/example/NaCl-QE/NaCl.in . cp ../phonopy/example/NaCl-QE/header.in . cp ../phonopy/example/NaCl-QE/band.conf .
3.電子状態計算とフォノンのバンド図
Quantum ESPRESSOを用いた電子状態計算を実行しておきます。まずコピーしてきたheader.inを修正しておく必要があります。修正箇所は下記の通りです。
1.&controlセクションでpseudo_dir = ‘./’と変更
同じ修正をNaCl.inに対しても行っておきます。次に結晶の原子配置を少しだけ変化させた格子構造の入力ファイルを作成します。まずphonopyを実行しておきます。
phonopy --qe -d --dim="2 2 2" -c NaCl.in
これに共通部分のheader.inを付け加えて、入力ファイルを作成します。
for i in {001,002};do cat header.in supercell-$i.in >| NaCl-$i.in; done
計算の前に擬ポテンシャルをとってきます。ここからNa.pbe-spn-kjpaw_psl.0.2.UPFを、ここからCl.pbe-n-kjpaw_psl.0.1.UPFを、それぞれとってきます。shareフォルダを作成しておくとそこでDockerとのやりとりが可能になります。Dockerの外でダウンロードしたあと、shareにファイルを移動させて、さらにそのファイルを作業フォルダに移動させるといいでしょう。その後、Quantum ESPRESSOを実行します。
mpirun -np (並列数) pw.x -i NaCl-001.in |& tee NaCl-001.out mpirun -np (並列数) pw.x -i NaCl-002.in |& tee NaCl-002.out
並列数の上限は計算環境によります。並列数を上げるほど計算は速くなります。これにより、NaCl-001.out, NaCl-002.outに計算結果が出力されるので、それを用いてphonopyで用いる入力ファイルFORCE_SETSを作成します。
phonopy -f NaCl-001.out NaCl-002.out
いったんFORCE_SETSができてしまえば、phonopyでさまざまな計算ができるようになります。例えば、フォノンのバンド図を表示させるには、以下のコマンドを実行します。
phonopy --qe -c NaCl.in -p band.conf
以下のようなフォノンのバンド図が出力されれば成功です。
4.長距離相互作用による補正
上述の計算では、離れた原子間に働くクーロン相互作用の効果が十分に取り入れられていません。特にNaClのようなイオン性結晶では、長距離相互作用を適切に考慮するとガンマ点付近の光学フォノンのバンドが影響を受けます(これは長波長の光学フォノンが電気分極を生じ、それによる長距離クーロン相互作用エネルギーがフォノンのエネルギーに大きな影響を及ぼすためです)。この効果を取り入れた計算を行うには、Quantum ESPRESSOの通常の計算を行い、イオンの有効電荷と誘電率を求めておく必要があります。まず、コピーしてあったNaCl.inの入力ファイルを使って、Quantum ESPRESSOによる電子状態計算をします。
mpirun -np (並列数) pw.x < NaCl.in |& tee NaCl.out
次に入力ファイルNaCl.ph.inをコピーしておきます。
cp ../phonopy/example/NaCl-QE/NaCl.ph.in .
このファイルの内容は以下のようになっています。
&inputph tr2_ph = 1.0d-14, epsil = .true. / 0 0 0
これを用いて、Quantum ESPREESOのph.xを実行します。
mpirun -np (並列数) ph.x -i NaCl.ph.in |& tee NaCl.ph.out
この計算は時間がかかります(数時間程度)。計算が終わったら、NaCl.ph.outの中身をみてましょう。
cat NaCl.ph.out
でてきた出力ファイルの内容にDielectric constant, Effective chargesなどの出力項目があるはずです。
Dielectric constant in cartesian axis ( 2.472962895 0.000000000 0.000000000 ) ( 0.000000000 2.472962895 0.000000000 ) ( 0.000000000 0.000000000 2.472962895 ) (中略) Effective charges (d Force / dE) in cartesian axis without acoustic sum rule applied (asr) atom 1 Na Mean Z*: 1.09891 Ex ( 1.09891 0.00000 0.00000 ) Ey ( 0.00000 1.09891 0.00000 ) Ez ( 0.00000 0.00000 1.09891 ) (中略) atom 5 Cl Mean Z*: -1.10236 Ex ( -1.10236 0.00000 0.00000 ) Ey ( 0.00000 -1.10236 0.00000 ) Ez ( 0.00000 0.00000 -1.10236 )
この結果をみて、BORNというファイルを作成します。どのように作成しても構いませんが、例えば
emacs BORN
として、以下の内容をタイプしてセーブしておき、emacsを抜けます。
default value 2.472962895 0 0 0 2.472962895 0 0 0 2.472962895 1.10 0 0 0 1.10 0 0 0 1.10 -1.10 0 0 0 -1.10 0 0 0 -1.10
ファイルができたらphonopyを–nacオプションを付けて実行します。
phonopy --qe --nac -c NaCl.in -p band.conf
以下のような図が出力されたら成功です。ガンマ点付近の光学フォノンのバンドの様子が変わっていることがみてとれます。