四阶朗格-库塔朗之万方程

计算科学 计算物理学 龙格库塔
2021-12-06 02:55:51

我试图弄清楚如何将一段代码从 Velocity Verlet 转换为 Runge-Kutta,同时正确处理热噪声的时间步长依赖性。

我的系统的朗之万方程读数为

ma=γvdUdx+ξ(t),

其中是一些相互作用势,是阻尼,而是具有的高斯噪声项。Uγξμ=0σ=2γmkBT

我可以将 Velocity Verlet 与 Langevin 动力学一起使用

vt+1=vt+h(aγv+ξ(t)).

定性地说,朗之万方程在这里所做的是,它通过向加速度添加随机冲击来模拟热波动,同时用恒定阻尼项来抵消它们以稳定能量。那么我的问题是,这如何转化为四阶龙格-库塔(RK4)?

在 RK4 中,我们计算速度为

vt+1=vt+h6(a1+2a2+2a3+a4)

其中是在 RK4 步骤中计算的部分加速度。ai

我不清楚在哪里介绍朗之万动力学。我最好的猜测是它应该应用于每个单独的 RK 步骤?例如对于a1

a1=atγvt+ξ(t).

当然,我们必须在一个时间步中对所有才有意义。这意味着我们在每个时间步开始时生成一个,然后我们将其用于该时间步的每个计算。ξ(t)aiξ(t)

尽管如此,这里还是缺少了一些东西......因为现在噪音不依赖于时间步长,而且应该是!这在 Velocity Verlet 中不是问题,因为我们只是在每个时间步将噪声项与相乘,但这里不是这种情况。在我看来,时间步长必须包含在 Langevin 方程的项中的某处,但我真的不知道如何......hσ

编辑1:更改为更明智的符号。

编辑2:我意识到,要使 RK4 工作,您可能必须在噪声项中添加一个时间步长,如以使单位正确输出。σ=2γmkBTh

1个回答

警告:这不是您关于如何用 RK4 替换 VV 的完整答案。基本上,我推荐另一种积分器方法,它也可能具有四阶精度。

您想随着时间的推移对上述朗之万方程进行积分。由于不知道解析解,因此您需要以数值方式进行。正如@Chris 正确指出的那样,这是一个随机微分方程(SDE)。因此,您的时间积分由两部分组成:确定性部分(动量和位置)和随机性部分(影响动量)。

一种常见的方法是使用拆分方法:这将上述 Langevin 方程(而不是相关的 Fokker-Planck 算子)拆分为不同的部分,每个部分都可以解析求解。然后将这些解析解用作基本构建块,从中可以构建特定精度(“阶”)的数值积分器。

我建议阅读Leimkuhler 等人在 2012 年发表的关于拆分方法和由此产生的基本构建块——从第 2 节,特别是第 2.1 节关于时间步长方法的“A”、“B”和“O”开始的论文。(注意这篇文章在其术语中侧重于分子采样和统计物理学,但这无关紧要。)我相信本文将为您提供有关如何获得数值时间积分方案(用于 SDE)的一些背景知识。

到目前为止,您已经将 Velocity-Verlet 与 Langevin 一起使用。因此,在论文的符号中,您可能正在做“BAO”(B = 动量积分,A = 位置积分,O = 随机积分)。

如果您只对获得更准确的积分方案感兴趣,那么您可以例如使用“BAOAB”(参见上面的论文),它在动量方面具有二阶精度,甚至在位置方面具有四阶精度以及其他一些不错的特性.

底线是:如果您没有正确处理随机部分,只需用 RK4 替换(在确定性积分部分中)VV 将无济于事。