在lammps模拟中常用的模拟设置 In 世界杯澳大利亚 @2025-11-13 23:23:28

文章目录

1.不同原子类型的data文件比较2.region命令中如何选择合适的单位3.如何给分子建立分组4.如何将正交box转为斜交box5.如何实现工件的旋转模拟6.常用的刚体、固定及弹簧连接模拟7.如何除去两原子间的受力8.列举几种常用的速度设置方法9.在蒸发模拟中如何动态地删除原子10.防原子漂移、原子的平动振动模拟11.如何模拟恒定电场及交变电场

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

Linux查看tomcat是否启动,查看tomcat监听端口
苹果运营商如何查询?