lammps软件介绍与使用

文章目录

    • 1.LAMMPS简介
        • LAMMPS模拟原理
        • LAMMPS软件用途
        • LAMMPS使用流程
    • 2.建模方法以及势参数获取
        • 常见的建模方式
        • 势参数(文件)方法
    • 3.in文件以及示例讲解
        • in文件书写框架
        • 金属Ni的拉伸模拟
        • in文件

1.LAMMPS简介

LAMMPS模拟原理

  • 数值方法求解牛顿方程(牛顿第二定律)
Created with Raphaël 2.3.0 开始计算 初始化位置和动量设置模 拟的边界条件和初始条件 能量最小化,几何结构优化 设定体系中粒子的初速度 解牛顿运动方程, 并计算(t+△t)时刻 体系中粒子的位 置、速度和力 体系是否 达到平衡 计算(t+△t)时间后位 置、速度、动量、能 量等物理量,并对结 果进行统计处理 t>max 结束 yes no yes no

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"

你可能感兴趣的:(科技)