干货PHONOPY 干货详情

PHONOPY使用教程(上)

天玑智研629
第一性原理密度泛函理论声子计算晶格动力学DFPT方法有限位移法力常数计算声子谱声子态密度热力学性质晶格热导率VASP计算计算材料学晶体材料二维材料固体物理

Phonopy简介

由 python编译实现的晶体声子分析程序,是一款基于第一性原理进行声子计算的免费软件。它提供了 VASP 的 Wien2k 接口用来计算原子受力。同样类型的程序还有phon, fropho和phonon。其中,phonon是商业软件,费用较高;因此,有人基于phon的代码开发了fropho和phonopy。fropho是为了代替phon而开发的,目的是为了使用phon更方便。目前,fropho已经停止开发,由python开发的phonopy代替了fropho。phonopy在使用上更加方便,在计算量上更为减少。因为phon, fropho和phonon在移动原子位置时都是一次只移动一个原子的一个方向,而phonopy则可以一次移动一个原子的多个方向,所以和其它程序相比,phonopy最多可以减少2/3的计算量。


Phonopy主要功能

计算声子谱; 计算声子态密度,包括分立态密度; 晶体热力学性质,包括自由能,热容量,熵

图片


Phonopy安装 / Ubuntu16.04


万能安装:


sudo pip install phonopy

或者:


sudo apt-get install python-devsudo apt-get install python-numpysudo apt-get install python-matplotlibsudo apt-get install python-lxmlsudo apt-get install python-yamlhttps://sourceforge.net/projects/phonopy/tar xvfz phonopy-1.11.2.tar.gzcd /home/..../phonopy-1.11.2sudo python setup.py install

注:若出现如下提示,执行


sudo apt-get install python-h5py

后重安装

错误提示:


/usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: #warning "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]#warning "Using deprecated NumPy API, disable it by " \^In file included from /tmp/easy_install-jdGNKr/h5py-2.7.1/h5py/defs.c:561:0:/tmp/easy_install-jdGNKr/h5py-2.7.1/h5py/api_compat.h:27:18: fatal error: hdf5.h: No such file or directory compilation terminated.error: Setup script exited with error: command 'x86_64-linux-gnu-gcc' failed with exit status

1. which phonopy  #安装好后 phonopy 的命令都在 bin 文件夹下



用phonopy算声子谱

第一步,准备输入文件INCAR KPOINTS POSCAR POTCAR

第二步,扩胞


phonopy -d --dim=’x y z’

(x,y,z 是三个方向的扩胞倍数) 。

程序运行后的界面如下图所示,生成一个SPOSCAR 文件,其中包含的结构为由指定单胞扩展得到的x×y×z 的超胞,此外还会生成disp.yaml 以及POSCAR-{number}等文件,前者包含所有的位移信息,后者则表示发生不同位移的超原胞(文件名序号与disp.yaml 中指定位移的顺序一致),此时为了便于区别,可以将原有POSCAR重命名为POSCAR-unitcell。

图片


第三步,计算:这时,有两种方法来进一步计算声子谱,一种是有限位移法(引入位移,计算受力);另一种是DFPT 方法。



A:有限位移法


在VASP 中,直接采用POSCAR-{number}作为POSCAR 计算每个指定位移下的原子受力,即做自洽计算,可以参考以下INCAR:


SYSTEM=ifcPREC=HighISTART=0ICHARG=2ISPIN=1NELM=60;NELMIN=4;NELMDL=-3EDIFF=1E-7ENCUT=500IALGO=38ADDGRID=TrueLREAL= .F.NSW=0IBRION=-1EDIFFG=-1E-7ISMEAR=0; SIGMA=0.01LWAVE=FLCHARG=F

接下来收集力常数,将vasprun.xml-0* (*对应每个POSCAR 的编号)复制到一个文件夹中,并执行


phonopy -f vasprun.xml-0*

即可得到FORCE_SETS文件,这个形式并不能作为ShengBTE 计算晶格热导率的输入文件。如果想得到二阶力常数FORCE_CONSTANTS文件要做进一步后处理。


准备文件band.conf:


ATOM_NAME = Ti O Zr #元素符号DIM = 5 7 1 #扩胞倍数BAND =0.0 0.0 0.0 0.5 0.0 0.0 0.5 0.5 0.0 0.0 0.5 0.0 0.0 0.0 0.0 #声子谱高对称路径BAND_LABELS = G X S Y G  #高对称点FORCE_CONSTANTS = WRITE #写出二阶力常数矩阵

将FORCE_CONSTANTS 重命名为FORCE_CONSTANTS_2ND,即可用作ShengBTE 的输入文件。接下来执行


phonopy-bandplot --gnuplot >571.dat


即可得到声子谱数据,可以直接导入origin等绘图软件中作图。


图片


每个原胞中有n个原子,那么一共有3n种不同频率模式。这3n个独立振动分为3n个支,其中如上图所示最下面的频率最低的3个支是声学支,其余3(n-1)支是光学支。


计算热力学性质(自由能——单位J/mol,熵——单位J/K/mol,热容——单位J/K/mol)


运行命令:


phonopy --dim='2 4 1' -t POSCAR-unitcell mesh.conf

绘制热力学相关参数(热容、熵、自由能)随温度T(热力学温标)变化的曲线

运行命令:


phonopy --dim='2 4 1' -t -p POSCAR-unitcell mesh.conf

mesh.conf为:


ATOM_NAME = Bi O Se    #元素符号DIM = 5 7 1        #扩胞倍数MP = 21 21 1       # 网格密度,二维材料第三边为1


B. DFPT 方法



将phonopy 创建的SPOSCAR 复制到POSCAR 中,运行VASP 进行DFPT 计算,

INCAR 可以参考以下:


YSTEM=ifcPREC=HighISTART=0ICHARG=2ISPIN=1NELM=60;NELMIN=4;NELMDL=-3EDIFF=1E-7ENCUT=500IALGO=38ADDGRID=TrueLREAL= .F.NSW=1IBRION=8EDIFFG=-1E-7ISMEAR=0;SIGMA=0.01LWAVE=FLCHARG=F

计算完成后,执行


phonopy --fc vasprun.xml

即可获得二阶力常数矩阵FORCE_CONSTANTS。


绘制声子谱:在参数设定文件band.conf 中设定


FORCE_CONSTRAINTS = READ

(或者在运行命令时加上选项--readfc),然后运行命令


phonopy --dim="x y z" -c POSCAR-unitcell band.conf

(如果原胞文件为POSCAR则不需指定)。之后计算与有限位移法一致。


评论

0/1000发布评论
全部评论

天玑智研

关注
TA的主页

干货推荐