科学网 您所在的位置:网站首页 lj怎么计算 科学网

科学网

2023-09-02 22:22| 来源: 网络整理| 查看: 265

LAMMPS 软件使用入门:3. 简单的算例

已有 47980 次阅读 2016-5-5 11:17 |个人分类:软件的使用|系统分类:科研笔记

先简要地说说 LAMMPS 的运行过程,LAMMPS 本身没有图形界面,所有的计算模拟过程都是在 Linux 终端执行,LAMMPS 运行所需要的指令需要用户写在一个输入文件里(input script),一般以.in 为后缀名。在 lammps-10Feb15/examples 文件夹下,有大量的使用 LAMMPS 的实例,是非常好的学习题材。在这里,我们首先用 LAMMPS 来模拟一个非常简单的体系,从而对LAMMPS 有一个初步的认识。我们来做相互作用势为 Lennard-Jones 12-6 的小球在正则系宗下的分子动力学模拟,下面是我们要输入给 LAMMPS 的指令集,全部写在一个叫 LJ.in 的文档里面:

# LJ 12-6 system with NVE ensembleunits ljatom_style atomiclattice fcc 0.8442region box block 0 5 0 5 0 5create_box 1 boxcreate_atoms 1 boxmass 1 1.0velocity all create 3.0 825577 dist gaussianpair_style lj/cut 2.5pair_coeff * * 1.0 1.0 2.5neighbor 0.3 binneigh_modify every 20 delay 0 check nofix 1 all nvetimestep 0.005thermo 1000run 10000clear

LAMMPS的指令统一写成“关键字 参数1  参数2 ...”的形式,每一行只能有一条指令。下面我来解释一下这些指令的意义。

# LJ 12-6 system with NVE ensemble第一行一般是一些说明性的文字,例如解释一下这个输入文件的作用,模拟的是什么系统,作者是谁,什么时候完成的。这样做为了方便以后查阅起来方便。在 LAMMPS里用符号 # 来注释掉不需要执行的指令。

units  ljunits 关键字用来说明整个模拟体系所涉及到的物理量的单位制,后面的参数 lj 是在告诉 LAMMPS 所有物理量都采用无量纲的约化单位。LAMMPS 还有很多种单位制可以选择,这需要根据实际体系来具体考虑,例如“units si”、“units real”等等。

atom_style  atomicatom_style 关键字用来说明模拟里面的基本物质单元所具备的属性,参数 atomic 表示所有的单元都是粗粒化的小球,如果是参数 angle 则表明每一个单元里面还包括了键长和键角这两个属性,参数 charge 表示每一个单元是粗粒化的小球另外还附有电荷。

lattice fcc 0.8442region box block 0 5 0 5 0 5create_box 1 boxcreate_atoms 1 box这 4 条指令的组合用来构造模拟所需要的初始构型,在这里是按照晶格的方式创建原子。第一条指令是说所有的原子的初始位置按照面心立方(FCC)的形式排列,晶格常数为 0.8842; 第二条指令是说模拟的空间区域在 X, Y 和 Z 三个方向上都是有 0 到5 这个范围,注意这里的长度都是无量纲的; 第三条指令是说按照第二条指令指定的空间区域创造一个模拟盒子,所有的原子都只能在这个模拟盒子里; 第四条指令是说按照第一条和第二条指令指定的参数创造一种布满整个模拟盒子的原子,同时所创造的原子的种类也定义为数字“1”。

mass 1 1.0mass 关键字用来给所有属于同一种类的原子设定质量的数值,后面跟着的第一个参数“1”是原子的种类,既要为所有种类为“1”的原子设定质量,第二个参数“1.0”才是质量的数值,这个指令的意思就是所有种类为“1”的原子的质量都是 1.0。

velocity all create 3.0 825577 dist gaussianvelocity 关键字用来给原子设定初始速度,后面的参数 all 表示模拟盒子里所有的原子,不分钟类种类都按照同一种方式设定初始速度。后面的一串参数是说所有的速度都是从满足高斯分布的随机数中抽取获得的。

pair_style lj/cut 2.5pair_coeff * * 1.0 1.0 2.5

这两条指令组合起来规定了原子之间的相互作用的形式,第一条指令是说相互作用为LJ 12-6 势,截断半径为 2.5, 第二条是说 LJ 12-6 中的 ε 和 σ 分别为 1.0 和 1.0,截断半径为 2.5。其实截断半径可以只声明一次,不需要两条语句都重复声明。

neighbor 0.3 binneigh_modify every 20 delay 0 check no

这两条指令组合起来规定了 LAMMPS 如何构建 neighbor list。

fix 1 all nve这条指令的意思是模拟在正则系宗 NVE 下运行。

timestep 0.005这条指令的意思是模拟的步长 δt = 0.005。

thermo 1000每隔 1000 步模拟步长输出一次系统的热力学参量。

run  10000模拟运行 10000 步。

clear模拟运行结束之后,把所有的指令清零。

以上这些内容就是用 LAMMPS 所需要的一个完整的输入文件,这个输入文件实现了一个教科书里常见的“LJ 12-6”的分子动力学模拟。最后一部分内容就是把上一小节写好的输入文件导入 LAMMPS,让 LAMMPS 去做模拟。我们需要在命令行下输入这样一条指令就可以了:mpirun -np number_processors lmp_mpi -in LJ.in其中 number_processors 是你想要用的 CPU 核数,在使用时要根据服务器的硬件性能换成具体的数字,lmp_mpi 就是我们之前编译成功的 LAMMPS 可执行文件,LJ.in就是输入文件,通过关键字 -in 来导入 LAMMPS。比如,我的服务器里有 8 块 CPU核可以用来做并行计算,那么我的指令可以写成:mpirun -np 8 lmp_mpi -in LJ.in

https://blog.sciencenet.cn/blog-301704-975050.html 上一篇:LAMMPS 软件使用入门:2. 软件的安装下一篇:受限于多孔材料内的硬球液体的状态方程 收藏 IP: 159.226.49.*| 热度|


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有