lammps常用的几种控温方式以及实现代码

在阅读论文时,大家应该会注意到,不同的论文在模拟时,可能采用不同的控温方式。

有的是Nose-Hoover,有的是速度标定法,有的同学可能不知道如何用代码实现。

控温的基本原理是通过调节原子的速度达到调节体系温度的目的。

调节原子速度的算法有很多,因此,对应的控温方式有多种。

下面介绍lammps常用的几种控温方式对应的实现代码,只讲代码不讲原理,有兴趣的可以查阅分子动力学原理书籍。

1. Nose-Hoover热浴法

nvt和npt采用Nose-Hoover热浴法调节体系温度。

如果论文中提到Nose-Hoover,其实就是用nvt或者npt,至于用哪个,主要看是否控压。

对应代码为:

fix 1 all nvt temp 300.0 300.0 100.0

fix 1 all npt temp 300.0 300.0 100 iso 0 0 1000

2. langevin控温法

langevin控温只通过力的计算调节原子的速度,但是不能对时间进行积分。

如果对一组原子只施加langevin控温,原子会固定不动。

因此,一般需要配合fix nve使用。

fix 1 all nve
fix 2 all langevin 300 300 100.0 48279

对于分层控制的体系来说,这种控温方式相对灵活。

如在摩擦中,只对恒温层进行控温,其他层不控温:

fix 1 all nve
fix 2 temp_layer langevin 300 300 100.0 48279

3. temp/rescale速度标定法

temp/rescale称为速度标定法,是一种比较“粗暴”的控温方式。

基本原理是当温度超出设定温度时,通过缩放的方式调节温度使其达到设定值。

temp/rescale也需要配合fix nve使用才能更新原子位置。

fix 1 all nve
fix 2 flow temp/rescale 100 1.0 1.1 0.02 0.5

4. berendson控温

berendson控温我用的不多,不是很熟,大家可以查一下控温原理。

berendson控温同样需要和fix nve配合使用

fix 1 all nve
fix 2 all temp/berendsen 300.0 300.0 100.0

每一种控温方式都有其存在的合理性和应用范围,大家在选用的时候可多参考论文,灵活选择。

上一篇
下一篇