计算化学公社

标题: 已解决:lammps reaxff力场模拟界面模型高温热分解时遇到hbondchk failed的问题 [打印本页]

作者
Author:
李天    时间: 2023-8-13 21:41
标题: 已解决:lammps reaxff力场模拟界面模型高温热分解时遇到hbondchk failed的问题
各位老师,我在使用lammps reaxff力场模拟界面模型高温热分解时遇到hbondchk failed的问题。
我的模型是由炸药分子和聚合物粘结剂组成,具体建模流程为
①(ms中)炸药分子单胞compass优化-->切面-->扩胞--->forcite compass优化
②(ms中)画出聚合物粘结剂单链-->forcite compass优化-->AC模块compass力场混合多条粘结剂链
③利用ms中的build layer模块组合上下两层界面模型


此时ms中的模型密度达不到混合物的计算理论密度,且通过调整上下两层的真空层距离和晶胞大小也达不到理论密度。于是我ms建立完模型后,输出data,利用lammps npt系综,在界面上下两层z轴方向施加压力,压缩盒子到模型理论密度。压缩后弛豫先跑了nvt 300k 10ps和npt 300k 0bar 10ps,模型已经达到平衡,且模型结构和密度未发现问题,力场适合。
接着跑nvt高温热分解,2500k 2750k 3000k 等温度。发现2500k并行20核可以成功跑完300ps,但是只是换了一个温度,例如3000k,就会报hbondchk failed的错误。


查找网络给出回答是可以在in文件中添加safezone mincap命令,但是回答说这会忽略hbondchk failed这个错误,治标不治本。
所以具体问题出在哪里,想不通,麻烦老师们帮助解答,谢谢大家!

作者
Author:
Graphite    时间: 2023-8-13 22:17
实际上就是到了3000K,运动速度够大,成键断键变化很快。
reaxff bond统计会按照预设的步数检查一些东西是否还在,防止在用户不知情的情况下,结构偏的太离谱。
但如果这种变化对于你来说是合理的(因为是个高温热分解),模拟做下来也基本符合预期,那用safezone/mincap压掉这个报错就可以。
调reax的控制参数文件里面hbondchk相关参数降低这个检测的严格程度也行,调reax/c bond的统计频次也行。

但是我注意到你用的是ffield.reax.lg这套力场参数,这套参数我在做一些高温体系时发现不是很适合,也许自带教程里面RDX用的那套参数可供你参考。或者参考下别的含能材料之类的文献?
力场参数在reaxff模拟中比这些小按钮重要得多,特别是低温的参数用到高温基本是十个崩七八个。
作者
Author:
李天    时间: 2023-8-14 13:12
Graphite 发表于 2023-8-13 22:17
实际上就是到了3000K,运动速度够大,成键断键变化很快。
reaxff bond统计会按照预设的步数检查一些东西是 ...

非常感谢老师的解答!力场合不合适确实非常重要,我重新尝试下。
还有个问题想请教一下老师,我的弛豫npt 是在300k 0atm下进行的,这是我参考文献设置的。但是为什么不是300k 1atm下弛豫呢,这样不是更符合实际吗?
很多论文有零压下弛豫,也有1个大气压下弛豫。对于固体体系来说(炸药分子体系),0atm和1atm区别不大,但是还是不理解为什么会有0压。
作者
Author:
Graphite    时间: 2023-8-14 13:59
本帖最后由 Graphite 于 2023-8-14 14:28 编辑
李天 发表于 2023-8-14 13:12
非常感谢老师的解答!力场合不合适确实非常重要,我重新尝试下。
还有个问题想请教一下老师,我的弛豫np ...

对大多数固体是没什么区别。0压NpT实际上不耦合压力,近似等于NVT+boundary s s s。不过这也没什么特殊意义,可能就是因为前处理没什么大影响,随意设的。
作者
Author:
李天    时间: 2023-8-14 14:52
Graphite 发表于 2023-8-14 13:59
对大多数固体是没什么区别。0压NpT实际上不耦合压力,近似等于NVT+boundary s s s。不过这也没什么特殊意 ...

好的老师,那我还是1atm弛豫吧,常压下感觉有点意义。
作者
Author:
李天    时间: 2023-8-15 15:21
本帖最后由 李天 于 2023-8-15 15:41 编辑
Graphite 发表于 2023-8-13 22:17
实际上就是到了3000K,运动速度够大,成键断键变化很快。
reaxff bond统计会按照预设的步数检查一些东西是 ...

老师,我发现当我减少lammps并行核数时(从并行20核减小到10核,体系总共5600个原子),也不会在跑高温热分解时出现:hbondchk failed的错误,可以完整跑完设置的高温300ps。并且我每次在工作站上只提交这一个任务,查看到所调用的cpu可以跑满,没有其他额外程序或任务调用cpu。但是重新设置成20核,中间依然会报hbondchk failed的错误。
(我的电脑配置是双cpu,每个cpu16核,两个总共32核,内存128G。)

