计算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 内网 安装 天河二号

以及 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文件,参考文章

VASP & phono3py 计算流程

其中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谱如下

在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值