分子动力学 ASE¶
一些简单的 MD 任务可以使用 ASE 进行。
配置文件¶
首先需要准备 MD 任务的配置文件,具体选项如下:
| 关键词 | 类型 | 默认值 | 描述 |
|---|---|---|---|
emsenbles |
list[dict] |
系综设置,具体可以参见 ASE MD 模块. (logfile 和 trajectory 需要在之后独立设置) |
- |
input_file |
str |
输入坐标文件 | input.xyz |
model_file |
str |
模型检查点文件 | model.pt |
delta_method |
str |
Δ-ML 的基底方法,包括 GFN2-xTB 或 GFN1-xTB |
null |
| init_temperature | float |
初始温度,用于生成 Maxwell-Boltzmann 分布 | 300.0 |
logfile |
str |
用于记录的文件名 | md.log |
append_logfile |
bool |
是否追加写入记录文件 | False |
trajectory |
str |
用于保存 ASE 轨迹文件的文件名 | null |
append_trajectory |
bool |
是否追加写入轨迹文件 | False |
xyz_traj |
str |
将 ASE 轨迹文件转化为 XYZ 文件的文件名 | null |
columns |
list[str] |
XYZ 文件的内容,可选项包括 [positions, numbers, charges, symbols] |
[symbol, position] |
运行模拟¶
运行的命令如下:
xeq md --config <md_config>.yaml
--config / -C:MD 配置文件
示例¶
我们用一个简单的乙醇分子作为例子,ethanol.xyz 文件如下:
9
C -1.09349 0.55265 -0.00631
C -0.05821 -0.56395 0.03427
O 1.23615 -0.02850 0.07966
H -2.11427 0.11600 -0.02264
H -0.95185 1.17082 -0.91799
H -0.99150 1.19819 0.89170
H -0.17341 -1.23408 -0.84802
H -0.21882 -1.18197 0.94271
H 1.47083 0.22681 -0.85074
我们先跑一个能量最小化,使用 FIRE 算法。然后跑 Berendsen 系综的 NVT,配置文件 md_config.json 如下:
input_file: ethanol.xyz
model_file: xpainn-spice-v1.pt
init_temperature: 300. # Kelvin
ensembles:
- name: FIRE
fmax: 0.05 # eV/Å
- name: NVTBerendsen
timestep: 1. # fs
taut: 100. # fs
temperature: 300. Kelvin
loginterval: 1
steps: 100
logfile: ethanol_md.log
trajectory: ethanol.traj
xyz_traj: ethanol_traj.xyz
columns: ["symbols", "positions"]
运行时,会出现 ethanol_md.log 文件记录信息,第一部分大致如下:
Step Time Energy fmax
FIRE: 0 19:33:25 -38.074837 1.3917
FIRE: 1 19:33:25 -38.103050 0.3436
FIRE: 2 19:33:27 -38.098492 1.2037
FIRE: 3 19:33:27 -38.104485 0.9112
...
记录结构优化的信息,直到最大的力小于 0.05 eV/Å 停止优化,进入 NVT 模拟部分,以 1 fs 为步长,跑 100 步,也就是 0.1 ps,每 1 步记录一次,输出如下:
Time[ps] Etot[eV] Epot[eV] Ekin[eV] T[K]
0.0000 -37.7606 -38.1290 0.3684 316.7
0.0010 -37.7556 -38.0653 0.3097 266.2
0.0020 -37.7475 -37.9465 0.1990 171.1
0.0030 -37.7449 -37.8849 0.1400 120.3
0.0040 -37.7481 -37.8991 0.1509 129.8
0.0050 -37.7500 -37.9124 0.1624 139.6
0.0060 -37.7448 -37.8690 0.1242 106.8
...
同时生成的还有 ethanol.traj 文件,是一个二进制文件,用于储存 MD 轨迹,再运行结束后,会将 ethanol.traj 文件,转化为连续 XYZ 文件 ethanol_traj.xyz,如下:
9
Properties=species:S:1:pos:R:3 pbc="F F F"
C -1.10218225 0.54875848 -0.01193573
C -0.07140309 -0.57074911 0.02332978
O 1.27128108 -0.07655755 0.06601411
H -2.12822571 0.14284681 -0.02565174
H -0.98439850 1.17690996 -0.90962738
H -1.00436368 1.19629290 0.87186750
H -0.19869335 -1.25090208 -0.83515112
H -0.17554791 -1.17049901 0.93904376
H 1.49896341 0.25986959 -0.81524918
9
Properties=species:S:1:pos:R:3 pbc="F F F"
C -1.09846592 0.54709868 -0.00898858
C -0.07575809 -0.56946777 0.01911753
O 1.26732655 -0.07780340 0.06985297
H -2.13117389 0.13437607 -0.02308674
H -0.97311841 1.16350768 -0.93634557
H -1.00280830 1.21402345 0.89267969
H -0.17896847 -1.24766090 -0.83289757
H -0.13472330 -1.14195926 0.91959215
H 1.49890315 0.25651489 -0.84056620
...
保存了 ["symbols", "positions"] 这两个信息。以上是简单的 MD 模拟,如果需要更多功能,可以使用 LAMMPS 接口。