本文为由小强撰写的《VASP实用教程》第33篇,全系列约60篇,将在近期陆续更新。
基于密度泛函理论的第一性原理方法主要处理的是基态的体系,对应的温度是0K。同样VASP计算默认的计算温度也是0K,如果我们需要将计算温度拓展到其他温度,比如室温,就需要通过Phonopy来实现。
Phonopy是一款由python实现的晶体声子分析程序。Phonopy提供了VASP的Wien2k的接口用来计算原子受力。
主要功能包括:计算声子色散谱、计算声子态密度(包括分立态密度)、声子热力学性质(包括自由能、热容焓、焓)。
Phonopy 可以计算热力学量随温度的变化,所以可以将DFT结果扩展到其他温度,但这也只是近似,因为不同温度体系基态可能就不同,化学反应整个势能面也发生变化。下面我们来讲解一下如何通过Phonopy计算计算结构的热力学量变化。
-
首先需要将待计算的结构进行优化(优化方法及参数设置参考前面的教程)。新建名为TS_thermal的文件夹,将优化好的结构文件拷贝至TS_thermal的文件夹中,执行‘cp CONTCAR POSCAR’。
-
创建超胞。命令为:
phonopy -d –dim = ‘m n l’
生成一个SPOSCAR文件,其中包含的结构为由指定单胞扩展得到的m×n×l的超原胞,disp.yaml,和POSCAR-{number}(number= 001, 002 … 6* 超胞内原子数),POSCAR-{number} 对应各个原子稍微偏离平衡位置的结构,对应所有振动模式。
-
在VASP中,直接采用POSCAR-{number}作为POSCAR计算每个指定位移下的原子受力。可以用下面的脚本来计算:
-
接下来计算的所有结构的结果得到FORCE_SETS 文件。命令如下:
phonopy – f vasprun:xml – {001…6 * number of atoms}
-
创建mesh.conf,设置取样方法:
-
使用mesh.conf 文件得到热力学量。命令为:
phonopy – t – p mesh:conf
-
DFT 能量与相应温度的热力学能量相加就应该是该结构在某一温度下的能量。