分子动力学模拟的初始条件主要包括设定粒子的初始位置和初始速度。LAMMPS软件中有丰富的命令可供用户使用。为了帮助初学者快速地掌握粒子初始条件的设定,并且灵活地得到需要的体系,本文详细介绍了命令displace_atoms, delete_atoms, read_data, set, velocity的使用方法和注意事项。
1. displace_atoms
语法
displace_atoms group-ID style args keyword value
group-ID:需要移动的组ID
style可选:move, ramp, random, rotate
keyword: units box, units lattice
举例
displace_atoms top move 0 -5 0 units box displace_atoms flow ramp x 0.0 5.0 y 2.0 20.5
说明
该命令主要用于移动一组原子,例如,在模拟之初在体系中引入切应变。
类型move用于将一组原子沿一个三维矢量移动,三维矢量中的分量可以为常量或变量。在使用变量时,变量应该被写作v_name的形式。关键字units决定了命令中常量或变量的单位,即units box表示矢量的单位与units命令设定的单位一致,units lattice表示矢量的单位为lattice命令所确定的三维晶格格点的距离。
当三维矢量以变量表示时,变量可以写作equal类型的数学函数。此时,粒子移动位移就可以根据位置、速度或模拟步等物理量变化。
类型ramp用于粒子的等比例斜坡移动,例如举例中,第二条命令的含义为:将flow组中的离子沿x方向移动0~5个单位,具体移动的距离取决于粒子在y方向上的位置,即位于y=2的粒子朝x方向移动0,位于y=20.5的粒子沿y方向移动5个单位。
类型random包括三个参数dx,dy,dz,表示将某组中的粒子沿x,y,z方向随机移动±dx,±dy,±dz。
类型rotate用于将一组原子沿某点(px,py,pz)和某方向(rx,ry,rz)旋转一定角度theta,共有七个参数,theta的正负遵循右手法则。
注意事项
体系中的原子可以被移动任意长的距离。对于周期性边界条件,原子穿越边界后仍会回到模拟盒子内。对于非周期性边界条件,如果原子移动的位移过长,模拟盒子会发生相应的变化。此时,需要注意的是,不同处理单元对应的计算区域可能不是最优的,需要利用processors命令进行调整。
2. delete_atoms
语法
delete_atoms style args keyword value
style可选:group, region, overlap, porosity
keyword可选:compress, bond, mol
举例
delete_atoms group edge delete_atoms region sphere compress no delete_atoms overlap 0.3 all all delete_atoms overlap 0.5 solvent colloid delete_atoms porosity cube 0.1 482793 bond yes
说明
该命令主要用于删除不需要的原子。可用于创建晶界,缺陷,多孔孔结构。
类型group表示删除组内的全部原子。
类型region表示删除区域内的全部原子。此外,如果区域边界处的原子位于一个分子中,即使分子中存在不属于区域内的原子,该分子会被整个删除。
类型overlap的参数有截断距离,组1和组2的ID。程序搜索组1和组2中的原子,当存在相距距离小于截断距离时,删除第一组内的原子。两组原子的组名可以相同,保证组内原子的距离均大于截断值。
类型porosity用于删除一定百分比的原子,形成多孔结构。
关键字compress用于删除原子后,将原子的ID重新排序,从1到原子总数。该命令对含有分子的体系不适用。
关键字bond如果设置为yes,那么被删除原子涉及的键长、键角、二面角和离平面作用信息均会被删除。
关键字mol设置为yes时,当删除分子中的某个原子时,体系中所有相同分子中的对应原子均会被删除,除了ID为0分子中的对应原子。
注意事项
3. read_data