《Lammps程序.ppt.ppt》由会员分享,可在线阅读,更多相关《Lammps程序.ppt.ppt(49页珍藏版)》请在三一办公上搜索。
1、Lammps程序,关于lammps基础知识,lammps的输入文件一般分为4个部分Initialization,Atom definition,Settings,Run a simulation,后面的两个部分可以按照需要多次重复;,(1)Initialization,在你的模拟体系定义之前,一些参数必须要被设置.相关的命令有:units,dimension,newton,processors,boundary,atom_style,atom_modify。其中,units:选择单位系统,lammps提供了lj、real、metal三种单位系统;dimension:2d模拟还是3d模拟,默认是
2、3d;boundary:边界条件:周期性边界or自由边界;atom_style:定义你的模拟体系中的原子属性,注意这个style要区分后面设置力场参数时命令里提到的atom type;还有,这些命令告诉lammps在你的模拟中使用何种力场:pair_style,bond_style,angle_style,dihedral_style,improper_style.,在LJ类型中,所有变量都是无单位的,实际量换算成简化单位量有系列公式缺省状态默认为LJ类型,(2)Atom definition,lammps提供3种方式定义原子:通过read_data或read_restart命令从data或r
3、estart文件读入,这些文件可以包含分子拓扑结构信息.按照晶格的方式创建原子(不包含分子拓扑信息),你会用到这几个命令:lattice,region,create_box,create_atoms.已经设置好的原子可以用replicate命令复制以生成一个更大规模的模拟体系.,(3)Settings,原子和分子的拓扑信息定义好后,你要制定一系列的设置:力场系数、模拟参数、输出选项 等等.力场系数可以通过这些命令定义:pair_coeff,bond_coeff,angle_coeff,dihedral_coeff,improper_coeff,kspace_style,dielectric,s
4、pecial_bonds.注意,其实力场系数也可以在data文件中制定;各种模拟参数由这些命令设置:neighbor,neigh_modify,group,timestep,reset_timestep,run_style,min_style,min_modify.,Suppliment,fix命令是lammps中很重要的一个命令,它包括很多子命令,可以施加一系列的边界条件、时间积分、诊断选项等等;fix指令的用途是对一组原子进行定义,可以用于更新原子的位置、速度、控制温度、加常力、施加边界条件等。当两个或更多fix在同一过程中作用时,根据程序中的先后顺序执行fix指令。Fix指令可通过unf
5、ix指令来消除,形式为unfix fix-ID)模拟过程中通过下面的命令制定lammps进行各种计算:compute,compute_modify,variable.输出选项由thermo,dump,restart命令设置.,fix ID groupID style args ID=userassigned name for the fix ID是用户自己定义的名字,便于通过fix定义 groupID=ID of the group of atoms to apply the fix to style=one of a long list of possible style names(see
6、 below)args=arguments used by a particular styleExamples:fix 1 all nvefix 3 all nvt temp 300.0 300.0 0.01fix mine top setforce 0.0 NULL 0.0,对于run 100 start 0 stop 1000 这个语句来说,主要与fix语句配合使用。fix 1 all nvt 200.0 300.0 1.0 这两个指令的功能是在接下来的1000步运行中,每run 100步,温度都要从200度升到300度,fix 1 all nvt 200.0 300.0 1.0 对于左
7、侧的一组指令,温度随着从0到10000步的执行run 1000 start 0 stop 10000 逐渐升至300.0度,是一个发生在整个过程的渐变行为run 1000 start 0 stop 10000.run 1000 start 0 stop 10000(共10个),至于pre and post大概是这样的,pre no 的意思是跳过初始设定阶段,如果以下的计算是承接之前运行命令的话(意思是采用之前的参数)但是如果该run指令是第一个指令是,该设定会被忽略。若是post no,则跳过full timing summary,输出one-line summary timing,Every
8、 的作用是将一个run分成一系列较短的runs variable q equal x run 6000 every 2000 print Coord=$q每运行2000步输出一次某原子的x坐标值,要设定一组原子的温度,那么用group命令定义哪些原子属于这个组才行;每个命令的详细介绍中的Restrictions部分会说明要使用该命令定义的时候哪些命令必须要被预先定义;如果你的输入文件书写的格式有问题,lammps在执行的时候会提示ERROR或者WARNING,出现类似信息时,你可以到手册的第九章中查询原因;,(4)Run a simulation,使用run命令开始一个分子动力学模拟,用min
9、imize命令来实施能量最小化(molecular statics),使用temper命令来进行parallel tempering(replica-exchange)simulation.,Commands listed by category,Initialization:atom_modify,atom_style,boundary,dimension,newton,processors,units;Atom definition:create_atoms,create_box,lattice,read_data,read_restart,region,replicate;Force f
10、ields:angle_coeff,angle_style,bond_coeff,bond_style,dielectric,dihedral_coeff,dihedral_style,improper_coeff,improper_style,kspace_modify,kspace_style,pair_coeff,pair_modify,pair_style,pair_write,special_bonds;,Settings:communicate,dipole,group,mass,min_modify,min_style,neigh_modify,neighbor,reset_ti
11、mestep,run_style,set,shape,timestep,velocity;Fixes:fix,fix_modify,unfix;Computes:compute,compute_modify,uncompute;Output:dump,dump_modify,restart,thermo,thermo_modify,thermo_style,undump,write_restart;Actions:delete_atoms,delete_bonds,displace_atoms,displace_box,minimize,run,temper;Miscellaneous:cle
12、ar,echo,if,include,jump,label,log,next,print,shell,variable.,Lammps中特殊符号含义,(1)命令行后的&表示这一行跟下一行是同一条命令.(2)命令行最开始的#表示这一行在执行过程中被忽略,你可以用它来写注释.(3)$是跟声明变量有关系的。(4)命令行被tabs,spaces间隔成各个“words”,注意这里的“words”可以包含字母、数字、下划线、或标点符号.,(5)一行中第一个词是命令名,后续的词是相关的参数.(6)双引号内的文字空格被整体地当作一个参数,其中的#或$就没有前面说的作用了.,Pure Cu crystal,(1
13、)Initializationunitsmetal金属单位制:mass=grams/mole 质量:g/moldistance=Angstroms 距离:埃time=picoseconds 时间:皮秒energy=eV 能量:velocity=Angstroms/picosecond 速度force=eV/Angstrom 力:,temperature=degrees K 温度pressure=bars 压力dynamic viscosity=Poise 动力学粘性系数:泊charge=multiple of electron charge(+1.0 is a proton)电荷:电荷整数倍d
14、ipole=charge*Angstroms 偶极矩electric field=volts/Angstrom density=gram/cmdim torque=eV 力矩,atom_stylecharge原子属性:带电粒子系统dimension 3维数:3boundary p p p边界条件:p is periodic p指周期性 f is non-periodic and fixed:固定非周期 s is non-periodic and shrink-wrapped:收缩的非周期性的 m is non-periodic and shrink-wrapped with a minimum
15、 value 有最小值的收缩的非周期,(2)Atom definitionlattice fcc 3.615晶格点阵:Lattices of style sc,fcc,bcc,and diamond are 3d lattices that define a cubic unit cell with edge length=1.0.fcc类型的点阵是定义的一个边长为1.0埃的立方体三维晶格点阵specifying scale=3.would create a cubic lattice with a spacing of Angstroms.边长为3。埃,regionbox block 0 4
16、 0 4 0 4 区域:以0 4 0 4 0 4为立方箱、边界条件;create_box1 box在上述区域创建一个只有1个原子类型的模拟箱The argument N is the number of atom types that will be used in the simulationcreate_atoms1 box:This command creates atoms on a lattice,or a single atom,or a random collection of atoms,as an alternative to reading in their coordin
17、ates explicitly via a read_data or read_restart command.A simulation box must already exist,which is typically created via the create_box command.Before using this command,a lattice must also be defined using the lattice command.The only exceptions are for the single style with units=box or the rand
18、om style.这个命令用于在晶格点阵、单个原子和原子随机组合中创建原子,这样通过从文件中读数据命令读出原子在晶格中的相对位置来替代原子的位置坐标。,For the box style,the create_atoms command fills the entire simulation box with atoms on the lattice.If your simulation box is periodic,you should insure its size is a multiple of the lattice spacings,to avoid unwanted atom
19、overlaps at the box boundaries.If your box is periodic and a multiple of the lattice spacing in a particular dimension,LAMMPS is careful to put exactly one atom at the boundary(on either side of the box),not zero or two.对于箱类型,创建原子命令是针对整个模拟箱的,同时原子必须在格点上,若模拟箱是周期性的,你必须确保它的大小是一个晶格间距的整数倍以避免边界上不必要的原子重叠。若箱
20、在特定的维度是周期性的,并且它的大小是一个晶格间距的整数倍,lammps就会在边界两侧各放一个原子。,mass1 63.54 只有一种原子类型,且该原子类型的质量为63,54g/molpair_stylecomb 电荷之间作用力场类型为:晶格体系之间的作用势Set the formula(s)LAMMPS uses to compute pairwise interactions.In LAMMPS,pair potentials are defined between pairs of atoms that are within a cutoff distance and the set o
21、f active interactions typically changes over time.确立lammps计算粒子之间相互作用的方程式。,pair_coeff*b CuSpecify the pairwise force field coefficients for one or more pairs of atom types.The number and meaning of the coefficients depends on the pair style.指定一种或多种粒子对之间势能的力场系数,其含义和数值由粒子对类型决定。系数由cu的作用力场决定,neighbor0.5
22、bin邻位原子参数为0.5,以二机制算法 The style value selects what algorithm is used to build the list.The bin style creates the list by binning which is an operation that scales linearly with N/P,the number of atoms per processor where N=total number of atoms and P=number of processors.类型选择决定建立列表时的算法,其中,bin类型表示通过分级
23、建立列表该列表以n/p的规模线性拓展。,neigh_modifyevery 1 delay 1 check yes该命令用于设置影响粒子之间势能和列表的参数,The every,delay,check,and once options affect how often lists are built as a simulation runs.The delay setting means never build a new list until at least N steps after the previous build.The every setting means build the
24、 list every M steps(after the delay has passed).If the check setting is no,the list is built on the 1st step that satisfies the delay and every settings.If the check setting is yes,then the list is only built on a particular step if some atom has moved more than half the skin distance(specified in t
25、he neighbor command)since the last build.If the once setting is yes,then the neighbor list is only built once at the beginning of each run,and never rebuilt.This should only be done if you are certain atoms will not move far enough that the list should be rebuilt.E.g.running a simulation of a cold c
26、rystal.The every,delay,check,and once 这些选项会影响随着模拟的进行,列表多久会更新一次。延迟设置意味着不建立一个新的列表,直到在以前的版本进行N个步骤后。every设置意味着每m步生成列表(延迟后已通过)。如果If the check setting is no,,该列表是建立在第一步基础上,并满足every,delay设置的。如果检查设置为Yes,则该列表是建立在一个特定的步骤上,如果一些原子移动自上次构建一半以上的小距离(neighbor命令中指定)。如果once设置yes的话,那么列表中只有在每次运行开始时创建,而从来没有重建,你必须确定原子不会运动
27、的太远以至于你必须重建列表。例如运行模拟冷晶体。,#dump1 all custom 10 tmp.dump id type xs ys zs q vx vy vz fx fy fz输出单个原子的热力学信息:对于所有的原子体系以1为自定义名字,以常规文本类型输出,每10步输出一次结果到tmp.dump文件,并且输出一下参数:自定义名字,类型,原子的分数坐标,象限,速度,#dump_modify1 append yes element Cu更改输出值及文本的格式,fix1 all nve指定 NVE是微正则系综,宏观上的孤立系统:即N、V、E三个参数是不变的;Set a fix that wil
28、l be applied to a group of atoms.In LAMMPS,a fix is any operation that is applied to the system during timestepping or minimization.Fixes perform their operations at different stages of the timestep设定对于一组原子适用的常数,一个常数代表一个适用于在时间步和最小化过程的系统的操作,常数在特定时间步中实现其操作。,timestep 0.00020时间步长thermo_stylecustom step
29、temp etotal pe evdwl ecoul press vol lx ly lz xz输出:系统常规属性:时间步长,温度,总能量,势能,范德瓦耳斯能量,库伦能,压力,体积,箱的边长,三斜晶系(非正交)的模拟箱的倾斜角,对比press,stress,thermo-style,同样是计算力的,三者有什么主要区别呢?press是系统力,stress是原子应力,用 thermo_style输出的pxx是整个系统(包括边界)全部原子的势能应力在XX方向分力的平均值,为标量;thermo_style输出的press是整个系统(包括边界)全部原子的势能应力6方向合力的平均值,为标量;compute
30、 stress/atom算出来的是每个原子的6个方向应力值(注意LAMMPS算出来的这个值是没有除体积的),每个原子都有一个这样的vector,里面有6个量.,thermo_modifynorm yesSet options for how thermodynamic information is computed and printed by LAMMPS为热动力学信息的计算设置选项norm keyword determines whether various thermodynamic output values are normalized by the number of atoms
31、or not,depending on whether it is set to yes or no.Different unit styles have different defaults for this setting(see below).Even if norm is set to yes,a value is only normalized if it is an extensive quantity,meaning that it scales with the number of atoms in the system.norm关键词设置为是或者否,决定不同的热动力学结果的数
32、值是否通过原子的数量进行归一化求解。不同的单位类型有对于设置具有不同的默认值,即使被设定为是,数值也只有在数值很大时才被归一化,即它可以和体系的原子数目相比时才要归一化。,velocityall create 10.1 2398378Set or change the velocities of a group of atoms in one of several styles.For each style,there are required arguments and optional keyword/value parameters.The create style generates
33、an ensemble of velocities using a random number generator with the specified seed as the specified temperature.设置及改变一种或多种原子类型的原子的速度。对于每种类型的原子,有特定自变量和特定的关键词或参量。creat类型通过一个随机数生成设备,利用特定的初始温度创建一个整体速度。,thermo 1N=output thermodynamics every N timesteps 每N步输出一次热动力学量的结果run 10运行10次,The end of pure Cu,suplime
34、nt,PS的输出文件主要可以分为三种:一种是log.lammps,这里面记录了整个计算过程屏幕上显示的所有信息,可由thermo、thermo_modify等命令控制;另一种是输出应力、能量、原子位置、速度等等信息,由dump命令控制输出文件;第三种是断点续算的restart文件输出信息,由write_restart命令控制,dump,Dump命令主要是用来输出计算后单个原子的相关信息的。Dump ID group-ID style N file args ID:自己给这个dump命令定义的一个代号(随便取)group-ID:那些信息需要被输出的原子群(预先定义好group)style:类型
35、N:没经过多少时间步输出信息 File:输出名称 Args:相关参数(每个类型不同),注意:对于周期性边界条件而言,输出的原子坐标可能不在盒子定义的范围之中,因为because periodic boundary conditions are enforced only on timesteps when neighbor lists are rebuilt,(个人翻译,不很确定:只有当临位原子列表被更新的时候,周期性边界条件才执行)。同时还需注意的是,当lammps并行运算的时候,输出的原子信息的秩序可能有点混乱。因为,同一个量的相关信息可能来自于不同的处理器。一般这种情况多出现在atom,
36、bond,and custom styles。对于style xyz,当group的值不是all的时候也会出现这种情况。而dcd and xtc styles这两种类型输出的原子都是按顺序排列好的。当xyz的group是all的时候,原子也是按序排列的。,Style这个关键词定义了输出量以及相关的格式。通过dump_modify可以改变输出值以及文件本身的格式。atom,bond,and custom styles这些类型输出的都是比较简单的文本格式,直接打开就可以阅读里面的内容。一些lammps的后处理工具例如Pizza.py也可以处理这种文件。对于atom 类型,原子的坐标,ID,以及类型
37、被输出到dump文件中。默认情况下,原子的坐标以分数坐标的形式显示。,举个简单例子,如果定义的盒子长度=xh-xl,则原子的分数坐标x0=(x-xl)/(xh-xl)。通过dump_modify可以把分数坐标变为绝对坐标。同时,Image flags也可以在dump_modify中进行相应的设置。,对于bond类型,原子间的键拓扑信息输入到文件中,格式与在read-data命令中的data中指明的格式一致。(简单点就是与data中设置的bond的格式一致)。同时与键有关的原子的信息也会输入到dump文件中。运行过程中,一旦有bond被破坏了,那么bond style会被置零,同时该键不输入到f
38、ile中。而那些被turn off的键(see the fix shake or delete_bonds commands)的键类型将会被置负数输入到file中,文件以.bin结尾的话,则文件将以二进制的形式写出这中方式只适用于atom and custom style.,这一部分解释在custom类型中,哪些原子信息可以被输出。Tag是原子序号,Mol是分子序号(对于分子系统而言)。X,y,z 是原子的绝对坐标,xs,ys,zs是原子的分数坐标(0.0-1.0)c_ID and c_IDN用于输出compute 命令计算出的标量或矢量。ID已经预先定义好了的。对此可以查看compute 命
39、令得到详细的信息。c_IDN表示的是输出标号为ID的compute计算出来的对应矢量的第N个分量。,f_ID and f_IDN的作用与上面类似,只是换成了fix。因此,通过dump命令,我们几乎可以输出任意我们感兴趣的量。xu,yu,zu 代表的是固定对于每个原子的实际运动坐标,即某个原子运动出模拟区域后,不会删除自己并替换成镜像原子重新映射到模拟box内,而是真实地给出原来原子的运动后坐标,不管它离开box多远。,但是在实际计算中,程序还是考虑镜像原子的,程序只不过记录镜像原子的坐标和模拟过程原子穿过了几次边界,也就是ix,iy,iz,结合映射到box内的镜像原子的坐标,就可以知道原来原子跑到哪里了。适合周期性结构,但又存在大变形,超出计算box的情况。用xu,yu,zu 可以更直观和明确地显示原来每个周期单元的变形。,Merry Christmas,