在lammps模拟中常用的模拟设置

1.不同原子类型的data文件比较

1.full类型
    full类型对应的原子信息分别为:原子ID(atom-ID) 分子ID(molecule-ID) 原子类型(atom-type) 电荷(q) x坐标(x) y坐标(y) z坐标(z) nx ny nz。nx、ny、nz为可选项,主要用于周期性原子定位。
2.charge类型
    原子信息主要包括:原子ID(atom-ID) 原子类型(atom-type) 电荷(q) x坐标(x) y坐标(y) z坐标(z)。
3.atomic类型
    原子信息仅需要:原子ID(atom-ID) 原子类型(atom-type) x坐标(x) y坐标(y) z坐标(z)。
4.类型转换
    full类型转换为charge类型,删除分子ID和nx、ny、nz即可。
    full类型转换为atomic类型,删除分子ID、电荷q和nx、ny、nz即可。

2.region命令中如何选择合适的单位

(1)建模时优先选择units lattice(不写units,默认lattice)
    使用晶格常数来设置box尺寸能够保证模型的周期性,防止原子重叠。
(2)模型建好后尽量用units box
    在lammps中建好box或者已经填充完原子后,之后可能会用region命令来划分边界层、牛顿层等区域,用units box可以更加精准的设置尺寸。
(3)读取data文件后用units box
    模型通过read_data直接读取后,in文件中基本不会再设置lattice命令,没有指定的晶格常数的情况下用units box。

3.如何给分子建立分组
group ID include molecule
# 将原子添加组中,添加的原子和组中的原子的分子ID相同。

# 将水分子归为H20组
group  H2O type 1          #将O原子(type 1)定义为H2O组
group  H2O include molecule     #将水分子中与O原子为同一分子的其他原子归入同一H2O组

# 将氧化石墨烯归入GO组
group  GO type 3          #将C原子(type 3)定义为GO组
group  GO include molecule    #将氧化石墨烯其他的原子归入GO组
4.如何将正交box转为斜交box

    大多数的lammps模拟在正交box中进行的,xyz轴的夹角90°,并且模拟过程中坐标轴的夹角不会变化。但在相变、剪切的模拟过程中,需要坐标轴的夹角发生变化,这就要用到斜交(triclinic)box。
1.使用change_box命令

# 正交转斜交box
change_box   all triclinic

# 斜交转正交box
change_box   all ortho

2.修改data文件
    在data文件的box尺寸区域,在zlo zhi的后边添加一行斜交数据:0.0 0.0 0.0 xy xz yz
    正交转斜交一般不会出错,但是斜交转正交容易导致原子跑到box的外边,在转换前可提前扩大box尺寸。

5.如何实现工件的旋转模拟

    在扭转、抛光等lammps模拟中,需要设置工件的旋转动作。
fix move rotate

fix     ID group-ID move rotate Px Py Pz Rx Ry Rz period
# gruop-ID 原子组ID
# Px Py Pz旋转轴上某点坐标,为球心或者圆柱中心轴上的任意一点坐标
# Rx Ry Rz 旋转轴矢量,符合右,手法则,如Z轴正方向(0,0,1)
# period 旋转周期,单位为体系的时间单位,周期越小,旋转速度越快

同一组原子的fix move命令不能与系综同时设置,否则会造成模拟出错。

# 以z轴为正方向,逆时针旋转
fix    1 ball move rotate 0 0 0 0 0 1 10 units box
# 顺时针旋转
fix    1 ball move rotate 0 0 0 0 0 -1 10 units box
# 周期增大,旋转速度变慢
fix    1 ball move rotate 0 0 0 0 0 1 50 units box
6.常用的刚体、固定及弹簧连接模拟

    “刚体”和“固定”的原子结构,原子之间的间距保持相对固定。但是**“刚体”可以移动**,“固定”的结构静止不动;“刚体”可以具有一定的温度,“固定”的原子温度为0K。对“刚体”可以设置系综,进行控温控压,但是“固定”的原子不能具有温度,否则原子会有移动速度,产生移动。
1.“刚体”设置fix rigid

fix      1 tool rigid single
# 将刀具tool原子组设为刚体,single整个原子组视为一个刚体

fix      1 all rigid/small molecule
# 体系内分子设为刚体,rigid/small适用于大量小刚体系统,molecule将相同分子ID的原子设为一个刚体

fix      1 all group N gruop1 gruop2 ...
# 将N个原子设为刚体

2.“固定”设置

