当前课程知识点:计算化学 >  第四章:分子动力学模拟方法和技巧 >  §2. 分子动力学模拟基本原理 >  分子动力学模拟简介

返回《计算化学》慕课在线视频课程列表

分子动力学模拟简介在线视频

分子动力学模拟简介

返回《计算化学》慕课在线视频列表

分子动力学模拟简介课程教案、知识点、字幕

同学们

大家好

这一节我们来学习

分子动力学简介

在前面的课程中

我们已经学习和强调过

分子势能面这一概念

对于计算化学的重要性

分子的稳定结构

一般可以通过寻找

势能面上的局域极小点

也就是通过优化计算来得到

基于分子结构

我们可以进一步求算

物质的物理化学性质

这一方法对于原子数很少的分子

特别是势能面极小点附近

形状比较陡峭的体系

是非常适用的

通常情况下

这样的分子基本上会保持在其

能量极小结构附近

所以它的性质

也基本由能量极小结构所决定

但是我们知道

由于存在着量子效应

每个化学键

每个分子

都存在零点振动能

这意味着即使在绝对零度下

对于氢分子这样的简单物质

它的键长也会在

一定范围内变化

而不会固定在

优化得到的最优键长上

随着温度的升高

分子中的原子运动

会更加剧烈

运动范围也相应增加

因此在通常情况下

因为热运动的存在

分子存在一定的构象变化区间

特别对于分子内

原子数比较多

结构比较复杂的分子来说

由于分子中的作用

也相应变得很复杂

分子会表现出相当的柔性

比如一些高聚物分子

生物分子等等

分子内存在着大量

很容易发生扭转的化学键

从而导致分子构象

极易发生变化

这样的分子实际上存在着

一个范围比较大的构象区间

而且随着温度的变化

分子的构象区间

还会发生变化

此时当我们提到

分子结构这个概念的时候

就不能仅仅考虑它的

势能面上的能量极小结构了

举一个极端的粒子

自然界中存在着一些

天然无序的蛋白质

通常情况下

它们根本就不存在一个

确定的三维结构

如果我们仍然依据

势能面极小点的结构

来对这样的分子进行研究

就会产生比较大的误差

另外一方面

对于蛋白质这样的生物大分子

它能够正常发挥其生物功能

也往往有赖于

它的构象的柔性

因此要对这样的分子的

性质进行计算

就必须考虑它们在

势能面上的构象分布

以及构象变化情况

而不能仅仅考察它们的

能量极小结构

而且实验测量得到的物质性质

往往也是针对大量分子

在时间平均和系综平均的

基础上进行的

因此为了更好的与实验进行对比

计算中也需要考虑

大量分子的构象分布

对体系性质的影响

如果我们把分子中的原子

当成经典粒子来处理

那么分子的变化

可以用其中所有原子的位置

和动量来进行完整的描述

在三维空间中

每个原子对应了六个自变量

包括XYZ三个位置坐标

和XYZ方向的三个动量分量

而整个分子体系的性质

则由6N个变量来决定

我们将这6N个变量

构成的空间

叫做对应分子的相空间

分子在任意时刻

根据其位置和运动

对应了相空间中的一点

X‘可以用这个表达式来表示

为了简化

我们可以把所有原子的位置

合并简写成q

而所有原子的动量

合并简写为P

所以相空间中的一点X’

可以用p,q来表示

它代表了分子的某一特定状态

而且随着时间的变化

分子在相空间中的位置

也会发生变化

从而在相空间中

生成对应的轨迹

相空间坐标p,q

决定了分子体系的性质

因此体系的性质A

可以表达成p,q的函数A(p,q)

由于p,q会随着时间而变化

因此A也会相应发生变化

在包含大量分子的体系中

不同分子对应相空间中的位置p,q

和相应的性质A(p,q)也会不同

在温度体积和粒子数

都一定的情况下

一个体系在平衡状态下的

某一性质A的平均值

应该由分子在相空间中的分布决定

表达成计算式就是A的平均值

由A(p,q)与体系中

分子处于相应点p,q的概率

相乘进行加权平均得到

