【LAMMPS翻译系列】fix thermal/conductivity命令

fix thermal/conductivity命令使用Muller-Plathe算法,每N步交换模拟盒子中不同区域的两个颗粒的动能。可用于计算热导。

使用语法

fix ID group-ID thermal/conductivity N edim Nbin keyword value ...
  • ID:fix命令的ID
  • group-ID:fix命令所起作用组的ID
  • thermal/conductivity:该fix命令的类型名
  • N:每N步交换动能
  • edim = x or y or z  ——动能交换的方向
  • Nbin = 交换方向edim上模拟盒子的层数
  • keyword = swap 交换的原子数

使用举例

fix 1 all thermal/conductivity 100 z 20
fix 1 all thermal/conductivity 50 z 20 swap 2

使用介绍

该命令是使用Muller-Plathe算法,每N步交换模拟盒子中不同区域的两个颗粒的动能。这样做可以在体系中产生一个温度梯度,从而可以用来计算流体的热导。这个算法有时也被称为逆非平衡MD法(reverse NEMD)。之所以这样叫是因为一般的NEMD方法是通过对体系施加温度梯度,进而产生热流,然后对热流进行测量,而Muller-Plathe法这是施加热流,温度梯度则是体系响应的结果。

参考命令compute heat/flux了解如何使用Green-Kubo方法计算热导。

模拟盒子会沿着edim所指定的方向被分为Nbin层,第1层是盒子在该方向的下边缘,第Nbin层是盒子在该方向的上边缘。每N步,Nswap对原子会按着下面的方式进行交换:

  • 只有在fix group中的原子才在被考虑的范围。
  • 第1层中最热的Nswap个原子和中间层[下面有介绍]中最冷的Nswap个原子会被选中。
  • 这两组原子是相互配对的,并对它们的速度进行交换。
  • 假设他们的质量是相同的,那么这样做就实现了快速交换它们的动能。
  • 随着时间的推移,这种做法就会在体系中造成温度梯度。
  • 通过使用其他命令对温度进行测量,并将沿着edim方向的温度曲线写入到文件中,如下例所示。
compute   ke all ke/atom
variable  temp atom c_ke/1.5
fix       3 all ave/spatial 10 100 1000 z lower 0.05 v_temp &
            file tmp.profile units reduced

默认情况下,Nswap=1。使用可选关键字swap可以修改这个默认值。通过合适的设置参数Nswap和交换频率N,可以在很大的范围内调节热流量,动能交换值也能更大或更平滑。

上面提到的中间层是指第Nbin/2 + 1 层。假如Nbin=20,那么两个交换层就是第1层和第11层。在周期性边界条件下,这两层可以看成被相同的距离分隔,所以会产生对称的温度曲线。这也是为何Nbin只能取偶数的原因。

该fix命令也可以计算通过交换原子而带来的总动能的交换量,并将其输出。将该量除以时间和模拟盒子的截面积就可以得到热流。热流与温度曲线斜率的比值正比于流体的热导。更多细节可以参考Muller-Plathe的论文。

注意1:如果你的体系在热流的方向是周期性的,那么这种流动会沿着两个方向进行。这就是说,某一个方向的有效热流量需要将总热流量除以2。LAMMPS在统计动能的时候并不会检查你的体系是否是周期性的,所以你必须根据你的体系自己确定这一点,并将其考虑到你的结果中。

注意2:在平衡后,如果你观察到的温度梯度不是线性的,那么可能的原因是你的能量交换过程太快了,从而产生了非线性的响应。在这种情况下,你计算的热导可能就不准确,需要调整参数Nevery。

Restart, fix_modify, output, run start/stop, minimize相关信息

  • 该fix的有关信息不会写入二进制重启动文件,fix_modify的选项与该fix没有关系。
  • 该fix命令会计算出一个能够被多种输出命令使用的全局标量。这个标量就是模拟盒子在edim方向上最底层与中间层累积交换的动能。在fix命令定义的时候,该量被设置为0,然后每N步进行一次累积计算。该标量是能量单位。该fix命令计算这个标量的值是“intensive”。
  • 该fix的参数不能用在run命令的start/stop关键字中。
  • 该fix在能量最小化时不起作用。

使用限制

该fix命令是MISC包的一部分,只有在编译LAMMPS的时候安装了这个包才可以使用该命令。

交换过程中的动量和动能都是保守的,即使所交换原子的能量不相等。因此你不需要对体系进行恒温。如果你要使用恒温,你最好只施加在非交换方向上。

虽然LAMMPS不会检查,但是你也不应该使用该fix命令来交换受约束分子( fix shake or fix rigid)如中原子的动能。因为这种约束会改变说交换的动量值。但是,你可以用在自由分子上。可以参考Zhang的文章。

在的模拟体系中,如果背景溶剂包含了数量巨大的颗粒或分子,你可以只交换溶剂颗粒的动能。

相关命令

fix ave/spatialfix viscositycompute heat/flux

默认设置

swap=1。

参考文献

  1. (Muller-Plathe) Muller-Plathe, J Chem Phys, 106, 6082 (1997).
  2. (Zhang) Zhang, Lussetti, de Souza, Muller-Plathe, J Phys Chem B, 109, 15060-15067 (2005).

标签: lammps, lammps翻译

相关文章推荐

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

仅有一条评论

  1. 小陈

    老师您好!抱歉打扰您了,请问一下关于这一块该:fix命令也可以计算通过交换原子而带来的总动能的交换量,并将其输出。将该量除以时间和模拟盒子的截面积就可以得到热流。热流与温度曲线斜率的比值正比于流体的热导。
    这个交换原子而带来的总动能的交换量怎么求呢,或者说thermal/conductivity就是总能量的交换量吗,那我要怎么样输出得到这个值呢?