网站地图 关于 合作 招聘 帮助

热线:400-152-6858

测试狗科研服务

预存 定制
Document
当前位置:文库百科文章详情
ASE原子模拟环境之计算氮分子在铜表面的吸附能
来源: 时间:2022-12-16 16:32:16 浏览:2069次

本节简要(但不完整)地概述ASE可以做什么。我们将计算氮分子在铜表面的吸附能这是通过计算单独平板和单独分子的总能量来实现的。然后将吸附剂加入板中并使其松弛,计算出该复合体系的总能量。吸附能为孤立能减去复合体系能量之和。这是重新平衡后的系统图片:

 

请看下面的源码:N2Cu.py



from ase import Atoms

from ase.calculators.emt import EMT

from ase.constraints import FixAtoms

from ase.optimize import QuasiNewton

from ase.build import fcc111, add_adsorbate

h = 1.85

d = 1.10

slab = fcc111('Cu', size=(4, 4, 2), vacuum=10.0)

slab.calc = EMT()

e_slab = slab.get_potential_energy()

molecule = Atoms('2N', positions=[(0., 0., 0.), (0., 0., d)])

molecule.calc = EMT()

e_N2 = molecule.get_potential_energy()

add_adsorbate(slab, molecule, h, 'ontop')

constraint = FixAtoms(mask=[a.symbol != 'N' for a in slab])

slab.set_constraint(constraint)

dyn = QuasiNewton(slab, trajectory='N2Cu.traj')

dyn.run(fmax=0.05)

print('Adsorption energy:', e_slab + e_N2 - slab.get_potential_energy())

假设在你的python和ASE的环境变量设置正确,运行源码文件:



python N2Cu.py

下面我们对代码进行讲解。



Atoms


Atoms对象是原子的集合。下面是通过直接指定两个氮原子的位置来定义N2分子:



>>> from ase import Atoms

>>> d = 1.10

>>> molecule = Atoms('2N', positions=[(0., 0., 0.), (0., 0., d)])

你还可以构建晶体,例如使用晶体模块来构建回与常见晶体结构对应的Atoms对象。让我们做一个Cu(111)表面:

>>> from ase.build import fcc111

>>> slab = fcc111('Cu', size=(4,4,2), vacuum=10.0)



Calculators


ASE调用计算软件可以使用ase.calculators,包括emt、Asap、Dacapo、GPAW、Abinit、Vasp等等。有关完整列表,请参见ASE主页。

这里我们使用有效介质理论(EMT)计算器,因为它非常快,因此对于入门非常有用。我们可以在之前创建的Atoms对象上附加一个计算器:



>>> from ase.calculators.emt import EMT

>>> slab.calc = EMT()

>>> molecule.calc = EMT()

使用Atoms类中的get_potential_energy()方法计算系统的总能量:

>>> e_slab = slab.get_potential_energy()

>>> e_N2 = molecule.get_potential_energy()




结构优化


利用QuasiNewton优化器对吸附在铜表面的N2分子结构进行优化。首先将吸附剂添加到铜板上,例如在顶部位置:

>>> h = 1.85

>>> add_adsorbate(slab, molecule, h, 'ontop')

为了加快弛豫速度,我们利用constraints模块中的FixAtoms使铜原子固定。只有N2分子被允许弛豫到平衡结构:

>>> from ase.constraints import FixAtoms

>>> constraint = FixAtoms(mask=[a.symbol != 'N' for a in slab])

>>> slab.set_constraint(constraint)

现在将QuasiNewton优化器应用到系统并保存轨迹文件。运行优化器直到体系达到收敛标准,即所有原子上的力应小于某个fmax:

>>> from ase.optimize import QuasiNewton

>>> dyn = QuasiNewton(slab, trajectory='N2Cu.traj')

>>> dyn.run(fmax=0.05)




输入-输出


将原子位置写入文件的过程是使用write()函数完成的:

>>> from ase.io import write

>>> write('slab.xyz', slab)

这将写入一个xyz格式的文件。其他格式有:

格式描述
xyz简单的xyz格式
cube高斯cube文件
pdb蛋白质数据库文件
trajASE自有轨迹格式
pyPython脚本

从文件读取这样做:



>>> from ase.io import read

>>> slab_from_file = read('slab.xyz')

如果文件包含多个构型,write()函数的默认写入最后一个构型。但是,我们可以通过以下方式加载特定的构型:

>>> read('slab.traj')      # 最后一个构型

