4.1. scf自洽

scf自洽计算,也可以叫做静态计算、自洽计算、单点能计算等。对结构进行一次scf自洽计算,可以得到体系最低能量及对应的势函数、电荷密度、波函数等信息。

4.1.1. Si的scf自洽计算输入文件

scf自洽计算的输入文件包含一个JSON文件和元素对应的赝势文件。赝势文件可参考 赝势文件

JSON文件如下:

{
    "job": {
        "calculation_type": "scf",
        "spin_polarization_type": 1,
        "occupation_method": "insulator"
    },
    "job_io": {
        "prefix": "scf",
        "output_rho": true,
        "pp_dir": ".",
        "pp_files": [
            "Si_ONCV_PBE_sr.upf"
        ]
    },
    "pw": {
        "ecutwfc": 20,
        "ecutrho": 80
    },
    "kpts": {
        "k_type": "automatic",
        "k_mesh": [
            4,
            4,
            4
        ]
    },
    "electron_step": {
        "elec_e_conv": 5e-7,
        "elec_max_steps": 100
    },
    "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/electron_step/cell/ions,下面将依次进行介绍。

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

  • calculation_type :设置计算类型,本次计算为scf自洽计算。

  • spin_polarization_type:设置是否使用自旋极化计算。由于Si没有磁性,这里设置为1,表示非自旋极化计算。

  • occupation_method:选择本次计算的轨道占据数的计算方法。因为Si是有带隙的材料,所以这里设置为insulator。对于没有带隙的材料,应当设置为smearing。

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

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

  • output_rho :设置计算完成后是否要输出电荷密度文件,这里设置为输出。

  • pp_dir :设置赝势文件的目录,这里设置为当前目录(和JSON文件同一个目录)。

  • pp_files :设置赝势文件的名称,这里是Si的赝势,名称为Si_ONCV_PBE_sr.upf。

pw模块: 用来设置和本次计算的平面波相关的参数。

  • ecutwfc :设置波函数截断能,这里设置为20,单位为Hartree。

  • ecutrho :设置电荷密度截断能,这里设置为80,单位为Hartree。

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

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

  • k_mesh :设置3个方向上的k点网格的数目。

electron_step模块: 用来设置和电子步收敛相关的参数。

  • elec_e_conv :设置自洽循环时电子步的收敛标准,单位为Hartree,这里设置为5e-7。

  • elec_max_steps :设置自洽循环时的最大电子步数,这里设置为100。

cell模块: 用来设置晶胞参数。

  • lattice :设置晶格矢量矩阵,共9个数,每三个数代表一个晶轴矢量。

  • cell_units :设置输入的晶格矢量矩阵的单位,这里设置为bohr,表示晶格常数以bohr为单位。

ions模块: 用来设置原子相关的参数。

  • element_names :设置原子的元素名称,这里为Si。

  • element_nums :设置每种元素的原子个数,这里为2。

  • positions :设置原子位置,这里输入两个Si原子的分数坐标。

4.1.2. 执行计算

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

4.1.3. 计算结果分析

根据上述的输入文件,计算完成之后将会得到 scf_OUTscf_OUT.jsonscf_PROGRESS.yamlscf_DATA/rho.hdf5scf_DATA/parallel_info.json 这5个文件:

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

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

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

  • scf_DATA/rho.hdf5 :Hylanemos计算结束之后输出的电荷密度文件。

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

使用Matter Craft可直接对 rho.hdf5 文件处理,做出电荷密度分布图。具体的操作方法可参考 Matter Craft用户手册

Si的三维电荷密度分布如下:

../_images/Si电荷密度.png

经过scf自洽计算后的体系的总能量可以在 scf_OUT 文件的最后的scf result模块读到。