1
Direct
0.0 0.0 0.0
(这个是POSCAR文件的内容)
计算完,从OSZICAR最后一行可以找到体系总的磁矩是0.567μB。这个也可以从通过grep ‘magnetization‘ OUTCAR在OUTCAR文件中找到(看“number of electron … magnetization …”这一行的数据)。
在后面计算能带结构和电子态密度时,分别会得到自旋向上和自旋向下的两部分。
七、表面体系的计算
在作表面的性质计算时,现在一般都是采用slab(“晶层”或“薄片”)模型来模拟表面体系的。因此表面体系的计算大致可以分为四个大的步骤:1、材料体性质的计算;2、slab模型的构造;3、表面体系的结构优化;4、表面体系性质的计算。 1、材料体性质的计算
这一步包含了前面材料基态性质的计算。主要是为了确定后面在进行表面计算时所需要的一些参数:ENCUT,当采用ISMEAR = 1或0时的 SIGMA,以及体材料的晶格参数(因为构造slab模型是以体材料的晶格参数作为基础来进行的)。如何确定这些参数,可以参考前面所介绍的方法和步骤。其中SIGMA的优化是必须的,因为后面对表面体系的结构进行优化时,smearing方法一般都是采用Gaussian方法或Methfessel-Paxton smearing方法。
2、slab模型的构造
在知道了体材料的晶格参数,以及明确了要模拟什么样的表面(也就是表面的密勒指数以及表面的二维周期性),就可以开始构造该表面的slab模型了。在构造slab模型时,还有两个重要的参数,就是真空层(Vacuum layer)和原子层的厚度,这是因为slab模型就是由原子层和真空层所组成的。真空层和原子层要取多厚,这要经过试用不同的厚度得到,看它们对总能的影响,然后选择合适的厚度。
3、表面体系的结构优化
在对表面体系的结构进行优化前,还需要对k点数目或k mesh大小进行优化,这个的优化也可以参考前面的介绍。在对表面体系的结构进行优化时,主要是对原子的位置进行优化,而不再对超原胞(Slab模型得到的)大小进行优化,一般采用的是Selective Dynamic(也就是有选择性的位置驰豫)。这是在POSCAR进行设置的,另外在INCAR文件也应加入控制离子驰豫的关键词。下面以优化Al(100)-p(1x1)为例进行说明: INCAR文件的内容为:
26
SYSTEM = Al(100)-p(1x1) ENCUT = 200
ISMEAR = 1; SIGMA = 0.20 ISTART = 0; ICHARG = 2
EDIFF = 1E-5; EDIFFG = -1.0E-3 NSW = 60; IBRION = 2 POTIM = 0.1 PREC= Accurate
KPOINTS文件的内容为: auto 0
Monkhorst-Pack 1 11 11 0.0 0.0 0.0
POSCAR文件的内容为: Al(100)-p(1x1) 1.00000
0.0000000000 2.0247500000 -2.0247500000 0.0000000000 2.0247500000 2.0247500000 22.1485000000 0.0000000000 0.0000000000 7
Selective dynamics Direct
0.0000000000 0.0000000000 0.0000000000 F F T 0.0000000000 0.0000000000 0.1828340520 F F F 0.0000000000 0.0000000000 0.3656681039 F F F 0.0000000000 0.0000000000 0.5485021559 F F T 0.5000000000 0.5000000000 0.0914170260 F F T 0.5000000000 0.5000000000 0.2742510780 F F F 0.5000000000 0.5000000000 0.4570851299 F F T
其中对原子层上下各两层原子进行驰豫,中间三层原子位置固定。
在INCAR文件中的EDIFF,EDIFFG,NSW控制原子位置驰豫的步数。当原子所受的力小于EDIFFG时,原子位置就停止移动。得到的CONTCAR文件,就是驰豫得到的最后位置。 原子受力的情况,可以在OUTCAR文件中查找TOTAL-FORCE来查看。
4、表面体系性质的计算。
在得到了优化的结构,就可以进行一系列性质的计算,其步骤与前面体材料性质的计算一样。 提示:无论是对体材料还是表面体系的结构优化,在结构优化完后,还需进行进行静态的计算,以得到自洽的电荷密度,再进行后面的性质计算。结构优化完得到的电荷密度文件不可用在后面的性质计算中。在计算功函数和进行STM模拟时,需另加其他的关键词。如对此有兴趣,后面将作专题介绍。
27
”aA tools中小程序的说明
此部分是对tools中的一些小程序进行说明: 1、murn.f
这个程序是采用Murn状态方程来拟合晶格常数和计算体弹性模量的。从internet网上收集到的。 编译:
g77 -o murn.x murn.f 得到可执行文件murn.x。 使用:
其输入文件为inp.m,inp.m的内容以及格式为: 2 0.25
6.00 7.45 50 8
6.0849 -.62120891E+01 6.2739 -.64553428E+01 6.4629 -.65246916E+01 6.6518 -.64694519E+01 6.8408 -.63284020E+01 7.0298 -.61271095E+01 7.2188 -.58843994E+01 7.4077 -.56183090E+01 -----------------------------------------
第一行表示下面输入的能量的单位是采用eV、Ry或Hartree。当采用的是Ry,则为1;如果是eV,则用2;如果是Hartree,则用3。
第二行可以看成是原胞的体积与晶胞的体积之比。这里晶胞的体积计算公式为:晶格常数的三次方,原胞的体积计算公式按固体物理教科书中的方法来计算。比如所计算的体系是fcc,则为0.25;如果是bcc,则为0.5;如果是六角的sqrt(3.0)/2 * c/a。其他的自己去推算了。 第三行是用来拟合的晶格常数时晶格常数的范围,以及点数。第一个数是晶格常数的最小值,第二个数是晶格常数的最大值,第三个是拟合多少个点,这个数一般取30~50。 第四行是所计算了多少个晶格常数的能量值用来拟合。
28
从第五行起,是计算得到的晶格常数与能量的一一对应值,第一列是晶格常数;第二列是能量值,它的单位要与前面第一行的确定的单位一致。晶格常数-能量值的对数也要与第四行的数一致。
文件准备好之后,使用的方法为:murn.x
使用murn.x拟合后得到的拟合值写在文件fout.dat中,拟合的情况及重要的结果写到out.m文件中。
用vi编辑out.m,然后用命令g/alat=来查找拟合得到的晶格常数(单位为a.u.)和体弹性模量(单位为Mbar)。
2、gk.f和pbnd.f
gk.f是用来产生计算能带结构时所需要的k点,其输入文件为syml,在手册中有详细介绍每行的意思,这里就不再赘述。输出文件为KPOINTS和inp.kpt。说明一下,在syml中特殊k点的总数不能超过10个。如遇到超出10,则可以把gk.f中有关定义特殊k点的数组的维数调大。 编译:
g77 -o gk.x gk.f
pbnd.f是用来把本征值文件EIGENVAL转换为可以用origin软件来画图的数据。其输入文件为syml和EIGENVAL。输出文件为bnds.dat(或upbnd.dat和dnbnd.dat)和highk.dat。说明一下,pbnd.f能写出的能带数,默认最大是100个,如果超过了100,可以在pbnd.f中调大定义的值。 编译:
g77 -o pbnd.x pbnd.f
另外还附带针对fcc、bcc、sc和六角晶系的syml,分别名为syml.fcc, syml.bcc, syml.sc, syml.hex。使用时,把相应的拷贝成syml。
3、split_dos和vp
这两个要一起用的,都是csh脚本程序,其中运行split_dos要调用vp。从internet网上收集的。
它是用来分割DOSCAR,把DOSCAR分解成每个原子的,以方便用origin来画图。其使用的说明也可以参见前面的介绍。
使用时,在你的当前主目录建立一个bin的目录。比如你的用户名为xxxx,则在/home/xxxx目录下,建立bin目录(mkdir /home/xxxx/bin),然后把split_dos和vp放到该目录下。
29