计算化学公社

标题: 过渡态和优化计算的小区间振荡 [打印本页]

作者
Author:
双黄蛋    时间: 2022-5-21 14:32
标题: 过渡态和优化计算的小区间振荡
本人计算的内容为使用Gaussian计算稀土配合物阳离子引发烯烃聚合,无论是优化还是算过渡态容易在优化后期出现在很小的区间内的振荡。如果此时将任务终止,以最后一帧保存并减小maxstep,就能在几步后收敛。如果不人为终止而是让任务继续运行下去,那么需要数个小时才会收敛。体系不是很大,明明一晚上可以跑完四五个优化,却因为小区间振荡导致一个也跑不完。考虑一开始就减小maxstep也会导致计算时长增加,有没有什么办法令任务在前N步按默认步长去跑,过了第N步后按减小的步长设置去跑。
本人经常一次写多个输入文件,并使用脚本程序让这些文件自动依次运行。如果无法设置超过N步后自行减小步长,改为限制最大步数也可以,例如每个任务超过N步还没收敛就终止,然后跑下一个,第二天我再人为重写输入文件按小步长去跑。

作者
Author:
wzkchem5    时间: 2022-5-21 16:22
这里大概率不是减小步长的问题,而是因为BFGS迭代构建近似Hessian的时候积累了一些误差,重新跑优化的时候重新构建了初始Hessian。参见https://bdf-manual.readthedocs.i ... r%20Guide.html#id60(这个是讲BDF结构优化不收敛的问题的,但是基本原理也适用于高斯)
可以用maxcyc设置最大步数,另外重写输入文件设置小步长也可以用脚本来自动完成,这样半夜就能自动把计算续跑上
作者
Author:
双黄蛋    时间: 2022-5-21 16:48
wzkchem5 发表于 2022-5-21 16:22
这里大概率不是减小步长的问题,而是因为BFGS迭代构建近似Hessian的时候积累了一些误差,重新跑优化的时候 ...

感谢你的解答。我在跑优化时使用了recalc关键词,重新构建hessian是每隔几步就有的,不减小步长就要好多步才能收敛。你提到的脚本能否有教程可以参考,Linux我几乎就是小白,只学会了一些简单的命令,并不会写脚本,但我愿意去学一下。
作者
Author:
wzkchem5    时间: 2022-5-21 17:02
双黄蛋 发表于 2022-5-21 09:48
感谢你的解答。我在跑优化时使用了recalc关键词,重新构建hessian是每隔几步就有的,不减小步长就要好多 ...

用sed就行了,比如sed -i 's/opt/opt(maxstep=5)/g' mol.gjf,就是把mol.gjf里的opt替换成opt(maxstep=5)。用类似的方法加上restart等其他必需的关键字,然后重新跑这个gjf文件就行了。
作者
Author:
sobereva    时间: 2022-5-22 01:39
双黄蛋 发表于 2022-5-21 16:48
感谢你的解答。我在跑优化时使用了recalc关键词,重新构建hessian是每隔几步就有的,不减小步长就要好多 ...

脚本编写常识看
详谈Multiwfn的命令行方式运行和批量运行的方法
http://sobereva.com/612http://bbs.keinsci.com/thread-24929-1-1.html

将优化任务的maxcyc设比如50。脚本先照常执行任务,跑完后根据之前的任务输出文件里能否找到Normal termination判断是否正常收敛了,如果没搜到,就自动用sed替换关键词,即opt里加上maxstep=5,notrust,以及加上geom=allcheck要求从chk里读取坐标。重新执行此任务即可。
作者
Author:
双黄蛋    时间: 2022-5-22 16:43
wzkchem5 发表于 2022-5-21 17:02
用sed就行了,比如sed -i 's/opt/opt(maxstep=5)/g' mol.gjf,就是把mol.gjf里的opt替换成opt(maxstep=5) ...

感谢解答
作者
Author:
双黄蛋    时间: 2022-5-22 16:43
sobereva 发表于 2022-5-22 01:39
脚本编写常识看
详谈Multiwfn的命令行方式运行和批量运行的方法
http://sobereva.com/612(http://bbs. ...

感谢老师




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