目前测试发现,加上safezone/mincap或者减少并行核数都可以解决hbondchk failed的问题。但是不明白为什么减少核数会起到作用?
作者
Author:
Graphite    时间: 2023-8-15 22:27
李天 发表于 2023-8-15 15:21
老师,我发现当我减少lammps并行核数时(从并行20核减小到10核,体系总共5600个原子),也不会在跑高温热 ...

因为域分解。参考http://bbs.keinsci.com/thread-39016-1-3.html

对于一般模拟来说。假设你的空间是100000立方埃,使用10核,在均分的情况下每个核处理10000立方埃的空间,一般来说因为还有neighbor缓冲区,不至于意外飞到别的域中,并且”没人要”,所以还算安全。如果使用20核,那每个核处理的空间就变成了5000立方埃,如果跑快了(高温),有可能会”没人要”,可能需要适当增加缓冲区。(代价是变慢)
对于reaxff的一些检查也是用类似的机制,改变safezone等相当于是增强了缓冲。

如果有条件,最简单粗暴的办法是用GPU。5600个原子单张3090就可以了,单卡不存在域分解问题。另外也能加速个两三倍吧。租一天也就一顿饭钱。
作者
Author:
MercuryLamp    时间: 2023-8-16 01:49
Graphite 发表于 2023-8-15 22:27
因为域分解。参考http://bbs.keinsci.com/thread-39016-1-3.html。

对于一般模拟来说。假设你的空间是 ...

老师,我也有个问题想请教一下,您说单卡不存在域分解问题,那如果我用单核带单卡跑lammps任务的话是不是就不需要在输入文件中加入balance和fix balance这些关键词了,或者说即使加了这些关键词也不会影响计算速率呢?
作者
Author:
Graphite    时间: 2023-8-16 08:15
MercuryLamp 发表于 2023-8-16 01:49
老师,我也有个问题想请教一下,您说单卡不存在域分解问题,那如果我用单核带单卡跑lammps任务的话是不是 ...

加不加都一样。实际上是基于MPI的域分解,单核单卡没使用到MPI。
作者
Author:
MercuryLamp    时间: 2023-8-16 09:49
Graphite 发表于 2023-8-16 08:15
加不加都一样。实际上是基于MPI的域分解,单核单卡没使用到MPI。

好的,谢谢老师
作者
Author:
lltll    时间: 2023-9-14 11:50
可以分享一下怎么解决的吗?
作者
Author:
15210268712    时间: 2023-11-29 11:13
楼主你好,我也遇见了这个问题,请问解决了吗?
作者
Author:
LaplaceL    时间: 2023-11-29 14:34
您好,请问最后是怎样解决的呢
作者
Author:
Makarov    时间: 2024-1-5 14:27
本帖最后由 Makarov 于 2024-1-5 14:36 编辑

您好,我也在做reaxff热解相关,但ms模型只有烷烃分子→forcite优化→AC混合的过程,在300k到4000k升温模拟中遇到了与您帖子里相同的hbondchk failed问题,请问您最后是如何解决的呢
作者
Author:
jwy20    时间: 2024-6-3 12:02
我也模拟中也遇到这个问题了,因为帖子仅作者可见看不见,想请教下是怎么解决的呢?
作者
Author:
蛾眉皓齿    时间: 2024-6-5 15:57
本帖最后由 蛾眉皓齿 于 2024-6-5 16:00 编辑

看到帖子回复是仅作者可见,所以求问作者,您是如何解决hbondchk failed这个问题的呀?
作者
Author:
蛾眉皓齿    时间: 2024-6-5 16:04
求问,作者是如何解决hbondchk failed的呀
作者
Author:
1651561651    时间: 2024-6-17 15:57
大佬你好,请问这个问题怎么解决的呀?我也是这种错误ERROR on proc 8: step 4: hbondchk failed: H=2 end(H)=80 str(H+1)=75
(src/REAXFF/reaxff_forces.cpp:119)
作者
Author:
蛾眉皓齿    时间: 2024-6-24 18:04
您好,我也遇到了hbondchk failed问题,麻烦问一下您该怎么解决呢?
作者
Author:
xuhuikai    时间: 2024-6-27 09:55
我也遇到了同样的问题,想在这里学习一下解决办法都不行,还仅作者可见。。。。差评
作者
Author:
ddddgc    时间: 2024-9-24 09:51
您好请问是如何解决的,能否共享一下,目前此贴仅作者可见,感谢
作者
Author:
NaNaNai    时间: 2024-10-24 12:39
帖子可以开放查看么 我也遇到了这个问题
作者
Author:
YQpolymer    时间: 2025-1-10 14:28
老哥,我也遇到了这个问题,可以交流下么
作者
Author:
Stephen001    时间: 2025-5-20 15:09
你好,我也是遇到了同样的问题,尝试调大收敛容差和迭代次数,也尝试过调整处理器的核数,但都不行,请问您解决了这个问题,能够传授下经验?




欢迎光临 计算化学公社 (http://ccc.keinsci.com/) Powered by Discuz! X3.3