1 输入文件

输入脚本文件(命令文件?)要包含五个部分:

# 1) Initialization

# 2) System definition

# 3) Simulation settings

# 4) Visualization

# 5) Run

这五个部分不一定全都需要,也不一定完全按如下顺序。例如3和4可以翻过来,另外还可以多次重复。

1.1 初始化

# 1) Initialization

units lj

dimension 2

atom_style atomic

pair_style lj/cut 2.5

boundary p p p

第一句采用lj归一化单位;第二句表示二维模型;第三句表示采用原子质点模型;第四句表示原子间作用力模型为LJ,截断值2.5;最后一行表示xyz三个方向采用周期性边界条件。

(二维模型三个周期性边界?It may seems strange to define the boundary conditions along the third dimension for a 2D simulation, but it is a LAMMPS requirement.)

cutoff是什么。

1.2 系统定义

region myreg block -30 30 -30 30 -0.5 0.5

create_box 2 myreg

create_atoms 1 random 1500 341341 myreg

create_atoms 2 random 100 127569 myreg

第一行构建模拟区域(几何模型),称为myreg。模拟区域为block,长方体,xyz范围如上。

第二行定义模拟盒子(?),其中含有两种原子。

第三行定义第一种原子随机布置,有1500个,341341是随机数种子。后续可以更改,以便进行不同的仿真。

第四行定义第二种原子,有100个。

1.3 仿真设置

# 3) Simulation settings

mass 1 1

mass 2 1

pair_coeff 1 1 1.0 1.0

pair_coeff 2 2 0.5 3.0

头两行定义原子质量,均为1。

后两行定义原子的作用势参数:势阱和势能为0的距离。注意,lammps用几何平均计算不同种类原子的相互作用参数,即:

$$\epsilon_{ij} = \sqrt{\epsilon_{ii} \epsilon_{jj}}
\space
\space
\sigma_{ij} = \sqrt{\sigma_{ii} \sigma_{jj}}$$

这只是一种权益之计,不过它不影响仿真结果。

也可以采用pair_coeff 1 2明确指定相互作用参数。

1.4 可视化和运行

# 4) Visualization

thermo 10

# 5) Run

minimize 1.0e-4 1.0e-6 1000 10000

可视化时,thermo 表示输出热力学信息,如温度和能量等,10表示每10步输出一次。minimize表示进行能量最小化,约束条件是两次迭代之间的能量差值小于1e-4,两个原子之间的力的最大值小于1e-6,迭代次数大于1000次,力和能量计算次数超过10000次。

运行后输出结果如下

Step Temp E_pair E_mol TotEng Press

0 0 5.8997404e+14 0 5.8997404e+14 1.5732641e+15

10 0 56275037 0 56275037 1.5007118e+08

20 0 17731.329 0 17731.329 47458.738

30 0 350.68529 0 350.68529 972.14134

40 0 13.745948 0 13.745948 48.748312

50 0 0.5033657 0 0.5033657 8.3398718

60 0 -1.4427524 0 -1.4427524 1.1131474

70 0 -1.7136665 0 -1.7136665 -0.038162464

80 0 -1.7516642 0 -1.7516642 -0.15686171

81 0 -1.7518285 0 -1.7518285 -0.15730928

在步长零时,能量很高,得到1e+14量级。可能是因为粒子位置随机产生,有重叠,导致斥力大,能量高。随着计算进行,能量迅速减小。

lammps输出还有

Minimization stats: Stopping criterion = energy tolerance

说明满足了迭代中能量的条件。

lammps还会输出

WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization

这是因为lammps认为构建粒子邻居列表比默认更为频繁,所以输出了warning。可忽略。

2 动力学模拟

# PART B - MOLECULAR DYNAMICS #

4) Visualization

thermo 1000

variable kinetic_energy equal ke

variable potential_energy equal pe

variable pressure equal press

fix myat1 all ave/time 10 1 10 v_kinetic_energy v_potential_energy v_pressure file energy.dat

# 5) Run

fix mynve all nve

fix mylgv all langevin 1.0 1.0 0.1 1530917

fix myefn all enforce2d

timestep 0.005

run 10000

在前面写好的命令后面加上如上面命令。因为lammps执行命令顺序从上到下,所以这些命令是在能量最小化之后执行的。后面的thermo命令执行时,热力学信息输出改为1000步输出一次。