这个表达式中的A(p,q)

代表了性质A

随体系中所有粒子的坐标

和动量的变化情况

而P(p,q)则代表了体系

在某一个相点对应坐标为q

动量为p所出现的概率

根据统计力学

我们知道这一几率

与该相点所具有的能量有关

根据体系的配分函数q

和该相点p,q所具有的能量E(p,q)

可以求得相应的几率P(p,q)

在这个几率表达式中

KB是波尔兹曼常数

T是温度

虽然原理非常简单

但是对于复杂体系来说

由于它们的配分函数

往往没有解析表达式

只能通过数值方法来拟合

这就要求我们

要将相空间中所有的点p,q

和对应的性质A(p,q)都计算出来

然后进行统计平均

然而由于相空间

是一个极大的空间

我们考虑一个

含有一百个粒子的体系

仅仅让其中每个粒子的动量

和坐标可以取正负2个值

相空间中就会有

2的600次方个点

这个数大概是

4.15×10的180次方

如果要把这些点

都找到显然是不可能的

但是分析一下配分函数

我们可以看到

由于相空间中某一点出现的概率

与该点对应的能量

呈负的指数相关

这意味着对于那些能量很高的点

它们出现的几率将会极小

从而对体系的性质的影响

也会微乎其微

甚至可以忽略不计

因此对我们来说

最关键的还是怎样找出

相空间中最重要的

贡献最大的那些点来

相对于完整地相空间来说

它们只占了比较小的一部分

在讨论怎样确定相空间中

哪些点更重要之前

我们首先来考察一下

如何来求算一个体系的平均性质

如果我们从分子的某一相点出发

该相点应该对应了

分子的一个合理的结构

分子中的原子有一定的动能

这样分子就会随着时间

而在相空间中

一定的区域运动形成轨迹

并对相空间进行取样

因此如果我们要求算

该分子所组成的体系的平均性质

可以一定的时间间隔

从相空间中找到对应的相点

并基于它求算对应的性质

最后对所有取出的点

进行平均就可以了

那么在这个计算式中

M就是取样的次数

A(ti)表示某一时刻ti

取得的相点所对应的性质A的值

如果我们能对完整的轨迹

进行连续的取样

那么平均值的求算

就转变成一个积分式

基于统计力学的各态历经假设

如果我们取样的时间足够长

那么从任意的起点出发

都可以使轨迹遍历完整的相空间

而且对相点取样的几率

满足波尔兹曼分布

由于一个宏观体系中

各个分子所表现出来的平均值

就取决于其在一定温度下

对应的玻尔兹曼分布

因此基于各态历经假设

我们可以认为对于处于一定系综

中的大量粒子的统计平均性质

可以通过对一个粒子

在相空间中的轨迹

进行求时间平均来得到

从而将宏观多粒子的统计平均问题

转变成了一个微观单粒子的

时间平均问题

现在的问题就是

我们应该怎样来得到

一个粒子在相空间中的轨迹了

对于服从经典力学的物体来说

因为一个相点已经规定了

粒子的位置和动量

因此只要给定了初始相点

可以认为整个轨迹都是确定的

例如我们来考察一个

经典的一维谐振子

它的相空间是二维的

仅有一个位置

和一个动量

相空间中的原点

显然对应了弹簧处于平衡长度

而振子动量为零的静息状态

如果起点是原点

那么由于这一点是驻点

所以谐振子在相空间中的轨迹

就仅仅是这样一个点

现在我们来考察另外一种情况

对于力常数为K的

弹簧上的谐振子

考虑在t0时刻

从长度为B的偏离平衡点的位置

将振子释放

此时振子的动量为零

但是在弹簧恢复力的作用下

振子开始朝着位置坐标

而减小的方向运动

此时坐标仍然为正值

同时由于弹簧的势能转换成

振子的动能

振子开始具有指向坐标轴

负方向的动量

所以动量是负值

随着振子运动经过平衡位置

坐标为零

它的动量也达到最大的负值

随着弹簧开始缩短

坐标进一步减少

变成负值

而振子也开始减速

动量相应增加

最终随着振子动量达到零

