计算raman光谱,vasp+phonopy+phono3py+Phonopy-Spectroscopy
一、计算raman光谱软件介绍
在使用第一性原理计算材料的raman光谱时,比较常用的两种软件是quantum espresso和vasp+phonopy,但是个人极度不推荐使用qe计算raman谱,qe计算raman时像PAW和USPP赝势都是不适配的,只能用LDA计算,很多金属算着也容易报错,很容易出虚频,加soc后也没法算raman intensity,本人深受其苦,不得已转而用phonopy
二、phonopy、phono3py、Phononpy-Spectroscopy安装
安装phonopy时主要参考的几篇文章是这些,详细的方式不赘述了
vasp 教程第二季-11.1 phonopy 安装(通过 conda,在 Ubuntu 上安装 Anaconda)
以及 phonopy 官网
总结下就是要先配置好conda,下载好phonopy源码后然后建立一个phonopy的虚拟环境。每次使用phonopy及依赖它的phono3py、Phononpy-Spectroscopy前都要使用
(base) [XXX@swarm02 raman]$ conda activate phonopy
打开phonopy所需的环境,然后进行计算。建立好虚拟环境后,根据文章中的方法在能连接外网的机器上下载好依赖,打包到集群上安装,配置好环境变量就行了,以下是我配置的环境变量:
export PATH=/project/XXX/software/phonopy/bin:$PATH
export PYTHONPATH=/project/XXX/software/phonopy/lib/python3.10/site-packages/phonopy-2.18.0-py3.10-linux-x86_64.egg:$PYTHONPATH
安装好phonopy后,再安装phono3py、Phonopy-Spectroscopy,这两者安装要简单很多,参考 phono3py 官网,我当时网络还好,直接一句conda install -c conda-forge phono3py就安好了,不行的尝试先下载好依赖再安装。Phonopy-Spectroscopy直接在https://github.com/JMSkelton/Phonopy-Spectroscopy/ 下载好安装包,放到指定文件夹配置环境就行了,不需要多余的安装流程,以下是Phonopy-Spectroscopy的环境配置
export PYTHONPATH=/project/XXX/software/phonopy/Phonopy-Spectroscopy/lib:$PYTHONPATH
export PATH=/project/XXX/software/phonopy/Phonopy-Spectroscopy/scripts:$PATH
三、raman谱计算
1、高精度优化
进行声子计算时,对结构优化的要求很高,往往需要进行高精度优化,参考
天玑算-科研服务丨热电教程(4):VASP+Phonopy计算声子谱和二阶力常数矩阵
涉及到OPTCELL更改vasp源码的,我这是组里统一的软件就没有修改,总之就是先按绝对值大一点的EDIFFG(正为能量收敛,负为力收敛,力收敛的难度会更高)先算,然后把EDIFFG绝对值调小,同时精度上去后再改成ISIF=2计算。
2、phonopy扩胞
优化好之后的POSCAR结构文件放在一个新的文件夹里,然后打开phonopy虚拟环境后,运行
(phonopy) [XXX@swarm02 supercell]$ phonopy -d --dim="3 3 1"
–dim=“3 3 1” 表示扩胞为3×3×1的超胞,我使用的结构为二维TMDC,因此扩胞时z方向为1。官网中写明了 -d (CREATE_DISPLACEMENTS = .TRUE.),在phonopy中既可以使用-d这样的command options,也可以将CREATE_DISPLACEMENTS = .TRUE.这样的setting tag写到一个setting.conf文件中,直接以设置文件取代command options,运行
phonopy setting.conf
设置文件如下
CREATE_DISPLACEMENTS = .TRUE.
DIM = 3 3 1
SYMMETRY_TOLERANCE = 1E-4
扩胞输出结果如下
_
_ __ | |__ ___ _ __ ___ _ __ _ _
| '_ \| '_ \ / _ \| '_ \ / _ \ | '_ \| | | |
| |_) | | | | (_) | | | | (_) || |_) | |_| |
| .__/|_| |_|\___/|_| |_|\___(_) .__/ \__, |
|_| |_| |___/
2.18.0
Python version 3.10.10
Spglib version 2.0.2
"supercell.conf" was read as phonopy configuration file.
Crystal structure was read from "POSCAR".
Unit of length: angstrom
Displacements creation mode
Settings:
Symmetry tolerance: 1.00e-04
Supercell: [3 3 1]
Spacegroup: P3m1 (156)
Use -v option to watch primitive cell, unit cell, and supercell structures.
"phonopy_disp.yaml" and supercells have been created.
Summary of calculation was written in "phonopy_disp.yaml".
_
___ _ __ __| |
/ _ \ '_ \ / _` |
| __/ | | | (_| |
\___|_| |_|\__,_|
输出文件如下
(phonopy) [XXX@swarm02 supercell]$ ls
phonopy_disp.yaml POSCAR-001 POSCAR-003 POSCAR-005 POSCAR-007 POSCAR-009 POSCAR-011 SPOSCAR
POSCAR POSCAR-002 POSCAR-004 POSCAR-006 POSCAR-008 POSCAR-010 POSCAR-012 setting.conf
phonopy_disp.yaml为扩胞的信息文件。POSCAR-0*等为扩胞后加上了有限位移的结构文件,用于有限位移法的声子计算;SPOSCAR文件用于DFPT法的声子计算。下面二阶力常数的计算以DFPT法为例。
3、计算二阶力常数
使用DFPT法进行二阶力常数的计算,需要用到SPOSCAR文件,将POSCAR、SPOSCAR打包进一个新的文件夹,将POSCAR文件重命名为POSCAR-unitcell,SPOSCAR文件重命名为POSCAR,同时创建INCAR、KPOINTS、POTCAR文件,我的INCAR文件如下
SYSTEM = Rhh
PREC = High #
ISTART = 0
ICHARG = 2
ISPIN = 1
NELM = 60
NELMIN = 4
NELMDL = -3
EDIFF = 1E-7
ENCUT = 400
IALGO = 38
ADDGRID = True
LEPSILON = True
LREAL = .F.
NSW = 1 #走一个离子步
IBRION = 8 #IBRION=8 就代表使用 DFPT 方法来计算声子谱
ISMEAR = 0
SIGMA = 0.01
SYMPREC = 1E-6 #不加有时候会有报错
KPOINTS文件如下
KPOINTS
0
Monkhorst
2 2 1
0 0 0
为了节省计算的时间,这里仅取2 2 1的K点进行计算,我计算过程中顺带把声子谱也一起算了,貌似算raman谱只需要计算Γ点?不太确定,有兴趣的可以对比下差别。这一步涉及到系统响应的计算,动力学矩阵和力常数的计算,时间较长。
vasp算完后,需要根据vasprun.xml文件提取二阶力常数,运行指令与输出如下
(phonopy) [XXX@swarm02 fc2]$ phonopy --fc vasprun.xml --hdf5
_
_ __ | |__ ___ _ __ ___ _ __ _ _
| '_ \| '_ \ / _ \| '_ \ / _ \ | '_ \| | | |
| |_) | | | | (_) | | | | (_) || |_) | |_| |
| .__/|_| |_|\___/|_| |_|\___(_) .__/ \__, |
|_| |_| |___/
2.18.0
Python version 3.10.10
Spglib version 2.0.2
force_constants.hdf5 has been created from vasprun.xml.
Atom types: Mo Se W
_
___ _ __ __| |
/ _ \ '_ \ / _` |
| __/ | | | (_| |
\___|_| |_|\__,_|
得到了二阶力常数文件force_constants.hdf5,这里为了方便后续raman谱计算的参考,采用hdf5文件格式输出
4、获得mesh文件
参考Phonopy-Spectroscopy github官网中SiO2的例子https://github.com/skelton-group/Phonopy-Spectroscopy/tree/master/example/a-SiO2,生成包含Γ点声子频率和本征态的mesh.hdf5或mesh.yaml文件,这一步需要用到之前扩胞时生成的phonopy_disp.yaml文件,记得把文件copy过来,运行指令如下
(phonopy) [XXX@swarm02 fc2]$ phonopy --dim="3 3 1" -c POSCAR-unitcell --readfc --hdf5 --fc-symmetry --mesh="1 1 1" --eigenvectors
获得mesh.hdf5文件。
5、确定具有raman活性的声子模式
为了确定具有raman活性的声子模式,需要根据结构的空间群进行确定,首先生成irreps.yaml文件
(phonopy) [XXX@swarm02 fc2]$ phonopy --dim="3 3 1" -c POSCAR-unitcell --readfc --hdf5 --fc-symmetry --irreps="0 0 0"
输出结果如下,也可以直接在irreps.yaml文件中查看
_
_ __ | |__ ___ _ __ ___ _ __ _ _
| '_ \| '_ \ / _ \| '_ \ / _ \ | '_ \| | | |
| |_) | | | | (_) | | | | (_) || |_) | |_| |
| .__/|_| |_|\___/|_| |_|\___(_) .__/ \__, |
|_| |_| |___/
2.18.0
Python version 3.10.10
Spglib version 2.0.2
"symm.conf" was read as phonopy configuration file.
Crystal structure was read from "POSCAR-unitcell".
Unit of length: angstrom
Ir-representation mode
Settings:
Symmetry tolerance: 1.00e-04
Supercell: [3 3 1]
Spacegroup: P3m1 (156)
Use -v option to watch primitive cell, unit cell, and supercell structures.
Force constants are read from "force_constants.hdf5".
Force constants format was transformed to compact format.
Array shape of force constants: (6, 54, 3, 3)
-------------------------------
Irreducible representations
-------------------------------
q-point: [0. 0. 0.]
Point group: 3m
Original rotation matrices:
1 2 3 4 5 6
-------- -------- -------- -------- -------- --------
1 0 0 0 -1 0 -1 1 0 0 -1 0 -1 1 0 1 0 0
0 1 0 1 -1 0 -1 0 0 -1 0 0 0 1 0 1 -1 0
0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1
Transformation matrix:
1.000 0.000 0.000
-0.000 1.000 0.000
0.000 0.000 1.000
Rotation matrices by transformation matrix:
E C3 C3 sgv sgv sgv
-------- -------- -------- -------- -------- --------
1 0 0 0 -1 0 -1 1 0 0 -1 0 -1 1 0 1 0 0
0 1 0 1 -1 0 -1 0 0 -1 0 0 0 1 0 1 -1 0
0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1
Character table:
1 ( -0.004): Not found. Try adjusting tolerance value in IRREPS.
( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0)
2 ( -0.001): Not found. Try adjusting tolerance value in IRREPS.
( 1, 0.0) ( 0, 180.0) ( 0, 180.0) ( 1, 180.0) ( 0, 180.0) ( 1, 0.0)
3 ( 0.001): Not found. Try adjusting tolerance value in IRREPS.
( 1, 0.0) ( 0, 180.0) ( 0, 180.0) ( 1, 0.0) ( 0, 0.0) ( 1, 180.0)
4 ( 0.133): E
( 2, 0.0) ( 1, 180.0) ( 1, 180.0) ( 0, 0.0) ( 0, 0.0) ( 0, 0.0)
6 ( 0.226): A1
( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0)
7 ( 4.897): E
( 2, 0.0) ( 1, 180.0) ( 1, 180.0) ( 0, 0.0) ( 0, 0.0) ( 0, 0.0)
9 ( 5.073): E
( 2, 0.0) ( 1, 180.0) ( 1, 180.0) ( 0, 0.0) ( 0, 0.0) ( 0, 0.0)
11 ( 7.118): A1
( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0)
12 ( 7.201): E
( 2, 0.0) ( 1, 180.0) ( 1, 180.0) ( 0, 0.0) ( 0, 0.0) ( 0, 0.0)
14 ( 7.316): A1
( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0)
15 ( 8.365): E
( 2, 0.0) ( 1, 180.0) ( 1, 180.0) ( 0, 0.0) ( 0, 0.0) ( 0, 0.0)
17 ( 8.990): A1
( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0)
18 ( 10.337): A1
( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0) ( 1, 0.0)
IR representations:
1 ( -0.004):
1 ( 1.000 -0.000i)
2 ( 0.989 -0.000i)
3 ( 0.989 -0.000i)
4 ( 0.986 -0.000i)
5 ( 0.996 -0.000i)
6 ( 0.997 -0.000i)
2 ( -0.001):
1 ( 1.000 -0.000i)
2 (-0.490 -0.000i)
3 (-0.490 -0.000i)
4 (-0.794 -0.000i)
5 (-0.102 -0.000i)
6 ( 0.916 -0.000i)
3 ( 0.001):
1 ( 1.000 -0.000i)
2 (-0.499 -0.000i)
3 (-0.499 -0.000i)
4 ( 0.809 -0.000i)
5 ( 0.106 -0.000i)
6 (-0.913 -0.000i)
4 ( 0.133):
1 ( 1.000 -0.000i) ( 0.000 -0.000i)
( 0.000 -0.000i) ( 1.000 -0.000i)
2 (-0.500 -0.000i) ( 0.866 -0.000i)
(-0.866 -0.000i) (-0.500 -0.000i)
3 (-0.500 -0.000i) (-0.866 -0.000i)
( 0.866 -0.000i) (-0.500 -0.000i)
4 (-0.745 -0.000i) (-0.667 -0.000i)
(-0.667 -0.000i) ( 0.745 -0.000i)
5 ( 0.950 -0.000i) (-0.311 -0.000i)
(-0.311 -0.000i) (-0.950 -0.000i)
6 (-0.205 -0.000i) ( 0.979 -0.000i)
( 0.979 -0.000i) ( 0.205 -0.000i)
6 ( 0.226):
1 ( 1.000 -0.000i)
2 ( 1.000 -0.000i)
3 ( 1.000 -0.000i)
4 ( 1.000 -0.000i)
5 ( 1.000 -0.000i)
6 ( 1.000 -0.000i)
7 ( 4.897):
1 ( 1.000 -0.000i) ( 0.000 -0.000i)
( 0.000 -0.000i) ( 1.000 -0.000i)
2 (-0.500 -0.000i) ( 0.866 -0.000i)
(-0.866 -0.000i) (-0.500 -0.000i)
3 (-0.500 -0.000i) (-0.866 -0.000i)
( 0.866 -0.000i) (-0.500 -0.000i)
4 (-0.550 -0.000i) ( 0.835 -0.000i)
( 0.835 -0.000i) ( 0.550 -0.000i)
5 (-0.448 -0.000i) (-0.894 -0.000i)
(-0.894 -0.000i) ( 0.448 -0.000i)
6 ( 0.998 -0.000i) ( 0.059 -0.000i)
( 0.059 -0.000i) (-0.998 -0.000i)
9 ( 5.073):
1 ( 1.000 -0.000i) ( 0.000 -0.000i)
( 0.000 -0.000i) ( 1.000 -0.000i)
2 (-0.500 -0.000i) ( 0.866 -0.000i)
(-0.866 -0.000i) (-0.500 -0.000i)
3 (-0.500 -0.000i) (-0.866 -0.000i)
( 0.866 -0.000i) (-0.500 -0.000i)
4 (-0.966 -0.000i) (-0.260 -0.000i)
(-0.260 -0.000i) ( 0.966 -0.000i)
5 ( 0.708 -0.000i) (-0.706 -0.000i)
(-0.706 -0.000i) (-0.708 -0.000i)
6 ( 0.258 -0.000i) ( 0.966 -0.000i)
( 0.966 -0.000i) (-0.258 -0.000i)
11 ( 7.118):
1 ( 1.000 -0.000i)
2 ( 1.000 -0.000i)
3 ( 1.000 -0.000i)
4 ( 1.000 -0.000i)
5 ( 1.000 -0.000i)
6 ( 1.000 -0.000i)
12 ( 7.201):
1 ( 1.000 -0.000i) (-0.000 -0.000i)
(-0.000 -0.000i) ( 1.000 -0.000i)
2 (-0.500 -0.000i) ( 0.866 -0.000i)
(-0.866 -0.000i) (-0.500 -0.000i)
3 (-0.500 -0.000i) (-0.866 -0.000i)
( 0.866 -0.000i) (-0.500 -0.000i)
4 (-0.883 -0.000i) ( 0.469 -0.000i)
( 0.469 -0.000i) ( 0.883 -0.000i)
5 ( 0.036 -0.000i) (-0.999 -0.000i)
(-0.999 -0.000i) (-0.036 -0.000i)
6 ( 0.848 -0.000i) ( 0.531 -0.000i)
( 0.531 -0.000i) (-0.848 -0.000i)
14 ( 7.316):
1 ( 1.000 -0.000i)
2 ( 1.000 -0.000i)
3 ( 1.000 -0.000i)
4 ( 1.000 -0.000i)
5 ( 1.000 -0.000i)
6 ( 1.000 -0.000i)
15 ( 8.365):
1 ( 1.000 -0.000i) (-0.000 -0.000i)
(-0.000 -0.000i) ( 1.000 -0.000i)
2 (-0.500 -0.000i) ( 0.866 -0.000i)
(-0.866 -0.000i) (-0.500 -0.000i)
3 (-0.500 -0.000i) (-0.866 -0.000i)
( 0.866 -0.000i) (-0.500 -0.000i)
4 (-0.968 -0.000i) ( 0.250 -0.000i)
( 0.250 -0.000i) ( 0.968 -0.000i)
5 ( 0.268 -0.000i) (-0.963 -0.000i)
(-0.963 -0.000i) (-0.268 -0.000i)
6 ( 0.700 -0.000i) ( 0.714 -0.000i)
( 0.714 -0.000i) (-0.700 -0.000i)
17 ( 8.990):
1 ( 1.000 -0.000i)
2 ( 1.000 -0.000i)
3 ( 1.000 -0.000i)
4 ( 1.000 -0.000i)
5 ( 1.000 -0.000i)
6 ( 1.000 -0.000i)
18 ( 10.337):
1 ( 1.000 -0.000i)
2 ( 1.000 -0.000i)
3 ( 1.000 -0.000i)
4 ( 1.000 -0.000i)
5 ( 1.000 -0.000i)
6 ( 1.000 -0.000i)
Summary of calculation was written in "phonopy.yaml".
_
___ _ __ __| |
/ _ \ '_ \ / _` |
| __/ | | | (_| |
\___|_| |_|\__,_|
关于部分为Not found. Try adjusting tolerance value in IRREPS.的问题,参考文章
How to Identify Raman/IR-Active Phonon Modes Using VASP
创建symm.conf文件可修改 IRREPS tolerance value 再进行计算来获得ir_lable,默认值是1E-5。symm.conf文件如下
IRREPS = 0 0 0
SYMMETRY_TOLERANCE = 1E-4
SHOW_IRREPS = .TRUE.
FC_SYMMETRY = .TRUE.
READ_FORCE_CONSTANTS = .TRUE.
READFC_FORMAT = hdf5
DIM = 3 3 1
CELL_FILENAME = POSCAR-unitcell
(这个问题我看phonopy的mailing list上也有少数人问过,A.Togo回复可能是软件的问题。有时修改后仍无效果,可以考虑更改使用有限位移法计算二阶力常数再计算特征标,或者检查空间群是否正确,我最开始出错就是开始扩胞时,空间群判断不正确,在扩胞时调整tolerance value的值后,可以得到正确的空间群,再进行后续的计算。前几天发邮件问过A.Togo后,他的回答
“Some of your phonon bands are not recognized as degenerated. This
recognition is achieved by just the similarity of phonon frequencies
internally in the phonopy code.
To take care of it, you can increase tolerance, not decrease. Too much
increase induces incorrect degeneracy, so be careful. My
recommendation is to symmetrized your force constants well, i.e.,
using ALM, https://phonopy.github.io/phonopy/setting-tags.html#alm
that is better than --sym-fc command option in general. If it doesn’t
work, your crystal structure may be slightly distorted. Therefore, you
can symmetrize crystal structure by --symmetry option, then
recalculate force constants and phonons.”
可以使用alm在超胞法下对力常数进行对称化处理,由此获得二阶力常数再进行后续计算,经测试后确实有改善。)
然后,在Bilbao Crystallographic Server官网中,选择Raman and Hyper-Raman scattering中的SAM Spectral Active Modes (IR, RAMAN and HYPER-RAMAN Selection Rules)
输入空间群及其Wyckoff Positions,或者直接选择Option2上传带空间群信息的cif文件(没有的话用Material Studio中的Build-find symmetry-impose symmetry给cif文件加上对称信息),获得raman活性模式如下
如图我的结构中A1和E是有raman活性的,对应于irreps.yaml中即为第4 6 7 9 11 12 14 15 17 18个mode
6、计算三阶力常数
为了生成Γ点声子模式的线宽,需要使用phono3py计算三阶力常数,这里只能使用有限位移法计算。首先创建一个新的文件夹,将原胞文件POSCAR-unitcell放进去,然后用phono3py进行扩胞
(phonopy) [XXX@swarm02 fc3]$ phono3py -d --dim-fc2="3 3 1" --dim="1 1 1" -c POSCAR-unitcell
–dim-fc2中的保持和之前计算二阶力常数时的一致,这是为了保证生成的phono3py_disp.yaml文件在后续中计算二阶力常数的扩胞信息仍能和phonopy_disp.yaml保持一致,–dim后为计算三阶力常数扩胞大小,由于会生成更多的晶胞文件,可以比计算二阶力常数所使用的超胞稍小,这里为减少计算的速度只使用1×1×1的。或者使用设置文件运行 phono3py fc3_setting.conf,对应设置文件fc3_setting.conf为
CREATE_DISPLACEMENTS = .TRUE.
DIM_FC2 = 3 3 1
DIM = 1 1 1
CELL_FILENAME = POSCAR-unitcell
SYMMETRY_TOLERANCE = 1E-4
生成文件如下
(phonopy) [XXX@swarm02 fc3]$ ls
phono3py_disp.yaml POSCAR-00058 POSCAR-00116 POSCAR-00174 POSCAR-00232 POSCAR-00290 POSCAR-00348
POSCAR-00001 POSCAR-00059 POSCAR-00117 POSCAR-00175 POSCAR-00233 POSCAR-00291 POSCAR-00349
POSCAR-00002 POSCAR-00060 POSCAR-00118 POSCAR-00176 POSCAR-00234 POSCAR-00292 POSCAR-00350
POSCAR-00003 POSCAR-00061 POSCAR-00119 POSCAR-00177 POSCAR-00235 POSCAR-00293 POSCAR-00351
POSCAR-00004 POSCAR-00062 POSCAR-00120 POSCAR-00178 POSCAR-00236 POSCAR-00294 POSCAR-00352
POSCAR-00005 POSCAR-00063 POSCAR-00121 POSCAR-00179 POSCAR-00237 POSCAR-00295 POSCAR-00353
POSCAR-00006 POSCAR-00064 POSCAR-00122 POSCAR-00180 POSCAR-00238 POSCAR-00296 POSCAR-00354
POSCAR-00007 POSCAR-00065 POSCAR-00123 POSCAR-00181 POSCAR-00239 POSCAR-00297 POSCAR-00355
POSCAR-00008 POSCAR-00066 POSCAR-00124 POSCAR-00182 POSCAR-00240 POSCAR-00298 POSCAR-00356
POSCAR-00009 POSCAR-00067 POSCAR-00125 POSCAR-00183 POSCAR-00241 POSCAR-00299 POSCAR-00357
POSCAR-00010 POSCAR-00068 POSCAR-00126 POSCAR-00184 POSCAR-00242 POSCAR-00300 POSCAR-00358
POSCAR-00011 POSCAR-00069 POSCAR-00127 POSCAR-00185 POSCAR-00243 POSCAR-00301 POSCAR-00359
POSCAR-00012 POSCAR-00070 POSCAR-00128 POSCAR-00186 POSCAR-00244 POSCAR-00302 POSCAR-00360
POSCAR-00013 POSCAR-00071 POSCAR-00129 POSCAR-00187 POSCAR-00245 POSCAR-00303 POSCAR-00361
POSCAR-00014 POSCAR-00072 POSCAR-00130 POSCAR-00188 POSCAR-00246 POSCAR-00304 POSCAR-00362
POSCAR-00015 POSCAR-00073 POSCAR-00131 POSCAR-00189 POSCAR-00247 POSCAR-00305 POSCAR-00363
POSCAR-00016 POSCAR-00074 POSCAR-00132 POSCAR-00190 POSCAR-00248 POSCAR-00306 POSCAR-00364
POSCAR-00017 POSCAR-00075 POSCAR-00133 POSCAR-00191 POSCAR-00249 POSCAR-00307 POSCAR-00365
POSCAR-00018 POSCAR-00076 POSCAR-00134 POSCAR-00192 POSCAR-00250 POSCAR-00308 POSCAR-00366
POSCAR-00019 POSCAR-00077 POSCAR-00135 POSCAR-00193 POSCAR-00251 POSCAR-00309 POSCAR-00367
POSCAR-00020 POSCAR-00078 POSCAR-00136 POSCAR-00194 POSCAR-00252 POSCAR-00310 POSCAR-00368
POSCAR-00021 POSCAR-00079 POSCAR-00137 POSCAR-00195 POSCAR-00253 POSCAR-00311 POSCAR-00369
POSCAR-00022 POSCAR-00080 POSCAR-00138 POSCAR-00196 POSCAR-00254 POSCAR-00312 POSCAR-00370
POSCAR-00023 POSCAR-00081 POSCAR-00139 POSCAR-00197 POSCAR-00255 POSCAR-00313 POSCAR-00371
POSCAR-00024 POSCAR-00082 POSCAR-00140 POSCAR-00198 POSCAR-00256 POSCAR-00314 POSCAR-00372
POSCAR-00025 POSCAR-00083 POSCAR-00141 POSCAR-00199 POSCAR-00257 POSCAR-00315 POSCAR-00373
POSCAR-00026 POSCAR-00084 POSCAR-00142 POSCAR-00200 POSCAR-00258 POSCAR-00316 POSCAR-00374
POSCAR-00027 POSCAR-00085 POSCAR-00143 POSCAR-00201 POSCAR-00259 POSCAR-00317 POSCAR-00375
POSCAR-00028 POSCAR-00086 POSCAR-00144 POSCAR-00202 POSCAR-00260 POSCAR-00318 POSCAR-00376
POSCAR-00029 POSCAR-00087 POSCAR-00145 POSCAR-00203 POSCAR-00261 POSCAR-00319 POSCAR-00377
POSCAR-00030 POSCAR-00088 POSCAR-00146 POSCAR-00204 POSCAR-00262 POSCAR-00320 POSCAR-00378
POSCAR-00031 POSCAR-00089 POSCAR-00147 POSCAR-00205 POSCAR-00263 POSCAR-00321 POSCAR_FC2-00001
POSCAR-00032 POSCAR-00090 POSCAR-00148 POSCAR-00206 POSCAR-00264 POSCAR-00322 POSCAR_FC2-00002
POSCAR-00033 POSCAR-00091 POSCAR-00149 POSCAR-00207 POSCAR-00265 POSCAR-00323 POSCAR_FC2-00003
POSCAR-00034 POSCAR-00092 POSCAR-00150 POSCAR-00208 POSCAR-00266 POSCAR-00324 POSCAR_FC2-00004
POSCAR-00035 POSCAR-00093 POSCAR-00151 POSCAR-00209 POSCAR-00267 POSCAR-00325 POSCAR_FC2-00005
POSCAR-00036 POSCAR-00094 POSCAR-00152 POSCAR-00210 POSCAR-00268 POSCAR-00326 POSCAR_FC2-00006
POSCAR-00037 POSCAR-00095 POSCAR-00153 POSCAR-00211 POSCAR-00269 POSCAR-00327 POSCAR_FC2-00007
POSCAR-00038 POSCAR-00096 POSCAR-00154 POSCAR-00212 POSCAR-00270 POSCAR-00328 POSCAR_FC2-00008
POSCAR-00039 POSCAR-00097 POSCAR-00155 POSCAR-00213 POSCAR-00271 POSCAR-00329 POSCAR_FC2-00009
POSCAR-00040 POSCAR-00098 POSCAR-00156 POSCAR-00214 POSCAR-00272 POSCAR-00330 POSCAR_FC2-00010
POSCAR-00041 POSCAR-00099 POSCAR-00157 POSCAR-00215 POSCAR-00273 POSCAR-00331 POSCAR_FC2-00011
POSCAR-00042 POSCAR-00100 POSCAR-00158 POSCAR-00216 POSCAR-00274 POSCAR-00332 POSCAR_FC2-00012
POSCAR-00043 POSCAR-00101 POSCAR-00159 POSCAR-00217 POSCAR-00275 POSCAR-00333 POSCAR_FC2-00013
POSCAR-00044 POSCAR-00102 POSCAR-00160 POSCAR-00218 POSCAR-00276 POSCAR-00334 POSCAR_FC2-00014
POSCAR-00045 POSCAR-00103 POSCAR-00161 POSCAR-00219 POSCAR-00277 POSCAR-00335 POSCAR_FC2-00015
POSCAR-00046 POSCAR-00104 POSCAR-00162 POSCAR-00220 POSCAR-00278 POSCAR-00336 POSCAR_FC2-00016
POSCAR-00047 POSCAR-00105 POSCAR-00163 POSCAR-00221 POSCAR-00279 POSCAR-00337 POSCAR_FC2-00017
POSCAR-00048 POSCAR-00106 POSCAR-00164 POSCAR-00222 POSCAR-00280 POSCAR-00338 POSCAR_FC2-00018
POSCAR-00049 POSCAR-00107 POSCAR-00165 POSCAR-00223 POSCAR-00281 POSCAR-00339 POSCAR-unitcell
POSCAR-00050 POSCAR-00108 POSCAR-00166 POSCAR-00224 POSCAR-00282 POSCAR-00340 SPOSCAR
POSCAR-00051 POSCAR-00109 POSCAR-00167 POSCAR-00225 POSCAR-00283 POSCAR-00341 SPOSCAR_FC2
POSCAR-00052 POSCAR-00110 POSCAR-00168 POSCAR-00226 POSCAR-00284 POSCAR-00342 fc3_setting.conf
POSCAR-00053 POSCAR-00111 POSCAR-00169 POSCAR-00227 POSCAR-00285 POSCAR-00343
POSCAR-00054 POSCAR-00112 POSCAR-00170 POSCAR-00228 POSCAR-00286 POSCAR-00344
POSCAR-00055 POSCAR-00113 POSCAR-00171 POSCAR-00229 POSCAR-00287 POSCAR-00345
POSCAR-00056 POSCAR-00114 POSCAR-00172 POSCAR-00230 POSCAR-00288 POSCAR-00346
POSCAR-00057 POSCAR-00115 POSCAR-00173 POSCAR-00231 POSCAR-00289 POSCAR-00347
可以看到,即使使用1×1×1的超胞,也生成了378个超胞文件。接下来用脚本处理计算这些POSCAR文件,参考文章
其中INCAR
PREC = Accurate
IBRION = -1
NELMIN = 5
ENCUT = 400
EDIFF = 1.000000e-08
ISMEAR = 0
SIGMA = 5.000000e-02
IALGO = 38
LREAL = .FALSE.
ADDGRID = .TRUE.
LWAVE = .FALSE.
LCHARG = .FALSE.
NPAR = 4
SYMPREC = 1.0E-4
和KPOINTS文件(同样只用了很少的K点)
KPOINTS
0
M-P
4 4 1
0 0 0
接下来就是漫长的计算,等所有文件计算完,然后提取三阶力常数文件如下
(phonopy) [XXX@swarm02 fc3]$ phono3py --cf3 {00001..00378}/vasprun.xml
_ _____
_ __ | |__ ___ _ __ ___|___ / _ __ _ _
| '_ \| '_ \ / _ \| '_ \ / _ \ |_ \| '_ \| | | |
| |_) | | | | (_) | | | | (_) |__) | |_) | |_| |
| .__/|_| |_|\___/|_| |_|\___/____/| .__/ \__, |
|_| |_| |___/
2.6.0
-------------------------[time 2023-05-19 19:00:45]-------------------------
Compiled with OpenMP support (max 32 threads).
Python version 3.11.3
Spglib version 2.0.2
Displacement dataset was read from "phono3py_disp.yaml".
Number of displacements: 378
Number of supercell files: 378
counter (file index): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378
FORCES_FC3 has been created.
-------------------------[time 2023-05-19 19:01:32]-------------------------
_
___ _ __ __| |
/ _ \ '_ \ / _` |
| __/ | | | (_| |
\___|_| |_|\__,_|
得到FORCES_FC3文件,应用以下命令然后将其转换为hdf5文件
(phonopy) [XXX@swarm02 fc3]$ phono3py --sym-fc
由此获得fc3.hdf5文件。
7、计算线宽
将之前用phonopy计算的二阶力常数文件force_constants.hdf5复制过来,改名为fc2.hdf5,进行以下计算
phono3py --dim="1 1 1" --dim_fc2="3 3 1" --fc2 --fc3 -v --br --thm --mesh="48 48 48" --write_gamma --gp=0
得到kappa-m484848-g0.hdf5文件
8、电导常数计算,生成raman谱
终于要接近尾声了。。。
创建一个新的文件夹,将mesh.hdf5、POSCAR-unitcell和irreps.yaml文件copy到这里,运行以下命令
(phonopy) [XXX@swarm02 raman]$ phonopy-raman -d -c POSCAR-unitcell --bands="4 5 6 7 8 9 10 11 12 13 14 15 16 17 18"
生成以下文件
(phonopy) [XXX@swarm02 raman]$ ls
Raman-POSCAR.0004.001.vasp Raman-POSCAR.0011.001.vasp Raman-POSCAR.0018.001.vasp
Raman-POSCAR.0004.002.vasp Raman-POSCAR.0011.002.vasp Raman-POSCAR.0018.002.vasp
Raman-POSCAR.0005.001.vasp Raman-POSCAR.0012.001.vasp mesh.hdf5
Raman-POSCAR.0005.002.vasp Raman-POSCAR.0012.002.vasp irreps.yaml
Raman-POSCAR.0006.001.vasp Raman-POSCAR.0013.001.vasp
Raman-POSCAR.0006.002.vasp Raman-POSCAR.0013.002.vasp
Raman-POSCAR.0007.001.vasp Raman-POSCAR.0014.001.vasp
Raman-POSCAR.0007.002.vasp Raman-POSCAR.0014.002.vasp
Raman-POSCAR.0008.001.vasp Raman-POSCAR.0015.001.vasp
Raman-POSCAR.0008.002.vasp Raman-POSCAR.0015.002.vasp
Raman-POSCAR.0009.001.vasp Raman-POSCAR.0016.001.vasp
Raman-POSCAR.0009.002.vasp Raman-POSCAR.0016.002.vasp
Raman-POSCAR.0010.001.vasp Raman-POSCAR.0017.001.vasp
Raman-POSCAR.0010.002.vasp Raman-POSCAR.0017.002.vasp
同样应用脚本使用vasp对所有文件进行电导常数计算,这里给出INCAR和KPOINTS
INCAR
ALGO = Normal
EDIFF = 1E-8
ENCUT = 400
ISIF = 2
ISMEAR = 0
LASPH = .TRUE.
LCHARG = .FALSE.
LEPSILON = .TRUE.
LREAL = .FALSE.
LWAVE = .FALSE.
NSW = 0
PREC = Accurate
SIGMA = 0.01
SYSTEM = Rhh
SYMPREC = 1.0E-6
KPOINTS
KPOINTS
0
Gamma
8 8 1
计算完成后,导出所有的OUTCAR文件并进行编号OUTCAR.00**.00*,读取并生成Raman.yaml
phonopy-raman -r OUTCAR.*
最后一步生成raman谱
phonopy-raman -p --irreps-yaml="irreps.yaml" --linewidth-hdf5="kappa-m484848-g0.hdf5" --linewidth-temperature=300
大功告成,生成的raman谱如下