J. Chem. Theory Comput. 2013, 9, 3165−3169
我必须把对这篇文献的吐槽写在最前面
这学期学了统计热力学,前几天期末考试考完后就开始看这篇文献的。不得不说这篇文献在某些地方非常地坑爹,它的 Supporting Information 中有很多笔误。我在 follow 的时候必须充分翻阅各种资料才能确保公式的正确性。虽然后面的公式推导的思路是根据文献来的,但是我写的绝对比原本的要更清晰一些。
公式推导
自由电子气的熵
将电子作为量子 Fermi 气体,其巨正则配分函数为:
式中 , 代表第 个可及能级, 为体系的化学势。由巨正则配分函数可得到巨热力学势
将求和用积分近似( 是简并度,对电子而言等于 2)
定积分的部分可用分部积分得到
所以
另一方面,已知
同样将求和用积分近似,有
定义函数
补充:
所以摩尔巨热力学势为
电子气的内能则为
熵由 Gibbs-Duhem 关系式得到
显然 。理想 Fermi 气体不遵循理想气体状态方程()。
可推导得到温度为(默认取一个标准大气压)
强简并 Fermi 气体的情况()
Fermi 气体的能量为
为数密度。以上公式的具体推导见 Wikipedia。
(中间涉及一些较复杂的过程,具体过程见文献或《统计热力学导论》P299-300)
推导得到(摩尔)熵为
其中定义了 Fermi 温度 。
热容
完全非简并气体的情况()
这种情况下,。
得到
该表达式与使用电子的平动配分函数处理得到的结果是一致的。
迭代方法
文章中作者描述的方法是给定一个温度 (即我们要得到该温度下电子的熵),以及 的初猜。由该初猜可计算出相应的温度 ,将该温度与给定温度比较来判断 的合理性。如果两者的差异大于要求的收敛限,则对 进行校正,再一次计算温度。重复以上步骤直到温度 收敛于要求的温度 。这时利用 便能算出熵。
但是作者在文中丝毫没有提到如何对 进行校正,所以我使用了简单的二分法来求 。另外 函数计算中作者使用了 Romberg 方法进行数值积分,但是我并不会数值计算。从网上找的代码也难以完美用于这里的任务(被积分的函数有外部指定的参数),因此同样使用了简单的梯形公式来计算。所以整体的精度会差一些。求得不同温度下的熵后,可利用数值微分计算得到等压热容。并进一步算出焓等其它热力学量。同样地,我现在不会数值微分,因此其他的热力学量不方便求出。
结果
Fortran 代码上传到了GitHub。
用程序计算了 到 之间的电子的熵,部分结果如下(MathJax表格神烦,直接截图了)。
可以看出我得到的结果相较于文献计算的结果稍偏大。我估计自己得到的精度应该低于文献的,毕竟数值计算的部分用的是简单粗糙的方法。
虽然不能求得任意温度下的等压热容 ,但将熵对温度作图后发现,在至少 的范围内熵与温度近似为线性关系。进行线性拟合后得到斜率,利用公式
可得到该温度范围内的等压热容。至于焓以及 Gibbs 自由能,则必须从 开始计算等压热容的值,再根据 Kirchhoff 定律进行数值积分得到。
补充
把不同 的情况下函数 的图像画出来比较了一下
在 到 这个数量级范围内,在 之前就基本趋于零了。所以我把积分的范围减小到了0至50(间隔数与之前一样为40000,之前的积分范围为0至120)。顺便把二分法的收敛限减小到 。重新计算后的结果有微小的改变,但是只在小数点第四位有变化。看来只有靠更好的数值方法才能有效地改善结果。
从一本Fortran科学计算的书上找了一个Simpson积分的代码拿来用,不过改进也不是特别大。另外,我想起来Origin可以做数值微分,所以算了 范围内的熵值。在Origin中算出等压热容 ,与文献值相比还是相对精确的。因为计算出的熵值与文献值相比是整体都偏大,但斜率则较接近。