虽然我们优化结构只需要简单的操作,而在程序内部结构优化的实际计算过程是:
用户给定的初始结构的single point自洽场计算 该结构梯度计算 根据梯度信息生成下一个结构(一般而言这个结构能量更低) 该结构的single point自洽场计算 该结构梯度计算 根据梯度信息生成下一个结构(一般而言这个结构能量更低) 该结构的single point自洽场计算 该结构梯度计算 根据梯度信息生成下一个结构(一般而言这个结构能量更低) ……
如此重复,直到能量、最陡峭梯度、所有梯度均值、步长最大值、步长均值达到预设标准(该标准有默认值,一般不必修改),优化完成。这五个判断标准和判断情况,在logfile中每次计算完毕都会出现:
<22:54:59> energy change -3.15025867 0.00100000 F <22:54:59> constrained gradient max 0.02361122 0.00100000 F <22:54:59> constrained gradient rms 0.00782606 0.00066667 F <22:54:59> gradient max 0.02361122 <22:54:59> gradient rms 0.00782606 <22:54:59> cart. step max 0.10115198 0.01000000 F <22:54:59> cart. step rms 0.02523971 0.00666667 F
其中最后一列的字母F或者T,表示未达到标准或已达到标准;倒数第二列即判断标准;倒数第三列为实际值。
这里所谓的结构优化不收敛或收敛很慢,是指自洽场计算收敛没有问题的情况。例如下图(SCM LOGO > movie)所示:
graph>energy和graph>gradient max 分别显示能量的变化和能量梯度的变化。可以看到绿色框的部分,也就是大约50步以后的计算都是不需要继续进行下去的。能量在很细微的震荡,看梯度的震荡就比较明显了。看见震荡的情景发生,一般而言就没有必要继续算了。
或者:
能量、能量的梯度在9步之后,就开始震荡,这样实际上也没有必要进行之后的计算,应该立即结束任务,基于第9步的结构进一步调整参数进行计算。
这种问题一般也非常好容易解决:
将过往优化过程中,能量(energy change)和最大梯度(constrained gradient max)都较优的那个结构导出(操作方法见如何将结构优化、分子动力学某一帧结构导出,或更新到AMSinput用于后续计算),重新优化,但需做如下改变:
1,Details > Geometry Convergence,将Coordinates used for Geometry Optimization的设置改为Cartiesian; 2,Details > Geometry Convergence,将Optimization Method改为Old; 3,Maximum Radial Step改为0.02左右(如果到后面更小的震荡仍然存在,就将此值改到更小。这个值决定了震荡的最大振幅)。
继续优化即可。