首页 >> 仿真软件说明 >>lammps >>bob版 >> in文件基本内容-第五部分 弛豫
详细内容

in文件基本内容-第五部分 弛豫

时间:2025-05-06     作者:鲍路瑶【原创】   阅读

在弛豫部分我们首先需要定义基本输出日志信息,这是为了监控我们的模拟是否正确。一般输出的都是系统量,如温度、压强、总动能、总势能等。所以


第二十一条命令thermo。thermo命令控制每多少步输出一次。如果不设置LAMMPS默认只在第一步和最后一步输出日志信息。语法是

thermo <N> #举例:thermo 1000

第二十二条命令thermo_style。thermo_style控制究竟要输出哪些全局量。具体能够输出哪里量可查阅手册thermo_style命令描述。如果不设置该条命令,那么LAMMPS就会输出默认信息。其语法是

thermo_style <style> <args>


第二十三条命令dump。该条命令用来每隔一段时间输出系统所有原子的信息,这些信息可以是原子的位置,受力,速度,质量,编号等。当你要输出所有原子的信息时就是用这条命令。将这条命令的输出文件进行可视化可以初步判断你的模拟是否正确。以下是最常用的设置

dump 1 all custom 10000 dump.lammpstrj id mol type mass x y z


第二十四条命令minimize。这条命令是可选的。如果你的几何模型和物理模型都设置正确,那么可以不用这条命令。这条命令执行的是能量最小化。为什么要执行能量最小化呢?这是因为我们在建模的时候,有时几何模型和物理模型不是那么完美,经常出现的就是某些原子之间的位置靠得太近,这就会导致系统的能量很大,容易出现运行错误。执行能量最小化就是将系统的能量调节至尽可能小。LAMMPS实现这个命令的方式是通过计算原子之间的受力和能量,通过一些优化算法,移动原子的位置从而是体系总能量达到尽可能小。所以如果你发现你的体系中能量超级大,压强超级大而运行出错,那么你可以试试能量最小化命令。一般使用下面这些参数设置就能实现你的目的,如果能量最小化后还出错,那么你就要排查你的几何模型和物理模型是不是太差了,能量最小化也无能为力了。至于能量最小化采用什么算法,用默认的就行了,也就是说你不用有额外的设置,直接minimize就行了,花里胡哨的没啥用。

minimize 0.0 1.0e-8 1000 100000


第二十五条命令compute。该命令是LAMMPS中极其重要的一类命令。当你需要计算某个量时你就可以考虑使用compute命令。LAMMPS提供了丰富的compute命令,具体使用时,根据你的需求,查阅手册看LAMMPS中有没有实现你需要的功能的compute。compute和dump一样可以针对某个group的粒子进行计算。一个in文件中可以有多个compute,但每个compute的id不能重复。计算出来的值可以被很多命令使用,如dump,fix等。最常用的就是计算温度,如

compute myT all temp


第二十六条命令velocity。velocity命令有不少功能,最常用的功能就是根据目标温度创建粒子的初始速度。最常用的形式为

velocity all create 300.0 4928459 rot yes dist gaussian


第二十七条命令timestep。该命令设定求解牛顿差分方程中的大小。不同体系会要求不同大小的。一般来说分子体系会要求。简单液体体系可放宽至。晶体体系可以是。反应力场reaxff体系会要求更小的时间步,。时间步长的选取原子是,要足够小以准确捕捉体系中最快的动力学过程,又要足够大以节省计算时间。通常你的时间步长大小参考文献设置就行了。或按照上面举的例子进行设置,就没啥问题了。


