VASP-phonopy计算声子谱

主要参考:
Jun’s Blog
Bilibili-VASP+phonopy计算声子-中山大学王伟良

背景

在学校的高性能计算平台上计算。

phonopy下载与安装

# 注意conda环境,可以参考我上一篇内容安装anaconda,记得换源
pip install phonopy

声子谱计算

(以下个人见解,可能很多错漏)

声子简单来说就是描述晶格振动模式的量子化的准粒子。
它是没有实体对应的,类似于你将多个不同周期的正弦函数每一个都看成一个“实体”,把它们叫做“正弦子”之类的东西。
类似的概念也有“能级(能带)”(能带是离域化的能级)。
能级是电子的振动模式,声子是晶格的振动模式;能级谱/能带是电子振动模式的可能,声子谱是晶格振动模式的可能。

实操

声子谱计算有两种方法:

1.有限位移法

对原胞进行高精度的优化

主要影响参数:EDIFF,EDIFFG,ISIF
一个INCAR文件的参考:

PREC = Accurate
ENCUT = 500
IBRION = 2  # 结构优化算法
ISIF = 3  # 3是既优化原子坐标也优化晶格
NSW = 100  # 优化步数
NELMIN = 5  # 最小电子自洽步数
EDIFF = 1.0e-08  # 自洽能量收敛判据
EDIFFG = -1.0e-08  # 结构优化能量收敛判据
IALGO = 38  # 算法选择
ISMEAR = 0  # Gaussian smearing
SIGMA = 0.1  # smearing 宽度
LREAL = .FALSE # 以下三个都是控制输出文件的
LWAVE = .FALSE
LCHARG = .FALSE
NCORE = 4  # 并行核数

OUTCAR中看到total force优化到1.0e-04就可以尝试下一步了。
如果优化了很多步,total force 都不减小只上下跳动,那么更改ISIF的参数,改为ISIF = 1

扩胞

phonopy -d --dim='3 3 3' -c CONTCAR

–dim='3 3 3’相当于三个方向上都有三个晶胞,三维空间中有27个晶胞。
一般而言控制在100个原子左右较好(老师傅说的)
扩胞后,会出现 POSCAR-001~POSCAR-011 这样文件名的文件,将它们分别放进子文件夹中。
这些东西是 N 个位移后的 POSCARN的数量取决于结构的对称性,对称性越好 N 越少。
自洽计算各个位移之后的 POSCAR ,可以得到二阶力常数,同时也得到声子谱声子态密度等容热容等热力学性质的原始数据。
可以参考使用shell的循环命令:

for i in {001..011};do mkdir $i && cp POSCAR-$i $i\POSCAR;done

# 一个简单的循环语句
# {001..011}类似一个列表,类似于python的range(1,12)
# 注意{001..011}大括号内没有空格
# do后面是每次循环要干的事包括 mkdir 与 cp 两句命令
# 中间的&&是连接两个命令的,只有前面mkdir执行成功才会执行cp命令

for i in {001..011};do cp INCAR-Phono $i/INCAR; cp POTCAR $i/POTCAR; cp SubLa.sh $i/SubLa.sh; cp KPOINTS-Phono $i/KPOINTS ;done
# 批量准备文件

for i in {002..011};do cd $i; sbatch SubLa.sh; cd ..;echo $i is done;done
# 批量提交任务,各位的服务器并不一定是sbatch的,在上面sbatch SubLa.sh 改成你自己的提交任务的脚本文件。

更改INCAR文件:
INCAR之中有以下几点需要注意:

  1. 磁性的数量,扩胞之后原子数量更改,磁性因此要跟着更改。
  2. IBRION项改为IBRION = -1
  3. NSW 项改为 NSW = 0 (单点计算)
  4. 其他的更改项可以等提交出错了之后再更改……比如我设置了NBANDS项,提交出错之后,把这一项删了让VASP自己设置就好了。
  5. 应该尝试减少KPOINTS网格密度(将会大幅度减小计算时间以及出错的概率,同时也能减少 vasprun.xml 的大小从而降低 phonopy 的运算时间)
    INCARPOTCARKPOINTS提交脚本都放进/001里,然后尝试提交一下。
    如果尝试可以了,就把/001中的 INCAR 改名为 INCAR-PhonoKPOINTS 改名为 KPOINTS-Phono复制出来。(不改名也可以,把我上面第二个循环里面的相应的文件名改成你自己的)

提交任务

在各个文件夹中提交一次vasp任务,计算完成之后会生成一个 vasprun.xml 文件。

ls */vasprun.xml

# 该命令可以列出所有子文件夹中的vasprun.xml
# 如果没有的话可能是你处于子文件夹中

收集结果

phonopy -f 001/vasprun.xml 002/vasp.xml

运行完成之后即生成了一个 FORCE_SETS 文件
准备phonopy的输入文件,文件名可以随便取,比如叫band.conf

ATOM_NAME = Na Cl
DIM = 2 2 2
#PRIMITIVE_AXIS = 0.0 0.5 0.5   0.5 0.0 0.5   0.5 0.5 0.0
FORCE_SETS = READ
EIGENVECTORS = .TRUE.
BAND_CONNECTION = .TRUE.
BAND_LABELS = Gamma M K
BAND = 0.0 0.0 0.0  0.5 0.0 0.0  0.5 0.5 0.0

EIGENVECTORS = .TRUE.输出文件包含原子振动信息
BAND = 0.0 0.0 0.0 0.5 0.0 0.0 0.5 0.5 0.0是画声子谱的时候,是从 Gamma(0.0 0.0 0.0) 画到 M 再画到 K

phonopy -c POSCAR-unitcell -p -s band.conf

运行完成之后会生成一个 band.pdf,即可看到图。

结果与计算优化

先看声子谱

原则上声子谱不应该有负频率。
如果原点有负,则需要提高原胞结构优化的精度。
如果其他地方有负频率,需要扩大超胞。

原子振动信息

band.yaml 中可以看到原子的振动信息。

2 密度泛函微扰理论

高精度优化原胞

同2

构建超胞

与上面的命令相同。
在使用上面的命令之后,除了POSCAR-001等等,还会出现一个SPOSCAR文件。

使用VASP进行微扰计算

INCAR 参数调整:

  1. NSW = 1
  2. IBRION = 8,微扰计算
  3. NPAR, NCORE, KPAR 关闭以免报错
    KPOINTS 调整 k 点密度

计算力常数

phonopy --fc calc-force/vasprun.xml

准备后处理文件band_conf

phonopy -p -s band_conf

TODO

Phonopy准备的位移文件的依据(为什么我的计算会有11个需要计算的东西?)(是布里渊区吗?)
使用晶胞与原胞看Phonopy的位移如何

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值