03.02 理论计算预测材料,手把手教你用USPEX


超导材料一直物理学和材料学的热门研究内容,而最近高温超导领域出现了爆炸性的消息:德国马普化学研究所 M. I. Eremets 教授等人通过实验合成 Fm3 m-LaH10 在 170 GPa 的超导转变温度 Tc 为 240 K(DOI: 10.1038/s41586-019-1201-8)。而在这个实验之前,刘寒雨等人(DOI: 10.1073/pnas.1704505114)已经通过CALYPSO(晶体结构预测软件,和 USPEX 类似)和 Quantum-ESPRESSO 预测出这个结果。虽然 170 GPa 这个条件使得材料实际用途渺茫,但是通过理论计算就能准确的预测出材料,来指导实验,为什么不学学呢?

理论计算预测材料,手把手教你用USPEX

一、USPEX 简介

USPEX: Universal Structure Predictor: Evolutionary Xtallography. USPEX 代码能够通过仅仅只知道材料的化学成分来预测具有任意 P-T 条件的晶体结构。在全世界有6000多名研究人员使用它,它的出现极大的促进了相关领域的发展。而它的发明者:Oganov教授,通过这个软件做出了一系列漂亮的结果,也在本公众号名师志里面做了简单的介绍。
对于中国的科研工作者,提到 USPEX,也不得不提一下 CALYPSO,因为两者主要功能有些重叠,而 CALYPSO 的主要是由吉林大学的马琰铭教授主导开发的。因为本篇教程只是为介绍 USPEX,对于 CALYPSO 就不做过多的介绍了,既然 CALYPSO 预测出 Fm3 m-LaH10 这个高温超导材料,那么我们用 USPEX 来做一下!


二、 下载安装

要想用 USPEX 来计算,得有 USPEX 软件。那么现在就请打开浏览器进入:

https://uspex-team.org/en/uspex/downloads,这个是 USPEX 下载地址。

理论计算预测材料,手把手教你用USPEX

打开网址之后,会出现如上图所示的界面,然后点击红色标记的 register 进行注册和登录。

理论计算预测材料,手把手教你用USPEX

理论计算预测材料,手把手教你用USPEX

如上图所示,先进行第一步注册,信息尽量填真实一点,尤其是邮箱,因为点击提交之后,会发送密码到你的邮箱里面,接着第二步,用注册的邮箱号和发送来的密码进行登录,登录之后会显示用户信息,我们不管这些,点下面红色标记的 Download,出现两个版本的 USPEX,我们选择 USPEX-9.4.4。为什么呢?

理论计算预测材料,手把手教你用USPEX

USPEX-9.4.4 是 USPEX 最经典的版本,体积最小,而最新的版本的体积急剧膨胀,相对老的版本,最新版本是Oganov教授团队采用 Python 将 USPEX-9.4.4 (MATLAB)改写了一遍,无大的新功能增加,发布时间较短,质量无法得到保证。更主要的是,USPEX-9.4.4 有中文文档!


