软件版本为AMS2022及之后的版本。2019及之前的版本,请参考:使用Python脚本优化Range Separated Hybrids泛函γ值
一般泛函,包括LDA、GGA、Hybrid、meta-Hybrid泛函,都有Kohn-Sham势衰减过快的问题,离原子核较远区域,过快地衰减到接近于0,这容易导致如下问题:
解决办法之一:将泛函分成两段,靠近原子核附近区域,使用标准泛函,离原子核较远区域使用正确的渐进函数——这就是Range Separated Hybrid泛函。
每种分子,要得到非常好的计算结果,该类泛函的γ值实际上差别是较大的。厂商提供了一个Python脚本点击下载。该脚本优化γ值的原则是使得HOMO值得与离子势(Ionic Potential一致)使用方法:
s.input.ams.task = 'SinglePoint' s.input.adf.basis.type = 'DZP' s.input.adf.basis.core = 'None' s.input.adf.xc.gga = 'PBE' s.input.adf.xc.xcfun = True s.runscript.nproc = 1
此处是关于LCY-PBE的γ值优化,因此s.input.adf.xc.gga的值为PBE,可酌情修改为其他值(其他Range-Seperated hybrids泛函),基组、冻芯等,可根据实际需要酌情修改,因为不同的基组、冻心,对应的最优γ值实际上也略有不同。
mol = Molecule() mol.add_atom(Atom(symbol='H', coords=(0,0,-0.3540))) mol.add_atom(Atom(symbol='H', coords=(0,0, 0.3540)))
这里是设置以某个分子为测试对象,来优化γ值,这里是H2,用户可以根据这个格式,根据实际分子结构的xyz文件,添加、修改原子、坐标。
gammas = np.around(np.arange(1.2, 1.9, 0.2), decimals=3)
这里可以设置搜索γ值的范围,此处1.2~1.9之间,搜索步长为0.2,用户可以根据实际情况修改范围和步长,例如如果初次搜索最优质为1.2,那么显然最优γ值比这个范围小,应该酌情调整范围为例如0.3~1.2,步长例如为0.1。作为实际应用,可以先使用较大步长,然后缩小范围后,重新搜索时,可以使用较小步长,如此灵活反复搜索。
注意:不要一次进行步长短、范围宽的搜索,否则会生成过多并发作业,导致计算机死机、作业失败。例如0.3~1.2,步长为0.1,NSCM=2则该作业将并发10*2=20个线程。
例如显示为:
== Results == gamma J 0.3000 0.10550965 0.4000 0.07915428 0.5000 0.05749357 0.6000 0.03941281 0.7000 0.02416715 0.8000 0.01133898 0.9000 0.00340345 1.0000 0.01078375 1.1000 0.01907244 Optimal gamma value: 0.9000 [15.11|21:43:11] PLAMS run finished. Goodbye
表示目前的步长、范围下,最优γ值在0.9附近。