【LAMMPS如何系列】计算体积热容量

体积热容简介

热容(Heat Capacity, or thermal capacity),单位质量或体积的物质温度升高或降低1K时吸收或放出的热量。

Wikipedia里热容的定义:Heat capacity (usually denoted by a capital C, often with subscripts), or thermal capacity, is the measurable physical quantity that characterizes the amount of heat required to change a substance's temperature by a given amount.  (link: Heat capacity )

从上面的定义也可以看出,热容有质量热容 (Specific Heat) 和体积热容 (Volumetric Heat Capacity) ,分别是以单位质量和单位体积的物质定义的。这里具体介绍体积热容如何计算。

Wikipedia里体积热容的定义:Volumetric heat capacity (VHC), also termed volume-specific heat capacity, describes the ability of a given volume of a substance to store internal energy while undergoing a given temperature change, but without undergoing a phase change. (link: Volumetric heat capacity )

可以总结出如下公式:

definition of volumetric heat capacity

简单分析一下,既然是单位体积的物质,那么体积在模拟的过程中就不能变;然后考虑体系能量随着温度的变化,自然就会想到选择NVT系综。

更具体的描述是:在保持体系体积不变的前提下,计算不同温度下对应的体系总能。E-T曲线的斜率应该就与体积热容有一个直接的对应关系了。

体积热容计算举例

下面以Cu为例,介绍如何使用LAMMPS计算其体积热容Cv。

输入脚本 in.specific.heat

# This input script is used to calculate
# the specific heat of copper.
# Powered by Xianbao Duan
# Email: xianbao.d@gmail.com
# Website: http://www.52souji.net/

units           metal
boundary        p p p
atom_style      atomic

variable        x equal 2.5

lattice		fcc 3.62
region		box block 0 8 0 8 0 8
create_box	1 box
create_atoms 	1 box

pair_style      eam
pair_coeff      1 1 Cu_u3.eam

variable        N equal step
variable        Etotal equal etotal
variable        T equal temp
variable        V equal vol

velocity        all create $x 825577 dist gaussian
fix             extra all print 100 "${N} ${V}  ${T}  ${Etotal} " file data

timestep	0.002
thermo		1000

fix             1 all nvt temp $x 2000 0.2
run             120000

很简单的输入脚本,在34~35行定义了NVT系综,温度从初始温度2.5K一直升高到2000K,整个过程运行120000步。

输出的文件data中包含了所有的数据,分别是计算步,体积,温度和总能量。

将数据导入到origin中,进行简单的线性拟合分析,即可得到下图。

volumetric heat capacity - temperature vs total energy

图中拟合曲线的斜率为0.53975,即ΔE/ΔT=0.53975 eV/K。计算过程中保持恒定的体积 V=24288.21914 A3

从而,可以计算得到 Cv=3.56 J/(cm3K) 。实验值为:3.45 J/(cm3K)。

(其中用到了单位换算:1 eV = 1.60217646 × 10-19 J, 1 A = 10-8 cm)

体积热容表可以参考:体积热容量查询表

标签: lammps, input file

相关文章推荐

添加新评论 (无需注册,可直接评论)

已有 16 条评论

  1. 小曹

    老师你好,我想问一下等压热容如何计算

    1. l

      请问您算出来了吗

  2. 巴山

    感谢Duan老师分享,用的Cu_u3.eam,算出来Cu的等体比热容为0.39593 J/g.K,与网上查到的0.38J/g.K的误差只有4.19%

  3. 楼主,能请问一下,具体处理公式吗,我带了你的数据算的不对

    1. 巴山

      不对应该是你没注意单位换算,势函数不一样结果也可能不一样,这是我用的公式((dE/dT)1.6021766341e5/V)/8.98,算出来结果直接是 J/g.K。

  4. 请问哪里可以查比较详细的体积热

  5. eaton

    楼主你好,我利用涨落的方法计算的定压热容量相差几个量级可能是什么原因?期盼您能回我封邮件1982cql@163.com

    1. 请问解决了吗

  6. 请问博主有关于SiC的热物性计算的lammps程序么

    1. 我爱搜集网博主

      没有。你可以参考网络上相关的程序。

  7. lv

    velocity all create 中的875577是手册里面的seed吗,那个具体指的什么呢,理解不了。

    1. 我爱搜集网博主

      seed就是随机数,换成其他数也差不多。

  8. xiaoqi

    您好,程序到33行就结束了吗,我是初学者,不太懂

  9. 未曾彷徨

    你好,一直不明白这样一个问题:一般静态下,做完fix box/relax 和 minimize后,能达到目标压强,比如0bar,但是一加入温度后,在nvt下弛豫,压强就会变成很大的正数(几千bar,远大于标准大气压),请问这样大的压强是不是不合理呢?有什么物理意义呢?在你这个计算体积容量的脚本中,压强从-5000bar逐渐增加到120000bar,应该远超过了铜的可承受压强,又是不是不太合理呢?我发现很多计算都会这样,应该是我哪里没理解,请帮助回答一下,谢谢。

  10. pillar

    前辈好,计算液体的热熔,看到文件中有提到为考虑quantum effects 而增加的一个correction term, delta_Cp,这个量与intermolecular vibrational energy有关,请问用lammps的话如何计算呢,谢谢指导!

  11. 李子都

    ev/atom/k如何转换成J/Kg/K呢