LAMMPS拉伸模拟有两种常用的方法:fixdeform和velocity,也就是应变率拉伸和速度拉伸。首先来说fixdeform,这个命令使系统在给定的应变率下均匀拉伸。由于是对应变率进行控制,因此在用这个方法时通常要先定义应变率。应变率定义的方法基本都一样,就是:variabletmpequallxvariableL0equal${tmp}variablestrainequal(lx-v_L0)/v_L0另外这种拉伸方法的效果是让盒子整体变大,因此需要施加周期性边界条件P在拉伸方向上。fixdeform不能模拟真实拉伸过程中夹头对端部的固定,因此可以认为它是单纯的考虑了变形部分的变化特征。再来谈谈velocity拉伸,这个加载方法是让系统一端固定,另一端以均匀的速度移动,以此实现系统的拉伸,这个拉伸过程似乎更符合实际情况。同样为了让LAMMPS可以“夹住”系统的两端,在使用这种拉伸方法时,需要定义两个“夹头”。这个“夹头”就是定义的固定端region,这两个region中的原子的相对位置不随拉伸过程而变化。而定义了reign之后还要把这个region中的原子定义为group。有的同学很不理解为什么要对一个区域定义两次变量,定义一次不就行了吗?实际上这两次定义是不同的,我们看一下region和group的命令就可以理解:Region1blockINF1INFINFINFINF#定义一个叫1的区域Groupleftregion1#定义这个区域中的原子叫leftRegion命令定义了(-∞,1)的一个区域,区域命名为1,相当于用一条线划出了一个块,这个块位于系统的左边。而group命令定义这个块中的原子为left,也就是告诉LAMMPS需要操作的这些原子叫left。这样我们发现其实不是定义了两次,而是先定义了一个块,让后定义了这个块中的原子。还有一点需要注意的是使用velocity拉伸的系统在拉伸方向上需要施加自由边界条件s,如果用周期性边界条件的话,就相当于很多两端固定的盒子排成一列,你在拉伸一端时,同时它会靠近与它相邻的另一个盒子的固定端,就会出现“拉不动”的情况。