文章目录
1.LAMMPS简介
LAMMPS模拟原理
- 数值方法求解牛顿方程(牛顿第二定律)
LAMMPS软件用途
- 微观结构演化
- 结构优化
- 过渡态搜索
- 热导率计算
- 形成能计算
LAMMPS使用流程
in.relax sub_lmp W_zhou.eam.alloy
↓ ↓ ↓
in文件 任务提交脚本 势文件 模型文件(可有可无)
in.relax log.lammps sub_lmp W.xyz W_zhou.eam.alloy
↓ ↓
日志文件 轨迹文件
in文件:用命令的形式告诉LAMMPS怎么算,算什么,输出什么
模型文件(可有可无):模拟的初始构型
势文件(可有可无):帮助LAMMPS计算原子间相互作用力
日志文件:记录in文件中命令运行情况
2.建模方法以及势参数获取
常见的建模方式
1.使用LAMMPS内置建模命令
2.使用atomsk建模软件
3.其他的建模软件,如PACKMOL、moltemplate、Avogadro获取方法
势参数(文件)方法
1.根据文献在LAMMPS内置文件中查找
2.根据文献自行在网上查找
https://www.ctcms.nist.gov/potentials/
http://cmse.postech.ac.kr/home_2nnmeam
http://apot.mgedata.cn/InteratomicPotentials
3.根据文献自行写代码获取
LAMMPS官方提供,~/lammps/tools/eam_database/create.f
4.发邮件找作者要
3.in文件以及示例讲解
in文件书写框架
描述一套完整的分子动力学流程,观察粒子在合理的物理环境下的演化过程
- 初始模拟系统设置
- 初始模型构建(读取模型数据)
- 定义原子间相互作用势
- 定义原子/体系某些信息的计算(原子势能…)
- 定义输出原子(坐标)/体系(热力学)信息
- 模拟环境设定并运行
金属Ni的拉伸模拟
1.初始模拟系统设置
units metal
atom_style atomic
boundary p p p
2.初始模型构建(读取模型数据)
lattice fcc 3.52
region box block 0 10 0 10 0 10
create_box 1 box
create_atoms 1 box
3.定义原子间相互作用势
pair_style meam/c
pair_coeff * * library.meam Ni CoNiCrFeMn.meam Ni
4.定义输出原子(坐标)/体系(热力学)信息
thermo 1000
thermo_style custom step lx ly lz press pxx pyy pzz pe temp
dump 1 all custom 500 Ni.xyz id type x y z
5.模拟环境设定并运行
- 环境一:npt系综下弛豫
velocity all create 300 12345 dist gaussian fix 1 all npt temp 300 300 1 iso 0 0 1 drag 1 timestep 0.001 run 20000
- 环境二:npt系综下沿x轴拉伸
unfix 1 fix 1 all npt temp 300 300 1 y 0 0 1 z 0 0 1 drag 1 fix 2 all deform 1 x erate 0.01 units box run 20000
in文件
##调试参数设置为变量
variable a equal 0.3 #定义变量a,值为0.3
variable lat equal 3.52 #定义变量lat,值为3.52
variable bx equal 5 #定义变量bx by bz,值为5
variable by equal 5
variable bz equal 5
variable T equal 300 #定义变量T,值为300
variable s equal 0.01 #定义变量s,值为0.01
##模拟条件初始化
units metal #设置模拟单位为metal单位系统
atom_style atomic #定义原子样式,atomic样式适用于粗粒液体、固体、金属
boundary p p p #周期性边界条件,xyz方向
neighbor $a bin #定义邻居列表的参数,skin超出力界限的额外距离为3,使用binning(箱)构建列表
##构建HEA初始模型
lattice fcc ${lat} #定义FCC晶格,晶胞长度3.52埃
region box block -${bx} ${bx} -${by} ${by} -${bz} ${bz} #定义名为box块状区域
create_box 1 box #在box区域创建1个模拟框,1种原子
create_atoms 1 box #box用晶格上的粒子填充整个模拟盒子,1种原子
##定义原子间相互作用势
pair_style meam/c #使用改进的嵌入原子方法来计算各种材料的非键相互作用
pair_coeff * * library.meam Ni CoNiCrFeMn.meam Ni #元素库文件library.meam 合金参数文件CoNiCrFeMn.meam
##输出热力学信息
thermo 1000 #每1000时间步长输出热力学信息
thermo_style custom step lx ly lz press pxx pyy pzz pe temp #自定义输出,输出时间步长、xyz方向的盒长、压力、xx和yy和zz方向压力张量、总势能和温度
##构建NPT模拟环境
velocity all create $T 12345 mom yes rot no #所有原子在指定温度T的使用随机种子12345生成速度,速度的线性动量为零,角动量不为零
fix 1 all npt temp $T $T 1 iso 0 0 1 drag 1 #1为指定的修复ID,所有原子保持npt系综,初始温度T,结束温度T,温度阻尼系数为1,初始压力0,结束压力0,压力阻尼系数是1,恒温器/恒压器阻力系数为1
##保证弛豫时间足够长
timestep 0.001 #时间步长为0.001皮秒
run 20000 #设置运行20000时间步长
## 输出NPT弛豫后体系的长度
variable Ltmp equal lx #将x方向的盒长设置为变量Ltmp
variable Lini equal v_Ltmp #将变量Ltmp值赋予变量Lini
print "Initial Length,Lini: ${Lini}" #输出弛豫后的初始长度
##在保持y和z方向压强不变的NPT环境下沿x轴拉伸
unfix 1 #删除先前定义的修复1
fix 1 all npt temp $T $T 1 y 0 0 1 z 0 0 1 drag 1 #1为指定的修复名称,所有原子保持npt系综,初始温度T,结束温度T,温度阻尼系数1,开始y和z方向张量0,结束y和z方向张量0,应力阻尼系数1,恒温器阻力系数为1
fix 2 all defrom 1 x erate $s units box remap x #2为指定的修复名称,每隔1个时间步长deform更改模拟框的形状,以s的工程应变率改变盒子x方向尺寸(L(t) = L0 (1 + erate*dt)),box使用标准距离单位,remap x强制原子通过与框变形完全匹配的仿射变换进行变形
##输出原子坐标信息
dump 1 all custom 500 heas.xyz id type x y z #1为指定转储名称,每隔500时间步长将所有原子的id、类型、xyz储存到heas.xyz文件中
##输出strain-stress数据
variable strain equal (lx-v_Lini)/v_Lini #定义变量应变
variable stress equal -pxx/10000 #定义变量应力
fix 3 all print 100 "${strain} ${stress}" file strain_stress.txt screen no #每隔100时间步长在strain_stress.txt中打印应变与应力,并且关闭屏幕的日志输出
##run
run 20000 #设置运行20000时间步长
##模拟结束
print "All done"