大致可采用这样的步骤:
1)在实验或理论计算出来的晶格常数或平衡体积(V0)的左右各取6~7体积点,使得所要计算的体积点的个数在10个左右,而且这些体积的范围大致在[(1- x) V0, (1+x) V0],x为小于0.1~0.3的正数。
2)对这10来个体积点分别计算总能E以及声子谱(采用直接小位移的方法或线性响应的方法,目前很多免费的软件如ABINIT, Quantum-Espresso, PHON, fropho, PHONOPY都支持声子谱的计算),然后采用准谐近似计算出每个体积下在不同温度下的自由能F(V_i, T);
3)然后将数据的排列进行调整为:每个温度T_i下,自由能排列成
V_1 F(V_1, T_i)
V_2 F(V_2, T_i)
....
V_10 F(V_10, T_i)
然后对这些10对V~F数据点用状态方程拟合得到平衡体积V0(T_i)。对每个所选取的温度都需进行状态方程拟合。有了不同温度下的平衡体积,然后利用这些数据点T_i~V0(T_i)进行简单的差分求导就可以得到热膨胀系数。