lammps模拟“lost atoms”原子原因及解决方法

2023-11-04 01:31

本文主要是介绍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”原子原因及解决方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/342294

相关文章

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Mybatis Plus Join使用方法示例详解

《MybatisPlusJoin使用方法示例详解》:本文主要介绍MybatisPlusJoin使用方法示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录1、pom文件2、yaml配置文件3、分页插件4、示例代码:5、测试代码6、和PageHelper结合6

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

Java中实现线程的创建和启动的方法

《Java中实现线程的创建和启动的方法》在Java中,实现线程的创建和启动是两个不同但紧密相关的概念,理解为什么要启动线程(调用start()方法)而非直接调用run()方法,是掌握多线程编程的关键,... 目录1. 线程的生命周期2. start() vs run() 的本质区别3. 为什么必须通过 st

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig