3.7.3 晶格的振动自由能#

声子计算不单单可以给出声子谱来说明体系的动力学稳定性,还可以从声子态密度数据中获得晶格振动的自由能。前面我们提到过,对于一个结构单纯做DFT静态自洽计算得到的能量,是不包含晶格振动的自由能的。要获得晶体的振动自由能,比较主流的方法之一就是算声子,其晶格振动的自由能与声子态密度的关系表达式如下(具体推导见固体物理教材):

Fvib(V,T)=∑q,j[ℏωqj(V)2+kBTln(1−exp⁡(−ℏωqj(V)kBT))]

求和写成积分形式则是:

Fvib(V,T)=∫0+∞(ℏω(V)2+kBTln(1−exp⁡(−ℏω(V)kBT)))ρ(ω)dω

其中ρ(ω)就是声子态密度。晶体的总自由能可以写成:

F(V,T)=Felec(V,T)+Fvib(V,T)

其中Felec(V,T)可以直接从OUTCAR的能量中的Free energy部分获得,即OSZICAR中的F(注意,不是E0)。DFT直接做relax可以获得0K下的体积(没有原子热振动效应),如果假设体积不随温度膨胀的话,那么用该体积算一次声子,得到声子态密度;并且假设不考虑电子熵,再结合上面的公式就可以得到体系的自由能随温度的变化。这一“体积不随温度变化”的假设就是简谐近似,Harmonic Approximate(HA)。更严格一点的是准谐近似Qusia-Harmonic Approximate(QHA);QHA考虑了晶格热膨胀效应,但是忽略了温度对力常数(频率)的修正。QHA常用于计算固态物质的热膨胀系数、或是高温高压下的相图。

现在我们用phonopy来获得给定体积V下,体系的晶格振动的自由能数据:

只需要在前面的KPATH.phonopy基础上,加上如下参数:

TPROP = .TRUE.
TMIN = 0
TMAX = 1000
TSTEP = 100

然后运行phonopy -c xxx KPATH.phonopy那一串命令即可。此时band相关的参数不起作用并且运行过程中屏幕会输出当前体积下晶格振动自由能随温度的变化,如下图。第二列F就是晶格振动自由能,E是晶格振动的内能,S是晶格振动熵,F=E-TS。0K下晶格振动内能不为0,因为谐振子存在零点能,具体内容请复习固体物理。并且这里的mol是以原胞为单元的,并非每原子,可以从thermal_properties.yaml文件前几行中了解这一点。

#      T [K]      F [kJ/mol]    S [J/K/mol]  C_v [J/K/mol]     E [kJ/mol]
       0.000      79.4251899      0.0000000      0.0000000     79.4251899
     100.000      79.2614195      7.1856905     23.1953433     79.9799886
     200.000      76.8294562     45.4642063     94.9035257     85.9222974
     300.000      69.8479486     94.2311910    144.4295012     98.1173059
     400.000      58.0944499    139.9832679    172.3314374    114.0877570
     500.000      42.0339920    180.3250134    188.4559003    132.1964988
     600.000      22.1977920    215.6263310    198.3321427    151.5735906
     700.000      -0.9509022    246.7132646    204.7302454    171.7483830
     800.000     -27.0301131    274.3526452    209.0788710    192.4520031
     900.000     -55.7273834    299.1660850    212.1551338    213.5220931
    1000.000     -86.7855026    321.6411732    214.4049800    234.8556705

单位换算,1KJ/mol~0.0103643eV/f.u.

注意,计算晶格振动自由能的前提是体系的声子谱和态密度总没有虚频。否则得到的自由能是有问题的。当然,phonopy提供了一种灵活但不保证准确性的处理方式,即把虚频设置为正值,通过PRETEND_REAL参数实现,具体见phonopy官网的参数说明。

https://phonopy.github.io/phonopy/setting-tags.html#thermal-properties-tag

上面获得晶格振动自由能是建立在简谐近似的基础,即认为晶体没有热膨胀。对于大部分体系,热膨胀效应不可忽略,可以通过QHA来研究。QHA的教学不属于基础计算教学内容,请自行从phonopy官网学习。

提示:在做QHA过程中时,需要拟合F-V数据。如果不加振动自由能,F-V数据很光滑;如果加入振动自由能,F-V数据可能没那么光滑;可能原因是声子计算精度不够,考虑INCAR中加入ADDGRID = .TRUE. ; LREAL = .FALSE. ; PREC = Accurate三行参数。