然后用variable命令定义了三个变量Kinetic_energy、potential energy, and the pressure,输出文件为energy.dat。

下面run部分,要求所有原子按照nve系综更新位置和速度。第二句采用郎之万热浴控温,温度为1,阻尼系数(?)为0.1,随机数种子1530917。然后enforce2D要求二维模拟。最后设置时间步长和模拟步数。

模拟输出

可以看到温度很快升到1。

此外,还输出了如下信息

可以看出,998个dangerous邻居列表。这说明两次计算邻居列表中原子移动的距离过大。在模拟设置部分需要增加如下命令:

neigh_modify every 1 delay 5 check yes

这样lammps就能够更频繁的构建邻居列表。

现在结果就正确了。

3 轨迹可视化

如果我们需要把轨迹可视化,需要定时输出dump原子的位置。在visualization一段加上如下命令:

dump mydmp all atom 1000 dump.lammpstrj

再次运行lammps。输出的文件为dump.lammpstrj,可用vmd或ovito可视化。

4 改进

比如,我们首先创建一个region,然后在其基础上创建一个box。再另外创建两个region,其中分别创建类型1和类型2的原子。

# 2) System definition

region mybox block -30 30 -30 30 -0.5 0.5

create_box 2 mybox

region mycylin cylinder z 0 0 15 INF INF side in

region mycylou cylinder z 0 0 15 INF INF side out

create_atoms 1 random 1000 341341 mycylou

create_atoms 2 random 150 127569 mycylin

side in和side out分别表示在圆柱内和圆柱外。

# 3) Simulation settings

mass 1 1

mass 2 1

pair_coeff 1 1 1.0 1.0

pair_coeff 2 2 0.5 3.0

neigh_modify every 1 delay 5 check yes

# 4) Visualization

thermo 10

dump mydmp all atom 10 dump.min.lammpstrj

# 5) Run

minimize 1.0e-4 1.0e-6 1000 10000

write_data minimized_coordinate.data

最后一行表示lammps将最终结果输出至minimized_coordinate.data文件。这个文件保存了能量最小化的状态,可以在以后重新模拟时使用。

更进一步,如果只想保留圆柱内类型2的原子和圆柱外类型1的原子,我们可以通过如下命令删除不符合条件的原子

region mycylin cylinder z 0 0 15 INF INF side in

region mycylou cylinder z 0 0 15 INF INF side out

group mytype1 type 1

group mytype2 type 2

group incyl region mycylin

group oucyl region mycylou

group type1in intersect mytype1 incyl

group type2ou intersect mytype2 oucyl

delete_atoms group type1in

delete_atoms group type2ou

运行时,可以发现lammps输出了相关的信息

为了输出相关信息,可以采用如下命令

variable Ntype1in equal count(mytype1,mycylin)

variable Ntype1ou equal count(mytype1,mycylou)

variable Ntype2in equal count(mytype2,mycylin)

variable Ntype2ou equal count(mytype2,mycylou)

fix myat1 all ave/time 1000 10 10000 v_Ntype1in v_Ntype1ou file population1vstime.dat

fix myat2 all ave/time 1000 10 10000 v_Ntype2in v_Ntype2ou file population2vstime.dat

compute coor12 type1 coord/atom cutoff 2.0 group type2

compute sumcoor12 all reduce ave c_coor12

fix myat3 all ave/time 1000 10 10000 c_sumcoor12 file coordinationnumber12.dat

这里定义了相关的变量,然后进行计算。fix ave/times求相关变量的平均,每10000步计算一次,10个步长的平均。后面是计算类型1和类型2原子间的配位数。

# 5) Run

velocity all create 1.0 4928459 mom yes rot yes dist gaussian

fix mynve all nve

fix mylgv all langevin 1.0 1.0 0.1 1530917 zero yes

fix myefn all enforce2d

timestep 0.005

run 3000000

write_data data.mixed.lammps

这里,velocity create为每个原子施加初始速度。初始速度选取满足温度=1,随机产生,分布为高斯分布;mom yes 和rot yes表示该系统没有线动量和角动量(好奇怪的写法)。郎之万热浴中zero yes表示总的随机力为0。

