本书主要介绍分子动力学模拟中所涉及的物理学原理、数值算法、编程实现和实际应用案例。在简要回顾分子动力学模拟所需的物理知识后,由一个简单的分子动力学模拟程序入手,继而讨论模拟中的重要概念和算法,如模拟盒子与近邻列表技术、经验势函数与机器学习势函数、控温与控压算法、静态性质计算、输运性质计算等。此外,本书还介绍了路径积分分子动力学的量子基础及算法实现等内容。
本书是一本较为理想的学习分子动力学模拟的入门与提高读物,适合高等院校理工科专业的本科生和研究生及其他任何对分子动力学模拟感兴趣的人士阅读。
第1章 分子动力学模拟的物理基础 001
1.1 牛顿力学 001
1.1.1 质点力学 001
1.1.2 粒子系力学 004
1.1.3 牛顿运动方程的数值积分 005
1.1.4 Python编程范例:简谐振子运动的数值求解 007
1.2 分析力学 008
1.2.1 拉格朗日方程 008
1.2.2 哈密顿方程 008
1.2.3 相空间 010
1.2.4 哈密顿体系运动方程的数值积分 012
1.3 热力学 015
1.3.1 基本概念 015
1.3.2 热力学第一定律 016
1.3.3 热力学第二定律 018
1.3.4 热力学函数和关系 020
1.4 经典统计力学 024
1.4.1 统计系综和统计分布函数 024
1.4.2 微正则系综 025
1.4.3 正则系综 027
1.4.4 等温等压系综 034
第2章 简单的分子动力学模拟程序 035
2.1 简单分子动力学模拟的基本要素 035
2.1.1 分子动力学模拟的定义 035
2.1.2 初始条件 036
2.1.3 边界条件 037
2.1.4 相互作用 039
2.1.5 运动方程的数值积分 041
2.1.6 物理量的计算 042
2.2 C++编程范例:一个简单的分子动力学模拟程序 042
2.2.1 程序中使用的单位制 042
2.2.2 本章程序的源代码解析 043
2.3 程序的测试 051
2.3.1 输入的准备 051
2.3.2 能量守恒的测试 052
第3章 模拟盒子与近邻列表 055
3.1 三斜盒子 055
3.1.1 三斜盒子的定义 055
3.1.2 三斜盒子情况下的周期边界条件 057
3.2 近邻列表 058
3.2.1 为什么要用近邻列表? 058
3.2.2 自动判断何时更新近邻列表 059
3.2.3 构建近邻列表的平方标度算法 059
3.2.4 构建近邻列表的线性标度算法 060
3.3 C++编程范例:使用近邻列表的分子动力学模拟程序 061
3.3.1 处理三斜盒子的基本函数 061
3.3.2 近邻列表平方标度算法的C++实现 064
3.3.3 近邻列表线性标度算法的C++实现 065
3.3.4 程序速度测试 070
3.4 GPUMD程序简介 071
3.4.1 模型文件 072
3.4.2 控制文件 073
3.4.3 GPUMD使用范例:LJ势函数的使用 073
第4章 经验势函数 075
4.1 经典势函数的一般性质 075
4.1.1 经典势函数概览 075
4.1.2 两体势与多体势的定义 077
4.1.3 多体势中力的表达式 078
4.2 两个典型的经验多体势 080
4.2.1 EAM势 080
4.2.2 Tersoff势 081
4.3 C++编程范例:Tersoff势的编程实现 084
4.3.1 Tersoff势的C++编程实现 084
4.3.2 验证力的正确性的方法 088
4.4 GPUMD使用范例:Tersoff势的使用 089
第5章 机器学习势 091
5.1 NEP机器学习势 091
5.1.1 NEP机器学习势的人工神经网络模型 091
5.1.2 NEP机器学习势的描述符 093
5.1.3 NEP机器学习势的训练 101
5.2 NEP与经验势的结合 104
5.2.1 NEP与ZBL排斥势的结合 104
5.2.2 NEP与D3色散修正的结合 105
5.3 GPUMD中NEP机器学习势的使用 106
5.3.1 NEP机器学习势使用概览 106
5.3.2 NEP机器学习势训练范例:晶体硅 108
第6章 控温算法 111
6.1 Berendsen控温算法 111
6.2 BDP控温算法 112
6.3 Nose-Hoover控温算法 112
6.3.1 NH控温算法的理论推导 112
6.3.2 Python编程范例:用简谐振子展示NH控温算法的效果 115
6.4 NHC控温算法 120
6.4.1 NHC控温算法的理论推导 120
6.4.2 Python编程范例:用简谐振子展示NHC控温的效果 122
6.5 朗之万控温算法 127
6.5.1 理论 127
6.5.2 Python编程范例:用简谐振子展示朗之万控温的效果 128
6.6 GPUMD使用范例:几个控温算法的对比 131
第7章 控压算法 134
7.1 压强的微观计算与直观理解 134
7.1.1 多体势中位力和压强的表达式 134
7.1.2 压强的直观理解 136
7.2 Berendsen控压算法 137
7.3 SCR控压算法 140
7.4 Martyna- Tuckerman-Tobias-Klein控压算法 141
7.5 GPUMD中控压算法的使用范例 146
7.5.1 几个控压算法的对比 146
7.5.2 非各向同性控压 147
第8章 静态性质 150
8.1 统计误差 150
8.1.1 理论基础 150
8.1.2 GPUMD使用范例:计算温度和压强的平均值与统计误差 152
8.2 GPUMD使用范例:热膨胀模拟 155
8.3 径向分布函数 159
8.3.1 理论基础 159
8.3.2 Python编程范例:径向分布函数的编程实现 160
8.3.3 GPUMD使用范例:水的径向分布函数 162
8.4 自由能计算 164
8.4.1 自由能微扰理论 164
8.4.2 热力学积分方法 165
8.4.3 GPUMD使用范例:计算固体的自由能 169
8.4.4 自由能的温度积分 170
8.4.5 GPUMD使用范例:自由能计算的温度积分方法 172
第9章 输运性质 174
9.1 线性响应理论与时间关联函数 174
9.2 自扩散系数 177
9.2.1 C++编程范例:均方位移和速度自关联函数的编程实现 178
9.2.2 GPUMD使用范例:计算液态硅的自扩散系数 180
9.3 黏滞系数 184
9.3.1 GPUMD使用范例:计算液态硅的黏滞系数 185
9.4 热导率 187
9.4.1 热输运的平衡态分子动力学模拟 187
9.4.2 热输运的均匀非平衡分子动力学模拟方法 190
9.4.3 热输运的非均匀非平衡分子动力学模拟 191
9.5 GPUMD使用范例:晶体硅热导率计算 193
9.5.1 EMD模拟 193
9.5.2 HNEMD模拟 194
9.5.3 NEMD模拟 196
9.5.4 热流的谱分解 198
第10章 路径积分分子动力学 205
10.1 量子力学 205
10.1.1 量子力学的基本原理 205
10.1.2 坐标表象的量子力学 209
10.2 量子统计系综 211
10.3 路径积分量子统计力学 212
10.4 路径积分分子动力学的算法 215
10.4.1 珠子项链体系的哈密顿量 215
10.4.2 运动方程与数值积分 215
10.4.3 PIMD中的朗之万热浴 217
10.5 Python编程范例:路径积分分子动力学的积分算法 218
10.6 GPUMD使用范例:用PIMD计算水的径向分布函数 222
第11章 总结与展望 224
11.1 势函数 224
11.2 积分算法 225
11.3 物理量的测量 226
参考文献 228
樊哲勇,男,2010年南京大学理论物理博士毕业,现为渤海大学教授。