4.4. 态密度

态密度计算是对体系进行一个非自洽计算,得到体系的电子态密度。

注意

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

4.4.1. Si的态密度计算输入文件

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

JSON文件如下:

{
    "job": {
        "calculation_type": "dos",
        "occupation_method": "tetra"
    },
    "job_io": {
        "rho_init": "file",
        "rho_init_file": "scf_DATA/rho.hdf5",
        "prefix": "dos",
        "pp_dir": ".",
        "pp_files": [
            "Si_ONCV_PBE_sr.upf"
        ]
    },
    "pw": {
        "ecutwfc": 20,
        "ecutrho": 80
    },
    "kpts": {
        "k_type": "automatic",
        "k_mesh": [
            9,
            9,
            9
        ]
    },
    "band": {
        "n_empty_bands": 5
    },
    "dos": {
        "dos_emin": -10,
        "dos_emax": 20,
        "dos_dE": 0.05
    },
    "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/pw/kpts/band/dos/cell/ions, 与scf自洽计算有大量相同的参数,这里只介绍一些与scf自洽计算不同的参数, 下面将依次进行介绍。

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

  • calculation_type :设置计算类型,本次计算为dos态密度计算。

  • occupation_method:设置轨道占据数的计算方法,这里设置为tetra,表示使用四面体法。对于态密度计算,一般使用四面体法能得到更准确的态密度,也可以使用smearing的方法。

注意

在计算态密度时,不能使用insulator方法。

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

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

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

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

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

  • k_type :设置k点的设置方法,这里设置为automatic,表示使用Monkhorst-Pack方法自动生成均匀的k点。

  • k_mesh :设置3个方向上的k点网格的数目。计算态密度时网格需要比scf时设置得更密以获得准确的态密度。

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

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

dos模块: 用来设置和本次计算的dos的范围和间隔相关的参数。

  • dos_emin :设置态密度计算时的能量最小值,单位eV。这里设置为-10。

  • dos_emax :设置态密度计算时的能量最大值,单位eV。这里设置为20。

  • dos_dE:设置态密度计算时的能量间隔,单位eV。这里设置为0.05。

4.4.2. 执行计算

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

4.4.3. 计算结果分析

根据上述的输入文件,计算完成之后将会得到 dos_OUTdos_OUT.jsondos_PROGRESS.yamldos_DATA/dos.datados_DATA/parallel_info.json 这5个文件:

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

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

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

  • dos_DATA/dos.data :Hylanemos计算结束之后输出的态密度数据文件。

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

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

也可以使用 dos_DATA/dos.data 中的数据手动进行态密度图的绘制。每一列的数据意义可以参考 其他文件 中的说明。

Si计算出的态密度图如下:

../_images/Si态密度-excel.png

从态密度图可以看出Si是一个半导体。