phonopy中文使用说明

更新时间:2024-04-21 15:29:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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 传输给phonopy程序,该文件名可以是任意的(一般为xxx.conf,便于识别,如绘制声子谱时参数设定文件命名为band.conf,绘制DOS时参数设定文件设定为dos.conf等)。 常用参数如下 ATOM_NAME

用于设定元素名称,中间用空格隔开,注意顺序与POSCAR中保持一致。 示例:ATOM_NAME = Si O EIGENVECTORS

逻辑变量,当取值为.TRUE.时,程序将计算所有本征频率对应的本征波矢(可以用来制作动画),当加入选项-p时,还会计算相应的pDOS。 MASS

用来指定原子的质量(同POSCAR中原子顺序保持一致),一般可以不指定。 示例:MASS = 28.085 28.085 16.000 16.000 16.000 16.000 DIM

用来指定生成超原胞的大小 示例:--dim=”m n l”

声子谱计算相关参数 BAND BAND_POINTS 结构文件(POSCAR)

在phonopy中,结构文件写成VASP的POSCAR文件的格式,除了旧版本的POSCAR格式外,phonopy还支持VASP 5.X 的POSCAR格式,即在原子数之前增加一行指明元素类型 如果改变该文件名,在读取的时候需要另行指定(例如改为POSCAR-unitcell,则在运行命令时需要加上选项-c POSCAR-unitcell)。

注意:在指定实空间或倒空间中的坐标时,可以采用分数形式,但是在分数线左右不能留有空格。

力文件(FORCE_SET)

该文件由phonopy根据力计算得到的vasprun.xml文件生成,生成命令为 phonopy -f 给出超原胞中原子发生有限位移产生的力的集合。每个超原胞中包含一个发生位移的原子。 该文件的格式如下:

第一行给出超原胞中的原子数,第二行给出需要计算的超原胞数目(每个超原胞中包含一个发生位移的原子),然后分块写出每个原子位移导致的力(每一块包含一个超原胞中由于一个原子发射位移导致所有原子收到的力),在每一块中,第一行给出超原胞序数,第二行给出原子位移,然后依次给出各原子的受力。空行将被程序忽略。力和原子位移都采用笛卡尔坐标。

力常数文件(FORCE_CONSTANT)

该文件由phonopy读取dfpt计算得到的vasprun.xml生成,生成命令为 phonopy–fc Born(可选)

该文件和--nac以及--nac-old选项配合使用 Format 在该文件中,第一行的第一个数值为单位转换系数,在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来计算力;另一种是DFPT(密度泛函微扰理论)方法,利用VASP计算得到Hessian矩阵(写在vasprun.xml里),然后由phonopy读取Hessian矩阵并生成力常数文件,由此可以计算出体系的声子谱、频谱态密度、热力学性质等。

利用VASP计算力来获得声子谱的步骤如下

1. 准备POSCAR文件,一般POSCAR中为一个单胞,然后运行命令 phonopy -d --dim=”m n l” 即可生成一个SPOSCAR文件,其中包含的结构为由指定单胞扩展得到的m×n×l的超原胞,此外还会生成disp.yaml以及POSCAR-{number}等文件,前者包含所有的位移信息,后者则表示发生不同位移的超原胞(文件名序号与disp.yaml中指定位移的顺序一致) 注意:由于phonopy生产超原胞和位移时没有POTCAR文件,所以需要在POSCAR的第一行中依次指明各元素名,这与普通的POSCAR(第一行为注释行)是不一样的,而POSCAR也可以采用VASP5.2及以上的写法,即在晶格基矢后增加一行指明各元素名称。 2. 力计算,计算发生指定有限位移时的原子受力。在VASP中,直接采用POSCAR-{number}作为POSCAR计算每个指定位移下的原子受力。可以参考以下的INCAR PREC = 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 = Si O DIM = 2 2 3 MP = 8 8 8 运行命令

phonopy -p mesh.conf 计算态密度 运行命令

phonopy -t mesh.conf 计算热力学性质(自由能——单位J/mol,熵——单位J/K/mol,热容——单位J/K/mol) 运行命令

phonopy –t -p mesh.conf 绘制热力学相关参数(热容、熵、自由能)随温度T(热力学温标)变化的曲线

利用VASP的DFPT方法计算声子谱的步骤如下:

1. 建立初始结构POSCAR(或其他指定的文件如POSCAR-unitcell)

2. 运行命令phonopy –d –dim=\创建一个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 --fc vasprun.xml生成力常数文件FORCE_CONSTRAINTS 5. 绘制声子谱:在参数设定文件band.conf中设定FORCE_CONSTRAINTS = READ

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

POSCAR-unitcell band.conf(如果原胞文件为POSCAR则不需指定)

本文来源:https://www.bwwdw.com/article/srxp.html

Top