科学网—从零开始的第一性原理计算(上)
精选
已有 4755 次阅读
2024-12-7 21:18
| 个人分类: 科研笔记 | 系统分类: 科研笔记
这篇文章希望能用十五分钟的时间教大家如何入门第一性原理计算。上半部分主要包括第一性原理计算的简介和准备部分,希望能让大家对平时阅读文献中经常遇到的现行的第一性原理计算方法和流程有一个基本的了解,这样以后读文献的时候思路会更加清晰,同时也对需要用到的软件进行一个说明;之后在下半部分会利用到北京大学高性能计算中心以及VASP讲解一个第一性原理计算的实例,即体材料的能带计算,这在VASP计算中,就类似C语言中的Hello World一样基础,非常适合大家作为自己动手实操的入门案例,同时学会利用VASP计算能带结构也能帮助大家在研究初期更好地理解自己做的材料体系。
那么什么是第一性原理计算?让我们先来看看第一性原理计算中经常会出现的高频词。想必大家都听过第一性原理计算,A b-initio , DFT , VASP 这些和第一性原理计算相关的词汇,这里简单说明一下它们之间的关系。
首先最大的概念是第一性原理计算和从头计算,这两个概念一般情况下可以认为是等价的,第一性原理计算一般指从量子力学薛定谔方程出发,去求解体系的电子结构和状态,在此基础上,我们知道实际的凝聚态体系,例如一般的晶体中原子数量级在 10 22 ,而 Hartree-Fock 方法的计算复杂度又是N 3, 这意味着严格求解这些实际体系的薛定谔方程是不现实的,因此我们不得不引入一些近似,这就提到了 DFT , Density Functional Theory ,密度泛函理论。 DFT 利用电子密度作为自变量替代了电子波函数,使得计算的变量数由 3N 下降到了 3 个,大大降低了计算的复杂度,从而使得实际体系的第一性原理计算可以实现。最后, VASP 就是我们用来实现第一性原理计算的工具之一,也是目前使用者最多的一个。我们只需要通过输入文件和它进行交互,告诉它我们的计算的要求以及具体的晶体模型,它就可以利用以上提到的 DFT 方法进行计算,随后通过输出文件告诉我们计算结果。这就意味着,我们并不一定需要明白 Hatreee-Fock 方程或者 Slater 行列式等等的第一性原理计算的各种模型和方法,因为你不需要自己手动去建立方程并且求解模型,而可以把 VASP 当成一个黑箱,直接使用它就可以算出我们想要的结果。所以,虽然第一性原理计算历史悠久且门类众多,但用十几分钟学会如何入门使用VASP是绰绰有余的。
那么为什么要进行第一性原理计算呢?因为它的学习,使用成本低且功能过于强大,各类材料物理,凝聚态物理的体系,例如金属及其氧化物,半导体材料等等都可以使用,同时VASP能够进行的计算种类也十分丰富, 例如结构优化,静态计算,态密度和能带计算 ,这些在下篇的实例中我们都会讲到,不止于此,VASP还可以计算光学性质,磁学性质,更为复杂的计算这里就不再赘述,但网上都有相关部分的详细教程,感兴趣的同学可以进一步进行探索。同时这也就是为什么,各个领域的研究者即使研究的材料体系或者研究的材料性质完全不同,却能使用同一套方法,同一个软件的原因。
接下来我们来进行一些实例之前的准备,主要是软件的准备和知识的准备两个部分。在VASP计算中,我们要告诉VASP我们要计算的晶体结构体系,那么我们就得预先构建相应的晶体模型,这里提供了两种方法,第一可以使用Material Studio进行原子结构建模,这是一个功能很强且很方便使用的晶体结构建模软件,同时软件自带的数据库中也存储了各种各样的晶体结构可以作为模板进行使用。一般的流程是我们在Material Studio中将编辑好的晶体结构模型以.cif格式输出,接着利用Vesta软件打开,然后将文件格式转换为POSCAR格式,也就是VASP可以读取的格式。第二种方法则是我们可以登录Material Project网站,这个网站上有大量的原子结构模型,大家只需要根据自己的需求下载就可以了,同时还支持各种格式的输入,如果你现在只想快速完成一个GaN体材料的能带结构计算,那么只需要登陆网站上,找到纤锌矿结构,空间群为P63mc的GaN并下载为POSCAR结构,放到VASP里就可以进行计算了。这里补充一句,第一种方法的优势主要体现在我们需要自己构建表界面模型等复杂结构时,如果只是进行一个体材料结构的计算,两种方法并没有太大区别。
进行这种多电子体系的计算,我们需要用到一些计算资源,这里给大家推荐北京大学高性能计算平台,目前平台上有多个计算力强的计算集群,如果大家课题组有账号可以使用课题组的账号,如果没有的话,也可以免费申请未名教学集群的账号并用未名教学二号进行尝试,另外,平台上也预先搭载了很多软件,例如VASP。作为演示,这里使用的是未名 2 号上的 vasp6.2.0.
另外,相信大家应该也听过vasplit这个软件,和VASP不一样,这个软件是免费的,也可以将它看成是VASP的一个插件,有了vaspkit,很多文件的处理可以交给它来进行,比自己手动做起来要方便很多。但是目前未名集群上暂时未搭载vaspkit软件,需要大家自己下一个,这个在网上也有很详细的教程,这里不再赘述,作为演示这里使用的是vaspkit1.3.5,在下篇中我们会用到1,3,21几个模块,它们分别用于生成输入文件,生成能带计算的K点文件和计算能带图。
接下来就是准备部分的最后一节了,也是最重要的部分,就是VASP的输入输出文件,我们需要知道,我们应该如何和VASP进行交互。四大输入文件分别问INCAR,POSCAR,KPOINTS和POTCAR,其中INCAR可以看作是用户操作界面,我们需要告诉VASP我们需要使用的计算方法和计算内容,只不过这里没有可视化界面,我们使用关键字输入的方式和它进行交互,几组比较重要的关键字如下,值得一提的是,INCAR中的参数均有默认值,即使INCAR为空文件VASP也能运行,但必须存在,一般使用的方法是利用vaspkit生成一个基础的INCAR再在上面进行修改,有关输入输出文件可以去看复旦大学候柱峰老师的VASP的输入输出文件,里面讲的非常清楚。
然后是刚才我们提到过的POSCAR文件,它记录了晶体结构信息,在VASP中的形式如下图所示,另外,如果在进行表界面计算时,我们有时会用到固定原子的操作,这可以利用vaspkit或者手动修改POSCAR来实现,正如下图最下面的两行所示。
还有KPOINTS和POTCAR文件,这里给出了一些简单的说明,在实际过程中,往往我们都会用vaspkit来生成,所以不需要太过于注意,只是稍微提一下,一般的KPOINTS如下左图所示,可以看到它有三个方向的K点取样,所以是三维积分,但是在我们绘制二维能带图时,要使用line-mode的K点,即沿高对称K点的二维积分,因为我们要得到的图像就是二维的。
最后,再讲一下常用的输出文件,首先是OUTCAR,它包含了VASP计算后的绝大部分信息,我们常用的一个指令是grep TOTEN OUTCAR,它能给出体系计算后的总能量。其他的如记录电荷密度的CHG和CHGCAR,记录波函数的WAVECAR,以及结构优化后的晶体结构CONTCAR这里都提及了,因为这在下篇中我们都会用到,希望大家先看个眼熟,最下面的这张图是计算后的目录,可以看到其实输出文件很多,只是大多数我们平时不怎么用到。
我想大家到目前为止可能还是不明白应该要怎么进行第一性原理计算,那是因为到目前为止,我们只是集齐了进行实例计算所需的全部拼图,但还没开始拼,在下篇中,大家在上篇中学到的每一块拼图都能用上。
转载本文请联系原作者获取授权,同时请注明本文来自徐尔骐科学网博客。 链接地址: https://blog.sciencenet.cn/blog-3590700-1463354.html
上一篇: X射线弹性散射与非弹性散射和相干散射与非相干散射有什么区别? 下一篇: 从零开始的第一性原理计算(下)