结构预测是一件很酷的事情,它仅仅需要结构组分就能预测材料晶体结构,比如给出组分为Ti4O8,就能够预测出锐钛矿。最令人兴奋之处在于预测的结构在十年后被合成验证。(如CaH6, https://doi.org/10.1103/PhysRevLett.128.167001)
众所周知,预测材料微观晶体结构需要在广袤的势能面中检索成百上千个结构,并不断调用局域优化软件优化结构,对比能量。CALYPSO产生400个结构也许只需要几分钟时间,而结构局域优化这些结构却需要几十个小时。而使用计算时间更短的力场进行优化结构,所得到的结果又往往不可靠(伴随大规模能量翻转,影响计算过程中的能量排序)。如何既快又准地进行结构优化,是机器学习势加速结构局域优化的动机。它的开发不仅能够极大节约计算资金成本和时间成本,还能应用在难以搜索的多元化合物结构预测中(例如三元超导化合物)。
CALYPSO官方申请注册网址为http://www.calypso.cn/getting-calypso/,7.0及以上版本支持机器学习势加速结构预测,下载的Examples.tar.gz中包含的26_example即为机器学习势的算例,计算过程很简单分为三步:
1、构造训练集(目的是获取config和test文件)
需要用户构造大量同素异形体作为训练集,供机器学习探索其中能量、结构、受力之间的关系。笔者以Si4C4作为例子,用calypso产生了60个初始结构,为了对比训练集对结构预测结果的好坏,笔者通过两种方法去获取训练集所需的OUTCAR结构,A种训练集:直接在INCAR中设置IBRION=-1静态自洽这些不合理的初始结构;B种训练集:先结构优化calypso产生的初始结构(INCAR中EDIFFG=-0.01),带结构优化收敛后,再静态自洽获得训练集所需的OUTCAR
在获得OUTCAR_1,OUTCAR_2,OUTCAR_3…等60个结构训练集,拷贝官方算例给的get_vasp.py到当前文件夹,并执行python get_vasp.py回车获得config和test文件。
此处遇到两个问题:
a、不支持VASP 6.3.0产生的OUTCAR
b、get_vasp.py需要python3执行(实际上python2也可以处理)
2、拟合机器学习势函数(目的是获取gap_parameters文件)
将第一步得到的config和test文件拷贝到新的文件夹中,同时将官方算例中的neural.in文件拷贝过来(官方建议不要修改),在calypso输入文件input.dat中设置机器学习相关参数
注意WeightOfAtoms设置的值和原子个数相一致,比如两个原子就设置两个值,具体含义可以参考官方手册。
然后执行./calypso.x,稍等一会儿,便产生了机器势函数文件gap_parameters和predicted.dat
3、使用机器学习势函数进行结构预测
准备好input.dat,官方算例中拷贝cgg2.py过来,在input.dat中设置
其中CALYPSO_PATH和GAPP_PATH要写绝对路径,Split必须设为T,NumberOfParallel要根据PopSize和机器核数来设置,比如36核机器,可以把PopSize设置为72,NumberOfParallel设置为36。
注意点:
a、cgg2.py需要用python2来执行。
b、结果后处理和一般性结构预测任务类似,直接用cak.py处理即可。
c、可以训练小体系,算大体系。比如训练集20个原子,搜40个原子的体系
4、测试结果与讨论:
a、不论使用A种训练集还是B种训练集,测试结果均不理想(搜索得到结构均相当不合理)。其原因大概率是训练集样本太小。
b、然而蔻享上吕健老师“基于机器学习势加速的 CALYPSO 结构预测方法”(https://www.koushare.com/video/videodetail/17075)所提到的一边结构搜索一边机器学习不断完善机器学习势函数的方式在算例中并未介绍和体现出来。
c、get_vasp.py需要python3执行,而cgg2.py需要用python2来执行,比较奇怪。
d、静待今年10月份在烟台大学举办的“第十届CALYPSO研讨会”。
领取专属 10元无门槛券
私享最新 技术干货