弹簧被压缩到最短

此时的位置应该是-B

此时振子又开始朝

坐标轴正方向运动

动量继续增加

坐标也开始增加

直到振子再一次达到B

点相应的动量

又开始由正转为负值

从而在相空间中

形成这样的椭圆形的

往复的轨迹

我们现在可以来考察一下

振子运动过程中的动力学过程

如果在时间t1振子的位置在qt1

经过任意的时间到t2时

根据牛顿动力学方程可以求的

qt2的表达式

式中的Pt为t时刻振子的动量

m为振子的质量

同样我们可以由t1时刻的动量pt1

求得t2时刻的动量pt2

表达式中的at表示t时刻

粒子的加速度

由牛顿第二定律可以得到

a等于F除以m

F为振子的受力

可以由胡克定律得到

因为谐振子的势能表达式非常简单

因此我们可以借此得到

任意时刻t的位置qt

和动量pt的解析表达式

这就是我们所看到的

相空间中的谐振子的

椭圆形轨迹的方程

然而由于分子的势能函数

远比谐振子要复杂

我们对分子的相空间轨迹

就无法得到解析形式的方程了

此时我们利用

欧拉近似将相空间中的轨迹

对无穷小时间的积分

改写为对有限时间△t的

差分计算式

根据坐标和动量的差分表达式

一旦给定了体系中

所有粒子的初始位置和动量

并且能够计算粒子

在任意时刻的受力的话

我们就可以据此来近似模拟

真实相空间中的轨迹了

通常来说

对于化学体系

其中原子的初始位置q

其实代表了

所要模拟的分子的初始结构

一个合理的初始结构

可以通过对分子

进行能量极小化计算

也就是优化计算来得到

而粒子的初始动量

则可以根据要模拟的温度

来对体系中的原子进行随机指定

经过指定后

粒子的平均动量与温度之间

应该满足这样一个对应的关系式

这也是温度的统计

力学定义式

在这个关系式中

N是原子总数

n代表的是

在模拟时被固定的坐标数量

这些坐标上没有动能

所以需要先从温度计算中扣除

Pi(t)表示t时刻

第i个原子的动量

mi代表这个原子的质量

为了能够进行动力学计算

我们需要计算原子的受力

也就是需要势能函数

显然对于原子数

很多的体系来说

分子力学方法比量子化学方法

要经济很多

对于化学体系

由于我们无法得到

动力学轨迹的精确解析表达式

因此能否精确重现

体系在相空间中的真实轨迹

将取决于我们对

动力学过程的计算的具体设置

特别是积分步长△t的设置

一方面我们把时间步长△t

设置的越小

计算得到的轨迹

就越接近真实的轨迹

当△t达到无穷小

就还原得到精确的轨迹

但是这样会导致

计算量大到无法接受

当然我们也可以通过

把时间步长△t设置的更大

来减少计算量

但是这样可能

又会导致我们得到的轨迹

偏离真实轨迹

甚至得到错误的结果

我们还是以刚才的一维谐振子为例

来进行说明

振子在弹簧的作用下

以一定的周期往复运动

假设振子的运动周期是τ

这意味着

在二分之τ的时间内

振子可以从离墙最远处

运动到离墙最近的地方

但是如果我们设定的△t步长

如果大于这个值的话

那么得到的轨迹中

振子的振动幅度

就会超过实际的振动幅度

从而产生误差

如果△t设置的太大

导致振子的振幅过大

我们甚至可以得到

振子从最远端

回复运动后进入墙体的荒谬结果

因此

为了避免动力学计算过程中

产生过大的误差

甚至带来不稳定

我们需要对

模拟的步长进行谨慎的选择

一般而言

计算所使用的步长

至少需要比体系中

最快的周期运动的周期

小一个数量级

分子体系中

最快的运动

是化学键的振动

而其中最快的

又是含有氢原子的化学键的振动

周期一般在10的-14次方秒

也就是十飞秒左右

因此如果需要模拟一个分子

在相空间中的轨迹

我们通常需要将步长

设置为小于一飞秒

而通常我们所感兴趣的

