第一性原理计算入门指南
从“入门”到“入土”
孙大剩上研究生已经两年啦,从本科学习的材料加工专业转行到材料物理专业,说不上跨度多,但是对于一个满脑子都是“玩”的学渣来说,简直是蜗牛走路,懒驴上磨,好在对计算这些东西还是有一些兴趣的,多说无益,只需努力啊!!!从现在开始打算开始新的学习方法,边学习变实验变记录,一方面催促自己,一方面也可以作为反面教材供后来的师弟师妹们避雷!课题组的大佬们主要是通过TEM,STEM等手段研究原子结构的界面,缺陷,以及一些有趣的原子像,并结合第一性原理计算对其物性展开研究。材料体系涵盖范围比较广,主要包括半导体,金属氧化物以及一些金属合金的研究,主攻方向是在功能氧化物。
第一性原理计算简介
运用量子力学原理,从具体要求出发,根据原子核与电子相互作用的原理和它的基本运动规律,通过近似处理然后直接求解薛定谔方程(SchrodingerEquation)的算法,即从头算(AbInitio),常被称为第一性原理(TheFirstPrinciple)。该原理是一种理论基础比较完善的计算方法,可以对材料的结构、性能、能量等方面进行较精确的计算。随着计算机运行速度的提高、数学计算科学的发展和专门第一性原理计算相关软件(如Win2K、VASP、MaterialsStudio等)的开发,已经成为材料科学领域非常重要的一种分析手段。第一性原理主要是基于密度泛函理论,根据不同基函数的选取有多种不同的具体计算方法。
广义第一性原理计算指的是一切基于量子力学原理的计算,包括两大类:以哈里斯-福克自洽场(Hartree-ForkSelf-consistentFunction,HFSCF)计算为基础的从头算和密度泛函理论计算。求解薛定谔方程时,所要输入的只是原子的核电荷数和一些模拟的环境参量,无需任何实验、经验或者半经验参数的输入。
摘自:https://zhuanlan.zhihu.com/p/503697567
第一性原理是指不能由其他原理导出的,计算时只需要输入最基本的物质结构参数的方法。该方法在1960年有Walter Kohn等人提出,是在电子基态性质的计算中被广泛应用的一套基本理论。用基态电子密度n®代替电子波函数,极大地缩短了计算的维度,由此计算出材料的电子特性,磁学特性等。(对于第一性原理计算的发展历程,比如Born-Oppenheimer近似,Hartree-Fock近似,以及密度泛函理论中Hohenberg-Kohn定理,Kohn-Sham方程,以及计算过程中采用的各种赝势的近似处理建议自己去看看相关的理论做了解。)
目前我认为第一性原理计算的基础是量子力学以及密度泛函理论,当然了固体物理呀,晶体学基础呀之类的书籍还是很基础的。推荐一些我认为有用的书籍(百度网盘链接)。关于对第一性原理的介绍之类的讲解网络上太多啦,可以自己拓展的读一读。
第一性原理材料计算基础 笔记 - 知乎 (zhihu.com)
第一性原理计算需要掌握的第一课:DFT的基础理论和发展概述 - 知乎 (zhihu.com)
数据库
对于材料性能的预测的基本思想是借助相对廉价和快速的数值运算,对所有已知稳定的材料进行高通量计算,把得到的物理性质等各种信息整理和存储,形成一个大规模的材料数据库。在此基础上,根据物理性质反向搜索出可能的晶体结构,从而加速新材料的开发。
材料数据库的建立基于以下四个条件:
1. 高性能计算机的飞速发展:硬件保证
2. 密度泛函理论的建立:密度泛函理论在多粒子薛定谔方程的基础上,采用了绝热近似、单电子近似等方法,把多粒子问题等效呈一个无相互作用的单电子问题,从而使得用量子力学研究实际材料变得切实可行。密度泛函理论基本不依赖经验参数(所以也称第一性原理计算),只需要晶体结构就可以计算。
3. 密度泛函程序的发展和成熟:专业软件的发展
4. 无机晶体学数据库:材料数据库的基础是现有的大量天然或者人工合成的晶体材料。
材料晶体数据库有很多,推荐一些比较好用的数据库(有些需要外网):
1. 晶体结构数据库:
ICSD(商业数据库):https://icsd.fiz-karlsruhe.de/index.xhtml
Springer Materials(商业数据库):https://materials.springer.com/
2. 电子结构数据库:
AFLOW:http://www.aflowlib.org/
Material Project:https://materialsproject.org/
3. 拓扑材料数据库:
Materiae :http://materiae.iphy.ac.cn/#/
Topological Materials Arsenal:https://ccmp.nju.edu.cn/
Topological Materials Database: http://topologicalquantumchemistry.org/#/
4. 二维材料:
Materials Cloud:https://www.materialscloud.org/discover/2dstructures/dashboard/ptable
2D Materials:https://materialsweb.org/twodmaterials
Nano Lett. 17, 1915 (2017)文章及附件:https://pubs.acs.org/doi/abs/10.1021/acs.nanolett.6b05229
Chem. Soc. Rev. 43, 6537 (2014)文章及附件:http://pubs.rsc.org/en/content/articlehtml/2014/cs/c4cs00102h
5. 超导材料数据库
第I类超导体:http://www.superconductors.org/Type1.htm
第II类超导体:http://www.superconductors.org/Type2.htm
6. 磁结构数据库
MAGNDATA: http://webbdcrista1.ehu.es/magndata/index.php?show_db=1
7. 声子谱
phonondb@kyoto-u: http://phonondb.mtl.kyoto-u.ac.jp/index.html
计算软件的使用
建模软件Materials Studio(MS),建议不要下载2019版本,存在一些bug,可以下载2018版本或者2020版本的软件,主要的MS操作包括晶胞的建立,原子的添加,界面的搭建,模型的导入/导出等等,推荐bIlibili网站上硅的孪晶界面搭建。这个视频简介明了,我相信可以很快入手界面的搭建。
可视化软件VESTA软件,这个软件是免费开源的,可以用于POSCAR,CONTCAR等文件的导入/导出,对模型的输入以及后期结果的可视化有很大的帮助。
主要使用的计算软件包VASP(The Vienna Ab initio Simulation Package)。VASP是目前材料微观反应机理和计算材料电子结构性质科学研究中最流行的一款软件,它可以处理金属及其氧化物、半导体、晶体、掺杂体系、纳米材料、分子、团簇、表面体系和界面体系等。主要的输入文件包括:INCAR,POSCAR,POTCAR,KPOINTS四个文件,其中各个文件所控制的输入参数以及各自的作用建议跟着大师兄(大师兄科研网的作者)学习。主要的学习软件百度网盘自取(链接)。
师弟师妹们在遇到困难后可以多多与我交流探讨,一起学习一起进步,目前我是在做磁性体系,因为原子体系较大,所以自洽过程中总存在电子跳跃的问题难以解决,摸索的一些经验我会在后期更新出来(等我更新了大家就知道我可能大概也许是解决了这个问题,也不知道是猴年马月了)。总之关于计算的学习,需要大家自己多多去实践练习,后期我会对所遇到的问题和一些经验做出更新总结供师弟师妹们学习,初学者最重要也是必须要强调的就是,多看手册!多看手册!多看手册!(手册自取链接)
以Fe3O4单胞为示例
- 单胞模型的搭建
一共有两种可供选择的方式,一种方法是直接在晶体库中导出Fe3O4.cif的文件:在Crystallography Open Database数据库中输入元素Fe3,O4,以及最大最小元素个数均为2,如图:
点击send,下载空间群为Fd-3m空间群的Fe3O4的cif文件,并导入MS中
第二种方法是可以直接在MS中搭建初始模型:
因为在室温下Fe3O4为反尖晶石结构,因此在对话框中选择227好空间群Fd-3m,并设置晶格常数为8.384,点击build:
在晶胞中添加原子,由于对称性的存在只需要添加A位Fe原子,B位Fe原子以及O原则,之所以需要区分A,B位Fe原子是因为A-B位Fe为反铁磁耦合,在后期计算过程中需要区分开来,此处以Co原子代替B-Fe原子,一次添加O(0.375,0.375,0.375),A-Fe(0,0,0),B-Fe(0.625,0.125,0.125),根据Wyckoff Positions会自动生成相应对称点的坐标,在生成的模型文件中右击,选择Display Style,选择球棍模式,Lattice中的Disolay Style中选择in-Cell,得到结果如图所示,在build工具栏下选择symmetry,make P1(去掉对称性)后,导出cif文件即可。
- 计算文件准备
需要准备的文件主要包括INCAR,POSCAR,POTCAR,KPOINTS四个文件。其中初始模型文件准备好后导入VESTA中转化为POSCAR格式文件得到了输入的模型文件,如下文所示:
Fe3O4 ##文件名称,可以自定义输入
1.0 ##缩放系数
8.3839998245 0.0000000000 0.0000000000
0.0000000000 8.3839998245 0.0000000000
0.0000000000 0.0000000000 8.3839998245 ##这三行为晶胞参数
Co Fe O ##元素种类
16 8 32 ##元素个数
Direct #元素位置
0.625000000 0.125000000 0.125000000
0.625000000 0.625000000 0.625000000
0.375000000 0.375000000 0.625000000
0.875000000 0.375000000 0.125000000
0.875000000 0.625000000 0.875000000
0.375000000 0.125000000 0.875000000
0.125000000 0.875000000 0.375000000
0.125000000 0.625000000 0.125000000
...... ##原子坐标,此处省略了其他原子坐标
这样我们就准备好了POSCAR文件,需要将文件命名为POSCAR,接下来介绍INCAR文件,INCAR文件是参数控制的主要输入文件,几乎我们所采用的计算方法,相关的设置都在这个文件中实现,但是记住一点,不是设置的参数越多越好,按需设置,有很多默认值就足够用于计算,设置的参数多了容易减缓计算速度也容易得到错误的结论。
SYSTEM = Fe3O4 ##体系名称
PERC = Accurate ##计算精度
ISTART = 0 ##随机产生波函数
ICHARG = 2 ##取原子电荷密度的叠加。
ISPIN = 2 ##考虑自旋
MAGMOM = 16*4 8*-4 32*0 ##磁矩初设
ENCUT = 400 ##截断能设置
NELM = 80 ##最大电子步
NELMIN = 4 ##最小电子步
EDIFF = 1E-05 ##能量判据
LREAL = Auto ##在真实空间中完成投影,全自动优化投影算子
LMAXMIX = 4 ##对于d轨道Fe原子用4
EDIFFG = -1E-02 ##力收敛判据
NSW = 80 ##最大离子步
IBRION = 2 ##离子的更新弛豫采用共轭梯度算法
ISIF = 3 ##完全弛豫
POTIM = 0.5 ##步长
ISMEAR = -5 ##具有布洛赫校正的四面体方法涂抹K空间区域
SIGMA = 0.05 ##涂抹宽度
LDAU = .TRUE. ##考虑增加U值
LDAUTYPE = 2
LDAUL=2 -1
LDAUU=3.8 0
LDAUJ=0 0 ##U值参数的设置
POTCAR文件调用赝势库即可,KPOINTS文件类似于有限元中mesh一样对K空间进行网格划分,一般采用M-P方式:
K-POINTS ##文件名
0 ##自动生成K点网格
Monhkorst-Pack ##以Γ点为中心自动产生k点
7 7 7 ##确定沿倒格子各方向(x,y,z)上K网格点的数目
0 0 0 ##对所按网格分割产生的k点进行平移的量
至此,我们就准备好了所有需要输入的四个文件,导入VASP中进行结构的优化计算即可,对于任务的提交脚本可以参考系统用户手册,当然了windows系统如何登录节点提交任务以及一些相关的只是在手册中均有阐述,此处就不赘述了。以下是我提交脚本的命令,供参考:
#!/bin/bash
module purge
module load vasp/5.4.4-icc16-IMPI5.1
EXE=vasp_std # choose one vasp version to run. e.g. vasp_std / vasp_ncl / vasp_gam / vasp_neb ...
yhrun $EXE
Fe3O4从结构和设置上算是一个比较复杂的体系了,如果感觉上手比较困难建议以氧气分子为例(上述大师兄文件中的例子),差不多了解以后可以返回头来试试Fe3O4磁性体系,掌握之后对于大多数的计算应该都可以开始算了,还有一些铁电体系的材料我还没有涉猎过,不过基础的东西是一样的,碰到的具体问题就需要摸索解决了。
Ps:计算中会出现奇奇怪怪的问题,要么是初始模型的问题,要么是参数设置的问题,一定要认真检查,反复琢磨,以我自身为例,磁性体系做了一年之久,仍然模棱两可,并没有得到合理的结果。反思原因:一是联系太少,异想天开,缺少反复实践后对参数的进一步理解;二是理论基础不够扎实,对于很多的计算错误不能做出处理,马马虎虎。希望以我为反例,入门就踏踏实实稳扎稳打的计算,这样对于后面的工作会有意想不到的收获!
本文主要为以后的师弟师妹们做第一性原理计算入门指南,如有错误或者有好的见解希望大家可以不吝赐教,欢迎大家一起讨论!