第二十八条命令fix。fix是LAMMPS中另一类极其重要的命令。其实现功能就是对某个组的粒子施加某种操作。最重要的功能就是用来更新某个组的粒子的速度和位置,因此每个in文件中都必然会有fix命令。我们通常所说的系综就是通过fix命令实现。如fix nve实现nve系综,fix nvt实现nvt系综,fix npt实现npt系综。关于系综这里要多说一点。系综是统计力学的基本概念。所谓系综,简单来说就是系统无限个副本的集合。但是分子动力学中的系综和统计力学上的系综有联系又有区别。比如在LAMMPS中nve系综就是只直接求解牛顿方程而不对速度和位置做任何干涉的系综。把fix nve与温度控制fix联用就实现nvt系统,把fix nve与温度控制的fix和压强控制的fix同时联用就实现了npt系综。也可以只使用fix nvt命令直接实现nvt,只使用fix npt命令实现npt系综。系综当你的边界条件是p或f时系统体积是不变的。当你使用s边界时系统体积是可变得,此时也就没有什么nvt或nve了。但是需要强调的是npt是通过改变盒子体积来实现控压的所以在控压的方向上只能使用p边界条件。所以基本上你可以忘记系综的概念。把fix nve或fix nvt或fix npt当做更新原子位置和速度的命令,fix nve直接根据牛二进行更新,fix nvt在更新的时候会对速度进行干涉以达到设定的温度,fix npt会对速度和位置同时进行干涉以达到设定的温度和压强。至于nvt和nve下体积变不变取决于你的边界条件。同一个系统中可能同时存在fix nve和fix nvt,这是因为有些模拟要求一部分原子的位置和速度直接根据牛二进行更新,而另一部分却要求在更新原子速度时保持温度不变。但是不会同时出现fix nve和fix npt,因为fix npt在根据设定的压强在更新原子位置和速度时,计算的是所有原子对压强的贡献。所以fix npt不适合局部控压。

某个组的粒子只有使用了fix+系综的命令才会更新位置和速度。因此如果你想保持某组的粒子在模拟过程中固定不动,最简单的办法就是不对它施加任何fix命令。通常我们在使用fix时都会使用先来一条fix+系综,然后调用其他fix实现某些目的,如要让模拟对象发生一定变形,就用fix deform,要让对对象施加一个电场就用fix efield。当你想用实现某种操作时,打开手册查看fix的一些命令看有没有实现你功能的fix命令。fix的某些命令也可以用于输出信息,如fix ave/chunk输出模拟盒子不同位置处的原子属性的时间平均值;fix ave/time输出某些全局量的平均值。


第二十九条命令 run。终于要开始跑了。这个命令最常用的就是你要run多少步。在弛豫阶段一般会run 1ns的长度,通常是1000000步。这里可以控制采用什么算法对牛二进行求解。采用默认的就行,也就是说你不用额外设置,直接run就行了。花里胡哨的没啥用,默认的往往是最好的。其设置是

run 1000000

以上就是弛豫部分。为什么要进行弛豫呢?这是因为系统中原子的初始位置和初始速度都是认为设定的,这是系统的状态并不在热力学平衡状态。通常我们希望在正式模拟时系统的起点在热力学平衡状态。只有经过弛豫后系统才会达到热力学平衡状态。在弛豫开始的时候你会看到系统的温度和压强会有非常剧烈的变化,这是正常的。经过一段时间后温度和压强这些量就会在一个值附近小幅振荡。那么怎么判断系统是否达到平衡了呢?这是个挺麻烦的事,不同的体系有不同的标准。通常我们会看系统的温度,压强,能量这些值不会在持续上升或下降就差不多平衡了。但是这个事很难说。所以为了保险起见,通常模拟中会设置冗余的弛豫步数来确保系统达到平衡。这个值一般是1000000步。需要说明的是,系统温度是根据系统动能算出来的,一般很快就不咋变了。但是压强是根据受力算出来的振荡会很大。一般要看温度或压强的时间平均值,也就是不同时间步的平均值来判断系统的温度或压强是否达到了设定值。


第三十条命令write_restart。这个命令可以写出restart文件,以便后续从这个点接着算。restart文件是一个二进制文件。使用这条命令是个好的习惯,可以让你省很多事,又不会额外增加计算量。其语法是

write_restart <filename> #举例write_restart restart.equ


感谢鲍路瑶老师的分享,内容来自于鲍老师分享出来的资料

如有需要添加微信:lmp_zhushou  进入微信群,帮助他人,共建社区

获取完整版lammps讲义可以加微信lmp_zhushou或加入QQ994359511


最新评论
请先登录才能进行回复登录
技术支持: CLOUD | 管理登录
seo seo