分子的动力学变化过程

例如蛋白质的折叠过程

往往发生在微秒

甚至毫秒的时间尺度上

这意味着动力学模拟

需要进行10的9次方步以上的计算

才能得到我们感兴趣的结果

而每一步还都需要计算出

分子的能量和梯度

这显然是无法承受的

针对这一问题

目前已经提出了很多解决方案

最简单的方案是

在计算中将所有含有氢原子的化学键固定住

从而可以将步长相应增大

而减少计算量

下面我们来对

动力学积分过程做一下简单的讨论

依据欧拉近似后的动力学方程

我们从粒子初始时刻t0的位置qt0

动量pt0和受力出发

指定△t

我们就可以模拟得到

完整的动力学过程中的轨迹

这样的方法又叫初始值法

根据我们刚才的分析

初始值法非常简单

但是误差较大

动力学模拟过程容易不稳定

如果我们仅仅讨论

轨迹中的位置变化情况

更好的近似方法是将

qt展开成泰勒级数的形式

表达式中的

vt和at分别代表了

粒子在t时刻的速度和加速度

它们分别是位置qt的

一阶和二阶导数

1967年Verlet基于泰勒展开

提出了一种动力学轨迹积分办法

它的基本思路是

先将展开式中的△t

替换成负的△t

可以得到q(t-△t)的表达式

然后将q(t+△t)

与q(t-△t)进行加和

可以消去其中的奇次项

例如含有速度vt的这一项

将在加和中消失

进一步将级数

在二阶处截断就可以得到一个

仅仅通过q(t-△t)

和qt以及at

来获得q(t+△t)的表达式

也对于一个粒子

其下一时刻的位置

将由它上一时刻的位置

和当前的位置

以及现在的受力所决定

而完全不需要粒子的速度信息

仅仅是计算第一步

需要用到初始值法

来设定并启动计算

由于计算中不需要粒子的动量信息

当我们需要求算的物理量

或者性质仅与结构有关时

Verlet方案就显得非常的方便

然而由于粒子的速度

在模拟过程中完全没有涉及

导致我们无法控制体系的温度

因此为了能在动力学模拟过程中

同时考虑所有粒子的动量与位置

有人提出了改进的Verlet方案

首先可以将qt表示成q(t+1/2△t)

再减1/2△t

而将q(t+△t)表示成

q(t+1/2△t)

再加1/2的△t

并且呢将这两个式子以

1/2△t为变量进行泰勒级数展开

将两个展开式加和后可以得到

q(t+△t)等于qt加上v(t+1/2△t)

乘以△t

这表明△t时刻的位置

需要依据t时刻的位置

和1/2△t时刻的速度

也就是动量来求算

而对于1/2△t时刻

粒子的速度

也可以进行同样的处理

得到v(t+1/2△t)

等于v(t-1/2△t)

加上at乘以△t

这表明1/2△t时刻的速度

依赖于t时刻的加速度

而加速度需要通过势能函数

也就是t时刻的

粒子的位置来进行求算

从这两个表达式我们可以看到

在动力学计算过程中

位置与动量的计算是不同步的

因此呢这个算法也被称为蛙跳算法

蛙跳算法能够得到粒子的速度

并且能够很方便的

对温度进行控制

它的精度也Verlet方法更高

但是值得注意的是

蛙跳算法在计算过程中

速度与位置是不同步的

它们之间相差了半个时间布长

另外由于计算中

对泰勒级数中的高阶相机性的阶段

也会一定程度上

给动力学过程带来一些不稳定

针对这些缺陷

有一些新的更稳定的改进的数值算法

可以将高阶项引入进来

比如龙格库塔方法

和预估-校正方法等等

我们在这里就不再进行介绍了

一般来说

通过分子动力学模拟

我们可以对大量的结构

和性质变化进行分析

例如我们可以通过

动力学模拟计算得到体系的相应性质

并与实验结果进行对比

从而对模拟的精度作出评估

我们也可以计算得到

实验上难以得到的热力学性质

通过动力学模拟

我们还可以观察分子构象的变化过程

根据动力学模拟中分子能量的变化

