利用DFT计算材料的光学性质

基于DFT理论计算材料的光学性质(光吸收和发光等)的基本方法和步骤

发光

  1. bulk材料结构优化
  2. 基于第一步生成的 WAVECARCHGCAR 以及 DOSCAR 等得到相关属性
    • 能带需要再进行一步静态计算
      • VASP能带计算需要读取第一步的CHGCAR文件,则INCAR中需设置ICHARG=11
      • VASP能带计算还要保持INCAR中PRECENCUT与第一步一致,还需要查看第一步OUTCAR中给出的约化后的NGXNGYNGZ,即FFT格点的大小,并在INCAR中设置相同的值
      • 画能带时需要注意Seekpath或者文献给出的高对称点路径对应的是primitive cell还是conventional cell。用vaspkit3指令也可以找到高对称点路径,它还会给出标准化后的primitive cell,进一步计算能带时,需要将生成的PRIMCELL.vasp覆盖原有的POSCAR
    • DOS不需要额外的计算,基于第一步的DOSCAR即可
  3. 将优化后的结构文件CONTCAR复制为新的POSCAR,用vaspkit或者disorder生成超胞,基于超胞用disorder生成缺陷结构(需要SPOSCARINDSOD输入文件);或者使用vaspkit进行超胞生成和原子替换
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ## INDSOD

    &input
    nsub = 3
    subs = 2,1,13
    symb = 'Eu','Kw','Ca' ! The quotes is unnecessary for the ifort compiler
    site = 1
    prec = 1D-5
    lpro = .true.
    lpos = .true.
    leqa = .true.
    lspg = .true.
    lcfg = .true.
    /
  4. 从第三步中选取一个POSCAR-*文件做结构优化,相关属性计算同第二步
  5. 基于第四步的CONTCAR文件做constrain-DFT计算: 对激发态结构进行结构优化以及相关属性计算
  6. Phonopy基于第四步的CONTCAR文件做声子谱计算

密度泛函微扰理论/线性响应方法(DFPT)


  • 扩胞并生成小位移
1
2
3
4
5
6
# -d 表示生成小位移
# --dim='2 2 2'表示'x y z'方扩的大小
phonopy -d --dim="2 2 2" -c POSCAR-unitcell

# SPOSCAR为DFPT所需结构文件
cp SPOSCAR POSCAR
  • VASP计算
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    ## INCAR
    ISMEAR = 0 (Gaussian smearing)
    SIGMA = 0.05 (Smearing value in eV)
    IBRION = 8 (determines the Hessian matrix using DFPT)
    EDIFF = 1E-08 (SCF energy convergence; in eV)
    PREC = Accurate (Precision level)
    ENCUT = 500 (Cut-off energy for plane wave basis set, in eV)
    IALGO = 38 (Davidson block iteration scheme)
    LREAL = .FALSE. (Projection operators: false)
    LWAVE = .FLASE. (Write WAVECAR or not)
    LCHARG = .FLASE. (Write CHGCAR or not)
    ADDGRID= .TRUE. (Increase grid; helps GGA convergence)
    NSW = 1
    NELM = 100
    NELMDL = -5

    ## KPOINTS根据超胞大小适当减小
    A
    0
    M
    3 3 3
    0 0 0
  • phonopy计算
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    ## band.conf
    ATOM_NAME =Si
    DIM = 2 2 2
    PRIMITIVE_AXES=Auto
    MP = 24 24 24
    BAND =0.0 0.0 0.0 0.5 0.0 0.5 0.625 0.25 0.625, 0.375 0.375 0.75 00 0.0 0.0 0.5 0.5 0.5
    BAND_POINTS = 101
    FORCE_CONSTANTS= READ #直接读取DFPT给出的力常数

    #1. 提取力常数,得到FORCE_CONSTANTS文件。
    phonopy --fc vasprun.xml

    #2. 计算声子谱并保存为pdf格式
    phonopy -c POSCAR-unitcell band.conf -p -s

    #3. 将声子谱进一步输出为数据文件,用于其它软件画图。
    #旧版本phonopy
    bandplot --gnuplot> phonon.out

    #新版本phonopy
    phonopy-bandplot --gnuplot > phonon.out

    #phonon.out文件中首行是高对称点在x轴上的坐标

Finite difference


  • 扩胞并生成小位移

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # -d 表示生成小位移
    # --dim='2 2 2'表示'x y z'方扩的大小
    phonopy -d --dim="2 2 2" -c POSCAR-unitcell
    #会得到一系列POSCAR-001,POSCAR-002,... 数量由对称性决定。

    # 建立disp-*文件夹,具体数量以生成POSCAR-*的数量决定。将POSCAR-POTCAR, INCAR, KPOINTS放入disp-*文件夹
    mkdir disp-001
    cp POSCAR-001 ./disp-001/POSCAR
    cp POTCAR ./disp-001/POTCAR
    cp INCAR ./disp-001/INCAR
    cp KPOINTS ./disp-001/KPOINTS

  • VASP计算

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    ## INCAR
    PREC = Accurate
    IBRION = -1
    ENCUT = 500
    EDIFF = 1.0e-08
    EDIFFG = -0.001
    ISMEAR = 0
    SIGMA = 0.05
    IALGO = 38
    LREAL = .FALSE.
    LWAVE = .FALSE.
    LCHARG = .FALSE.

    ## KPOINTS根据超胞大小适当减小
    A
    0
    M
    3 3 3
    0 0 0

  • phonopy计算

    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
    ## band.conf
    ATOM_NAME =Si
    DIM = 2 2 2
    PRIMITIVE_AXES=Auto
    MP = 24 24 24
    BAND =0.0 0.0 0.0 0.5 0.0 0.5 0.625 0.25 0.625, 0.375 0.375 0.75 0.0 0.0 0.0 0.5 0.5 0.5
    BAND_POINTS = 101
    FULL_FORCE_CONSTANTS = .TRUE.
    FORCE_CONSTANTS= WRITE #生成FORCE_CONSTANTS

    ## mesh.conf
    ATOM_NAME = Si
    DIM = 2 2 2
    MP = 24 24 24

    #1. 提取动力学矩阵,进入disp-*的上一级文件夹
    phonopy -f ./disp-*/vasprun.xml
    #会生成FORCE_SET

    #2. 计算声子谱并保存为pdf格式,同时生成FORCE_CONSTANTS
    phonopy -c POSCAR-unitcell band.conf -p -s

    #3. 将声子谱进一步输出为数据文件,用于其它软件画图。
    #旧版本phonopy
    bandplot --gnuplot> phonon.out

    #新版本phonopy
    phonopy-bandplot --gnuplot > phonon.out

    #phonon.out文件中首行是高对称点在x轴上的坐标


  1. 基于第四步生成的基态结构CONTCAR_GS和第五步生成的激发态结构CONTCAR_ES,以及第一步得到的bands.yaml,利用pyphotonics计算HR因子和PL光谱(\(\color{Red}{在该方法中,近似认为激发态和基态的振动模式相同,但实际体系中并不一致}\))
------ 本文结束------