目录
总述与概括
为什么写这个系列
因为最近的科研涉及到离子阱中物理问题的一些仿真计算,需要用到分子动力学仿真。在网上检索时发现关于分子动力学的入门文章特别是用于物理场景的比较少,学物理的同学对程序也不都十分擅长,想必有很多人也需要一个参考和借鉴。因此就想把这个学习的过程分享出来,给自己做一个记录,也是给其它刚入门的同学一个参考。
作者与目标人群
发稿时,作者是在读直博二年级学生,本科物理系毕业,只是基于爱好做过一些科学计算项目,课堂上学过一点分子动力学,但更多还是自己摸索。因此本系列内容注定不够专业,甚至漏洞摆出,希望大佬积极批评指正。考虑到大佬往往没空写一些很基础的东西,有一些问题大佬也不会认为是问题,因此本文可以给萌新姑且做一个参考。希望能够积极的互相交流,如果偶遇同行,碰撞出一些火花,那我更将不胜欣喜。
分子动力学仿真目前更广泛的用于化学和生物学领域,对于这些同学来说,我这里注定无法涉及到很多关于大分子空间结构计算等的内容,但前面以物理人的视角对整个体系的梳理或有可取之处,也许也可看看。
第一期内容总述
这部分主要用于探讨分子动力学本身,计算技巧归纳,相关软件的使用等。本篇为第0篇,主要对整个分子动力学做一个简要介绍。
什么是分子动力学
分子动力学仿真(Molecular Dynamics Simulation,简称 MD)是一种利用计算机模拟分子体系在一定条件下的运动和演化的方法。分子动力学仿真可以用来研究分子的结构、性质、相变、反应、输运等现象,从而揭示物质的微观机理和宏观规律。分子动力学仿真是分子模拟的一种重要方法,也是计算物理、计算化学、计算生物、计算材料等领域的基本工具。
分子动力学基本原理
分子动力学的原理物理上看非常简单:“牛顿运动定律”。一般来讲,基本的分子动力学仿真计算不涉及量子力学原理,尽管涉及的体系是微观体系,但采用经典方式近似和计算。
说起来是“分子”动力学,但是应用显然不限于典型的多原子分子,也可以用于原子、离子,但需要对于其中的模型做若干修正。各种微观粒子都可以代入不同原子数,具有不同相互作用数学形式的“分子”,因此后面的描述中不具体做说明。
分子动力学基本工作步骤
- 建立分子模型:选择合适的分子模型,包括分子的类型、数量、位置、速度等初始条件,以及分子的边界条件、周期性条件等约束条件。
- 建立分子势函数:选择合适的分子势函数,描述分子间的相互作用力和势能,以及分子的内部结构和振动。分子势函数的形式和参数取决于分子的性质和体系的复杂度,常见的有经典力场、半经验力场、量子力场等。
- 求解分子运动方程:利用数值方法求解分子运动方程,得到分子的位置、速度、加速度等随时间的变化,以及分子的动能、势能、总能等随时间的变化。
- 分析分子动力学结果:利用统计分析、可视化、后处理等方法,分析分子动力学结果,得到分子体系的热力学、动力学和统计性质,以及分子间的相互作用和协同效应。
分子动力学的计算参数和结果
主要的输入参数包括:
- 时间步长:时间步长是分子动力学仿真中每一步求解分子运动方程的时间间隔,一般取决于分子的最快振动频率,通常在 0.1~10 fs(飞秒)之间。时间步长的选择要保证数值稳定性和精度,同时考虑计算效率和资源消耗。
- 模拟时间:模拟时间是分子动力学仿真中总的求解分子运动方程的时间长度,一般取决于分子体系的特征时间尺度,通常在 1~1000 ns(纳秒)之间。模拟时间的选择要保证分子体系达到平衡态或稳态,同时考虑计算目的和资源消耗。
- 温度控制:温度控制是分子动力学仿真中对分子体系的温度进行调节和维持的方法,一般采用热浴、恒温器、耦合器等方法,以模拟不同的热力学系综。温度控制的选择要保证分子体系的热力学一致性,同时考虑计算目的和资源消耗。
- 压力控制:压力控制是分子动力学仿真中对分子体系的压力进行调节和维持的方法,一般采用体积调节、恒压器、耦合器等方法,以模拟不同的热力学系综。压力控制的选择要保证分子体系的热力学一致性,同时考虑计算目的和资源消耗。
主要的输出结果包括:
- 分子的轨迹和快照:分子的轨迹是分子的位置、速度、加速度等随时间的变化,分子的快照是分子在某一时刻的位置、速度、加速度等。分子的轨迹和快照可以用来观察分子的运动和演化过程,以及分子的构象和稳定性。
- 分子的能量和温度:分子的能量是分子的动能、势能、总能等随时间的变化,分子的温度是分子的平均动能与玻尔兹曼常数的比值。
- 其它可以求出的物理量,如温度、压力、能量、熵、热容、化学势、扩散系数、粘度、弹性模量、介电常数、极化率、光谱、电导率等。
分子动力学软件
由于原理简单,实际上掌握编程技术的同学理论上都可以自己从头写分子动力学的程序。但是重复造轮子显然是不理智的,有现成稳定的库不用是暴殄天物的。因此我们可以根据需求选择适合自己的软件包来用。
本文全程采用lammps和pylion进行后续实践,各种软件是很多的,从原理上是一致的。下面简单列举一些常见的分子动力学软件(来自new bing总结)。
LAMMPS
LAMMPS 是一款开源的分子动力学仿真软件,它的优势在于:
- 支持多种分子模型和分子势函数,包括固态材料、软物质、粗粒化或介观体系等。
- 支持多种数值方法和热力学系综,包括欧拉法、维尔莱法、莱普法等,以及 NVE、NVT、NPT、NPH 等。
- 支持多种并行计算和加速计算,包括 CPU、GPU、Intel Xeon Phi 等。
- 支持多种结果分析和可视化,包括统计分析、后处理、图像生成等。
- 设计简单易用,易于修改和扩展,有丰富的文档和教程。
主要缺点是: - 不支持量子力学计算,需要与其他软件进行耦合。
- 不支持某些特殊的分子模型和分子势函数,需要自行编写或添加。
- 不支持某些特殊的结果分析和可视化,需要自行编写或添加。
AMBER
AMBER 是一款专门用于生物分子的分子动力学仿真软件,具有以下优点:
- 支持多种生物分子模型和分子势函数,包括蛋白质、核酸、多肽、脂质、水等。
- 支持多种数值方法和热力学系综,包括欧拉法、维尔莱法、莱普法等,以及NVE、NVT、NPT、NPH 等。
- 支持多种并行计算和加速计算,包括 CPU、GPU、Intel Xeon Phi 等。
- 支持多种结果分析和可视化,包括统计分析、后处理、图像生成等。 支持量子力学计算,可以与其他软件进行耦合。
- 设计精确可靠,有丰富的文档和教程。
主要缺点是: - 不支持非生物分子的分子模型和分子势函数,需要与其他软件进行耦合。
- 不支持某些特殊的结果分析和可视化,需要自行编写或添加。 需要付费购买,价格较高。
GROMACS
GROMACS 是一款专门用于生物分子的分子动力学仿真软件,具有以下优点:
- 支持多种生物分子模型和分子势函数,包括蛋白质、核酸、多肽、脂质、水等。
- 支持多种数值方法和热力学系综,包括欧拉法、维尔莱法、莱普法等,以及 NVE、NVT、NPT、NPH 等。
- 支持多种并行计算和加速计算,包括 CPU、GPU、Intel Xeon Phi 等。
- 支持多种结果分析和可视化,包括统计分析、后处理、图像生成等。
- 设计高效稳定,有丰富的文档和教程。
主要缺点是: - 不支持非生物分子的分子模型和分子势函数,需要与其他软件进行耦合。
- 不支持量子力学计算,需要与其他软件进行耦合。
- 不支持某些特殊的结果分析和可视化,需要自行编写或添加。
相关软件实在太多了,但其中lammps大约是比较经典的,使用也较为普遍。如果有特殊需要,可以寻找同行帮助或者问问AI帮忙挑选。