分子动力学轨迹的再现性

计算科学 分子动力学 密度泛函理论 再现性
2021-12-19 22:34:16

假设我有两个分子动力学 (MD) 模拟器 A 和 B,它们实现了以下接口: 其中是原子/离子的位置,是原子/离子的类型(例如氢或碳),而是原子/离子上的力。给定一组时间,它们可以产生离散轨迹: 除非 A 和 B 相同,否则轨迹会有差异。给定一对轨迹,

{xi(t=0),Ti,t}{xi(t),Fi(t)}
xiiTiiFii
T={(t,xi(t),Fi(t)):t(dt)N}
(TA,TB),我应该如何确定 A 和 B 是否一致(对于该特定轨迹)?或者我该怎么做才能让你相信正在复制的行为?BA

为了给出一些上下文,B 是 A 的修改版本,使用稍微不同的哈密顿量,因此它们具有相同的接口。周围对初始条件的邻域进行采样可能很有用,但是生成轨迹是计算密集型的,因此最好使用少量轨迹。该方案是使用平面波 DFT 的从头算分子动力学。我对表面上吸附原子的运动特别感兴趣。x(t=0)

3个回答

A 和 B 之间的任何数值差异将随时间呈指数增长(即 Lyapunov 不稳定性,如Frenkel 和 Smit中所讨论的)。即使是由于基组大小造成的微小差异,也可能导致轨迹随时间发生巨大差异。所以我不确定各个轨迹之间的比较是否有意义。正如Deathbreath 所建议的那样,比较一些平衡量可能更相关,例如平均能量或扩散常数。

但如果你真的想检查轨迹是否相同,你可以尝试的一件事是时间反转测试。有时作为测试,人们会在固定的时间段内运行模拟,然后将其向后运行(即反转所有动量的方向)。如果积分器是时间可逆的(不是所有的都是),那么你应该回到你开始的地方(或者至少接近,取决于机器精度和运行的长度)。也许你可以尝试类似的策略:用 A 正向运行模拟。然后反向运行,用 A 一次,用 B 一次。如果方法 A 和方法 B 相同,那么这两个运行的最终坐标应该或多或少同样接近起始坐标。例如,这可以通过原子的均方位移来测量。

首先想到的是在标准验证测试用例上使用 A 和 B。我不确定什么可用于 MD 验证(谷歌搜索“分子动力学验证”出现了很多),但在 CFD 中有大量数据库。

如果你需要验证一些非常具体的东西(听起来像你),那么你需要编译一些统计数据来说服我 A 和 B 正在重现相同的行为。您可以通过对给定两种方法的初始条件的输入空间进行采样来做到这一点。我使用过 DAKOTA 中一些复杂的采样方法;多项式混沌扩展或各种实验设计/不确定性量化功能可以显着减少编译有意义的统计数据所需的运行次数。

轨迹的再现性通常是不可能的;即使在实现积分器的相同代码上的不同编译器版本也不会重现彼此的第一步 - 混乱的分歧随之而来。由此产生的热力学观测值的再现性是一个更相关和可实现的标准。

一种简单的方法是认识到(比方说)势能在轨迹上的分布是先验已知的,并且以已知的方式随(比方)温度而变化。使用两个积分器观察到分布的相同(和预期)温度依赖性的统计显着观察是证明它们等效性的良好开端。请参阅http://dx.doi.org/10.1021/ct300688p(文章也可在 arxiv.org 上找到;代码在https://simtk.org/home/checkensemble上)。