详细内容

LAMMPS讲解44-出错解决思路

如果两次 LAMMPS 运行在不同的机器或不同数量的处理器上没有产生完全相同的结果,这通常不是错误。理论上,应该在任何数量的处理器和任何机器上得到相同的结果。在实践中,数值四舍五入会导致分子动力学相空间轨迹在几百个或几千个时间步长内的微小差异和最终发散。但是,两次运行的统计特性(例如平均能量或温度)应该仍然相同。

如果velocity命令用于设置初始原子速度,则当模拟在不同数量的处理器或不同机器上运行时,可以为特定原子分配不同的速度。如果发生这种情况,两个模拟的相空间轨迹将迅速发散。有关避免此问题的详细信息和选项,请参阅速度命令中对loop选项的讨论。

类似地,create_atoms命令生成原子晶格。对于同一个物理系统,根据处理器数量的不同,原子ID对原子的排序和编号可能会有所不同。

一些命令使用随机数生成器,可以设置为在每个处理器上生成不同的随机数流,因此在不同数量的处理器上运行时会产生不同的效果。一个常用的示例是用于温度控制的fix langevin命令。

LAMMPS模拟通常有两个阶段,设置和运行。大多数LAMMPS错误是在设置时检测到的;其他像键拉伸太远可能直到run中间才会发生。

LAMMPS会尝试标记错误并打印错误消息,以便解决问题。对于大多数错误,它还将打印它正在处理的最后一个输入脚本命令。当然,LAMMPS无法找出物理或数值错误,例如选择太大的时间步长、指定错误的力场系数或有原子靠的太近甚至重叠!不正确的几何模型和物理模型会导致一系列错误,比如lost atomsbond/angle/dihedral/improper missingsimulation unstablecannot compute pppmtoo many bin等。这些错误出现你只能修改优化你的几何模型或者检查力场参数。

如果在输入脚本中收到有关invalid command的错误消息,可以通过查看 log.lammps文件查看它来确定导致问题的命令。如果您收到诸如“Invalid ... style”之类的错误,这意味着输入了错误的style名称,或者该命令是未编译到可执行文件中的可选包的一部分。

对于给定的命令,LAMMPS需要以指定顺序的某些参数。如果你搞砸了,LAMMPS通常会标记错误,但它也可能只是读取一个虚假的参数并分配一个有效的值,但不是你想要的。例如。尝试将字符串“abc”读取为整数值0。仔细阅读该命令的相关手册内容应该可以解决这些问题。在大多数情况下,LAMMPS期望读取一个数字,无论是整数还是浮点数,它会分别对所提供的输入实际上是整数还是浮点数进行严格测试,(例如,当需要一个整数,但提供了一个浮点数1.0):

ERROR: Expected integer parameter instead of '1.0' in input script or data file

一些命令允许使用变量引用代替数字常量,以便可以计算值并且可以在运行过程中更改。这通常使用参数的语法v_name来完成,其中name是变量的名称。另一方面,在读取输入和解析命令之前,使用语法${name}会执行直接替换。

仅当相应命令的文档明确说明时才允许使用变量引用(即 v_name)。否则,您将收到此类错误消息:

ERROR: Expected floating point parameter instead of 'v_name' in input script or data file

通常,LAMMPS会在遇到致命错误时将消息打印到屏幕和日志文件并退出。有时它会在屏幕和日志文件上打印一个警告并继续;您可以决定警告是否重要。在运行过程中生成的WARNING消息仅打印到屏幕上,而不是打印到日志文件中,以避免混淆热力学输出。如果LAMMPS崩溃或挂起而没有首先输出错误消息,则可能是错误(请参阅本节)或以下情况之一:

LAMMPS在处理器允许分配的可用内存中运行。最合理的MD运行受计算限制,而不是内存限制,因此这不应该成为大多数平台的瓶颈。代码中几乎所有的大内存分配都是通过C风格的malloc完成的,如果内存不足,则会生成错误消息。较小的内存块是通过C++“new”语句分配的。如果你不走运,你可能会在发出这些小请求之一时耗尽内存,在这种情况下,代码将崩溃或挂起(并行),因为LAMMPS不会捕获这些错误。

非法数字会导致LAMMPS运行缓慢或崩溃。这通常是由于模拟计算的物理和数字无效。如果在LAMMPS输出中看到剧烈的热力学值或NaN值,则说明的模拟有问题。如果怀疑这种情况正在发生,最好通过thermo频繁地输出出热力学信息(例如每个时间步长),这样就可以监控正在发生的事情。可视化原子运动也是确保模型按预期运行的好主意。

同时,LAMMPS可能挂起的一种方式是由于不同的MPI实现如何处理消息的缓冲。如果代码挂起而没有错误消息,则可能是您需要指定一个或两个MPI 设置(通常通过环境变量)以启用缓冲或增加可以缓冲的消息的大小。

当出现error错误的时候查看手册中error描述和解决办法可以解决掉绝大多数错误。Error章的网址是:https://docs.lammps.org/Errors_messages.html

 

 

感谢鲍路瑶老师的分享,内容来自于鲍老师分享出来的资料

如有需要添加微信:lmp_zhushou  进入微信群,帮助他人,共建社区

获取完整版lammps讲义可以加微信lmp_zhushou或加入QQ994359511


最新评论
请先登录才能进行回复登录
技术支持: CLOUD | 管理登录
seo seo