在阅读论文时,大家应该会注意到,不同的论文在模拟时,可能采用不同的控温方式。
有的是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
每一种控温方式都有其存在的合理性和应用范围,大家在选用的时候可多参考论文,灵活选择。