手把手教你用理论材料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: 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 下载地址
打开网址之后,会出现如上图所示的界面,然后点击红色标记的 register 进行注册和登录
如上图所示,先进行第一步注册,信息尽量填真实一点,尤其是邮箱,因为点击提交之后,会发送密码到你的邮箱里面,接着第二步,用注册的邮箱号和发送来的密码进行登录,登录之后会显示用户信息,我们不管这些,点下面红色标记的 Download,出现两个版本的 USPEX,我们选择 USPEX-9.4.4
为什么呢?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
然后进入目录,你会发现如下文件及文件夹:其文件结构和内容如下:其中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)
图中画红色的部分就是安装过程需要填写的内容,第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
如下图所示:其中,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: 免费注册且免费下载,并且里面结构文件多数有其引用的相关文献)上找结构
上面两图分别是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进行结构优化的文件如下图所示: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这两个脚本
这是checkStatus_local.m脚本,一般情况需要修改的只有第21行,这行的意思:就是假如任务不是在排队等待或者是正在晕行,就认为任务算完了
作者需要根据机器上安装的作业系统进行修改,相信搞科研的这个小问题解决起来肯定没问题的
这个是submitJob_local.m脚本,需要修改的是第11行到第17行,这个修改主要是根据需要根据自己机器上提交任务脚本来修改的,基本上就是提交任务脚本的内容复制到单引号中去
假如读者属于特殊情况,那么就参考上面的解释,并仔细阅读/Submission/README 文档,根据实际情况修改
e. INPUT.txtUSPEX 自动生成的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任务,都可以用这个,只是切记一定要把这个脚本命名好
当然你如果在自己机器上使用了MATLAB把 –o 去掉就行了,-o的意思是使用octave
2、 提交USPEX任务如果前面一切输入文件准备好了之后,那么我们可以开始了神奇的USPEX变组分结构搜索之旅了
终端输入命令:n nohup ./uspex_Lah0.sh >> log &(其中uspex_Lah0.sh就是1.f中提到的提交USPEX任务的脚本)
如下图所示:自此任务已经提交,然后检查 log,看是否出错,然后再修正
当然,又回到原来的 La-H 超导问题,至于本教程计算结果的处理,以及计算过程中文件分析,有机会再介绍吧
但是看完教程到这里,然后自己又动手做了,恭喜你,学会了水文章利器

至于 USPEX 更高级一点或者其他功能教程需求,欢迎提出
晶体结构预测方法和软件还有很多:AIRSS、CALYPSO、IM2ODE、MHM、MOLPAK、MUSE、RandSpg、XtalOpt、GASP、CrySPY 和 EVO 等,有机会的话,可以再介绍介绍
笔者仅仅只是一个搬运工
手把手教你用理论材料USPEX(结构文件夹文件手把手的是)
(图片来源网络,侵删)

联系我们

在线咨询:点击这里给我发消息