以下内容针对2019.3之前的版本。2022以后的版本参考ReaxFF-弹性墙壁:添加外电场、弹性墙壁
ReaxFF允许用户指定一个弹性墙壁,原子穿越该墙壁,需要较高能量,用户可以设置墙壁的宽度、高度(以能量为单位)。原子撞击到墙壁的时候会被弹回,但墙壁本身不是由原子组成,就是一个纯粹的势垒而已。在外加电场的情况下,如果不设置“弹性墙壁”,原子穿越边界,就会导致报错:“Warning: suspicious force-field eem parameters for , which may lead to unphysical charges.”
基本的建模、参数设置与一般的MD模拟没有差别。建模的时候,设置了Lattice是30*30*30埃3,水分子均匀分布在其中:
之后,修改晶格为35*35*35埃3,ADFinput > View > Axis显示坐标(请务必显示坐标轴,免得弄错原子的坐标范围),可以看到水分子所有原子的坐标集中在-15~15埃之间,xyz方向均如此(这很重要,因为设置墙壁的坐标和这个坐标是匹配的),如下图所示:
我们来尝试设置一个六面封闭的墙,围住这些水分子。打开*.run文件,找到如下字段:
cat > geo <<eor ***GRF 200 DESCRP ****
在这部分字段下面增加内容如下:
EWALL RESTRAINT 1 -17.5 2.5 300.0 EWALL RESTRAINT 2 -17.5 2.5 300.0 EWALL RESTRAINT 3 -17.5 2.5 300.0 EWALL RESTRAINT 1 17.5 2.5 300.0 EWALL RESTRAINT 2 17.5 2.5 300.0 EWALL RESTRAINT 3 17.5 2.5 300.0
表示增加了六面“墙壁”,其中1、2、3表示x、y、z轴方向,2.5表示墙的厚度的一半,300.0表示墙的高度为300.0kcal/mol。例如:
EWALL RESTRAINT 1 -17.5 2.5 300.0
表示在垂直于x轴,在垂直于x=-17.5的位置,有一个“墙壁”,厚度为2.5埃(由于30埃增加了5埃,这5埃就是墙的厚度),高度为300.0kcal/mol。这个值越大,原子越难以穿越。
不要照搬上述数值。理解其意义后,在根据自己的实际情况设置数值,墙的高度300kcal/mol可以设置的较为随意,例如保险起见设置很大:1000kcal/mol。
在ReaxFF自动生成的*.run文件中,增加字段,例如(#开头表示该行属于“注释”,对计算不起作用):
cat > eregime.in <<eor #Electric field regimes #start #V direction Magnitude(V/Angstrom) 0000 1 x 0.001 1000 1 x -0.001 2000 1 y 0.001 3000 1 y -0.001 4000 2 x -0.001 y -0.001 5000 2 x 0.001 y 0.001 eor
上述表示:
可以把这部分内容,加在:
cat > control <<eor …… eor
字段的后面。