>>> read('slab.traj', -1)  # 同上

>>> read('slab.traj', 0)   # 第一个构型




可视化


可视化原子最简单的方法是view()函数:



>>> from ase.visualize import view

>>> view(slab)

这将弹出一个ase.gui窗口。其他的可视化软件可以通过指定可选关键字viewer=…-选择使用'ase.gui',  ' gopenmol ', ' vmd ',或' rasmol  '中的一个。(注意,这些替代查看器不是ASE的一部分,需要由用户单独安装。)VMD查看器可以采取一个可选的data参数来显示三维数据:

>>> view(slab, viewer='VMD', data=array)




分子动力学


我们看看一个使用VelocityVerlet进行分子动力学计算应用到氮气分子上的例子。我们首先创建一个VelocityVerlet对象,给出它的分子和牛顿定律积分的时间步长。然后,我们通过调用它的run()方法来进行分子动力学计算,并给出要采取的步骤数:

>>> from ase.md.verlet import VelocityVerlet

>>> from ase import units

>>> dyn = VelocityVerlet(molecule, dt=1.0 * units.fs)

>>> for i in range(10):

...     pot = molecule.get_potential_energy()

...     kin = molecule.get_kinetic_energy()

...     print('%2d: %.5f eV, %.5f eV, %.5f eV' % (i, pot + kin, pot, kin))

...     dyn.run(steps=20)


计算狗

评论 / 文明上网理性发言
12条评论
全部评论 / 我的评论
最热 /  最新
全部 3小时前 四川
文字是人类用符号记录表达信息以传之久远的方式和工具。现代文字大多是记录语言的工具。人类往往先有口头的语言后产生书面文字,很多小语种,有语言但没有文字。文字的不同体现了国家和民族的书面表达的方式和思维不同。文字使人类进入有历史记录的文明社会。
点赞12
回复
全部
查看更多评论
相关文章

晶体结构可视化软件 VESTA使用教程(下篇)

2021-01-22

【科研干货】电化学表征:循环伏安法详解(上)

2019-10-25

手把手教你用ChemDraw 画化学结构式:基础篇

2021-06-19

【科研干货】电化学表征:循环伏安法详解(下)

2019-10-25

晶体结构可视化软件 VESTA使用教程(上篇)

2021-01-22

TEM照片处理软件 Digital Micrograph的进阶操作

2020-11-02

项目推荐/Project
第一性原理-自旋密度

第一性原理-自旋密度

第一性原理-锂硫路径

第一性原理-锂硫路径

第一性原理-能带

第一性原理-能带

热门文章/popular

晶体结构可视化软件 VESTA使用教程(下篇)

【科研干货】电化学表征:循环伏安法详解(上)

电化学实验基础之电化学工作站篇 (二)三电极和两电极体系的搭建 和测试

手把手教你用ChemDraw 画化学结构式:基础篇

【科研干货】电化学表征:循环伏安法详解(下)

晶体结构可视化软件 VESTA使用教程(上篇)

微信扫码分享文章

意见反馈

有奖举报

商务合作

公众号

关注我们 了解更多

小程序

随时预约 掌握进度

举报有奖

TEL: 191-3608-6524

如:在网络上恶意使用“测试狗”等相关关键词误导用户点击、恶意盗用测试狗商标、冒称官方工作人员等情形,请您向我们举报,经查实后,我们将给予您奖励。

举报内容:

200

上传附件:
文件格式不正确,请重新上传文件格式不正确,请重新上传文件格式不正确,请重新上传
文件格式:jpg、jpeg、png、gif、tif、doc、docx、ppt、pptx、xls、xlsx、pdf、zip、rar
联系方式
姓名
电话
提交意见

意见反馈

Suggestions

您可以在此留下您宝贵的意见,您的意见或问题反馈将会成为我们不断改进的动力。

意见类型
测试服务
网站功能
财务报账
其他类型
意见内容

200

联系方式
姓名
电话
提交意见

收起

Document
关于我们 新手帮助 测试干货 商务合作 基金查询 相关资质 模拟计算 现场测试 服务项目 科研绘图 同步辐射 全进口设备

联系方式/contact

400-152-6858

工作时间/work time

09:00-18:00

测试狗公众号

关注我们 了解更多

测试狗小程序

随时预约 掌握进度

蜀公网安备51010602000648号

蜀ICP备17005822号-1

成都世纪美扬科技有限公司

Copyright@测试狗·科研服务