比较分子动力学模拟中Verlet算法、Speed Verlet算法及辛算法的精度

本文比较了分子动力学模拟中的Verlet算法、Speed Verlet算法和辛算法在1D双谐振子及2D三谐振子体系中的精度。结果显示,三种算法与精确解的轨迹重合度高,速度和位置精度无明显区别。辛算法在长时段模拟中表现出低耗散优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

比较分子动力学模拟中Verlet算法、Speed Verlet算法及辛算法的精度

原理

分子动力学模拟是一种研究凝聚态系统的有力方法,对于经典体系,分子动力学假定所有粒子的运动服从牛顿运动方程,只要给出粒子的初始位置、速度(初始条件),边界条件,以及粒子之间相互作用的势函数,就能得到系统在未来任意时刻的状态信息。
由于多原子体系的相互作用非常复杂,难以用解析法求解体系的运动方程,因此用数值方法求解运动方程的近似解。这个过程就不可避免地引入了误差,包括截断误差和舍入误差。前者与不同算法有关,如有限差分法采用 T a y l o r Taylor Taylor展开后截断某些高阶项会引入截断误差,后者来源于计算机本身的精度。两种误差都能通过减小时间步长 δ t \delta t δt来减小,当 δ t \delta t δt较大时,截断误差起主要作用,但随着 δ t \delta t δt的减小会迅速降低,舍入误差随 δ t \delta t δt变化不大,并在 δ t \delta t δt较小时起主要作用。
进行数值求解的算法有很多种,对于差分法,其共同点是将粒子的位置,速度,加速度展开为 T a y l o r Taylor Taylor级数。下面我们来分析常用的 V e r l e t Verlet Verlet算法和更精确一些的 S p e e d Speed Speed V e r l e t Verlet Verlet算法的具体步骤以及它们的截断误差。

V e r l e t Verlet Verlet A l g o r i t h m Algorithm Algorithm

V e r l e t Verlet Verlet算法在分子动力学模拟中应用极为广泛,而且原理也很简明。这种方法利用粒子在 t t t时刻的位置和加速度,以及 t − δ t t-\delta t tδt时刻的位置,计算出 t + δ t t+\delta t t+δt时刻的位置。
将粒子的位置用 T a y l o r Taylor Taylor公式展开,忽略四阶以上小量:
r ( t + δ t ) = r ( t ) + d d t r ( t ) δ t + 1 2 ! d 2 d t 2 r ( t ) ( δ t ) 2 + 1 3 ! d 3 d t 3 r ( t ) ( δ t ) 3 + o [ ( δ t ) 4 ] r(t+\delta t)=r(t)+\frac{d}{dt} r(t) \delta t+\frac{1}{2!} \frac{d^2}{dt^2}r(t)(\delta t)^2+\frac{1}{3!} \frac{d^3}{dt^3}r(t)(\delta t)^3+o[(\delta t)^4] r(t+δt)=r(t)+dtdr(t)δt+2!1dt2d2r(t)(δt)2+3!1dt3d3r(t)(δt)3+o[(δt)4]
将式中的 δ t \delta t δt换为 − δ t -\delta t δt得:
r ( t − δ t ) = r ( t ) − d d t r ( t ) δ t + 1 2 ! d 2 d t 2 r ( t ) ( δ t ) 2 − 1 3 ! d 3 d t 3 r ( t ) ( δ t ) 3 + o [ ( δ t ) 4 ] r(t-\delta t)=r(t)-\frac{d}{dt} r(t) \delta t+\frac{1}{2!} \frac{d^2}{dt^2}r(t)(\delta t)^2-\frac{1}{3!} \frac{d^3}{dt^3}r(t)(\delta t)^3+o[(\delta t)^4] r(tδt)=r(t)dtdr(t)δt+2!1dt2d2r(t)(δt)23!1dt3d3r(t)(δt)3+o[(δt)4]
以上两式相加,并忽略 o [ ( δ t ) 4 ] o[(\delta t)^4] o[(δt)4]小量得:
r ( t + δ t ) = 2 r ( t ) − r ( t − δ t ) + d 2 d t 2 r ( t ) ( δ t ) 2 r(t+\delta t)=2r(t)-r(t-\delta t)+\frac{d^2}{dt^2} r(t) (\delta t)^2 r(t+δt)=2r(t)r(tδt)+dt2d2r(t)(δt)2
两式相减,并忽略 o [ ( δ t ) 2 ] o[(\delta t)^2] o[(δt)2]小量得:
v ( t ) = d r d t = 1 2 δ t [ r ( t + δ t ) − r ( t − δ t ) ] v(t)=\frac{dr}{dt}=\frac{1}{2\delta t}[r(t+\delta t)-r(t-\delta t)] v(t)=dtdr=2δt1[r(t+δt)r(tδt)]
至此,我们得到了 t + δ t t+\delta t t+δt时刻粒子位置和 t t t时刻速度的表达式,并且知道了位置的误差正比于 o [ ( δ t ) 4 ] o[(\delta t)^4] o[(δt)4],速度的误差正比于 o [ ( δ t ) 2 ] o[(\delta t)^2] o[(δt)2] V e r l e t Verlet Verlet算法的数值稳定性比简单的欧拉方法高很多,并保持了物理系统中的时间可逆性与相空间体积元体积守恒的性质。然而,这种算法得出的轨迹与速度无关(无法与热浴耦联),并且不能给出同一时刻的位置和速度。

S p e e d Speed Speed V e r l e t Verlet Verlet A l g o r i t h m Algorithm Algorithm

V e r l e t Verlet Verlet A l g o r i t h m Algorithm Algorithm中,我们发现其无法给出同一时刻的速度和位置, S p e e d Speed Speed V e r l e t Verlet Verlet(有些地方也叫 V e l o c i t y Velocity Velocity V e r l e t Verlet Verlet)正是用来克服这个缺陷的。
将位置展开到二阶小量:
r ( t + δ t ) = r ( t ) + d d t r ( t ) δ t + 1 2 ! d 2 d t 2 r ( t ) ( δ t ) 2 r(t+\delta t)=r(t)+\frac{d}{dt} r(t) \delta t+\frac{1}{2!} \frac{d^2}{dt^2}r(t)(\delta t)^2 r(t+δt)=r(t)+dtdr(t)δt+2!1dt2d2r(t)(δt)2
引入 t + δ t 2 t+\frac{\delta t}{2} t+2δt时刻的速度:
v ( t + δ t 2 ) = v ( t ) + 1 2 d d t v ( t ) δ t v(t+\frac{\delta t}{2})=v(t)+\frac{1}{2}\frac{d}{dt} v(t) \delta t v(t+2δt)=v(t)+21dtdv(t)δt
t + δ t t+\delta t t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值