大家好,欢迎来到IT知识分享网。
Amesp
。为了进一步降低程序使用的门槛并弥补一些功能上的短板,我们尝试为
Amesp
增加一个接口程序
——PyAmesp
,通过
ASE (Atomic Simulation Environment)
调用
Amesp
进行理论计算,实现
Amesp
与
ASE
的集成与
“
联姻
”
。本文将给出
PyAmesp
的安装过程,并对
ASE
做简要介绍,随后展示利用
ASE
调用
Amesp
进行结构的优化与过渡态的计算。(注:本文适合具备一定
Python
和
ASE
基础的读者,如果您对
ASE
及其使用方法不熟悉,可以登录
ASE
官网
https://wiki.fysik.dtu.dk/ase/
获取更多信息。
)
. ASE
介绍
简介
是一个旨在原子和电子尺度上建立、控制、可视化和分析计算结果的
Python
模块。
ASE
提供了大量的基础类(
Class
),例如
“Atoms”
存储了与原子相关的属性与位置的信息,可以通过
ASE
的
io
模块实现不同结构文件之间的格式转换。同时
ASE
也提供了大量电子结构计算程序代码的接口,可将能量、能级、力、应力等诸多信息导入
ASE
,从而实现以
ASE
作为优化器进行结构优化、分子动力学、过渡态搜索,以及预览分子
/
晶体结构、绘制声子谱和能带等结果的分析工具。在
Python
语言强大的语法和生态加持下,通过
ASE
可以轻松定义和控制分子或晶体结构和计算参数,实现复杂的计算化学工作流,大大提升研究者的工作效率,并在一定程度上避免重复造轮子。
为什么让
ASE
与
Amesp
联姻?
ASE
与
Amesp
进行联姻,可以利用
ASE
转换
Amesp
的输入输出文件,并调用
Amesp
使用更多的优化算法进行结构优化以及
CI-NEB
或
Dimer
实现过渡态搜索,即
Amesp
变为一个
Calculator
,由此达到从建模到格式转换,再到计算、分析与可视化计算结果,实现
Amesp
计算的
“
一条龙
”
服务。
. PyAmesp
安装
Python
和
ASE
(
Python
版本
≥3.6
,
NumPy
版本
≥1.11.3
,
ASE
版本
≥3.20.0
。
Python
安装完成后,可通过
pip install ase
自动安装
ASE
)。
PyAmesp
可在
github
进行下载:
:
tar -zxvf PyAmesp.tar.gz
cd PyAmesp
pip install -e
Amesp
手册正确设置相关环境变量。
. PyAmesp
包的使用方法
Diels–Alder
反应为例,通过
PyAmesp
实现
ASE
调用
Amesp
完成结构优化和搜索过渡态的过程。在本例中我们的计算参数是:
12
核心处理器且每核心内存最大占用为
1 GB
,计算的方法基组为
M06-2X/6-31G
,积分格点使用
grid5
级别,其余选项采用
Amesp
中的默认设置。
1.
反应物及产物结构优化
1,3-
丁二烯以及产物环己烯,将这些结构保存为
xyz
或者
Gaussian
的
gjf
等一系列格式。然后我们编写
Python
程序,通过
ASE
的
io
模块将结构按照
Atoms
类格式读入:(注:
>>>
为
Python
交互式解释器的提示符,不用输入)
> from ase import io
'product' > label =
'%s.xyz' % label) > atoms = io.read(
Amesp
并将其指定为
atoms
的计算引擎:
> from PyAmesp import Amesp
> amesp = Amesp(atoms=atoms,
label=label,
maxcore=1024, npara=12,
charge=0, mult=1,
keywords=['m06-2x', '6-31g','grid5', 'force']
)
> atoms.calc = amesp
keywords
必须手动指定关键字
force
。接下来使用
optimize
模块的
BFGSLineSearch
优化器对结构进行优化直至力收敛到
0.02 eV/Å
,并保存优化轨迹:
> from ase.optimize import BFGSLineSearch
> dyn = BFGSLineSearch(atoms)
'%s.traj' % label, 'w', atoms) > traj = io.Trajectory(
> dyn.attach(traj)
0.02) > dyn.run(fmax=
PyAmesp/Examples/Ex1/RunAmesp.py
。最终程序经过
8
个
BFGS
步骤达到收敛,并将优化过程中结构及相应的能量与受力等信息保存到
product.traj
中。通过以下命令:
ase gui product.traj
ASE
自带的预览器查看结果,程序将会默认显示优化后的分子结构以及能量相对变化,如图
1
所示。在菜单栏中的【视图】
–
【简要信息】,或是用快捷键
Ctrl+I
来查看当前结构的能量和受力。在菜单栏中的【文件】
–
【保存】或者通过快捷键
Ctrl+S
可以将整个轨迹或者当前结构导出为其他格式。
图1. 利用ASE预览器查看优化的几何结构和相对能量
BFGSLineSearch
,
ASE
还提供了如
FIRE
、
GPMin
等优化器,可参考
https://wiki.fysik.dtu.dk/ase/ase/optimize.html
,此处不再赘述。除了
ASE
所提供的优化器,
PyAmesp
也支持使用
Gaussian
作为优化器通过
External
关键字对
Amesp
进行调用,例如对反应物结构
reactant.xyz
进行优化,与读取
Amesp
参数类似,但从指定计算引擎和设置优化器开始,将会与上面
BFGSLineSearch
优化产物的例子有些许差别,需要从
PyAmesp
模块导入
GaussianExternal
类来根据
Amesp
设置的参数自动产生调用脚本
gaussian_amesp.py
:
> from PyAmesp import GaussianExternal
> gext = GaussianExternal(label=label, parameters=amesp.parameters)
> gext.write_script()
ASE
对
Gaussian
的接口指定
Gaussian
使用
External
关键字调用
gaussian_amesp.py
脚本进行优化:
> from ase.calculators.gaussian import Gaussian, GaussianOptimizer
'\'python3 gaussian_amesp.py\'') > gau = Gaussian(label=label, external=
> opt = GaussianOptimizer(atoms, gau)
'tight', steps=100, opt='nomicro,gdiis') > opt.run(fmax=
ASE
的
optimize
模块不同,优化过程的相关信息将会记录在
Gaussian
的输出文件
reactant.log
中,也可以通过
ASE
的预览器查看
log
文件,本例经过
30
步优化达到收敛。上述案例的完整程序可以参考
PyAmesp/Examples/Ex2/RunAmesp.py
,但需要注意的是这种使用方法还处于测试阶段,暂不确定这种调用形式是否为最终设计。
过渡态搜索
ASE
调用
Amesp
进行
CI-NEB
或者
Dimer
计算,从而得到
Diels–Alder
的反应过渡态。下面的案例将使用
CI-NEB
搜索该反应的过渡态(该案例参考了
ASE
官网
NEB
的例子
https://wiki.fysik.dtu.dk/ase/ase/neb.html
)。先将前面优化得到的
traj
进行读取,然后建立一个
6
帧的轨迹,首尾分别为反应物和产物:
>>> from ase import io
>>> ini = io.read('reactant.traj')
>>> fin = io.read('product.traj')
>>> images = [ini.copy() for i in range(6)]
>>> from PyAmesp import Amesp
'neb' label =
>>> for i,img in enumerate(images):
amesp = Amesp(…) #这里参数与上面相同,作为示例只是省略了没写
img.calc = amesp
>>> images[-1] = fin
NEB
类并进行
idpp
插值获取初始的
chain
:
>>> from ase.neb import NEB
>>> neb = NEB(images, climb=True)
'idpp') neb.interpolate(method=
LBFGS
优化直至受力收敛到
0.02 eV/Å
并保存最终的
chain
轨迹:
'%s.traj' % label) > dyn = LBFGS(neb, trajectory=
0.02) > dyn.run(fmax=
'%s.json' % label, images) > io.write(
58
步
LBFGS
优化找到过渡态,其结构如图
2
所示。
图2. ASE预览器查看过渡态结构以及轨迹的相对能量
PyAmesp/Examples/Ex3/RunAmesp.py
。为了更高效获得这个过渡态的结构,可以先以受力收敛
0.5 eV/Å
为标准使用
CI-NEB
优化,然后用
Dimer
方法做更细致的优化。
Dimer
计算的具体过程这里不再详述,可以参考
PyAmesp/Examples/Ex4/RunAmesp.py
,频率分析相关的功能目前我们还并没有集成在
PyAmesp
当中。
.
总结
PyAmesp
的功能、安装以及使用方法。通过使用
Python
编写
PyAmesp
,使得
ASE
能够调用
Amesp
完成优化以及过渡态等计算任务。通过
ASE
与
Amesp
的联姻可以为量子化学计算提供更多的选择性与更高的灵活性,进而更加高效地进行理论计算,探索物质的特性和反应机制。
Amesp
的发展逐渐成熟,其作为
Calculator
的功能将会进一步扩展。同时
Amesp
还可以与其他程序进行联合,实现更复杂的计算任务。相信随着时间的推移,我们将能够利用
Amesp
的强大功能,以及与其他程序的联合使用,开展更深入和复杂的探索与研究。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/159087.html