二维材料热电性质计算方法(一)
作者简介:
王老师,电子科技大学博士,研究方向:热电;
戚同学,新加坡国立大学硕士,电子科技大学博士,研究方向:热电。
计算教程
本教程旨在帮助初学者快速掌握二维材料热电性质计算方法。欢迎广大学者阅览,如有错误请及时批评指正。教程包括:
结构优化
声子谱和声子态密度计算
从头算分子动力学(AIMD)计算
材料的能带结构(band structure)和态密度(DOS)计算
考虑自旋轨道相互作用(SOC)和范德瓦尔斯力(vdW)下材料的能带结构计算
弛豫时间的计算
热输运性质的计算
电输运参数和ZT值的计算
一、结构优化
结构优化是指借助软件VASP,对整个输入体系的坐标进行结构优化,从而得到一个能量稳定的基态结构(包含基态晶格常数、原子坐标等参数)。后续所有性质计算都是基于优化后的基态结构进行的,对二维材料的结构优化具体步骤如下:
第一步,准备输入文件INCAR,POSCAR,POTCAR,KPOINTS,其中材料的初始结构文件POSCAR可以在材料库Materials Project或者是2D materials上面查找,也可以在Materials studio中直接构建。POTCAR可以在赝势库里面找(注意区分GGA和LDA方法),K-mesh一般取15×15×1就够了,如果体系较难收敛,可以首先进行粗优化(k-mesh较小的优化)后进行细优化(k-mesh较大的优化),即KPOINTS设置如下:
Automatic mesh
0
MP
15 15 1
0 0 0
INCAR设置如下:
SYSTEM=opt
PREC=Accurate
ISTART=0
ICHARG=2
ENCUT=500
NELM=60
NELMIN=8
NELMDL=-3
EDIFF=1E-4
LREAL=.FALSE.
EDIFFG=-1E-2
NSW=200
IBRION=1
ISIF = 4
POTIM =0.3
NPAR = 4
ISMEAR=0
SIGMA=0.01
LWAVE=.FALSE.
LCHARG=.FALSE.
在超算上调用VASP进行计算。优化结束后,检查优化是否成功,执行命令:grep accu OUTCAR,若出现reached required accuracy - stopping structural energy minimisation的字样,则说明已达到收敛标准。
第二步,将CONTCAR重新命名为POSCAR,执行命令:mv CONTCAR POSCAR,然后将INCAR中的ISIF值设为2,EDIFFG设为-1E-3,再优化一次,优化结束后检查是否收敛。
第三步,将CONTCAR重新命名为POSCAR,将INCAR中的EDIFFG设为-1E-5,再优化一次(每次优化结束都要进行检测)。优化成功后,创建新文件夹,将优化生成的CONTCAR保存到新文件夹下并重命名为POSCAR,以便后续的声子谱计算和自洽计算。
二、声子谱和声子态密度计算
在算声子谱之前,我们需要介绍一个软件:Phonopy,它是一个由python编译实现的晶体声子分析程序,是一款基于第一性原理进行声子相关性质计算的免费软件。
它提供了VASP、QE、Wien2k等软件接口用来计算原子受力。同样类型的程序还有phon, fropho, phonon,其中,phonon是商业软件,费用较高。
fropho和phonopy的代码其实都是来自于phon。fropho是为了代替phon而开发的,目的是为了使用phon更方便,phon和fropho主要都是由fortran语言来写的。
现在fropho已经停止开发,由python开发的phonopy代替。phonopy在使用上更加方便,在计算量上也更为减少。
因为phon,fropho和phonon在移动原子位置时都是一次只移动一个原子的一个方向,而phonopy则可以一次移动一个原子的多个方向,所以和其它程序相比,phonopy最多可以减少2/3的计算量。
它的主要功能有:计算声子谱; 计算声子态密度,包括分立态密度; 晶体热力学性质,包括自由能,热容量,熵等。
(一)Phonopy 安装(Ubuntu16.04)
万能安装:sudo pip install phonopy,或者:
sudo apt-get install python-dev
sudo apt-get install python-numpy
sudo apt-get install python-matplotlib
sudo apt-get install python-lxml
sudo apt-get install python yaml
https://sourceforge.net/projects/phonopy/
tar xvfz phonopy-1.11.2.tar.gz
cd /home/..../phonopy-1.11.2
sudo 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执行文件的位置。一般安装后 phonopy 的命令都在 bin 文件夹下。
同时也可以使用anaconda环境下的conda install phonopy进行一键安装(phonopy官网有详细介绍)
(二)用phonopy算声子谱(DFPT)
1. 在装有phonopy的超算上运行命令:module load phonopy来为后续调用phonopy做准备。
2. 将结构优化后的原胞POSCAR文件命名为POSCAR-unitcell,执行操作命令:mv POSCAR POSCAR-unitcell
3. 将原胞扩胞为超胞,执行命令:phonopy -d --dim="5 5 1" -c POSCAR-unitcell(其中5 5 1为扩胞的倍数,因为是二维材料所以c方向扩胞倍数为1,根据实际情况自行修改)
4. 执行命令mv SPOSCAR POSCAR将扩胞得到的文件SPOSCAR命名为POSCAR。
5. 将POSCAR文件连同INCAR, KPOINTS, POTCAR在vasp中计算,INCAR设置如下(具体参数根据实际情况自行修改):
PREC=High
ENCUT=500
ISTART=0
ICHARG=2
ISPIN=1
NELM=60;NELMIN=8;NELMDL=-3
EDIFF=1E-7
IALGO=38
ADDGRID=.True.
LREAL=.FALSE.
NSW=1
IBRION=8
EDIFFG=-1E-6
ISMEAR=0;SIGMA=0.01
LWAVE=.FALSE.
LCHARG=.FALSE.
ADDGRID=.TRUE.
KPOINTS设置如下:
Phonon calculation
0
Monkhorst-Pack
3 3 1
0 0 0
6. 完成VASP计算后,确认vasprun.xml中含有关键词hessian,执行命令:grep hessian vasprun.xml
7. 创建二阶力常数矩阵:phonopy --fc vasprun.xml,得到FORCE_CONSTANTS文件,此文件即为二阶力常数矩阵文件,后面还将用于晶格热导率的计算。
8. 创建band.conf文本文件,参数设置如下(高对称点路径可通过vaspkit得到):
ATOM_NAME = Al I Se #元素符号
DIM = 5 5 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 = READ #二阶力常数矩阵可读
9. 运行命令:phonopy --dim="5 5 1" -c POSCAR-unitcell band.conf,得到band.yaml文件。
10. 最后运行命令:phonopy-bandplot --gnuplot band.yaml > band.dat,得到band.dat文件,将此文件拖入Origin中画图即可得到声子谱图像,如图1(可以将最下面三条线的数据设为不同列,以便于用不同颜色标出来,从上到下分别为声学支ZA,TA和LA),观察有无虚频以确认结构稳定性。

图1
(三)用phonopy算声子态密度
在算出声子谱的基础上,创建mesh.conf文本文件,参数设置如下:
ATOM_NAME = Al I Se
DIM = 5 5 1
MP=12 12 1
PDOS=1 2, 3 4, 5 6
FORCE_CONSTANTS = READ
BAND_POINTS = 71
运行命令:phonopy –dim='5 5 1' -c POSCAR-unitcell mesh.conf
得到projected_dos.dat文件,拖到Origin中画图,得到声子态密度图像(从第二列数据开始,每一列对应每个原子的态密度),对比着之前计算得到的声子谱可以分析声学支与光学支之间的相互作用关系,以Ir2Cl2O2为例,如图2。

评论
天玑智研

干货推荐

分子动力学模拟:从原始轨迹到科学结论的推理路径解析
吃鱼不
123 3

一篇读懂紫外-可见吸收光谱(UV-Vis)
奥黛丽赫●猫
147 4

vasp声子谱计算(DFPT)
王磊
774 4

模态分析到底在算啥?搞懂这个,结构为什么会自己振动就明白了
莫名其妙
63 4

研究生有限元复习重点
爽子
67 6

计算机材料设计Materials-Studio教程3
活着
33 1
