最近看了很多和第一性原理计算相关的资料,知识总是要和实践结合,这里就利用VASP来计算一下Graphene的能带,作为研究很透彻的一个体系,起码在$\Gamma$点的Dirac锥的结构势清楚了,所以就拿这个体系来入门.下面的内容都是我最为一个初学者的理解,其中应该会包含一些错误的理解,希望可以指出.
1.晶格弛豫
在对一个体系进行计算时,首先是要确定你的这个体系时稳定的,所以要先进行晶格弛豫,我理解的就是晃动一下整个晶格,重要保证它有一定的稳定性,不至于轻微的晃动就变成另外一种结构.这里这计算的时2维的Graphene,虽然从结构上看确实好像有一定稳定性,但是还是要进行弛豫计算.
INCAR
ISTART=0 # 参数0代表开始一个全新的计算
ICHARG=2 # 2代表初始电荷密度由原子轨道电荷密度叠加构成
LWAVE=.FALSE. # 轨道以及电荷密度不进行输出(节省空间,但有时你可能需要这些数据,改为true即可)
LCHARG=.FALSE. # 控制电荷摸底输出
PREC=Normal# standard precision 计算精度控制
ENMAX=450# cut off set according to POTCAR 最大截断能
EDIFF=1E-5# electron step accurate 电子步计算时的精度控制
ISMEAR=0 # 占据函数设置,0为高斯占据函数
SIGMA=0.05 # 通常ismear为0时,使用sigma=0.05
IBRION=2# use GGA algorithm 利用共轭梯度法计算离子弛豫
ISIF=3# relax both cell and atom 力及力张量计算,3代表全部输出
NSW=100# 100 ionic step 最大离子步数目
EDIFFG=-0.03# forces smaller 0.02 A/eV 离子步计算精度
POSCAR
关于POSCAR的设置可以参考这篇博客VASP基本输入文件准备
graphene
1.0
2.4677236 0.0000000 0.0000000
-1.2338618 2.1371113 0.0000000
0.0000000 0.0000000 15.0000000
C
2
Direct
0.00000000 0.00000000 0.25000000
0.66666667 0.33333333 0.25000000
KPOINTS
AUTO
0
Gamma
6 6 1
0 0 0
晶格弛豫过程主要是为了确定晶格的一个稳定结构,计算完成之后需要的只是CONTCAR文件,它包含了最终计算得到的稳定结果
这里第三个基矢发生了一些小的变化,但是这里计算的是2维Graphene,还是将它修改维最初的15.00000
自洽计算
完成了晶格弛豫稳定性计算之后,接下来就进行自洽计算,这个时候需要将上一步计算得到的CONTCAR复制为POSCAT来进行自洽计算
INCAR
ISTART = 0 # 还是要重新开始一个计算
ICHARG = 2 # 2代表初始电荷密度由原子轨道电荷密度叠加构成
PREC = Accurate # accurate precision
ENMAX = 450
EDIFF = 1E-6
ISMEAR = 0
SIGMA = 0.05
# 因为已经通过弛豫过程确定了稳定结构,所以这时候不再进行离子弛豫
IBRION = -1 # No ionic movement
NSW = 0 # No ionic movement
KPOINTS
AUTO
0
Gamma # 以Gamma点为中心自动生成k格点
12 12 1
0 0 0
自洽计算完成之后会得到电荷密度文件CHGCAR,利用这个文件来进行之后的能带计算.
能带计算
利用前两步计算得到的CHGCAR以及CONTCAR文件,将CONTCAR复制为POSCAR,进行能带计算.
INCAR
ICHARG = 11 # Read from CHGCAR 从现有的文件中读取电荷密度
PREC = Accurate # accurate precision
ENMAX = 450 # cut off set according POTCAT
EDIFF = 1E-6
ISMEAR = 0
SIGMA = 0.05
IBRION = -1 # no ionic movement
NSW = 0 # no ionic movement
LORNIT = 11 # projected band 这里会计算每个轨道对能带的贡献
KPOINTS
K-points for bandstructure G-K-M-G
30
line-mode
reciprocal # 下面就是设置高对称点的路径
0.000 0.000 0.000 # G
-0.333 0.666 0.000 # K
-0.333 0.666 0.000 # K
0.500 0.000 0.000 # M
0.500 0.000 0.000 # M
0.000 0.000 0.000 # G
执行完毕之后即可以得到最终的结果vasprun.xml,可以通过p4vasp来查看能带结果.
计算平台
我这里是在并行云的超算上进行了,自己提供VASP的包之后,平台会有人进行编译配置,完成之后会提供一个提交作业的脚本给你,展示一下我的
#!/bin/bash
#SBATCH -p amd_256
#SBATCH -N 1
#SBATCH -n 64
source /public3/soft/other/module.sh
module load mpi/intel/17.0.5-cjj-public3
export PATH=/public3/home/username/package/VASP/vasp.6.1.0/bin:$PATH
srun vasp_std
提交作业的时候,将这个脚本(比如名称为job.sh)复制到你的文件夹里面,然后执行
sbatch job.sh
关于脚本与服务器的其他内容,如果取申请自然会有相关的资料给你.
参考
公众号
相关内容均会在公众号进行同步,若对该Blog感兴趣,欢迎关注微信公众号。