CALYPSO的学习与探究

CALYPSO的学习与探究

对于做电极材料的人来说,确定离子在电极材料中的排布是获得一个准确的模型的前提条件,之前我在计算层状氧化物中层间的钠离子排布的时候,就是自己随意的建立了一个模型进行计算,这样的方法其实具备一定的偶然性,我建立的模型并不一定准确,所以如何确定这个层间的钠离子排布是一个棘手的问题,我不可能手动的建立很多个模型去计算对比能量,而且对于不同的荷电状态,这样的工作量会几何式上涨。目前来看我能想到的方法一个是通过分子动力学模拟,但是其实这样的准确性也不好说,而用AIMD的话其实计算也比较昂贵。然后就是老师给我推荐的用CALYPSO来预测了,这个软件可以预测晶体的结构,目前来看应该是获取合理的初始结构的比较好的办法了。

研究了几天这个软件的用法,也在这里记录一下我的学习过程吧。

软件的获取以及下载

CALYPSO的官网在这里:

CALYPSO - An Efficient Structure Prediction Method and Computer Software

在官网上选在Getting CALYPSO,然后填一下信息,然后他会让你下载一个pdf文件,你需要打印下来再填写一下信息并且签字,然后再扫描并发送邮件到他们给出的邮箱,然后再大约一天的样子,他们就会给你回复,给你一个账号密码,你就可以再到Getting CALYPSO那里去点击DOWNLOAD,输入账号密码进行下载。

整个流程看上去挺麻烦的,实际上还好,填写的信息并不复杂,如果是自己的科研用途的话并不会很费事,而且他们的审核也并不严格(甚至于在回复我的邮件的时候我的名字都回复错了),而且pdf信息确认这个可以直接对pdf进行编辑的,我就是转到ipad上手写签了个字,然后再直接发的签了字的pdf,并没有真的打印出来,这样也是审核通过的了,而且他们的效率很高,我第一天晚上申请的,第二天早上就收到了回复的右键。

将文件下载下来之后就可以直接到上传到自己的服务器上进行解压,这个软件应该是仅支持Mac OS和Linux的,我就用的是Linux的,具体可以参考一下他们的文档,目前已经更新到Version 7.0了,然后文件中还会附带有20个例子供参考。

学习资料的获取

感觉开发CALYPSO的课题组对这个软件还是很上心的,他们创建了两个qq群,第一个qq群已经满了,第二个qq群人还比较少,但是里面的管理员都非常的活跃,在群里提出问题很快就能得到答复,体验非常的好,此外还推荐一个网站,叫做蔻享学术:

蔻享 (koushare.com)

这个网站会记录一些学术会议,其中就包括了CALYPSO的开发组历年来举办的CALYPSO研讨会:

CALYPSO这个软件就已经有点过于小众了,而且它的名字还跟一款机械控制的软件重名了,导致直接在其它网络平台上获取这个软件的难度比较大,所以通过蔻享学术的视频可以相对简单的入门并学习这个软件的用法。

当然,如果有钱的话可以关注每年CALYPSO开发组举办的这个研讨会,报名参加线下的会议,这样肯定能让你对这个软件的学习更加的深入。

软件的初步使用

学习一个软件最好的办法就是照着例子进行复现,所以我决定对这个软件自带的Test目录下的例子进行复现,可以先看一下Test目录下的例子,为了更美观,我这里就是在Windows下解压了文件,查看一下Test目录下的内容:

可以看到,这里面有不少的内容,其中INCAR_1一直到INCAR_3就是分三步进行结构优化,分步优化可以一定程度上节约时间,然后input.dat就是calypso的输入文件,记录了一些输入的参数,POTCAR就是赝势文件,这个好理解,submit.sh就是调用弛豫软件的脚本,这里是调用vasp来进行弛豫,所以里面记录的内容就是服务器上调用vasp的命令。至于result文件夹就是使用calypso之后生成的文件,这个咱们以后再看。

这里想要直接运行是不可能的,还需要两步。第一步就是需要将calypso.x复制到这个目录下,calypso.x才是CALYPSO的本体,是主要的执行软件;第二步是针对我们这种不能在自己账号上运行vasp的情况的,就是我们需要写一个提交任务的脚本,将calypso.x提交到任务节点上进行运行,因为这个软件的计算相当的耗费算力,所以在自己本地目录下运行肯定不现实。我这里编写的提交任务的脚本就命名为caly.sh,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash

