-
作者
:
御剑江湖
收录日期
: 2011-03-31
发布日期
: 2011-03-24
Commands
描述了
lammps
输入文件的格式和在定义
lammps
模拟所需要的命令
.
1.1 LAMMPS input script
p>
我们用
lammps
做分子动力学模拟
p>
,
需要一个输入文件
.
lammps
在执行计算的时
候
,
从这个文本文件中逐行读入命令
.
大多数情况
,
lammps
输入文件中各个命令的顺序并
不是很重要
.
但是你要注意以下几点
:
(1)
lammps
并不是将你的输入文件全部读入之后才开始进行计算的
,
或者说
,
每
条命令在它被读入之后就会起作用了
.
注意
,
下面两组命令的执行效果是不相同的
.
timestep 0.5
run
100
run 100
和
run
100
timestep 0.5
run
100
(2)
有些命令只有在另一些命令已经被定义的情况下才有效
.
例如如果你要设定
一组原子的温度
,
那么用
group
命令定义哪些原子属
于这个组才行
.
(3)
还有一种情况就是
:
命令
B
要用到命
A
设置的一些数值
,
这样你也不能颠倒
这两个命令的顺序
.
每个命令的详细介绍中的
Restr
ictions
部分会说明要使用该命令定义的时候哪些命
令必
须要被预先定义
.
如果你的输入文件书写的格式有问题
, lammps
在执行的时候会提示
ERROR
或者
WARNING ,
出现类似信息时
,
你可以到手册的第九章中查询原因
.
1.2 Parsing rules
输入文件中的每一非空行都被认为是一条命令
.
lammps
中命令的书写是对大小写
敏感的
,
不过一般的命令和参数都是小写的
,
大写字母用于极少数的情况
.
(1)
命令行后的
&
表示这一行跟下一行是同一条命令
.
这一点跟
FORTRAN
很
像
.
(2)
命令行最开始的
#
表示这一行在执行过程中被忽略
,
你可以用它来写注释
.
(3)
$$
是跟声明变量有关系的
,
我暂时还没用到过
,
具体请参阅
p>
variable
命令的
详细介绍
.
(4)
命令行被
tabs,
spaces<
/p>
间隔成各个
“
words
”
,
注意这里的
“
words
”
可以包含字
母、数字、下划线、或标点符号
.
(5)
一行中第一个词是命令名
,
后续的词是相关的参数
.
(6)
双引号内的文字空格被整体地当作一个参数
,
其中的
#
或
$$
就没有前面说
的作用了
.
1.3 Input script structure
lammps
的输入文件一般分为<
/p>
4
个部分
Initialization
, Atom definition, Settings, Run
a
simulation
后面的两个部分可以按照需要多次重复
.
Remember
that
almost
all
the
commands
need
only be used if a non-default value is
desired.
(1) Initialization
在
你
的
p>
模
拟
体系
定
义
之前
,
一
些
参数必
须
要
被设
置
.
相
关的命
令
有
:units,
dimension, newton,
processors, boundary, atom_style, atom_modify.
units:
选择单位系统
, lammps
提供了
lj
、
real
、
metal
三种单位系统
dimension: 2d
模拟还
是
3d
模拟
,
默认是
3d
boundary:
边界条件:周期性边界
< br>or
自由边界
atom_style:
定义你的模拟体系中的原子属性
,
注
意这个
style
要区分后面设置力
场
参数时命令里提到的
atom type
还有
,
这些命令告诉
lammps
在你的模拟中使用何种力场
:
pair_style,
bond_style,
angle_style, dihedral_style,
improper_style.
(2) Atom
definition
lammps
提供
3
种方式定义原子
:
①
通过<
/p>
read_data
或
read_res
tart
命令从
data
或
restart
文件读入
,
这些文件可以
包含分子拓扑结构信息
.
②
按照晶
格的方式创建原子
(
不包含分子拓扑信息
),
你会用到这几个命令
:
lattice,
region, create_box,
create_atoms.
③
p>
已经设置好的原子可以用
replicate
命令复制以生成一个更大规模的模拟体系
.
(3)Settings
原子和分子的拓扑信息定义好后
,
你要制定一系列的设置
:
力场系数、模拟参数、
输出选项
等等
.
力场系数可以通过这些命令定义
:
pair_coeff,
bond_coeff,
angle_coeff,
dihedral_coeff,
improper_coeff,
kspace_style,
dielectric,
special_bonds.
注意
,
其实力场系数也可以在
data
文件中制定
,
详见
read_data
命令介绍
.
各
种
模
p>
拟
参
数
由
这
些
命
令
设
置
:
neighbor,
neigh_modify,
group,
timestep,
reset_timestep, run_style, min_style,
min_modify.
我觉得
f
ix
命令是
lammps
中很重要的一
个命令
,
它包括很多子命令
,
p>
可以施加一
系列的边界条件、时间积分、诊断选项等等
.
模
拟
p>
过
程
中
通
过
下
面
的
命
令
制
定
< br>lammps
进
行
各
种
计
算
:
compute,
compute_modify,
variable.
输出选项由
thermo, dump,
restart
命令设置
.
(4)Run a simulation
p>
使用
run
命令开始一个分子动力学模拟<
/p>
,
用
minimize
命令来实施能量最小化
(molecular
statics),
使
用
temper
命
令
来
p>
进
行
parallel
tempering(replica-exchange)
simulation.
1.4
Commands listed by category
p>
这一节分门别类地列出了
lammps
的所
有命令
.
注意有些命令的有些选项是特定的
lammps
package
的一部分
,
也就是说
只有在编译
lammps
的时候包括了这些
packages,
这
些命令才能被使用
.
默认情况下编译
lammps
并不包括所有的
packages.
这些依赖关系在
相关命
令的详细介绍中
Restrictions
部分中列出了
.
Initialization:
atom_modify,
atom_style,
boundary,
dimension,
newton,
processors, units
Atom
definition:
create_atoms,
create_box,
lattice,
read_data,
read_restart,
region,
replicate
Force
fields:
angle_coeff,
angle_style,
bond_coeff,
bond_style,
dielectric,
dihedral_coeff,
dihedral_style,
improper_coeff,
improper_style,
kspace_modify,
kspace_style,
pair_coeff, pair_modify, pair_style, pair_write,
special_bonds
Settings:
communicate,
dipole,
group,
mass,
min_modify,
min_style,
neigh_modify, neighbor, reset_timestep,
run_style, set, shape, timestep, velocity
Fixes: fix, fix_modify,
unfix
Computes:
compute, compute_modify, uncompute
Output:
dump,
dump_modify,
restart,
thermo,
thermo_modify,
thermo_style,
undump,
write_restart
Actions:
delete_atoms,
delete_bonds,
displace_atoms,
displace_box,
minimize,
run, temper
Miscellaneous: clear, echo, if,
include, jump, label, log, next, print, shell,
variable
作者:御剑江湖
一、各种文件的介绍:
1 in
file:
建立该文件以便程序的写入
2 log
file
:写入状态信息(
if the switch is
used?
)
3 screen file
决定结果的是否进行屏幕输出
4 var name file
定义一个变量,
name
指变量名,
可为字母也可为字符串,
p>
形式
$$x / $$ {abc}
二、屏幕输出:
结果显示在屏幕上,同时在
log file
中。开始前
LAMMPS
计算出所需的存储空间,运行
中每隔几个时步显示一次热力学状态,直至输出最终状态。
Loop time of 49.002 on 2
procs for 2004 atoms
该部分显示了几个大类的计算时间
Pair time (%) = 35.0495 (71.5267)
Bond time (%) = 0.092046
(0.187841)
Kspce time (%) =
6.42073 (13.103)
Neigh time
(%) = 2.73485 (5.5811)
Comm
time (%) = 1.50291 (3.06703)
Outpt time (%) = 0.013799 (0.0281601)
Other time (%) = 2.13669
(4.36041)
Nlocal: 1002 ave, 1015 max, 989 min
每个处理器中特定原子的数目
Histogram: 1 0
0 0 0 0 0 0 0 1
Nghost: 8720 ave, 8724 max,
8716 min
Histogram: 1 0 0 0
0 0 0 0 0 1
Neighs: 354141
ave, 361422 max, 346860 min
Histogram: 1 0 0 0 0 0 0 0 0 1
Total # of neighbors = 708282
Ave neighs/atom = 353.434
Ave special neighs/atom = 2.34032
Number of reneighborings =
42
Dangerous reneighborings
= 2
当运用了能量最小化命令进行能量最小化时,还将出现如下所示语句:
Minimization stats:
E
initial,
next
?
to
?
last,
final
=
?
0.895962
?
2.94193
?
2.94342
(显示初终能量以及
next-to-last
循环的能量)
Gradient 2
?
norm
init/final= 1920.78 20.9992
(给出能量梯度,即所有原子的受力)
Gradient
inf
?
norm init/final= 304.283
9.61216
2-form<
/p>
是力向量的长度,
inf-
form
是最
大构成?
Iterations = 36
循环次数
Force evaluations = 177
对力进行评定的次数
当程序中有
kspace_style
long
?
range Coulombics
solve
,将会显示以下语句:
FFT time (% of Kspce) = 0.200313
(8.34477)
完成
3d F
FT
计算的时间及在总时间中占
的百分比
FFT Gflps 3d
1d
?
only = 2.31074 9.19989
每秒执行的浮点指令次数(
flops
)为
5N*log(2N),N<
/p>
为
3
维晶体中的节点数
< br>
The 3d rate is with
communication; the 1d rate iswithout (just the 1d
FFTs).
在
GPU
(图形处理单元)上的运行
p>
三、指令系统介绍(
*
)
< br>
一般来说指令的顺序并不重要,胆在以下几种情况中必须注意:
1
LAMMPS
并不是全部读完所有指令才执行,
而是读一行执行一次,
因
此下面
的两组语句是不同的:
timestep 0.5
以下的两个模拟其步长均为
0.5 fmsec
run 100
run 100
run 100
第一个模拟采用缺省值步长为
1 fmsec
timestep 0.5
run 100
第二个采用步长为
0.5 fmsec
2
某些指令只在其他指令之后才生效
,如要得到系统温度必须先进行各种定义
3
若
A
指令在
B
之前,
B
可
以引用
A
定义的变量
-
-
-
-
-
-
-
-
-
上一篇:GD32F10x到GD32F1x0-软件移植说明
下一篇:防火阀工作原理资料