我们可以求得体系的内能

基于模拟过程中对能量和温度的统计

我们可以计算得到体系的热容

我们还可以计算体系的压力和温度

在压力表达式中

第一项是理想气体项

基于维里定律得到

而第二项考察了分子间作用

对压力的贡献

是实际气体校正项

温度则简单的通过

它的统计热力学定义式

针对体系中所有的粒子求算动能平均

并结合能量均衡原理就可以得到

下面我们来简单介绍一下

分子动力学模拟的基本过程

首先我们需要选择一个

合适的分子力场

在前面的章节中我们介绍过

由于分子力场是经验势能函数

其函数形式和参数

通过针对不同类型的分子

进行优化和拟合得到

每个力场都有一定的适用范围

因此选择合适的力场

是分子动力学模拟中

非常重要的一个步骤

例如模拟蛋白质分子体系

我们可以选择Amber力场

Charmm力场

opls力场等

专门针对蛋白质和DNA

这些生物大分子开发的力场

模拟有机分子时

可以选择MM3MM4力场

或者Compass力场等等

选定力场后

通常分子动力学模拟过程

可以分成三步

首先通过对要模拟的体系

进行结构优化

来获得合理的初始结构

一般来说

当我们模拟一些大分子时

初始结构往往通过实验手段

比如X射线衍射

核磁共振等方法得到

由于实验技术的限制

其中的原子间可能还存在一些

能量较高的相互作用

通过能量最小化

可以将这些作用消除

从而得到相对合理的初始结构

第二步

经过优化后的结果

需要通过平衡相计算

来使模拟体系处于

指定系综下的平衡态

在平衡相计算过程中

我们可以监测体系的热力学参数

例如温度压力密度等等

以及分子的结构参数

例如RMSD均方根位移等等

来确保体系达到了平衡

第三步经过平衡后的体系

就可以真正用来生成分子动力学轨迹

并用于下一步的进一步分析了

分子动力学计算与分子结构优化计算一样

也存在收敛问题

分子动力学收敛的标准是

动力学轨迹已经收集到了

足够的相点可以近似

认为相空间已经得到了各态历经

但是这一标准

难以在实际操作中得到确认

因此在实际计算中

往往会选择一些更能反映

体系统计性质的指标作为判据

例如在对蛋白质分子进行模拟时

可以监测分子

在动力学过程中

相对于其晶体结构的均方根偏差

RMSD值

RMSD值一方面可以判断

模拟得到的结构与实验结构之间的偏差

同时根据RMSD值的波动范围

以及绝对值的大小

也可以判断动力学过程的收敛性

一般来说

在一段已经达到收敛的动力学轨迹中

RMSD值的波动范围应该非常小

同时为了避免

体系在某些介稳状态附近变化

而造成收敛的假相

在动力学计算过程中

还可以通过改变初始结构的方式

来获得多条相关性比较小的轨迹

来进行对比分析

在分子动力学模拟的过程中

有一个非常重要的问题就是

怎样仅对少数分子进行计算

来模拟包含有大量分子的宏观系统

显然仅仅针对数个水分子进行模拟

无法代表宏观状态下

一升水的真实情况

这是因为随着分子数量的减少

边界效应开始变得非常大

在模拟时应该对边界效应

做出适当的处理

周期性边界条件解决了这个问题

通过周期性边界条件的使用

人们能够基于对少量粒子进行模拟

来研究一个宏观体系的性质

周期性边界条件

将宏观体系

设想成一个个微观盒子的

周期性重复

而计算模拟

则仅需要对其中一个盒子

来完成就可以了

以图中的假想二维体系为例

每一个正方形的二维盒子

被八个相同的盒子包围

这样一个盒子里的粒子的行为

可以用来模拟整个宏观体系

而避免了因为使用较小的体系

而带来的边界效应

在模拟过程中

如果有分子从盒子的一侧离开

由于周期性设定

另外一侧会有同样的分子进入

从而也保证了体系粒子数的恒定

在三维空间中

通过同样的设定

每个盒子被26个相邻的盒子所包围

三维空间中采用立方体盒子