#SBATCH -p hello
#SBATCH -J calypso
#SBATCH -n 32
#SBATCH -N 1

source /soft/profile.d/vasp54.sh

python --version
export PATH=/soft/anaconda2/bin:$PATH
python --version

./calypso.x > caly.log 2>&1

这个脚本前面的#SBATCH就不必多说,可以自己去查看一下SBATCH的手册,后面的source命令是为了后续调用vasp做准备,其实这一行内容也可以转移到submit.sh中,然后这里有两个python --version,这个是我为了调试python设定的,后面觉得这个也可以辅助排查问题就没有删除,这个calypso软件有个很麻烦的问题在于,它用的是python2,而现在我想大部分服务器肯定默认python是调用的python3,如果用python3运行就会报错:

所以需要在运行之前将原本的python3运行环境给改成python2,其实这里的原理也很简单,就是需要你在任务节点上运行时,python这个命令执行的是python2就行了,所以我就直接export了一个anaconda2的路径,anaconda2中的python就是默认的python2,这样就解决了这个问题,当然,如果你的服务器集群上没有anaconda2,你也可以看看你们的python2的路径,export一下就行了,以下是我这样更改之后的slrum文件返回的信息:

可以看到第一个python --version返回的就是python3,这个时候我还没有export,然后export了python2的路径之后,第二个python --version返回的就是python2了,这样后续的运行就不会再报错了。

最后一行的./calypso.x > caly.log 2>&1就是运行calypso.x程序了,运行日志则会记录在caly.log文件下。然后这里再说一下submit.sh这个文件,这个文件只需要能够调用弛豫的软件就行了,它并不是提交任务的脚本,所以不需要重新加载intel环境,这个脚本就会非常的简单,一般来说就两行内容:

1
2
3
4
#!/bin/bash

mpirun -np 32 /soft/vasp5.4.4/vasp.5.4.4/bin/vasp_std

将caly.sh和submit.sh文件修改好,然后再将calypso.x文件复制到当前目录下,就可以开始提交任务运行了,输入:

1
sbatch caly.sh

然后任务就会跑起来了,任务运行之后当前目录下会生成相当多的文件:

这个计算耗费的算力相当惊人,这个例子应该是只有两个原子的晶体结构,但是我算了接近两天都没能算完,后面问了群里的管理,说出现比较多的F-43m就可以停止了,这个时候我才将它停下来。

结果分析

CALYPSO计算得到的结果会储存在results目录下,以下是我这个计算得到的结果:

然后这里是CALYPSO.log的内容:

这个vasp is killed by calypso.x的提醒应该是正确的,但是不知道为啥我这里面并没有其它的信息,跟例子中自带的results目录里的CALYPSO.log差异挺大的。

calpyso提供了他们的数据分析插件cak.py,使用这个软件需要提前安装一下,具体的安装方法在qq群公告的Q&A文档中给出了,我这里截个图:

这个安装是会配置环境变量的,所以接下来可以直接到results目录下输入cak.py进行数据处理,这个插件有相当多的批处理功能,具体可以查看手册,当然也可以不加任何关键词直接运行这个软件,它就会将输出一些基本的结果到Analysis_Output.dat文件中,如图:

可以看到我这个计算就出现了非常多的F-43m的结构,所以按照群管理的说法也该停下来了,但是具体的原因还需要进一步学习了。

总结

总体而言这个软件是一款功能非常强大的软件但是与之对应的它所消耗的算力也是非常惊人的。这几天我在群里还看见了它提供了分离模式,就是它不一定需要跟弛豫软件结合使用,可以仅提供材料结构预测,然后输出预测的结构,然后我们自己将结构上传到服务器上进行计算,这样的模式我感觉就相当的灵活了,我们可以自己对这个软件进行相当自由的调用,而不再局限于这个软件的黑盒。

不过如果想把它运用到我自己的研究上,可能还要探究一下该如何将计算量降下来,上千个结构的计算很明显难以应用到数十个甚至上百个原子的晶体结构,我可能要在其它方面妥协。


CALYPSO的学习与探究
http://phoenixjason.cn/2023/03/24/20230324CALYPSO的学习与探究/
作者
Jason
发布于
2023年3月24日
许可协议