phononpy中文使用说明.docx
《phononpy中文使用说明.docx》由会员分享,可在线阅读,更多相关《phononpy中文使用说明.docx(12页珍藏版)》请在冰豆网上搜索。
phononpy中文使用说明
phonopy中文使用说明
Phonopy是一个由python实现的晶体声子;计算声子色散谱;;计算声子态密度,包括分立态密度;;声子热力学性质,包括自由能,热容量,焓;;Phonopy通过力常数的方法计算声子谱;同样类型的程序还有phon,fropho,pho;Phonopy是使用python以及C等高级语言;Phonopy使用python的matplotl;在自己的pc机安装win
Phonopy是一个由python实现的晶体声子分析程序。
它是目前提供了VASP的Wien2k的接口用来计算原子受力。
它的主要功能有:
计算声子色散谱;
计算声子态密度,包括分立态密度;
声子热力学性质,包括自由能,热容量,焓;
Phonopy通过力常数的方法计算声子谱。
力常数由计算原子在超晶胞中被移动后的受力得到(Parlinsk-Li-Kawasoe方法)。
同样类型的程序还有phon,fropho,phonon.其中phonon是商业软件,卖的很贵,fropho和phonopy的代码其实都是来自于phon,fropho是为了代替phon而开发的,目的是为了使用phon更方便,phon和fropho主要都是由fortran开发的,而现在fropho已经停止开发,由python开发的phonopy代替了fropho,phonopy在使用上更为方便,在计算量上更为减少。
因为phon,fropho和phonon在移动原子位置时都是一次只移动一个原子的一个方向,而phonopy则可以一次移动一个原子的多个方向,所以和其它程序相比,phonopy最多可以减少2/3的计算量。
Phonopy是使用python以及C等高级语言编写的用于计算声子谱的程序,它可以很方便地在现有的unix或linux操作系统上进行安装。
它利用VASP等第一性原理计算程序来计算有限位移下的原子受力,然后利用phonopy程序处理原子受力获得声子谱。
Phonopy使用python的matplotlib等工具包来绘图,因此在使用Phonopy绘制声子谱等图形时,要求系统有图形用户界面,对于远程机器,需要安装x-manager来获得虚拟的图形用户界面,方法如下:
在自己的pc机安装windows版本的Xmanager(推荐使用Xmanager4或以上版本)。
Xmanager安装完成后启动xstart设置,输入登陆主机IP及账号信息,点击run以后会打开一个终端,在这个终端下运行命令即可绘图
工作流程
Phonopy程序工作流程主要分为前处理、力计算(VASP)或力常数计算(VASP-DFPT计算)、后处理三部分。
输入文件参数设定文件
Phonopy中,输入参数写在一个文件里,然后通过命令
传输给phonopy程序,该文件名可以是任意的(一般为xxx.conf,便于识别,如绘制声子谱时参数设定文件命名为band.conf,绘制DOS时参数设定文件设定为dos.conf等)。
常用参数如下
ATOM_NAME
用于设定元素名称,中间用空格隔开,注意顺序与POSCAR中保持一致。
示例:
EIGENVECTORS
逻辑变量,当取值为.TRUE.时,程序将计算所有本征频率对应的本征波矢(可以用来制作动画),当加入选项-p时,还会计算相应的pDOS。
MASS
用来指定原子的质量(同POSCAR中原子顺序保持一致),一般可以不指定。
示例:
MASS=28.08528.08516.00016.00016.00016.000
DIM
用来指定生成超原胞的大小
示例:
--dim=”mnl”
声子谱计算相关参数
BAND
BAND_POINTS
结构文件(POSCAR)
在phonopy中,结构文件写成VASP的POSCAR文件的格式,除了旧版本的POSCAR格式外,phonopy还支持VASP5.X的POSCAR格式,即在原子数之前增加一行指明元素类型如果改变该文件名,在读取的时候需要另行指定(例如改为POSCAR-unitcell,则在运行命令时需要加上选项-cPOSCAR-unitcell)。
注意:
在指定实空间或倒空间中的坐标时,可以采用分数形式,但是在分数线左右不能留有空格。
力文件(FORCE_SET)
该文件由phonopy根据力计算得到的vasprun.xml文件生成,生成命令为
给出超原胞中原子发生有限位移产生的力的集合。
每个超原胞中包含一个发生位移的原子。
该文件的格式如下:
第一行给出超原胞中的原子数,第二行给出需要计算的超原胞数目(每个超原胞中包含一个发生位移的原子),然后分块写出每个原子位移导致的力(每一块包含一个超原胞中由于一个原子发射位移导致所有原子收到的力),在每一块中,第一行给出超原胞序数,第二行给出原子位移,然后依次给出各原子的受力。
空行将被程序忽略。
力和原子位移都采用笛卡尔坐标。
该文件由phonopy读取dfpt计算得到的vasprun.xml生成,生成命令为
phonopy–
该文件和--nac以及--nac-old选项配合使用在该文件中,第一行的第一个数值为单位转换系数,在VASP中,这一数值可能为
27.2116×0.52918。
第二个数值只有使用--nac_old选项的时候才会用到,它代表一个阻尼系数?
(默认值为2.5),这个参数一般可以忽略。
第二行指定介电常数张量的九个分量,第三行,
输出文件
Phonopy中的输出文件band.yaml
mesh.yaml
qpoints.yaml
thermal_properties.yaml
total_dos.dat和partial_dos.dat
三亿文库包含各类专业文献、文学作品欣赏、外语学习资料、应用写作文书、高等教育、各类资格考试、专业论文、幼儿教育、小学教育、生活休闲娱乐等内容。
具体步骤;以VASP为接口,phonopy有两种工作方式:
;利用VASP计算力来获得声子谱的步骤如下;1.准备POSCAR文件,一般POSCAR中为一;phonopy-d--dim=”mnl”即可生成;注意:
由于phonopy生产超原胞和位移时没有P;POSCAR也可以采用VASP5.2及以上的写法;2.VASP中,直接采用POSCAR-;{number}作
具体步骤
以VASP为接口,phonopy有两种工作方式:
一种是有限位移方法,即只利用VASP来计算力;另一种是DFPT(密度泛函微扰理论)方法,利用VASP计算得到Hessian矩阵(写在vasprun.xml里),然后由phonopy读取Hessian矩阵并生成力常数文件,由此可以计算出体系的声子谱、频谱态密度、热力学性质等。
利用VASP计算力来获得声子谱的步骤如下
1.准备POSCAR文件,一般POSCAR中为一个单胞,然后运行命令
phonopy-d--dim=”mnl”即可生成一个SPOSCAR文件,其中包含的结构为由指定单胞扩展得到的m×n×l的超原胞,此外还会生成disp.yaml以及POSCAR-{number}等文件,前者包含所有的位移信息,后者则表示发生不同位移的超原胞(文件名序号与disp.yaml中指定位移的顺序一致)
注意:
由于phonopy生产超原胞和位移时没有POTCAR文件,所以需要在POSCAR的第一行中依次指明各元素名,这与普通的POSCAR(第一行为注释行)是不一样的,而
POSCAR也可以采用VASP5.2及以上的写法,即在晶格基矢后增加一行指明各元素名称。
2.VASP中,直接采用POSCAR-
{number}作为POSCAR计算每个指定位移下的原子受力。
可以参考以下的INCARPREC=Accurate
IBRION=-1
ENCUT=500
EDIFF=1.0e-08
ISMEAR=0;SIGMA=0.01
IALGO=38
LREAL=.FALSE.
ADDGRID=.TRUE.
LWAVE=.FALSE.
LCHARG=.FALSE.
注意在计算中不要弛豫结构(IBRION=-1,静态计算)
3.后处理,主要分三步:
利用力计算中得到的力来计算力常数;利用力常数构造动力
学矩阵;利用动力学矩阵计算声子谱(包括本征频率及相应的本征波矢)。
在这一步开始前,可以准备如下文件mesh.conf
ATOM_NAME=SiO
DIM=223
MP=888
运行命令
计算态密度
运行命令
计算热力学性质(自由能——单位J/mol,熵——单位J/K/mol,热容——单位J/K/mol)
运行命令
phonopy–绘制热力学相关参数(热容、熵、自由能)随温度T(热力学温标)变化的曲线
利用VASP的DFPT方法计算声子谱的步骤如下:
1.建立初始结构POSCAR(或其他指定的文件如POSCAR-unitcell)
2.运行命令phonopy–d–dim="mnl"创建一个m×n×l的超原胞(存在SPOSCAR文件
中)。
在这一方法中POSCAR-{number}和disp.yaml都不会用到。
3.将phonopy创建的SPOSCAR复制到POSCAR中,运行VASP进行DFPT计算
(注意:
VASP的DFPT只能计算?
点的力常数!
是否有影响?
),INCAR的参考设定为
PREC=Accurate
ENCUT=500
IBRION=8
EDIFF=1.0e-08
IALGO=38
ISMEAR=0;SIGMA=0.1
LREAL=.FALSE.
ADDGRID=.TRUE.
LWAVE=.FALSE.
LCHARG=.FALSE.
(注意:
此处在INCAR中设定IBRION=8,根据VASP说明书,设定IBRION=7或8可以进行DFPT计算并得到Hessian矩阵,但是只有在VASP5.1及更高版本中才可以进行该计算)
4.确定VASP计算得到的vasprun.xml文件中包含Hessian矩阵元素,然后运行命令
phonopy--fcvasprun.xml生成力常数文件FORCE_CONSTRAINTS
5.绘制声子谱:
在参数设定文件band.conf中设定FORCE_CONSTRAINTS=READ
(或者在运行命令时加上选项--readfc),然后运行命令phonopy--dim="mnl"-cPOSCAR-unitcellband.conf(如果原胞文件为POSCAR则不需指定)
1.Phonopy简介
Phonopy是一个由python实现的的晶体声子分析程序。
它是目前提供了VASP的Wien2k的接口用来计算原子受力。
它的主要功能有:
计算声子色散谱;
计算声子态密度,包括分立态密度;
声子热力学性质,包括自由能,热容量,焓;
Phonopy通过力常数的方法计算声子谱。
力常数由计算原子在超晶胞中被移动后的受力得到(Parlinsk-Li-Kawasoe方法)。
同样类型的程序还有phon,fropho,phonon.其中phonon是商业软件,卖的很贵,fropho和phonopy的代码其实都是来自于phon,fropho是为了代替phon而开发的,目的是为了使用phon更方便,phon和fropho主要都是由fortran开发的,而现在fropho已经停止开发,由python开发的phonopy代替了fropho,phonopy在使用上更为方便,在计算量上更为减少。
因为phon,fropho和phonon在移动原子位置时都是一次只移动一个原子的一个方向,而phonopy则可以一次移动一个原子的多个方向,所以和其它程序相比,phonopy最多可以减少2/3的计算量。
2.Phonopy的安装
phonopy主要由python开发,其中的找晶体空间群功能是由C语言(spglib)实现。
在安装phonopy时需要安装以下它所依赖的软件包:
Python的开发包
numpy,numpy-dev
matplotlib
python-lxml
python-yaml
如果是使用的Ubuntu/Debian系统只需:
sudoaptitudeinstallpython-devpython-numpy\
python-matplotlibpython-tkpython-lxmlpython-yaml
如果是OpenSUSE则可以去http:
//software.opensuse.org/search搜索下载安装相关软件包。
去下载phonopy的最新软件包.
解压后进入软件包的c目录,
su
pythonsetup.pyinstall
编译安装所需要的python模块。
将PATH/phonopy-0.6.1$PATH里:
比如:
exportPATH=~/opt/phonopy-0.6.1:
$PATH
3.Phonopy的简单使用
下面我以BC5为例说明如何和VASP做接口计算声子谱:
a,建立超胞
准备POSCAR文件
单胞和原胞都可以
准备INPHON文件
ATOM_NAME=BC
NDIM=221
LSUPER=.TRUE.
简单说明:
第一行为原子符号名BC,注意要和POSCAR中的顺序相同。
第二行为要建的超胞的维数。
第三行是指要建立移动原子的POSCAR.
然后输入命令:
phonopy.py
就会输出DISP,POSCAR-*(001,002,003,…)
在本例出会输出12个POSCAR-*,依次为POSCAR-001,…POSCAR-012
b,计算力常数
将这些POSCAR-*做SCF,将输出文件vasprun.xml保存下来。
我的计算脚本为:
#!
/bin/sh
forain010203040506070809101112
do
cpPOSCAR-0$aPOSCAR
/opt/intel/impi/3.1/bin64/mpiexec-n8/share/apps/vasp/bin/vaspmpi_mkl10_O1>>out.vasp2>>err.vasp&
wait
cpvasprun.xmlvasprun.xml-0$a
done
我的INCAR为:
SYSTEM=BC5
PREC=Accurate
ENCUT=520
EDIFF=1e-5
NSW=0
ISMEAR=0
SIGMA=0.05
LCHARG=FALSE
LWAVE=FALSE
这样计算结束后会得到vasprun.xml-001,…,vasprun.xml-012
然后,执行命令:
phonopy.py-fvasprun.xml-*
就会得到文件FORCES
c,得到声子谱
有了文件FORCES后就可以计算声子谱了,这时将INPHON改为以下内容:
ATOM_NAME=BC
NDIM=221
ND=7
NPOINTS=51
QI=0.00.00.50.00.50.50.00.50.00.00.00.00.50.50.00.50.00.00.50.00.5
QF=0.00.50.50.00.50.00.00.00.00.50.50.00.50.00.00.50.00.50.50.50.5
简单说明:
ND是指有几条路径;
NPOINTS是指在每两个高对称性点间插入多少个点,包括边界;
QI和QF给出路径的起始和结束点。
其中我用的Q点顺序为:
0.00.00.5Z
0.00.50.5T
0.00.50.0Y
0.00.00.0G
0.50.50.0S
0.50.00.0X
0.50.00.5U
0.50.50.5R
执行命令
phonopy.py-p
即可画出声子谱,如果执行
phonopy.py-p-s
即可将声子谱曲线保存为PDF文件。
其中声子谱的数据是以yaml格式保存在band.yaml里的。
如果你想用Origin,Qtiplot,Xmgrace等工具画图的话,可以用我写的python脚本,readband.py (http:
//www.zhuli.name/file/readband.py)将band.yaml转换一下,输出文件有两个band.dat,qpoint.dat.
其中band.dat是声子谱数据,qpoint.dat是高对称性点的数据。
以上只是phonopy的其本用法,如果要计算声子态度度和热力学性质的话可以参考
上的文档,还是比较简单的。