非确定性/概率分子动力学模拟

计算科学 模拟 软件 分子动力学
2021-12-23 20:34:05

我正在寻找一款用于执行具有以下规格的分子动力学模拟的软件:

  • 要求:发表良好(因为有论文在一个或多个相当受人尊敬的期刊上引用它)
  • required:在运行方式中包含一定程度的不确定性(例如,每次从相同的初始状态运行可能会导致系统的最终状态略有不同)
  • required:应该能够从分布(特别是 Maxwell-Boltzmann 分布)生成初始状态
  • required:在任何特定试运行结束时,应该可以获得我定义的区域的局部温度,或者系统中所有粒子的位置和速度
  • 可选:理想情况下,我们会将气体粒子模拟为具有弹性碰撞的硬球
  • optional : 如果它是用类似于 Java 或 Python 的东西编写的,那将是一个额外的好处,因为我对这些语言非常熟悉
  • 注意:对于我的模拟而言,两个或三个维度都可以

我已经知道一些确定性 MD 软件(例如 LAMMPS、NAMb、VMD 等),但据我所知,这些软件都没有包含我想要解决的第二点,我不愿意做任何因为我想开始运行模拟,所以对别人的代码进行了认真的修改。

谢谢你的时间。

1个回答

我会建议任何可能合适的生物分子 MD 包(GROMACS、NAMD、DESMOND、AMBER、CHARMM、GROMOS、ACEMD、TINKER、Espresso ……当然还有十几个)。这些都是

  • 出版得好,
  • 可能都可以生成麦克斯韦-玻尔兹曼速度分布(只要他们使用你的速度,你就可以自己做),
  • 会根据口味写出位置和速度,
  • 通过使用浮点计算(以及任何随机积分方案,正如 AJK 指出的那样),通过设计纳入非确定性,
  • 在三个维度上工作。

不确定性很容易产生 - 只需打乱输入中粒子的顺序即可。这将改变力和能量计算的累积顺序,这通常会导致轨迹发散的足够数值差异。

每个代码都有其实现导致不确定性的方式。例如,与域分解和动态负载平衡并行运行 GROMACS 是不确定的,因为它依赖于在真实计算机上无法重现的时序测量。您可以使用其可重现模式来抑制它,但即使是对于输入粒子顺序也无法重现。

我不知道上述任何一种都会产生弹性碰撞的硬球。

良好引用几乎意味着用严肃的 HPC 编程语言(C、C++、Fortran)编写,因为人们使用和引用运行速度很快的代码。因此,您不可能拥有最近开发的编程语言和良好的出版历史。