第六章分子动力学方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章 分子动力学方法
6.1引言
对于一个多粒子体系的实验观测物理量的数值可以由总的平均得到。但是由于实验体系又非常大,我们不可能计算求得所有涉及到的态的物理量数值的总平均。按照产生位形变化的方法,我们有两类方法对有限的一系列态的物理量做统计平均:
第一类是随机模拟方法。它是实现Gibbs的统计力学途径。在此方法中,体系位形的转变是通过马尔科夫(Markov)过程,由随机性的演化引起的。这里的马尔科夫过程相当于是内禀动力学在概率方面的对应物。该方法可以被用到没有任何内禀动力学模型体系的模拟上。随机模拟方法计算的程序简单,占内存少,但是该方法难于处理非平衡态的问题。
另一类为确定性模拟方法,即统计物理中的所谓分子动力学方法(Molecular Dynamics Method)。这种方法广泛地用于研究经典的多粒子体系的研究中。该方法是按该体系内部的内禀动力学规律来计算并确定位形的转变。它首先需要建立一组分子的运动方程,并通过直接对系统中的一个个分子运动方程进行数值求解,得到每个时刻各个分子的坐标与动量,即在相空间的运动轨迹,再利用统计计算方法得到多体系统的静态和动态特性, 从而得到系统的宏观性质。因此,分子动力学模拟方法可以看作是体系在一段时间内的发展过程的模拟。在这样的处理过程中我们可以看出:分子动力学方法中不存在任何随机因素。
系统的动力学机制决定运动方程的形式:
在分子动力学方法处理过程中,方程组的建立是通过对物理体系的微观数学描述给出的。在这个微观的物理体系中,每个分子都各自服从经典的牛顿力学。每个分子运动的内禀动力学是用理论力学上的哈密顿量或者拉格朗日量来描述,也可以直接用牛顿运动方程来描述。这种方法可以处理与时间有关的过程,因而可以处理非平衡态问题。但是使用该方法的程序较复杂,计算量大,占内存也多。
适用范围广泛:
原则上,分子动力学方法所适用的微观物理体系并无什么限制。这个方法适用的体系既可以是少体系统,也可以是多体系统;既可以是点粒子体系,也可以是具有内部结构的体系;处理的微观客体既可以是分子,也可以是其它的微观粒子。
自五十年代中期开始,分子动力学方法得到了广泛的应用。它与蒙特卡洛方法一起已经成为计算机模拟的重要方法。应用分子动力学方法取得了许多重要成果,例如气体或液体的状态方程、相变问题、吸附问题等,以及非平衡过程的研究。其应用已从化学反应、生物学的蛋白质到重离子碰撞等广泛的学科研究领域。
实际使用的限制:
实际上,分子动力学模拟方法和随机模拟方法一样都面临着两个基本限制:一个是有限观测时间的限制;另一个是有限系统大小的限制。通常人们感兴趣的是体系在热力学极限下(即粒子数目趋于无穷时)的性质。但是计算机模拟允许的体系大小要比热力学极限小得多,因此可能会出现有限尺寸效应。为了减小有限尺寸效应,人们往往引入周期性、全反射、漫反射等边界条件。当然边界条件的引入显然会影响体系的某些性质。
数值求解时的离散化方法:
对体系的分子运动方程组采用计算机进行数值求解时,需要将运动方程离散化为有限差分方程(参见第四章)。常用的求解方法有欧拉法、龙格-库塔法、辛普生法等(参见附录D)。数值计算的误差阶数显然取决于所采用的数值求解方法的近似阶数。原则上,只要计算机计算速度足够大,内存足够多,我们可以使计算误差足够小。
6.2分子动力学基础知识
一、分子运动方程及其数值求解
采用分子动力学方法时,必须对一组分子运动微分方程做数值求解。从计算数学的角度来看,这是个求一个初值问题的微分方程的解。实际上计算数学为了求解这种问题已经发展了许多的算法,但是并不是所有的这些算法都可以用来解决物理问题。
例子:
以一个一维谐振子为例,来看一下如何用计算机数值计算方法求解初值问题。一维谐振子的经典哈密顿量为: 222
12kx m p H +=. (6.2.1) 这里的哈密顿量(即能量)为守恒量。
假定初始条件为,则它的哈密顿方程是对时间的一阶微分方程
()()0,0p x
m p p H dt dx =∂∂=, kx x H dt dp −=∂∂−=. (6.2.2)
计算在相空间中的运动轨迹()()()t p t x ,:采用有限差分法,将微分方程变为有限差分方程,以便在计算机上做数值求解,并得到空间坐标和动量随时间的演化关系。
首先,取差分计算的时间步长为,采用一阶微分形式的向前差商表示,它是直接运用展开到的一阶泰勒展开公式
h h ()())(2h O dt
df h
t f h t f ++=+, 即得到 ()()h t f h t f dt df −+≈, (6.2.3)
则微分方程(6.2.2)可以被改写为差分形式 ()()()m
t p h t x h t x dt dx =−+=. (6.2.4)
()()()t kx h
t p h t p dt dp −=−+=. (6.2.5) 将上面两个公式整理后, 我们得到解微分方程(6.2.2)的欧拉(Euler)算法(参见附录C):
()()()m
t hp t x h t x +=+. (6.2.6)
()()()t hkx t p h t p −=+. (6.2.7) 这是()()t p t x ,的一组递推公式。有了初始条件()()0,0p x ,就可以一步一步地使用前一时刻的坐标、动量值确定下一时刻的坐标、动量值。这个方法是一步法的典型例子。
由于在实际数值计算时的大小是有限的,因而在上述算法中微分被离散化为差分形式来计算时总是有误差的。可以证明一步法的局部离散化误差与总体误差是相等的,都为的量级。在实际应用中,适当地选择的大小是十分重要的。取得太大,得到的结果偏离也大,甚至于连能量都不守恒;取得太小,有可能结果仍然不够好。这就要求我们改进计算方法,进一步考虑二步法。
h )(2h O h h h
差分计算的二步法:
实际上泰勒展开式的一般形式为
()()()()
11)(!+=++=+∑n i n i i
h O t f
i h t f h t f . (6.2.8) 其中()1+n h O 表示误差的数量级。前面叙述的欧拉算法就是取1=n 。