velocity     fixed set 0 0 0             #fixed原子组速度设为0
fix          1 fixed setforce 0 0 0      #fixed原子组受力为0

3.使用弹簧连接两个原子组,fix spring

fix  ID group-ID spring couple group-ID2 K x y z R0
# group-ID group-ID2:被连接的两个原子组
# K:弹簧系数,单位force/distance
# x y z:两个原子组质心间的初始距离
# R0弹簧的平衡距离
7.如何除去两原子间的受力

在某些情况下,不需要计算原子对之间的受力:
    1.在裂纹扩展模拟中,排除裂纹两侧原子之间的受力可有效地产生裂纹,防止裂纹在弛豫时消失。
    2.含有固定边界的体系,排除固定边界原子之间的受力,可加快模拟运行速度。
    3.含有刚体的体系,排除刚体原子之间的受力,起到加快运算的作用。
排除原子对之间受力最简单的方式把原子从其邻居列表删除。

neigh_modify exclude type i j
#去除类型i和类型j原子之间的受力
neigh_modify excule group group-ID1 group-ID2
#去除两组原子之间的受力
8.列举几种常用的速度设置方法

1.velocity
    velocity set命令设置原子组的初始移动速度。

velocity   top set 0 0 1 units box       # 设置top组原子沿Z轴移动实现拉伸

velocity命令只是重置top原子组的初始速度,必须设置fix nve/npt/nvt等系综才能使原子真正移动。
2.fix move
    fix move命令同样可以设置原子组一个速度,但是该命令可以使原子组按设定的速度匀速移动。

fix     1 top move linear 0 0 1 units box
# linear以恒定速度运动,top组原子沿Z轴移动

fix move命令是一个积分命令,top不用再设置nve/npt/nvt等系综,否则会造成积分混乱。
3.fix gravity
    fix gravity命令设置一个加速度,在运动过程中不断变化运动速度。设Z方向的加速度为100:

fix   1 top gravity 100.0 vector 0 0 1
# 加速度100,给定方向(0 0 1)
# 该命令常用于自由落体
9.在蒸发模拟中如何动态地删除原子

fix evaporate 命令

fix   ID group-ID evaporate N M region-ID seed
# group-ID:原子组id
# N:步数,每N步执行一次删除原子的操作
# M:每次删除的原子数
# region-ID:删除原子的区域,进入该区域的原子才能被删除
# seed:随机删除,随机数种子

fix     2 all evaporate 100 10 top 49895
#每100步删除在top区域内的10个原子
10.防原子漂移、原子的平动振动模拟

1.fix recenter命令控制原子组的重心固定在某点。

fix   ID group-ID recenter x y z
# 使原子组重心固定在坐标点(x,y,z)
# INIT表示原子初始位置,NULL表示该方向不固定原子组

fix   2 left recenter INIT INIT INIT
# 左侧原子组保持重心不变

2.fix move命令控制原子的移动和转动,也可以设置一个随时间变化的variable变量来设置原子的运动方式。

fix     ID group-ID move variable v_dx v_dy v_dz v_vx v_vy v_vz
# v_dx v_dy v_dz控制原子位移,v_vx v_vy v_vz控制原子速度,若不需单独控制,则为NULL

# 设沿x方向平移,同时沿z轴上下振动(正弦或余弦函数)
variable  x equal "2*step*dt"         #step时间步数,dt时间步长
variable  A equal 20.0
variable  T equal 5.0
variable  omega equal 3.0*PI/$T
variable  z equal swiggle(0.0,$A,$T)   #swiggle sin()函数,初值0.0,振幅A,周期T,A*sin(2PI/T *(timestep-startstep)*dt)
fix       1 ball move variable v_x NULL v_z NULL NULL NULL units box
11.如何模拟恒定电场及交变电场

fix efield命令

fix     ID group-ID efield ex ey ez
# ex ey ez为x y z 三个方向的电场分量
# 添加电场后,体系内带电荷的原子会受到一个附加电场力F(F=q*E,电场强度,metal和real单位下,E单位 volts/Angstrom)

应用案例:

#设置某方向的恒定电场
fix    1 exeternal-field efield 1.0 0.0 0.0     #x方向

#设置某个区域的电场
fix    1 exeternal-field efield 1.0 0.0 0.0 region top    #top区域

#设置可变电场
variable   e equal E0*sin(2*Pi*f*t)          #电场强度,对时间变化
fix    1 exeternal-field efield 0.0 0.0 v_e 
  • 6
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值