目录

logfile报错:ERROR DETECTED: ATOMS TOO CLOSE

首先,这种情况就是因为出现了个别原子距离靠得太近,已经不符合科学实际了,例如两个原子距离0.2埃,这是严重违背科学事实的。在AMS中,出现这种情况,是会停止模拟下去的(Lammps不检查这一项的合理性)。

那么用户就应该检查,哪个原子对,出现了这种近距离?为什么会运动到这么近的距离,都不弹开?是步长太长了吗?是原子间排斥力太小(不符合事实)了吗?等等。

情况一:一开始没有进行任何MD计算,就出现该报错

这是初始模型本身有问题!

生成的.out文件中尾部,会告知具体哪些原子距离太近,可以根据编号去检查,例如:

Atoms 1 and 897 are extremely close (<0.001 Bohr). Input error? If this was intended, set the System%AllowCloseAtoms option to True.

显示1和897号原子几乎重叠在一起了。 造成这种问题主要来源是两个方面:

  1. 边界原子是不是和下一个周期的原子靠太近?请务必正确理解“周期性”,如果不理解周期性,做分子动力学模拟就纯属瞎整。
  2. 是不是模型复制、粘贴导致重叠?

其中

情况二:MD一定步数后,出现该报错

修改模拟条件,避免该偶然事件(原子剧烈碰撞导致原子距离过近):修改分子个数、模拟条件如温度等。 如果体系温度很高,例如4000K甚至10000K,步长设置需要比0.25fs小,否则会导致原子在1个step,就运动到与另一个原子相近的地方,而没有及时更新受力情况(随着原子靠近,排斥力应该暴增太对,但由于步长太长,因此还没有来得及更新排斥力,就已经运动到了跟前),从而导致atoms too close的情况。

还有一种情况,就是使用Molecule Gun入射原子、分子,入射速度或能量非常高,但是步长不够小,这种情况也和温度很高是一样的道理。

检查atoms too close原因

为了更清楚的知道出现atoms too close的原因,我们可以检查一下动画。在*.out尾部会有具体报错信息,展示是哪两个原子出现了这种情况,例如:

 MolGun1: Added 1 atoms with CoM at   -7.76141   0.80403  18.89726 a.u.
 Velocity   -0.00013  -0.00007  -0.02285 a.u.
atoms=119 441, cell shift=  0  0  0, distance=     0.25294957

表示此刻119号原子和441号原子靠得太近,距离只有0.25294957埃。

在AMSinput → Model → Coordinates中,我们找到这个原子 然后在Movie的第一帧中,找到对应的原子,并在View → Atom info → Name → Show勾选,显示该原子:

然后从Movie的最后一帧,一帧一帧倒着看,结合实验微观视角的常识,就可以发现原因了

最糟糕的解决方法

最愚蠢的办法,就是不检查任何原因,直接关闭检查。正常做分子动力学模拟,一般是不允许这种不严谨的做法的。