下载好之后,我们进行下一步:安装。把软件包传到课题组的服务器或超算上面去,并且确保机器上有 MATLAB 或者Octave,假如都没有,并且机器与外网隔离的情况下,可以参考这个安装 MATLAB( https: //blog.csdn.net/pihuanwan3227/article/details/84849969 ), 参考这个安装Octave (https://www.cnblogs.com/freeweb/p/7124589.html)。


假如1.你安装包已经上传到机器上面了;2.机器上有 MATLAB 或者 Octave,那么我们就来安装 USPEX 吧。解压安装包:tar –xvf USPEX-9.4.4..tar.gz。然后进入目录,你会发现如下文件及文件夹:

理论计算预测材料,手把手教你用USPEX

其文件结构和内容如下:

理论计算预测材料,手把手教你用USPEX

其中

1.文件夹 doc 里面包含 USPEX 手册(uspex_manual_chinese.pdf 是 USPEX 中文版手册);

2.文件夹 examples 包含标准的 USPEX 的 22 个程序例子,通过名字可以很清晰的了解到其对应的总能计算软件和计算功;

3.文件夹 lib 是一些 USPEX 使用的 Python2 库;

4.文件夹 src 包含 USPEX 的主要程序代码,其中 FunctionFolder 文件夹是 USPEX 核心代码,饱和了 USPEX 所有功能的实现,Submission 文件夹是提交 USPEX 计算任务的相关代码,USPEX.m 主程序入口;

5.文件 INSTALL 是安装说明;6.USPEX 是 USPEX 程序启动器,不用管它;7.install.sh 是 USPEX 安装脚本。接下进行安装: ./install.sh,。接下来会提示让填写安装地址(笔者的机器里面 Octave 已经安装好,所以显示 Octave。当然 MATLAB 安装好,也会显示 MATLAB)。

理论计算预测材料,手把手教你用USPEX


图中画红色的部分就是安装过程需要填写的内容,第1 个就是填写你需要安装 USPEX 的目录,一定确定是存在的目录的,建议填写绝对路径。第2 和第3 就是确定所安装的目录。如果这三项填写好,接下来还有重要的最后三步(这个就是设置环境变量,能够当前用户能够直接调用 USPEX):
1. vi ~/.bashrc 2.export PATH=$PATH: /home/xiaoming/EDU/USPEX 3.export USPEXPATH=/home/xiaoming/EDU/USPEX/src


其中/home/xiaoming/EDU/USPEX为USPEX安装目录。这些做完之后,Have fun with USPEX!


三、 进行计算

在上一步中已经成功安装好 USPEX 了,这时候可以使用 USPEX 进行计算了,本教程以前面提到的 La-H 二元体系进行结构搜索,带你简单入门 USPEX。注意:本教程使用的是最主流的软件组合:USPEX+VASP,本教程需要 VASP 已安装好,至于 VASP 懂不懂并不影响本教程的使用。


3.1 准备输入文件
首先建立一个名为/La-H/0GPa的文件夹,进入这个文件之后,在终端输入命令: USPEX –g,然后查看文件夹 0GPa,会发现多了四个文件夹:AntiSeeds、Seeds、Specific、Submission。如下图所示:

理论计算预测材料,手把手教你用USPEX

其中,AntiSeeds 和 Seeds 文件夹中里面的存放的的是结构文件,由于本教程使用的是VASP进行计算,故这两个文件夹放的是 POSCARS 的文件(至于为什么是POSCARS,等下解释)。而

Specific 文件夹里面放的是 VASP 进行计算时,需要的和赝势文件,而 Submission 文件夹里面放的是 USPEX 各种方式提交任务的脚本。这 4 个文件夹是 USPEX 程序自动生成的,因而需要进入每个文件夹里面进行修改或者准备所需要的输入文件。接下来我们一个个文件来进行详细说明(划重点)。


a.
AntiSeeds 文件夹,这个文件顾名思义,就是禁止 USPEX 生成的结构的种子文件,与 Seeds 文件夹作用相反,并且这个功能不常使用,本教程 AntiSeeds 文件夹就不设置,不用管它,直接考虑 Seeds 文件夹。


b. Seeds文件夹,这个文件夹就是USPEX计算时,需要种子文件存放的地方。好了,既然需要种子文件,那么我们来准备种子文件吧。本教程要进行搜索的是 La-H 体系,那么开始准备La、H结构文件吧。首先到日本晶体结构数据NIMS网站(https://crystdb.nims.go.jp/crystdb/search-materials: 免费注册且免费下载,并且里面结构文件多数有其引用的相关文献)上找结构。

理论计算预测材料,手把手教你用USPEX

理论计算预测材料,手把手教你用USPEX

上面两图分别是La、H的所有结构文件,
1)、把这两种元素的cif结构文件全部下载下来;

2)、用VESTA (http://www.jp-minerals.org/vesta/en/download.html:下载后解压即可使用,功能很强大的软件) 打开,另存为VASP5 格式的POSCAR文件;

3)、打包上传到机器上刚刚建立的/La-H/0GPa /Seeds文件下;

