HOOMD Blue文档笔记
基于hoomd 1.0.2 userdoc
3. 快速开始
例程:
from hoomd_script import *
# create 100 random particles of name A
init.create_random(N=100, phi_p=0.01, name=’A’)
# specify Lennard-Jones interactions between particle pairs
lj = pair.lj(r_cut=3.0)
lj.pair_coeff.set(’A’, ’A’, epsilon=1.0, sigma=1.0)
# integrate at constant temperature
all = group.all();
integrate.mode_standard(dt=0.005)
integrate.nvt(group=all, T=1.2, tau=0.5)
# run 10,000 time steps
run(10e3)
输出:
(版权信息)
-----
(运行到的每一行代码)
starting run **
Time 00:00:00 | Step 10000 / 10000 | TPS 35417.9 | ETA 00:00:00 --每过10秒时间统计。已运行时间(时:分:秒),运行步长,平均每秒多少步,预计剩余时间。
Average TPS: 35405
---------
-- Neighborlist stats: --统计信息,此处只有neighbor list输出统计信息。不同脚本输出的统计信息不同。
370 normal updates / 100 forced updates / 0 dangerous updates
n_neigh_min: 0 / n_neigh_max: 10 / n_neigh_avg: 2.41
bins_min: 0 / bins_max: 6 / bins_avg: 1.5625
run complete **
每行代码的分析:
1. 每个hoomd脚本的第一行都需以
from hoomd_script import *
开头,导入hoomd库。例如init.creat_random()这样的过程都是在此库中定义的。
2. hoomd_script导入后,系统必须先初始化,此处为
init.create_random(N=100, phi_p=0.01, name=’A’)
表示创建了一个系统,包含100个名为’A’的粒子。phi_p表示填充率(Packing fraction)。
3. lj = pair.lj(r_cut=3.0) 表示创建一个截断半径为3.0的LJ力,变量lj为pair.lj的实例。
4. lj.pair_coeff.set(’A’, ’A’, epsilon=1.0, sigma=1.0)添加LJ力的参数:A与A之间有ε=1.0,σ=3.0的LJ力。
5. all = group.all();
integrate.mode_standard(dt=0.005)
integrate.nvt(group=all, T=1.2, tau=0.5)
选择对力积分的模式,在一个步长下只能有一种积分模式。此处选择标准模式,步长设为0.005;为分组all指定使用恒温条件下的动力学方法(Nosé-Hoover thermostat),对所有粒子使用。温度T设为1.2,τ参数(Nosé-Hoover thermostat中的耦合常数)设为0.5。
6. run(10e3) 用run命令启动模拟。在此示例中仅跑10000步,实际研究中的计算通常需消耗数天。一个脚本中不限制使用数个run命令,可在一个run完成后修改参数运行下一个run。
Python中函数变量的传递通过键值对指定:name=value,实参的顺序是任意的。例如,源码中的表示:
init.create_random
( N,
phi_p,
name = "A",
min_dist = 1.0
)
N:创建的粒子数
phi_p:填充率(Packing fraction)
name:为粒子类型指定名称
min_dist:初始化排布的粒子间最小距离
文档中国有=号的说明此参数有默认值,使用时可以省略;没有默认值的则不能省略。
4. 命令行参数