4.14. DFT+G计算

DFT+G计算是针对强关联体系进行的一种修正。DFT+G可以使具有强关联的体系的能隙、结构、磁性等性质的计算更加接近实验值。

目前,只能在scf计算中使用+G,而且不能计算力和应力,只能计算能量。后续会增加其他计算。

4.14.1. Ni的DFT+G的scf计算输入文件

这里以Ni的scf自洽计算作为例子说明DFT+G计算的输入文件JSON文件的参数设置。

scf自洽计算时的JSON文件如下:

{
    "job": {
        "calculation_type": "scf",
        "spin_polarization_type": 2,
        "occupation_method": "smearing",
        "plus_g": true,
        "calc_force": true,
        "calc_stress": true,
        "functional": "LDA"
    },
    "job_io": {
        "pp_dir": "./pseudopotentials/abinit",
        "pp_files": [
            "Ni_ONCV_PBE_sr.upf"
        ]
    },
    "cell": {
        "lattice": [
            3.3,
            3.3,
            0.0,
            3.3,
            0.0,
            3.3,
            0.0,
            3.3,
            3.3
        ]
    },
    "ions": {
        "element_names": [
            "Ni"
        ],
        "element_nums": [
            1
        ],
        "positions": [
            [
                0.0,
                0.0,
                0.0
            ]
        ]
    },
    "pw": {
        "ecutwfc": 40.0
    },
    "kpts": {
        "k_type": "automatic",
        "k_mesh": [
            8,
            8,
            8
        ]
    },
    "mag": {
        "mag_init_type": "atom",
        "mag_init_value": [
            0.2
        ]
    },
    "gutzwiller": {
        "g_U": [
            3
        ],
        "g_J": [
            0.0
        ]
    },
    "smearing": {
        "smearing_alg": "gauss",
        "smearing_width": 0.005
    }
}

JSON输入参数介绍:

JSON输入文件可以分为几个模块,这里分别是job/job_io/pw/kpts/mag/gutzwiller/cell/ions/smearing, 这里只介绍一些与DFT+U计算需要额外设置的参数。 下面将依次进行介绍。

job模块: 用来设置和本次计算类型相关的参数。

  • plus_g :设置是否使用DFT+G,这里设为true,表示使用DFT+G方法。

gutzwiller模块: 用来设置和DFT+G相关的参数。

  • g_U :设置每种元素+G的值,顺序与element_names中的元素名称一一对应。这里Ni设为3。

  • g_J:设置每种元素+G的值,顺序与element_names中的元素名称一一对应。这里Ni设为0。

4.14.2. scf计算结果分析

scf_OUT 文件中的scf result模块可以看到计算结束后的体系能量中hubbard项的贡献。

================================================================================
|                                  scf result                                  |
--------------------------------------------------------------------------------
Electron Step Finish
Total Energy: -167.45263589 Ha / -4556.61834808 eV
Fermi level:  18.35487995 eV

Energy by parts:
one_electron contribution   =     -78.94461640 Ha /   -2148.19244656 eV
hartree contribution        =      45.92997141 Ha /    1249.81819100 eV
xc contribution             =     -21.10397977 Ha /    -574.26854422 eV
ewald contribution          =    -112.53752364 Ha /   -3062.30201950 eV
hubbard contribution        =      -0.79593051 Ha /     -21.65837245 eV
smearing contribution       =      -0.00055699 Ha /      -0.01515635 eV
Magnetizations:
Element index  charge   magnet
Ni      1     16.7077   0.7189
total magnetization     =       0.69
absolute magnetization  =       0.75

4.14.3. 使用DFT+G计算Ni的状态方程

由于DFT+G暂时只能进行scf计算,因此这里采用状态方程的方法计算Ni的晶格常数。 固体的状态方程一般指不同体积下对应的能量的曲线。曲线中能量最低的点就是对应的晶体的最稳定的体积对应的晶格常数。

这里给出DFT+G计算时U值为7时的状态方程图如下:

../_images/G7状态方程.png

通过状态方程,可以找到在U值为7时的Ni的晶格常数约为6.5bohr。

进一步计算不同U值的状态方程图如下:

../_images/G状态方程.png

再根据使用DFT+G时不同U值时找到的晶格常数和使用DFT+U时不同U值时找到的晶格常数进行对比,如下图所示:

../_images/G实验值.png

可以看到DFT+G可以得到和实验值更加接近的晶格常数,明显优于使用DFT+U和不使用DFT+G和+U的方法(U=0)的结果。