4)、包把La和H的POSCAR文件合并为一个文件,并命名为POSCARS (1、可以使用cat 命令合并,如:cat POSCAR_La* POSCAR_H >> POSCARS,2、建议查看一下POSCARS文件格式,假如有类似乱码的东西,dos2unix POSCARS百度了解一下)。


c. Specific文件夹,这个文件夹主要存放的是USPEX控制的VASP进行计算的输入文件,由于本教程是La-H体系在0 GPa的变组分结构搜索,主要是用VASP计算USPEX生成结构的能量,因而这个文件内主要是POSCAR进行结构优化的文件如下图所示:

理论计算预测材料,手把手教你用USPEX

理论计算预测材料,手把手教你用USPEX

INCAR_1-5: 这样设置的主要原因:考虑有你的初始结构通常远离局部最小点,在这种情况下,INCAR_1,2首先应该在保持体积固定的情况下(ISIF=4)弛豫原子和晶胞形状,然后在INCAR_3,4中做完全弛豫(ISIF=3),在INCAR_5中完成非常精确的单点计算(ISIF=2,NSW=0)(至于更具体的细节问题,手册上有详细的描述,请查看手册第3章第3.4小节)。值得注意的是:K点设置由USPEX自动生成了,无需考虑。


d. Submission文件夹, 这个文件夹主要是USPEX来提交计算任务和检查计算任务的情况的一些脚本。一般情况下,提交计算任务都是通过登陆到服务器上进行提交,那么这时候需要修改submitJob_local.m和checkStatus_local.m这两个脚本。

理论计算预测材料,手把手教你用USPEX

这是checkStatus_local.m脚本,一般情况需要修改的只有第21行,这行的意思:就是假如任务不是在排队等待或者是正在晕行,就认为任务算完了。作者需要根据机器上安装的作业系统进行修改,相信搞科研的这个小问题解决起来肯定没问题的。

理论计算预测材料,手把手教你用USPEX

这个是submitJob_local.m脚本,需要修改的是第11行到第17行,这个修改主要是根据需要根据自己机器上提交任务脚本来修改的,基本上就是提交任务脚本的内容复制到单引号中去。


假如读者属于特殊情况,那么就参考上面的解释,并仔细阅读/Submission/README 文档,根据实际情况修改。

e. INPUT.txt

理论计算预测材料,手把手教你用USPEX

USPEX 自动生成的4个文件夹已经处理好了,那么接下来就是控制USPEX计算的输入文件:INPUT.txt (固定名字的文件),在/La-H/0GPa文件通过文本编辑器(vi INPUT.txt),把上面的内容输入进去,并并保存,下面来解释每行代表的意思,这是超级重重点。


上图都是USPEX计算输入控制文件:INPUT.txt主要内容,棕黄色的数字标志是行数,只是为了显示方便,不是需要输入的内容。


1-3行、为注释说明行。第4行、为选择计算类型行,主要是选择什么样的计算方法进行不同类型的计算,目前USPEX支持四种计算方法分别为:USPEX、VCNEB、META、PSO等。但目前采用变组分结构搜索的话,选用其王牌类型,USPEX就行,其他方法请参阅手册第5行、需要计算的结构类型、是否为分子和是否为变组分计算,301:3代表了三维块状结构,0代表了不是分子,1代表了采用变组分。第6行、1是代表了进行结构搜索最稳定结构时采用了生成焓作为筛选标准,当然还有其他标准:体积,硬度,结构有序度等等,详情参阅手册。第7行、1代表了设置允许系统自动进行进化的变分操作,这个设置能加快运算。