是最简单的边界条件

然而有时候也可以根据分子形状

从节省计算资源的角度

选择更合适的周期性边界条件

在三维空间中

还可以选择截角八面体

六棱柱,菱形12面体等

其他的周期性边界条件

例如对于接近于球形的分子

使用截角八面体边界条件时

所需要的溶剂分子就会更少

因此相比立方体边界条件

就减少了计算量

使用周期性边界条件

有一个需要注意的问题是

要避免不同盒子中

同一个原子之间产生作用

因为不同盒子互为映像

相同一个原子跟自己的映像

是不应该产生作用的

因此盒子大小需要跟势场的作用范围

尤其是非键作用的作用距离相互匹配

在实际计算中

可以通过对静电作用和范德华作用

设置截断距离来避免这一问题

非键作用的截断距离

一般应该小于周期性盒子的周期大小

针对非键作用设置截断距离

也是为了减少计算量

因为非键作用存在于体系中

任意一对原子之间

所以它的计算量

正比原子数N的平方

但是实际相距较远的原子间的作用

已经弱到可以忽略不计

因此在动力学模拟计算时

可以通过设定截断距离近似认为

超过截断距离的原子

对之间的相互作用等于0

从而减少计算量

通常为了避免

设定截断距离后

带来的势能函数的不连续

以及在截断距离附近

原子受力的波动

还可以通过开关函数

来对势能函数进行进一步的调整

原则上来说

由于静电作用的衰减

远小于范德华作用的衰减

因此针对静电作用

和范德华作用应该设置

不同的截断距离

通常我们一个我们

感兴趣的变化过程的时间长度

往往在微秒甚至毫秒级别

如果不经过任何处理

对这样的过程进行模拟计算

它的计算量将会过大

导致实际上无法完成

因此近些年来

发展了一些加速分子动力学计算的方法

它们包括通过周期性的

对体系进行加热退火

来避免模拟体系陷入局域极小

或者通过增加一定的偏移势

来引导动力学过程

确保针对感兴趣的结构区间进行采样

包括SMD TMD

Metadynamics等方法等等

另外副本交换

伞状取样等策略

也在现在的分子动力学计算中

经常采用

我们在这里就不再继续介绍了

今天的课我们就讲到这里

谢谢大家

计算化学课程列表:

第一章:Hartree-Fock方程和基组

-§1.玻恩奥本海默近似和分子的电子方程

--分子的哈密顿算符与玻恩-奥本海默近似

-§1.玻恩奥本海默近似和分子的电子方程

-§2. Hartree-Fock方程的求解

--分子电子方程的求解

--GAMESS程序的使用实验

-§2. Hartree-Fock方程的求解--作业

-§3. 基组

--基函数的选择

-§3. 基组

-§4. Post-HF 方法

--CASSCF 的理论与应用

--计算化学中三大问题

-§4. Post-HF 方法

第二章:几何构型的优化方法和技巧

-§1. 优化原理

--分子构型的优化

-§2. 平衡几何构型优化方法

--几何构型优化与振动分析实验

-§2. 平衡几何构型优化方法--作业

-§3. 过渡态的优化方法和技巧

--过渡态的优化

--过渡态理论视频

-§3. 过渡态的优化方法和技巧--作业

-§4. 分子振动频率计算

--分子振动频率计算

-§5. 内禀反应坐标(IRC)的计算

--IRC的基本理论

-章末测试--作业

第三章:密度泛函和微扰理论以及能量分解方案

-§1. 密度泛函的基本理论和应用

--DFT理论与应用

-§1. 密度泛函的基本理论和应用--作业

-§2. 微扰理论基本原理和应用

--微扰理论

-§2. 微扰理论基本原理和应用--作业

-§3. 能量分解方案的基本原理和计算

--能量分解方案

-§3. 能量分解方案的基本原理和计算--作业

第四章:分子动力学模拟方法和技巧

-§1. 分子力场原理简介

--分子力场简介

-§1. 分子力场原理简介

-§2. 分子动力学模拟基本原理

--分子动力学模拟简介

分子动力学模拟简介笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。