lammps笔记-入门相关推荐

  1. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

  2. Vue学习笔记入门篇——数据及DOM

    本文为转载,原文:Vue学习笔记入门篇--数据及DOM 数据 data 类型 Object | Function 详细 Vue 实例的数据对象.Vue 将会递归将 data 的属性转换为 getter ...

  3. LearnOpenGL学习笔记—入门03:Hello Triangle

    LearnOpenGL学习笔记-入门03:Hello Triangle 0 前言 1 图形渲染管线 2 顶点输入 3 VAO,VBO 3.1 VAO建立 3.2 VBO建立 4 shader 5 绘制 ...

  4. C# 学习笔记入门篇(上)

    文章目录 C# 学习笔记入门篇 〇.写在前面 Hello World! 这篇学习笔记适合什么人 这篇学习笔记到底想记什么 附加说明 一.命名空间 "进入"命名空间 嵌套的命名空间. ...

  5. R语言学习笔记——入门篇:第一章-R语言介绍

    R语言 R语言学习笔记--入门篇:第一章-R语言介绍 文章目录 R语言 一.R语言简介 1.1.R语言的应用方向 1.2.R语言的特点 二.R软件的安装 2.1.Windows/Mac 2.2.Lin ...

  6. lammps分子动力学 入门到进阶

    1.石墨烯.金属材料建模及力学分析: 2.纳米流体模拟及流动性质分析: 3.热传导及导热系数模拟计算: 4.多成分体系(金属.合金.高熵合金)的摩擦模拟以及材料切削模拟:5.离子辐照对石墨烯.金属.碳 ...

  7. R语言学习笔记——入门篇:第三章-图形初阶

    R语言 R语言学习笔记--入门篇:第三章-图形初阶 文章目录 R语言 一.使用图形 1.1.基础绘图函数:plot( ) 1.2.图形控制函数:dev( ) 补充--直方图函数:hist( ) 补充- ...

  8. 深度强化学习之迷宫DQN(NIPS 2015版)实践笔记——入门提升篇

    1. 背景 在「强化学习」(RL)领域,早期大部分成功的算法都依赖于人工提取特征,并结合线性的值函数或策略表示,算法的表现很大程度上取决于特征提取的质量,隐匿于机器学习中.近年来,「深度学习」(DL) ...

  9. FDTD Solutions自学整理笔记入门教程(3):监视器Monitors

    FDTD自学整理笔记入门教程之监视器(转载+改动) 3.监视器Monitors:(这个编辑器真的不方便,文字+图片的操作真是太麻烦了,为了方便就简单截图上传)

最新文章

  1. Jake Coco - Under The Covers, Vol. 2 {2011}
  2. 自适应滤波:最小二乘法
  3. 【转】激活物料分类帐
  4. Python实现行转列?!超简单,赶快get起来
  5. nginx负载均衡的简单实现
  6. php脚本开头注释_PHP文件注释标记及规范小结
  7. excel切片器_EXCEL带切片器的动态柱形图
  8. OpenGL学习笔记:画点、直线和多边形(第二讲)
  9. Spark中的数据本地性
  10. c语言命令行参数怎么输入_C语言程序设计——这个函数原型你看懂了吗
  11. 最全的视频格式分类详解(很全面)
  12. 如何在网上买到下铺票2020_网上订票怎么选下铺
  13. css设置div垂直居中
  14. 扫外部二维码进入小程序,并且在小程序内获取二维码链接
  15. 基于java的奖学金评定管理系统_基于java的奖学金评定系统
  16. 监听SpringBoot 服务启动成功事件并打印信息
  17. 闲逸游戏态度决定胜负,安全决定未来!
  18. java如何生成api文档_api文档自动生成工具
  19. 根本原因分析: 五个为什么 (5 Whys)
  20. 执行sql报错,错误代码是 1064 ,其实是这个问题。

热门文章

  1. MMKV_荣登Github日榜!微信最新开源MMKV
  2. 打开新世界?从产品经理角度聊聊“高智商”这件事儿
  3. 【ChatGPT】中国支付清算协会倡议支付行业从业人员谨慎使用ChatGPT
  4. python ovito模块计算某一类原子的MSD均方位移
  5. Idea远程调试教学
  6. 帆软 html页面,帆软报表-web页面集成
  7. 将一句话里的单词进行倒置,标点符号不倒换P228
  8. 网页中用快播qvod打开bt种子 在线播放
  9. 计算机统计分析spss试卷,《SPSS計算机统计分析方法》试卷A卷.doc
  10. Churchill资本集团和科睿唯安合并,将在纽交所上市