第9-11行、是设置需要计算的体系,本教程是La-H体系,所以在第10行输入La H, 当然你也可以在第10行输入 La H 的原子序数:57 1 ,这样也是被允许的。第13-16行、设置上面你设置的体系原子的个数之比,表示着:LaxHy,也就是说任意x个La和任意y个H的结构都是可以生成的。假如需要生成任意x个La和任意2y个H的结构怎么设置?第17-24行、设置关于生成结构的数目,第20行populationSize设置除了第一代,其余以后每代生成的结构的数目,第21行initialPopSize设置第一代生成的结构的数目,第22行numGenerations,设置总共计算的最大代数。第23行stopCrit设置多少代的最好结构结构都一样就停止USPEX计算。第24行是设置是否重新优化幸存的结构,默认是0,意思就是不重新优化。(需要注意的是,这里的设置的大小,大致上决定你需要优化的结构的数目)第25-29行、设置允许生成LaxHy结构中8<=x+y<=18,这样设置能够更好锁定搜索结构的范围,当然越小计算量越少了,这个主要看个人选择了,但是minAt和maxAt不要相差太大,太大容易出错或者最后结果漏掉一些结构,手册上有推荐选择范围,自己参阅考虑。第30-37行、设置遗传变分操作的具体细节的,主要设置各个操作的所占比例,fracGene:基因遗传占的比例,fracRand:随机生成的占比例,fracAtomsMut:原子摄动占的比例,fracTrans:晶格转变占的比例,fracLatMut:点阵摄动占的比例。注意:所有比例之和必须为1。
第39行、这行是设置体系的压强大小,单位是GPa, 0是不施加外压。当然了前面提到的文章,压力有150 GPa 和 300 GPa,在相应的压力下进行搜索时,应该此处改为150 或 300。第41-46行、是设置调用的外部程序执行具体计算用的,1代表了调用VASP,1 1 1 1 1 跟Specific 文件夹里面INCAR_1、INCAR_2、INCAR_3、INCAR_4、INCAR_5遥相呼应,表示一个结构需要优化5次得到精确的能量值。第48行、设置USPEX一次总共提交多少个任务,第49行、设置提交任务方式,1设置为local,毕竟USPEX一般都是安装在服务器上面的。第51-56行、设置重新启动USPEX运算,这个设置应该好好琢磨一下,尤其是第54行pickUpYN,0是不进行计算,1是进行重新计算,第55行pickUpGen根据你的结果文件夹results*里面的generation*的数目进行设置,第56行pickUpFolder是根据哪个结果文件夹results*进行重新计算,这3行一定要配合使用,是相关联的。当然本教程是进行新计算,都设置为0,即可,这个弄明白了,重新计算时,可以节省大量时间。好了,La-H 体系不同压强下变组分结构搜索的INPUT.txt的主要设置内容介绍完毕。


f. 最后一项设置,就是提交整个USPEX的脚本了,很简单的shell脚本,任何一个机器上提交USPEX任务,都可以用这个,只是切记一定要把这个脚本命名好。

理论计算预测材料,手把手教你用USPEX

当然你如果在自己机器上使用了MATLAB把 –o 去掉就行了,-o的意思是使用octave


2、 提交USPEX任务

如果前面一切输入文件准备好了之后,那么我们可以开始了神奇的USPEX变组分结构搜索之旅了。终端输入命令:n nohup ./uspex_Lah0.sh >> log &(其中uspex_Lah0.sh就是1.f中提到的提交USPEX任务的脚本)。如下图所示:

理论计算预测材料,手把手教你用USPEX

自此任务已经提交,然后检查 log,看是否出错,然后再修正。当然,又回到原来的 La-H 超导问题,至于本教程计算结果的处理,以及计算过程中文件分析,有机会再介绍吧!但是看完教程到这里,然后自己又动手做了,恭喜你,学会了水文章利器!!


至于 USPEX 更高级一点或者其他功能教程需求,欢迎提出。晶体结构预测方法和软件还有很多:AIRSS、CALYPSO、IM2ODE、MHM、MOLPAK、MUSE、RandSpg、XtalOpt、GASP、CrySPY 和 EVO 等,有机会的话,可以再介绍介绍!笔者仅仅只是一个搬运工。


分享到:


相關文章: