Lammps入门手册

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lammps入门手册相关的知识,希望对你有一定的参考价值。

参考技术A 设置在创建原子或从文件中读取原子之前需要定义的参数。
相关命令: units , dimension , newton , processors , boundary , atom_style , atom_modify .
如果力场参数出现在将要读取的文件中,则这些命令会告诉LAMMPS使用哪种力场: pair_style , bond_style , angle_style , dihedral_style , improper_style 。

在LAMMPS中定义原子的方式有3种。通过 read_data 或 read_restart 命令从数据中读取它们或重新启动文件。这些文件可以包含分子拓扑信息。或使用以下命令在没有分子拓扑的晶格上创建原子: lattice , region , create_box , create_atoms 。使用 replicate 命令可以复制整个原子集以进行更大的模拟 。

一旦定义了原子和分子拓扑,就可以指定多种设置:力场系数,模拟参数,输出选项等。
力场系数由这些命令中设置: pair_coeff , bond_coeff , angle_coeff , dihedral_coeff , improper_coeff , kspace_style , special_bonds 。
这些命令设置了各种模拟参数: neighbor , neigh_modify , group , timestep , reset_timestep , run_style , min_style , min_modify 。
输出选项由 thermo , dump 和 restart 命令设置。

使用 run 命令运行分子动力学模拟。使用 minimize 命令执行能量最小化。

该命令决定在LAMMPS读入并处理输入脚本中的命令时,是否将它们输出到屏幕和/或日志文件中。如果你的输入脚本有错误,使用这个命令可以让你看到最后一个被处理的命令是什么。

该命令用来设置模拟中使用的单位类型。它决定了所有输入脚本、数据文件和所有输出到屏幕、日志文件以及dump文件中物理量的单位。一般来说,该命令用在输入脚本最开始的位置。

该命令用来定义模拟的维度。默认情况下,LAMMPS运行三维模拟。

该命令用来开启或关闭对势或键相互作用中的第三运动定律。对于大多数问题而言,将牛顿第三定律设置为开启是一种可以节省2倍及以上计算量的做法。具体到是否会更快,则取决于问题的规模、力截断长度、机器的计算/交换比、以及所使用的处理器数量。

x,y,z可取p/s/f/m中的一个字母或两个字母的组合。

设置模拟盒子沿着各个方向的边界条件。单独的一个字母会将模拟盒子沿着某个方向的两个面设置为一样的边界条件。两个字母会将这两个面分别设置为不同的边界条件。

p代表周期性边界条件,就是说原子在跨越模拟盒子的边界时,会从盒子的另外一边再进入盒子里。

定义模拟过程中原子的类型,它会决定原子包括哪些属性。一定原子的类型被设置了,在模拟过程中就不能在改变了,因此尽量更加通用的类型,以免某些属性没有被包括却被用到了。尽量使用更加通用的类型,虽然这可能会因为某些属性没有用到,同时会稍微降低效率,但总比出错好。

一般来说,模拟时需要单独一种的原子类型。但如果模拟中的有些原子不需要某些性质,但其他的原子需要,那么就要使用包含所有这些性质的类型。比如,如果有些原子需要电荷,而另外一些不需要,要使用类型charge;如果有些原子有键,而另外一些没有,要使用类型bond。

定义模拟过程中原子间对相互作用的类型。可以通过pair_coeff命令指定相关的系数。

定义模拟过程中原子间键相互作用的类型。可以通过bond_coeff命令指定相关的系数。

定义模拟过程中原子键间角相互作用的类型。可以通过angle_coeff命令指定相关的系数。

定义一对或多对原子类型的成对力场系数。

定义一对或多对原子类型的成对力场系数。

定义一种或多种角度类型的角度力场系数,取决于角度样式。

该命令用来定义晶格,以便其他命令使用。在LAMMPS中,晶格对应空间中的一些列阵点,这些阵点的位置是由相应原胞中基本原子的位置决定的。这些阵点会在所有的方向上无限的复制。lattice命令的参数可以用来定义很多晶体学晶格。

在LAMMPS,晶格有两种使用方式。第一种,使用命令create_atoms在模拟盒子内的晶格阵点上创建原子。需要注意的是,使用命令create_atoms可以在一个晶格的不同格点上创建不同类型的原子。第二种,晶格沿着x,y,z三个方向的晶格间距可以被其他的命令(比如命令create_box, region, velocity)用作距离单位。

晶格类型必须要与模拟的维度(参考命令dimension)要匹配。类型sc or bcc or fcc or hcp or diamond属于三维问题。类型sq or sq2 or hex属于二维问题。类型custom既可以用于二维,也可以用于三维问题。

对于LAMMPS中一个晶格来说,它是由单胞、一些基本原子和一些在模拟盒子安放单胞的变换参数(比例因子、原点和方位)组成。矢量a1, a2, a3是单胞的边向量。需要注意的是,LAMMPS中使用的单胞是不同于具有最小体积的原胞。

下面这部分介绍将理想单胞变换为模拟盒子中晶格阵点的相关参数。

参数scale决定在模拟盒子中布置单胞时,它的实际尺寸。也就是说,将该参数作为乘法因子作用在单胞上,从而可以获得所需尺寸的晶格。参数scale的意义依赖于在模拟过程中使用的单位类型(参考命令units)。

对于除了lj之外的所有单位类型,参数scale都是由相应单位类型所定义的长度单位指定。举例来说,对于real或metal的单位类型,如果立方单胞的边长为1.0,指定scale=3.52,那么就会创建一个间距3.52A的立方晶格。对于cgs单位类型而言,间距是3.52cm。

origin选项指定在将单胞布置在模拟盒子中的时候,如何对其进行平移。参数x,y,z是分数值(0.0 <= x,y,z < 1.0),意思是说按着相应方向上的晶格间距的分数倍进行平移。

orient选项指定在将单胞布置在模拟盒子中的时候,如何对其进行旋转。参数dim是模拟盒子3个坐标轴中的一个。另外3个参数定义一个晶体学方向,你的单胞将会沿着那个方向摆放;需要指定为整数,比如orient x 2 1 0的意思就是说模拟盒子的x方向是沿着晶格的[210]方向。你所指定的三个晶格方向必须是相互正交的,并且满足右手定则,即X叉乘Y的方向与Z相同。需要注意的是,这里的介绍只对正交晶格是适用的。如果你要使用custom类型定义非正交的边矢量a1,a2,a3,那么你可以认为orient选项定义了3x3的旋转矩阵,并将其作用于a1,a2,a3对最初的单胞进行旋转,从而得到新的摆向。

该命令用于定义一个空间几何区域。很多其他命令都会使用该命令定义的区域。举例来说,create_atoms可以在定义区域中创建原子,create_box命令可以根据定义区域定义模拟盒子,group命令可以将定义区域中包括的原子定义为一个组,delete_atoms命令可以将定义区域中的原子删掉,fix wall/region可以将定义区域的表面定义为壁面(boundary wall)。

基于指定的区域创建一个模拟框。首先必须使用 region 命令来定义几何域。

该命令用来在晶格阵点上创建原子,或创建一个单独的原子,或创建一些列随机原子。也可以用命令read_data或read_restart通过直接给出原子坐标的方式创建原子。在使用该命令之前,模拟盒子必须是存在的(使用create_box命令创建),同时晶格也必须已经被定义(使用lattice命令)。但对于创建single类型且以box为单位的原子,或创建random类型的原子时,不需要先定义晶格。

该命令是向已经存在的体系中继续添加原子。换句话说,该命令可以多次使用,从而可以在模拟盒子中创建多组原子。通过交错地使用create_atoms命令和lattice命令(配置为不同晶向orientations),就可以创建晶界;联合使用create_atoms命令和delete_atoms命令,可以创建非常复杂的体系。create_atoms命令也可以在已经读入的体系中继续创建原子。在所有列举的这些情况中,都需要注意不要让新创建的原子与已经存在的原子重叠。可以使用delete_atoms命令来处理重叠原子的问题。

box类型:该命令在整个模拟盒子中所有的晶格阵点上创建原子。如果你的模拟盒子是周期性的,你应该确保其尺寸是晶格距离的整数倍,从而避免在盒子边界处可能存在的原子重叠。如果你的盒子是周期性的,并且在某个方向上盒子的尺寸是晶格距离的整数倍,那么LAMMPS会在边界上只放置一个原子(译注:边界上的原子不会丢失或在两个面同时出现)。

region类型:该命令会在region-ID所指定的区域与模拟盒子相交的公共区域内创建原子。需要注意的是,这里定义的区域可以在模拟盒子内,也可以在模拟盒子外。还需要注意,即便你在这里定义的区域与周期性模拟盒子的尺寸是一样的,LAMMPS所执行的逻辑跟box类型也不一样,就是说并不能像box类型那样确保在边界上只有一个原子。所以如果你希望达成像box类型那样的效果,你最好使用box类型,或者就是非常精确的调整region的尺寸来获得你想要的原子。

single类型:将指定坐标的原子添加到系统中。对于调试或者创建一些列手动添加的原子会比较有用。

random类型:在系统中按着随机坐标产生N各原子,这对于产生无定形系统会比较有用。根据指定的随机种子数seed,程序会依次创建N个随机原子。这N个随机原子的坐标与所使用处理器的个数没有关系。另外,如果region-ID设置为NULL,那么创建的原子会随机填充模拟盒子的任何位置;如果指定了特定的region-ID,那么原子就只会随机填充在模拟盒子与region-ID所共同指定的区域。

注意:使用random类型产生的原子很有可能是相互重叠的,或者是距离较近,不太符合实际物理,从而导致计算出较大的力或能量。因此,在开始进行正常的动力学计算时,最好先使用minimize对体系进行能量最小化,或先使用fix nve/limit进行动力学计算。

为一组原子施加fix约束。在LAMMPS中,fix是施加在分子动力学时间步或能量最小化过程中的某种操作。可能是在时间积分的过程中更新原子的位置和速度,或是控制温度,或是给原子施加约束力,或是强制某种边界条件,或计算过程诊断,等等。

fix命令会在时间步中的不同过程中执行相关的操作。如果有2个或多个fix命令作用于时间步中的同一过程,它们会按着在输入脚本中定义的顺序依次被激活。

fix命令的ID只能包含字母、数字和下划线。

fix命令所施加的约束可以被unfix命令删去。

注意:使用unfix命令是唯一用来关闭fix命令所施加的约束的方法。如果只是指定一种新的类似的fix命令并不会关闭之前的fix命令。这对于进行积分的fix命令特别重要。举例来说,如果你先定义了fix nvt命令,然后又定义了fix nve命令,这样做并不会将先定义的NVT时间积分取消掉,而是这两个时间积分同时进行。

fix_modify命令用来重置fix命令定义的某些设置。

在集群的个人账户下安装20版本 lammps(2019版本inter编译器,lammps安装版本为3Mar2020, 集群版本为Centos 7.5)

下载软件

1
wget https://lammps.sandia.gov/tars/lammps-stable.tar.gz

复制软件到/opt/software目录

1
cp lammps-stable.tar.gz /opt/software

解压

1
tar xvf lammps-stable.tar.gz

得到lammps的目录

1
/opt/software/lammps-3Mar20/

4.3安装编译lammps

进入lammps安装目录

1
cd /opt/software/lammps-3Mar20/src

查看所有package

1
make package-status

选择需要安装的package

比如

1
2
make yes-peri
make yes-manybody

编译

附上需要安装的包:

ps: 本人在安装过程中因为quip包没有去除,出现了报错。

 

4.4 编译lammps

在编译之前需要确保mpi在环境变量中,执行如下命令调用机器的mpi环境:

source /opt/intel/compilers_and_libraries/linux/bin/compilervars.sh intel64
source /opt/intel/mkl/bin/mklvars.sh intel64
source /opt/intel/impi/2019.8.254/intel64/bin/mpivars.sh

 编译lammps:

make -j 10 intel_cpu_intelmpi

编译过程不报错,即表示安装成功。

 

 

以上是关于Lammps入门手册的主要内容,如果未能解决你的问题,请参考以下文章

lammps该怎么入门

LAMMPS入门操作基础:Linux基础命令

lammps温度云图

2019年前端入门首选教程,支付宝前端团队发布《入门者手册2019》

编程小白的第一本python入门书(小白入门宝典:Python快速入门魔力手册)PDF高清完整版免费下载|百度云盘|零基础入门学习python

编程小白的第一本python入门书(小白入门宝典:Python快速入门魔力手册)PDF高清完整版免费下载|百度云盘|零基础入门学习python