Sunday, November 18, 2012

动力学模拟: nvt, npt and nve

转载文章, 抱歉,原作者不详。

 

第一原理动力学的系综选择,和各种系综的输入文件Example

做Car-Paranello MD,无论是用VASP, DMOL还是CPMD/cp2k, 都面临着如何选择系综的问题。那该怎么选择呢?我的看法是,应该尽可能使用NVE系综,而不是NVT/NPT。为什么呢?

因为NVE系综是真正体系能量守恒的。

像 使用Nose-Hoover chain 的NVT系综固然也能保证能量守恒,但是它使用一个或多个虚拟的储热罐来缓存由温度波动引起的能量波动,从而模仿一个NVE系综。这种扩展拉格朗日体系方 法对体系性质的热力学平均和采样的影响不大,但是,对具体的动力学性质的细节会产生一定影响,因为虚拟的储热罐的动力学行为随着其本身耦合频率,幅度等参 数的调整,对体系的演进有着一定影响,具体就是对分子的扩散,转动,化学反应的时间特征影响。另外,任何的拉格朗日虚拟扩展量都会增加实际的运动自由度, 所以会略微慢点。

NVE则没有这些缺点,它是完美的隔离体系,完全遵循能量守恒定律的条件,也没有虚拟的动力学变量。

但 NVE有个缺点妨害了它的使用。什么缺点呢?就是的它的能量守恒于起始能量。即守恒能量等于起始构型的势能+起始设定的动能。很可能就是你前面预平衡阶段 最后一帧的速度和构型。NVE开始后,能量在动能、势能之间波动式分配。如果一开始势能高,能量就向动能转化,平衡后温度就高;反之,动能向势能转化,平 衡后温度就低。显然,这更接近于真实体系的动能-势能的转化模式,但是这就使得其最终的温度其平衡之前很难预料,你本来想模拟300K,结果最终温度却稳 定在了250K, 或者400K!你怎么办?只好使用NVT, NPT去控制温度。

从上面分析看,使用NVT/NPT是不得以而强为之。还是NVE好。

NVE的温度问题也不是不能解决。一般用Velocity scaling积分算法跑一个短时间的NVT模拟,比如100fs,取最后一帧Restart一个NVE,一般都能把平衡后的温度控制在一定的范围内。

附, CPMD各种系综的设定。

1. NVE呢,不指定任何控温关键词的,又没有设定任何控压关键词的,即为NVE。For example:

&CPMD
MOLECULAR DYNAMICS CP
RESTART WAVEFUNCTION COORDINATES VELOCITIES CELL LATEST
EMASS
    500
TIMESTEP  // 0.096fs/步
    4
MAXSTEP
    50000
&END


如果不想使用前面模拟最后一帧的速度,可以加关键词:
TEMPERATURE
300
它的意思是在NVE的开始前,重新为每个原子/动力学变量设定动能,使得总的温度为300K。NVE开始后,并不控制体系守在这个温度。

2. NVT 有多种多种控制温度的关键词。

(1) Velocity Scaling控温可以帮助体系快速预平衡到设定温度/势能附近,但是不满足能量守恒,一般不用于采样阶段的模拟。关键词: TEMPCONTROL
&CPMD
MOLECULAR DYNAMICS CP
RESTART WAVEFUNCTION COORDINATES VELOCITIES CELL LATEST
TEMPCONTROL IONS, ELECTRONS
   300  0.006
EMASS
    500
TIMESTEP
    4
MAXSTEP
    50000
&END


其中,IONS 300设定原子的温度为300K; ELECTRON 0.006(au), 是设定电子,即波函数作为运动量(或叫扩展拉格朗日变量)的温度,需预先跑个100步的NVE,取最后几步的EKINC即电子动能,作为这里的控温参数。可比之稍大一点。

(2) NOSE-HOOVER Chain控温是遵循能量守恒的NVT系综,或者说它通过增加变量的方法让体系模拟一个隔离的NVE体系。第一原理模拟中广泛使用。

&CPMD
MOLECULAR DYNAMICS CP
RESTART WAVEFUNCTION COORDINATES VELOCITIES CELL ACCUMULATORS NOSEE NOSEP LATEST // 重接上次模拟继续
TIMESTEP
   4
MAXSTEP
   10000
TRAJECTORY XYZ SAMPLE //每隔10步采个样存到TRAJECTORY中
   10
DIPOLE DYNAMICS  WANNIER SAMPLE //每隔10步存储Dipole moment到DIPOLE文件中
   10
STORE   //每隔500步写一次RESTART.1文件
   500
EMASS
   500
NOSE IONS // NOSE控制原子温度和频率(单位波数,即cm-1)
   300  1600
NOSE ELECTRONS // NOSE控制电子动能和频率(单位波数,即cm-1)
   0.020  25000
&END


(3) NPT的设定:NPT的目的是最终使得盒子在每个方向上的受力与外部的压力相等。压力控制要在&CPMD部分使用PARRINELLO- RAHMAN NPT关键词,并在&SYSTEM中设定PRESSURE的大小。此外,还有一些其它的关键词控制压力的各向异性,请查阅手册。

&CPMD
MOLECULAR DYNAMICS CP
RESTART WAVEFUNCTION COORDINATES VELOCITIES CELL ACCUMULATORS NOSEE NOSEP LATEST // 重接上次模拟继续
TIMESTEP
   4
MAXSTEP
   10000
TRAJECTORY XYZ SAMPLE //每隔10步采个样存到TRAJECTORY中
   10
DIPOLE DYNAMICS  WANNIER SAMPLE //每隔10步存储Dipole moment到DIPOLE文件中
   10
STORE   //每隔500步写一次RESTART.1文件
   500
EMASS
   500
NOSE IONS // NOSE控制原子温度和频率(单位波数,即cm-1)
   300  1600
NOSE ELECTRONS // NOSE控制电子动能和频率(单位波数,即cm-1)
   0.020  25000
PARRINELLO-RAHMAN NPT  //设定NPT系综和控压方法
STRESS TENSOR   //每隔100步输出一次压力值
   100
&END

&SYSTEM
  ANGSTROM
  PRESSURE // 设定外部压力为100Kbar
     100
  CELL VECTORS  // NPT模拟需要使用CELL VECTOR来设置盒子
     13.080    0.000   0.000
      0.000   11.050   0.000
     -9.805    0.000  14.374
  CUTOFF
    100.0
&END

No comments:

Post a Comment