Phonopyを用いたフォノン計算
フォノン分散の計算を行う。ここでは、phonopyとVASPを組み合わせて計算する。phonopyは、Wien2kやVASP、Quantum espressoなどの第一原理計算でフォノン計算を行うためのpre/ post スクリプトである。
フォノン分散の計算を行う。ここでは、phonopyとVASPを組み合わせて計算する。phonopyは、Wien2kやVASP、Quantum espressoなどの第一原理計算でフォノン計算を行うためのpre/ post スクリプトである。
phonopyをインストールする方法はいくつかあるが、ここでは最も簡単なCondaを用いた方法を取る。CondaはPythonを中心としたプログラムのパッケージ管理システムである。ライブラリの衝突などを避けるために利用される。Condaが実装されている最も有名なツールがAnacondaであるが、ここでは軽量・オープンコミュニティ主体であるMiniforgeを用いる。
公式HP からインストーラーをダウンロード。ここではLinux版とする。
インストーラーの実行;$ bash Miniforge3-Linux-x86_64.sh。対話形式でインストールが進んでゆく。最小パッケージなので、インストールは数分。
途中、インストール場所を聞かれる。デフォルトでは$HOME/miniforge3。ここでは$HOME/local/miniforge3とした。指定したディレクトリが存在しない場合、勝手に作成してくれる。なお、condaでインストールしたライブラリ等はこのディレクトリ内に保存されることになる。
インストールが終了すると、
installation finished.
Do you wish to update your shell profile to automatically initialize conda?
This will activate conda on startup and change the command prompt when activated.
If you'd prefer that conda's base environment not be activated on startup,
run the following command when conda is activated:
conda config --set auto_activate_base false
You can undo this by running `conda init --reverse $SHELL`? [yes|no]
と聞かれる。yesを選ぶことで、.bashrcにCondaの設定を書き込んでくれる。
$ source ~/.bashrc
成功すると、ターミナルの先頭に(base)と表示されるようになる。これは、Condaのbase環境に位置していることを示している。Condaの環境自体を抜け出したければ、$conda deactivate。
手順4でnoを選んだ場合、手動で$HOME/local/miniforge3/binにパスを通し、Condaの初期化;$ conda init bashを行う。
公式HP にあるように、Condaを用いるとSuper easyにphonopyがインストールできる。ただし、馬鹿正直にconda installすると、base環境にインストールされる。これはライブラリの衝突などを予防するためにも避けるべきである。ここでは、phonopy環境を作成し、本環境にインストールする。
phonopy環境の作成;$ conda create -n phonopy -c conda-forge
phonopy環境のアクティベート;$ conda activate phonopy。ターミナル先頭が(base)から(phonopy)に変わるはず。これで、base環境からphonopy環境へ移動した。
phonopyのインストール;$ conda install -c conda-forge phonopy
公式チュートリアル も参照のこと。
計算したい物質のUnit cellのPOSCARを用意する。
4x4x4のスーパーセルを作成する。POSCARが置かれているディレクトリ内にて、$ phonopy -d --dim 4 4 4 --pa auto。すると、SPOSCAR、phonopy_disp.yaml、POSCAR-{index}が作成される。SPOSCARにはスーパーセルの結晶構造が、phonopy_disp.yamlには変位(displacement)に関する情報が、POSCAR-{index}には変位込みのスーパーセルの結晶構造の情報が格納されている。
原子の変位によって力が働くが、構造最適化したい訳ではないので、IBRION = -1、NSW = 0にしておく。
巨大なスーパーセルでの計算に対する計算になるので、いくつかのパラメーターに気をつける。特に、LREAL = Auto。
実空間のユニットセルを大きくした分ブリルアンゾーンは小さくなっているので、kメッシュは粗く取れる。たとえば、もとのユニットセルで12*12*12のkメッシュを使っていたなら、4*4*4のスーパーセルでは3*3*3のkメッシュ。
$ mkdir disp-{001..005}
$ cp POSCAR-001 disp-001/POSCAR
$ cp POSCAR-002 disp-002/POSCAR
INCAR、POTCAR、KPOINTSも各ディレクトリに配置。
各ディレクトリ内で、各POSCARに対してVASP計算。
各VASP計算結果のvasprun.xmlを読み込み、データ収集;
$ phonopy --vasp -f disp-001/vasprun.xml disp-002/vasprun.xml もしくは、$phonopy --vasp -f disp-{001..002}/vasprun.xml
FORCE_SETSが生成される。
※PDFとして保存するには-sオプションを追加すること。
フォノン分散:$ phonopy-load --band "0 0 0 0.5 0 0 0.5 0.5 0 0 0 0 0.5 0.5 0.5" -p