4.3. 能带

能带计算是对体系进行一个非自洽计算,得到体系的能带。

注意

在计算能带之前,必须先进行scf自洽计算并输出电荷密度。

4.3.1. Si的能带计算输入文件

能带计算的输入文件包含一个JSON文件、元素对应的赝势文件和电荷密度文件。 电荷密度文件需要通过先进行一个输出电荷密度的scf自洽计算来得到。

JSON文件如下:

{
    "job": {
        "calculation_type": "band",
    },
    "job_io": {
        "rho_init": "file",
        "rho_init_file": "scf_DATA/rho.hdf5",
        "prefix": "band",
        "pp_dir": ".",
        "pp_files": [
            "Si_ONCV_PBE_sr.upf"
        ]
    },
    "kpts": {
        "k_type": "path",
        "k_data": [
            [
                0,
                0,
                0,
                20
            ],
            [
                0.5,
                0,
                0.5,
                20
            ],
            [
                0.5,
                0.25,
                0.75,
                20
            ],
            [
                0.375,
                0.375,
                0.75,
                20
            ],
            [
                0,
                0,
                0,
                20
            ],
            [
                0.5,
                0.5,
                0.5,
                20
            ],
            [
                0.625,
                0.25,
                0.625,
                20
            ],
            [
                0.5,
                0.25,
                0.75,
                20
            ],
            [
                0.5,
                0.5,
                0.5,
                20
            ],
            [
                0.375,
                0.375,
                0.75,
                20
            ],
            [
                0.625,
                0.25,
                0.625,
                20
            ],
            [
                0.5,
                0,
                0.5,
                20
            ]
        ]
    },
    "pw": {
        "ecutwfc": 30,
        "ecutrho": 120
    },
    "band": {
        "n_empty_bands": 5,
        "e_fermi": 0.23245237216852638
    },
    "cell": {
        "lattice": [
            6.32850049,
            0,
            3.65376308,
            2.10949923,
            5.96656808,
            3.65376264,
            0,
            0,
            7.30752373
        ],
        "cell_units": "bohr"
    },
    "ions": {
        "element_names": [
            "Si"
        ],
        "element_nums": [
            2
        ],
        "positions": [
            [
                0,
                0,
                0
            ],
            [
                0.75,
                0.75,
                0.75
            ]
        ]
    }
}

JSON输入参数介绍:

JSON输入文件可以分为几个模块,这里分别是job/job_io/kpts/pw/band/cell/ions, 与scf自洽计算有大量相同的参数,这里只介绍一些与scf自洽计算不同的参数, 下面将依次进行介绍。

job模块: 用来设置和本次计算类型相关的参数。 除了计算类型外,其他参数应当尽量与scf计算中保持一致。

  • calculation_type :设置计算类型,本次计算为band能带计算。

job_io模块: 用来设置和本次计算的输入输出相关的参数。

  • prefix :设置计算输出文件的前缀,这里设置为band。

  • rho_init:设置电荷密度初始化的方法。能带计算为非自洽计算,需要读取之前scf自洽计算得到的电荷密度文件。这里设置为file,表示从文件读取电荷密度。

  • rho_init_file:设置要读取的电荷密度文件的路径。这里设置为scf_DATA/rho.hdf5。

kpts模块: 用来设置和本次计算的k点相关的参数。

  • k_type :设置k点的设置方法,这里设置为path,表示指定高对称点和高对称点之间的连线上的点的数量。

  • k_data :设置高对称点和高对称点之间的连线上的点的数量。每个数组里面前三个点是k点的坐标,第四个点是这个高对称点到下个高对称点的连线上的k点的数量。

band模块: 用来设置和本次计算能带数目相关的参数。

  • n_empty_bands :设置要计算的空带的数目。这里设置为5,表示要计算费米能级以上5条空带。

  • e_fermi:设置体系的费米能级,这里设为0.23245237216852638,单位为Hartree,这个参数是从scf计算的输出文件中读到的。本参数不是必须设置,不设置不影响能带的计算,只会影响能带输出文件是否会扣除费米能级。

4.3.2. 执行计算

准备好JSON文件、赝势文件和电荷密度文件之后,按照 Hylanemos运行 中的方法执行计算。

4.3.3. 计算结果分析

根据上述的输入文件,计算完成之后将会得到 band_OUTband_OUT.jsonband_PROGRESS.yamlband_DATA/band.databand_DATA/parallel_info.json 这5个文件:

  • band_OUT :Hylanemos计算过程中输出的日志文件。

  • band_OUT.json :Hylanemos计算结束之后输出的一个文件,是对整个计算的结果的一个汇总。

  • band_PROGRESS.yaml :Hylanemos计算过程中输出一个和计算进度相关的文件。

  • band_DATA/band.data :Hylanemos计算结束之后输出的能带数据文件。

  • band_DATA/parallel_info.json :Hylanemos计算过程中输出的并行相关的文件。

使用Matter Craft可直接对 band_OUT.json 文件处理,做出能带图。具体的操作方法可参考 Matter Craft用户手册

也可以使用 band_DATA/band.data 中的数据手动进行能带图的绘制。每一列的数据意义可以参考 OUT文件 中的说明。

Si计算出的能带图如下:

../_images/Si能带.png

从能带图可以看出Si是一个间接带隙的半导体。