

ASE 从入门到精通 第一章
©️ Copyright 2023 @ Authors
作者:刘照清(波本)
*** 📨
日期:2023-08-08
共享协议:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
快速开始:点击上方的 开始连接 按钮,选择 bohrium-notebook:2023-05-31 镜像 和任意配置机型即可开始。
第一章参考: 快速开始ASE | 氮气分子在Cu表面的吸附
🎯 本教程旨在 全面掌握 使用 ASE 模块建立分子,晶体和表面模型并进行计算。
从计算模拟的常用思路出发进行讲解,易于理解与上手
一键运行,你可以快速在实践中检验你的想法。
丰富完善的注释,对于入门者友好。
目标大纲
基于实例掌握 ASE 的建模,可视化与计算方法

- 第一章:ASE快速入门
- 第二章:ASE基础模块简析
- 第三章:ASE表面吸附计算与数据库
- 第四章:ASE全局优化方法
- 第五章:ASE计算扩散与解离性质
- 第六章:ASE分子动力学方法
- 第七章:ASE外接其他软件
- 第八章:ASE高级操作
本章目标
在学习本教程后,你将能够:
- 使用 ASE 定义分子或晶体。
- 计算体系能量并进行结构弛豫。
- 使用 ASE 读取或写入原子文件
- 可视化原子文件
- 使用 ASE 进行分子动力学计算
阅读该教程【最多】约需 12 分钟,让我们开始吧!
0:安装ASE
以Bohrium镜像为例检查ASE是否已经安装。 如果没有安装,我们采用pip快速安装
1.1 原子对象
Atoms 对象是原子的集合。以下是如何通过直接指定两个氮原子的位置来定义 分子的方法
您也可以使用lattice模块构建晶体,该模块返回对应于常见晶体结构的 Atoms
对象。让我们制作一个Cu(111)表面:
直接通过代码构建模型的感觉怎么样?可能心里没有那种“所见即所得”的建模软件踏实。
让我们看看我们的模型构建的怎么样,这可以通过ase.visualize
的view()
方法完成
<Popen: returncode: None args: ['/home/james/apps/anaconda3/envs/pyscf/bin/p...>
view() 将弹出一个 ase.gui 窗口,这个窗口是交互式的,可以更换可视化角度并选择原子等。
但请注意,默认的 viewer 使用的是 ase.gui 窗口,无法在 notebook 中展示。
可以通过指定可选的关键字 viewer=... 来使用备用查看器。
(请注意,这些备用查看器不是ASE的一部分,用户需要单独安装。)
在 bohrium notebook 中,最佳的 viewer 参数是 ngl
或 x3d
ngl
需要 nglview 的支持。一般来说,你的镜像已经安装了nglview,如果没有安装,请执行以下命令
并使用Atoms类的get_potential_energy()方法来使用它计算系统的总能量:
N2 的能量是:0.44034357303561467 Cu 的能量是:11.509056283570382
为了更好地模拟“从体相延伸出去的表面”体系,也为了加快优化速度,一般来说计算表面吸附与反应体系时,会固定相对底面的1-2层原子。
简单起见,此处让我们使用来自 ase.constraints
约束模块的 FixAtoms
将所有 Cu 原子固定,只允许 分子松弛到平衡结构。由于EMT计算器计算速度很快,这块原子固定操作可以不进行。
需要注意的是,被固定的原子仅仅是不参与驰豫,而不是不参与计算。因此,被固定的原子仍然会对体系的总能量产生影响。
现在将拟牛顿最小化器连接到系统并保存轨迹文件。在给定的收敛准则运行优化计算,即所有原子的力应小于某个 fmax:
Step[ FC] Time Energy fmax *Force-consistent energies used in optimization. BFGSLineSearch: 0[ 0] 23:03:22 11.689927* 1.0797 BFGSLineSearch: 1[ 2] 23:03:23 11.670814* 0.4090 BFGSLineSearch: 2[ 4] 23:03:23 11.625880* 0.0409
True
自然,这里也可以采用其他的优化器,比如优化中常用的BFGS
, CG
等等。
Step Time Energy fmax BFGS: 0 23:04:17 11.625880 0.0409
True
到这里我们就得到了弛豫后体系的总能量是 11.803869 eV。
让我们计算一下吸附能。
吸附能: 0.3235194223180837
这将以xyz格式编写文件。可能的格式有:
格式 | 描述 |
---|---|
xyz |
常规的xyz格式(其实是extxyz 格式) |
cube |
高斯立方体文件 |
pdb |
蛋白质数据储存文件 |
traj |
ASE自己的轨迹格式 |
py |
Python脚本 |
此处的extxyz
格式是xyz
格式的加强版,既保留了xyz
格式的基本信息,
又在此基础上增加了对体系各种属性(能量,原子受力,维里)等的读写支持,这种格式的文件被广泛应用于各种软件中,如分子动力学可视化软件Ovito,以及图神经网络机器学习势Nequip
从文件中读取化学信息则常用ase.io
模块的read()
函数,具体的方法如下:
Step[ FC] Time Energy fmax *Force-consistent energies used in optimization. BFGSLineSearch: 0[ 0] 23:19:19 11.689927* 1.0797 BFGSLineSearch: 1[ 2] 23:19:19 11.670814* 0.4090 BFGSLineSearch: 2[ 4] 23:19:19 11.625880* 0.0409 吸附能: 0.3235194223180837
同样可以使用view()
函数对我们优化得到的表面吸附体系进行可视化
0: 0.43838 eV, 0.29518 eV, 0.14320 eV 1: 0.43909 eV, 0.31878 eV, 0.12031 eV 2: 0.44034 eV, 0.44008 eV, 0.00026 eV 3: 0.43926 eV, 0.33273 eV, 0.10653 eV 4: 0.43824 eV, 0.28343 eV, 0.15482 eV 5: 0.44073 eV, 0.43975 eV, 0.00098 eV 6: 0.43846 eV, 0.30187 eV, 0.13659 eV 7: 0.43900 eV, 0.31207 eV, 0.12693 eV 8: 0.44033 eV, 0.43928 eV, 0.00106 eV 9: 0.43934 eV, 0.33987 eV, 0.09947 eV
在本教程中,您学习了在 ASE 中的一些基础方法。
具体而言,您了解到:
- 使用 ASE 定义分子或晶体。
- 计算体系能量并进行结构弛豫。
- 使用 ASE 读取或写入原子文件
- 可视化原子文件
- 使用 ASE 进行分子动力学计算
你有什么问题吗? 欢迎与我们联系 bohrium@dp.tech 。








Linfeng Zhang
量子御坂
王百搭