本部分主要参考理论计算预测材料,手把手教你用USPEX!
Installation:
注意最新版本的USPEX已经整合进了Octave,所以只需按官网步骤注册下载解压
运行:
xxxxxxxxxx
bash ./install.sh
之后按图形界面安装到指定文件夹即可
Usage:
准备输入文件
首先建立一个名为/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.txt
USPEX 自动生成的4个文件夹已经处理好了,那么接下来就是控制USPEX计算的输入文件:INPUT.txt (固定名字的文件),在/La-H/0GPa文件通过文本编辑器(vi INPUT.txt),把上面的内容输入进去,并并保存,下面来解释每行代表的意思,这是超级重重点。
上图都是USPEX计算输入控制文件:INPUT.txt主要内容,棕黄色的数字标志是行数,只是为了显示方便,不是需要输入的内容。
xxxxxxxxxx
**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。
提交USPEX任务
如果前面一切输入文件准备好了之后,那么我们可以开始了神奇的USPEX变组分结构搜索之旅了。终端输入命令:nohup ./uspex_Lah0.sh >> log &(其中uspex_Lah0.sh就是1.f中提到的提交USPEX任务的脚本)。如下图所示:
自此任务已经提交,然后检查 log,看是否出错,然后再修正。
(updating)