4.7. 分子动力学

分子动力学可以直接模拟原子或分子在空间中的运动轨迹,因而可以直观地处理材料体系的动力学问题和预测材料各种动力学相关的性质。 其基本思想是以时间平均代替系综平均。从统计力学理论可知,当体系处于平衡态时,如果模拟时间足够长并且取样足够充分,体系某一性质的系综平均与时间平均等价。这样,我们就可以通过对体系的某一物理量进行一段足够长时间的观测和取样,然后进行平均得到该物理量的统计值。

4.7.1. Si的分子动力学计算输入文件

能带计算的输入文件包含一个JSON文件和元素对应的赝势文件。 实际在分子动力学计算中,一般不会只使用几个原子的体系来计算,这里使用2个原子的Si原胞仅作为一个示例。

JSON文件如下:

{
    "job": {
        "calculation_type": "md",
        "calc_force": true
    },
    "job_io": {
        "prefix": "md",
        "pp_dir": ".",
        "pp_files": [
            "Si_ONCV_PBE_sr.upf"
        ]
    },
    "pw": {
        "ecutrho": 80,
        "ecutwfc": 20
    },
    "kpts": {
        "k_type": "automatic",
        "k_mesh": [
            1,
            1,
            1
        ]
    },
    "symmetry": {
        "use_sym": false
    },
    "electron_step": {
        "elec_e_conv": 5e-7,
        "elec_max_steps": 100
    },
    "md": {
        "md_ensemble": "nvt",
        "md_thermostat": "nosehoover",
        "md_steps": 500,
        "md_dt": 41,
        "md_init_temp": 298,
        "md_integrate_alg": "leapfrog"
    },
    "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/symmetry/electron_step/md/cell/ions, 与scf自洽计算有大量相同的参数,这里只介绍一些与scf自洽计算不同的参数, 下面将依次进行介绍。

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

  • calculation_type :设置计算类型,本次计算为md分子动力学计算。

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

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

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

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

  • k_mesh :设置3个方向上的k点网格的数目。计算分子动力学时,一般只使用Gamma点。

symmetry模块: 用来设置和本次计算的对称性相关的参数。

  • use_sym :设置计算中是否考虑对称性。在分子动力学计算中应当设置为false,不考虑对称性,因为原子移动会破坏对称性。

md模块: 用来设置和分子动力学相关的参数。

  • md_ensemble :设置分子动力学使用的系综,这里设为nvt,表示使用正则系综。

  • md_thermostat:设置分子动力学的热池(控温方法),这里设为nosehoover,表示使用Nose-Hoover热池。

  • md_steps:设置分子动力学的总步数,这里设为5000。

  • md_dt:设置分子动力学的步长,单位为Hartree原子单位。这里设为41,约为1fs。

  • md_init_temp:设置分子动力学的初始温度,单位为K。这里设置为298。

  • md_integrate_alg:设置分子动力学计算使用的数值积分的算法。这里设置为leapfrog

4.7.2. 执行计算

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

4.7.3. 计算结果分析

根据上述的输入文件,计算完成之后将会得到 md_OUTmd_OUT.jsonmd_PROGRESS.yamlmd_DATA/MD.yamlmd_DATA/parallel_info.jsonmd_DATA/CURRENTPOSmd_DATA/STEPPOS 这7个文件:

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

  • md_OUT.json :Hylanemos计算结束之后输出的一个文件,是对分子动力学计算的最后一步的一个汇总。

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

  • md_DATA/MD.yaml :Hylanemos计算过程中输出的一个包含分子动力学每一步的能量、温度等信息的文件。

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

  • md_DATA/CURRENTPOS :Hylanemos计算过程中输出的一个当前离子步的结构文件。

  • md_DATA/STEPPOS :Hylanemos计算过程中输出的一个从第一个离子步到当前离子步的结构文件。

使用Matter Craft可直接对分子动力学的计算结果进行分析,做出温度、能量图,看到过程动画。具体的操作方法可参考 Matter Craft用户手册