[toc]
neighbor 2.0 multi
- neighbor skin style
- 此命令用于设置cutoff distance;
- 3种style代表不同的算法去构建list,
bin nsq multi
- 一般使用
bin
较多; nsq
没有用过,手册上讲,在计算非周期性的盒子里的未溶解的小分子可能会更快;multi
多用于一些cutoff distance 差别大的体系,例如,聚合物与离子共存的体系。
group
1 | group g_ID region reg_ID |
- 所分的组的个数不能大于32个。
meam
势函数
- meam 势函数,data很多重复元素的原子的时候,library那个文件后面只需要写元素,另一个需要写全原子类型。
LJ 交互 mix
1 | pair_modify mix geometric |
- 如果需要交互LJ势参数时,可以使用此命令
Berendsen控温
1 | fix ID group-ID temp/berendsen Tstart Tstop Tdamp |
- Tdamp 温度阻尼参数,时间单位(例如ps,fs)
- 使用Berendsen恒温器重新设置一组原子的温度,Berendsen每一步都会调整原子的速度。
温度不能为0
LAMMPS中dihedral与improper具体有什么区别?
- 这不是lammps问题,是力场问题。A dihedral angle potentials depends on four consecutive bonded atoms, whereas the improper torsion depends on three atoms centered around a fourth atom. … The main difference between both torsion potentials is the definition of the torsional angle and the functional form of the potential function.
- 参考:http://muchong.com/t-12670230-1
- 这两个improper不用可以吗?
lj/cut/coul/long
1 | lj/cut/coul/long args = cutoff (cutoff2) |
SHAKE vs RATTLE
在LAMMPS模拟中,通过SHAKE或RATTLE算法对指定的键和角度应用键和角度约束。这通常会启用更长的时间步长。
SHAKE
1 | fix ID group-ID style tol iter N constraint values ... keyword value ... |
- tol = accuracy tolerance of SHAKE solution
- iter = max # of iterations in each SHAKE solution
- N = print SHAKE statistics every this many timesteps (0 = never)
- b values = one or more bond types
- a values = one or more angle types
- t values = one or more atom types
- m value = one or more mass values
SHAKE
算法是为标准Verlet timestepping
等方案而发明的,在这些方案中,只有坐标被积分,速度被近似为轨迹的有限差分;- 如果速度被明确地积分,就像LAMMPS使用的
velocity Verlet
积分方法一样,为了消除沿着键的速度分量,就需要第二组约束力;SHAKE and RATTLE
都是针对单个分子来设置的;- i原子和j原子的位移矢量为:rijn+1 = rjn-rin
- 约束条件为:① rijn+1.rijn+1=dij2 and ② vijn+1.rijn+1=0
- 其中,
SHAKE
算法满足第一条件,如果强加第二条件,沿键方向的速度分量就会消失;- 而
RATTLE
算法满足这两个条件;- fix
SHAKE
和RATTLE
有着相同的设置和选项;- 通过
SHAKE算法
每一步都指定键和角去重新设置它们的平衡长度和角度值J of Comp Phys, 23, 327-341 (1977);这是通过施加额外的约束力来实现的,这样新的位置就保持了所需的原子分离。小的delta值意味着SHAKE的很好
;- 另外,由于
fix RATTLE
修改力和速度,因此fix RATTLE
应该定义在所有其他fix
的后面。- 为了计算效率,在一个模拟中只能定义一个
SHAKE或RATTLE
9. fix npt
1 | fix ID group-ID style_name keyword value |
- 基于Nose-Hoover style对非哈密顿运动方程执行时间积分,在每个时间步更新组中原子的位置和速度。
- 压力里是怎么给的?
- 温度调节和压力调节是通过添加一些动态变量来实现的,这些动态变量与粒子速度(温度调节)和模拟域尺寸(压力调节)耦合。
- 除了基本的恒温和恒压调节外,这些修复还可以创建一个与粒子恒温器耦合的恒温器链,以及另一个与恒压调节变量耦合的恒温器链。该稳压器可以耦合到整体盒体积,或个别尺寸,包括xy, xz和yz倾斜尺寸。恒温器的外部压力可以指定为标量压力(等压系综)或对称应力张量的分量(恒应力系综)。当使用正确时,粒子的时间平均温度和应力张量将会和指定的Tstart/Tstop和Pstart/Pstop目标值匹配。
定义一种计算一组原子温度的方法
1 | compute ID group-ID temp |
- 计算压力必须是对all进行。
设置一组或多组原子刚体
- 设置一组
1 | fix 1 Water rigid single |
- 设置多组
1 | fix 2 all rigid group 2 Water Quartz |
read_data
- 该命令通过使用add、offset、shift关键字可以多次读取data文件,可以组件比较复杂的系统,比如:先读取一个流体结构,再读取一个壁面的结构,然后还可以再次读取第二个壁面结构,并可以通过
displace_atoms
命令对该结构进行旋转,以实现对面的另一个壁面。
读取单个data时
1 | read_data file.data |
读取多个data时
1 | read_data file.data keyword args |
keyword:add、offset、shift、extra、group
add:如果没有模拟盒子,不能用add
,如果已经通过create_box
命令或先前的read_data
命令构建了盒子(也即是data中的xlo、xhi等)。
- 另外,
add
后面还跟着一个参数,有四个选择:append;IDoffset;MOLoffset merge
分别表示:
(append)后面加上来的data中的原子id直接顺延,比如之前读取的data一共5个原子类型,后来加的data有2个原子id,那么合起来的原子id就是5+2;
(IDoffset)是指定一个具体数值代替前面的5,例如:IDoffset 10, 这里表示下一个data读取的原子id会从11开始;
(MOLoffset)与IDoffset相似,表示分子ID
(merge)表示不改变原子id直接合并
offset在data文件中读取atom bond angle … types
- offset后面跟五个参数
1 | toff = offset to add to atom types |
- 以第一个为例,如果toff=2,添加的原子的原来id为1 2 3,那么添加后将会变为3 4 5;
shift关键字可以改变加入系统data的位置
- 有三个参数分别代表在三个方向的原子偏移量;
1 | shift Sx, Sy, Sz |
extra关键字为稍后再次使用read_data命令添加新的atom、bond、angle等而准备
- 该关键字只能在第一次读取data时使用;
- 当系统第一次初始化时,LAMMPS设置了允许的原子、键、角度等类型的最大数目;
- 如果不使用extra关键字,那么这些类型的数量将被限制在您读的第一个数据文件中出现的数量。
- 例如,如果第一个数据文件是Si的固体基底,它可能会指定一个单个原子类型;如果读取第二个数据文件而且是不同的材料(例如水分子),位于基底上方,将需要使用不同的原子类型。只有在读取基底数据文件时将extra/atom/types关键字的值设置的足够大,才能做到
- 注意,使用extra关键字还允许每个数据文件包含如下部分:Masses或Pair Coeffs或Bond Coeffs,其大小与数据文件中的类型数量相匹配
group关键字是可以把新添加data设为一组
nocoeff关键字,顾名思义
LAMMPS data盒子类型转换
1 | change_box all triclinic #正交转单斜 |
计算group和group原子之间相互能与力
模板
1
compute ID group-ID group/group group2-ID keyword value ...
例子
1
compute 1 lower group/group upper
keyword
1
2
3
4pair value = yes or no #默认yes, 相互作用能将包括一对分量,该分量被定义为所有原子对之间的成对能量,其中一对原子中的一个在第一组,另一个在第二组。
kspace value = yes or no #默认为no,若为yes则计算的相互作用能将包括一个k空间分量,即长程库仑能
boundary value = yes or no #默认yes,如果boundary关键字设置为yes(默认值),并且包含了kspace贡献,那么这个能量修正项将被添加到总组-组能量中。这一修正项不影响力的计算,并将为零,如果一个或两个组是电荷中性。这个能量修正项与常规Ewald和PPPM例程中包含的能量修正项相同。
molecule value = off or inter or intra #默认no,如果将molecule关键字设置为inter或intra,则在包括它们的相互作用能和力之前,将根据每对中的两个原子的分子id进行额外的检查。对于两个原子之间inter的相互作用,这两个原子必须处于不同的分子中。对于内部设置intra,这两个原子必须在同一个分子中.拓展:
- 是不是说,加了
kspace yes
后计算的是范德华力+库仑力; - 进一步不加
kspace yes
,计算的是范德华力,这两项相减就可得到两个组之间的库仑力了?
- 是不是说,加了
LAMMPS data删除原子
- 删除没有键角信息的data中组
1
delete_atoms group Quartz
- 删除带有键角信息的data中组
1
2delete_atoms group Quartz
reset_atom_ids #需新版lammps - ref
change_box
LAMMPS data盒子类型转换
1 | change_box all triclinic #正交转单斜 |