本文主要是介绍lammps模拟“lost atoms”原子原因及解决方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
lammps模拟过程中,最怕的是模拟过程中出错,其中,比较常见的一个错误是“lost atoms”,也就是常说的原子丢失。
正常情况下,分子动力学模拟要保证原子数目保持不变。
nve、nvt、npt系综中的“n”就是原子数目,这些系综已经明确了模拟过程中要保证原子数目“n”不变,原子数目减少则会中止模拟,并给出“lost atoms”错误提示。
“lost atoms”错误出现的最主要的原因是某些原子在积分过程中求解得到的速度过大,根据该速度计算出的下一步位移过大,已经超出了体系盒子的范围,换句话说,速度过快的原子已经跑出了盒子,造成“lost atoms”。
导致原子速度过快的原因有以下几个方面:
(1)模型设置不合理
一般出现在多原子建模中,比如一层石墨烯原子插入到Al原子之间,由于建模时石墨烯C原子位置设置不合理,导致与Al原子重叠。
在进行积分时,位置重叠或者距离过近的原子之间的排斥力过大,因此原子获得的速度过大,容易飞出box。
解决方法:
建模时注意原子排列位置,宁可离的稍远一些,也不要靠的过近。
建模之后使用minimize命令对体系进行能量最小化,minimize命令不用设置力场,是拓扑结构上对体系进行最小化,能够解决大部分的原子重叠问题。
(2)边界条件设置不合理
如果建模过程没有问题,也没出现明显的原子重叠现象,考虑一下是否是边界条件原因。
例如,边界条件为固定f条件,由于建模原因,模型的初始内应力又比较大,正常弛豫下,盒子应该会扩大以释放掉内应力从而达到系统平衡,而固定边界条件又不允许盒子尺寸发生变化,此时,边界上的原子会被挤出盒子,造成原子丢失。
解决方法:
将边界条件改为s,查看驰豫结果,如果盒子只是稍微扩大,没有出现盒子爆炸性的扩大,基本上属于这种问题,将初始盒子尺寸扩大可以解决此类问题。
(3)力场设置不合理
如果是发生了盒子“爆炸”,原子完全散开,单纯的扩大盒子尺寸没有意义,需要考虑力场设置是否合理。
力场描述原子之间的受力情况,如果力场设置不合理,可能会出现原子之间受力计算错误,原子之间的力远超正常值,也会造成原子丢失。
解决方法:更换力场。
(4)模拟步长设置不合理
当以上原因都排除后,如果还是存在“lost atoms”,考虑是否是timestep设置过大,设置更小的步长试试。
当出现丢失原子错误提示时,添加thermo_modify lost ignore 命令可以关掉错误提示,使程序能够运行下去。
但是,不建议这么做,这个命令仅仅是强制程序继续运行,不能解决原子丢失问题,程序“带病”运行,有可能会得到不正确的运行结果。
更多lammps教程请关注微信公众号:lammps加油站
lammps交流请加qq群:
这篇关于lammps模拟“lost atoms”原子原因及解决方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!