3.3.2 结构优化结果依赖于初始构型#

时刻记住一句话,计算结果很大程度上取决于计算的初始条件。我们一开始给定的POSCAR中,八个Si原子位置都是规整的金刚石格点位置,如果有一些原子偏离了的话,会怎么样?relax能帮我们优化回完整格点吗?

现在我们构造一个这样的POSCAR

Si8
1.0
5 0.0000000000 0.0000000000
0.0000000000 5 0.0000000000
0.0000000000 0.0000000000 5
Si
8
Direct
0.255000000 0.250000000 0.250000000
0.000000000 0.500000000 0.500000000
0.250000000 0.750000000 0.750000000
0.000000000 0.000000000 0.000000000
0.750000000 0.255000000 0.750000000
0.500000000 0.500000000 0.000000000
0.750000000 0.750000000 0.250000000
0.500000000 0.000000000 0.500000000

注意,我们修改了红框里原子坐标,使得这两个原子偏离了规整的金刚石格点。

其它INCAR,KPOINTS和POTCAR不变,提交任务,做relax计算。

首先我们会发现此时计算速度明显变慢。grep LOOP OUTCAR可以查看每一次电子步的时间,LOOP+是离子步的时间。这是因为结构对称性下降了,使得要计算的不可约k点也变多了。可以比较此时的IBZKPT文件与前面计算的IBZKPT文件中不可约k点数。

其次,当relax成功结束时(你需要查看result或者OUTCAR中相应的信息,确保relax成功结束),我们会看到CONTCAR似乎不是“金刚石”结构,好像是离金刚石结构差一点点,如下

Si8
   1.00000000000000
     5.4707306087174699   -0.0004034370458453    0.0005837208855710
    -0.0004034357917014    5.4707314686950168    0.0005804701232229
     0.0005840440239772    0.0005808036825860    5.4707024648947620
   Si
     8
Direct
  0.2506836484862023  0.2506185678118726  0.2499809739212732
  0.0006359113082784  0.5006041321623191  0.4999884833895512
  0.2506172348261616  0.7506099503527374  0.7499805471306558
  0.0006059457473388  0.0006356564277214  0.0000196767924869
  0.7506069764004892  0.2506822777707750  0.7499815673972762
  0.5006027476806441  0.5006389140197349  0.0000186425734447
  0.7506109526004766               287508 0.2499803528759976
  0.5006365829504112  0.0006017637660912  0.5000497559193144

运行vaspkit-608命令查看CONTCAR的对称性,会看到此时显示的是P1空间群,为什么不是金刚石的Fd-3m呢?因为此时我们给定的初始结构就不是Fd-3m了(有两个原子偏离了一点点),可以用vaspkit-601查看POSCAR的对称性。但可以想象,这个结构在构型空间中距离完整的金刚石结构应该“很近”,此时我们需要在寻找对称性时取一些宽松的标准。只需要vim ~/.vaspkit,修改文件中的对称性参数,如下,默认1E-5,我们改成1E-2。

SYMMETRY_TOLERANCE = 1E-2
LATTICE_TOLERANCE = 0.2
ANGLE_TOLERANCE = 0.2

然后保存并退出,再运行一次vaspkit-608找CONTCAR的对称性,就可以看到此时空间群是Fd-3m了。注意,608命令只是找对称性,并不会生成施加对称性后的新结构。这需要用602或者603功能实现:新建一个文件夹,把刚刚的CONTCAR复制进去并命名为POSCAR,再进入这个文件夹,运行vaspkit-603寻找当前结构的晶胞;此时生成一个CONVCELL.vasp文件,就是vaspkit读取CONTCAR的信息,并施加宽松(刚刚我们设置的1E-2)的对称性标准之后,重新找到的具有对称性的晶胞。运行vaspkit-602可以得到施加对称性之后获得的标准原胞。用完该功能后,记得把~/.vaspkit里面的参数改回去。

有一些体系的结构优化计算,如某些结构在不同压力下的焓,需要知道优化后的CONTCAR对称性是否还和POSCAR保持一致,可以通过vaspkit的608功能快速查看CONTCAR的对称性。VASP在计算时会默认开启对称性,这个对称性并不是使得结构在优化过程中空间群保持不变,由ISYM参数控制,具体含义见官网。一般的结构优化计算,ISYM取默认即可(注释);有些特殊的计算可能需要设置ISYM=0或者-1,完全关闭对称性(但是计算速度也明显变慢),这属于进阶内容,不在本教程范畴。