快捷下单入口 关于 合作 招聘 新人手册 会员中心

    热线:400-152-6858

    测试狗科研服务

    预存 免费试测 登录
    Document
    当前位置:文库百科文章详情
    ASE原子模拟环境入门之结构优化: H2O
    来源: 时间:2022-12-16 16:40:21 浏览:3200次

    我们来计算一下H2O分子的结构

    练习:创立一个Atoms对象来代表一个水分子,提供分子的化学符号,猜测没各原子的位置。将它可视化,保证分子呈V字形。

    练习:使用GPAW给这个猜测的H2O分子运行一个自洽计算。




    优化器


    我们接下来要优化几何构型。ASE提供了几种优化算法,可以在配备求解器的atom上运行:

    
    

    from ase.optimize import BFGS

    opt = BFGS(atoms, trajectory='opt.traj', logfile='opt.log')

    opt.run(fmax=0.05)

    练习:运行一个结构优化,计算H2O的平衡几何构型。

    上面的trajectory关键字确保中间几何构型的轨迹被写入opt.traj。

    练习:将输出的轨迹可视化,并动态地播放。用鼠标拖动选框选择水分子的三个原子——这将显示它们的夹角。H2O的H-O-H夹角是多少?

    在ASE中,如果我们知道正确的语法,我们也可以通过编程来做事情:

    
    

    from ase.io import read

    atoms = read('opt.traj')

    print(atoms.get_angle(0, 1, 2))

    print(atoms.get_angle(2, 0, 1))

    print(atoms.get_angle(1, 2, 0))

    有关Atoms对象的文档提供了一个很长的方法列表。



    G2分子数据集


    ASE知道许多常见的分子,所以我们实际上不需要自己输入所有的分子坐标。就是这么幸运,ase.build.molecule()函数做的正是我们需要的:

    
    

    from ase.build import molecule

    atoms = molecule('H2O', vacuum=3.0)

    这个函数从G2测试集返回一个分子,如果我们能记住分子的确切名称,这就很好了。如果我们没有记住所有的分子名,我们使用G2测试集的更通用的模块ase.collections.g2:

    from ase.collections import g2

    print(g2.names)  # These are the molecule name

    satoms = g2['CH3CH2OH']

    view(atoms)

    view(g2)  # View all 162 systems




    使用其它计算软件


    我们同样可以使用其它计算软件,通常是通过接口(sockets)来访问的,比如form  ase.calculators.emt import EMTfrom  ase.calculators.aims import Aims。有关列表,请参见ase.calculators或运行:

    
    

    $ ase info --calculators

    我们以计算软件FHI-Aims为例。用户自行安装FHI-Aims。然后我们使用FHI-Aims来进行同样的弛豫计算。但在上面的列表中,Aims(可能)并不是可用的。我们首先需要告诉ASE如何运行Aims。这意味着: 1)用于运行Aims的命令;

    2)在哪里可以找到有关的信息。 我们可以通过在shell中设置环境变量来实现:

    $ export ASE_AIMS_COMMAND=aims.x

    $ export AIMS_SPECIES_DIR=/home/alumne/software/FHIaims/species_defaults/light

    ase info --calculators命令可以告诉我们,它认为Aims可执行文件名为aims.x

    然而,如果我们打开一个新的shell,它会忘记这一点。如果我们又不想在这些电脑上修改.bashrc文件,那么我们可以在Python脚本中设置这些变量:

    
    

    import os

    os.environ['ASE_AIMS_COMMAND'] = 'aims.x'

    os.environ['AIMS_SPECIES_DIR'] = '/home/alumne/software/FHIaims/species_defaults/light'

    练习:使用ASE调用FHI-Aims计算软件运行一个H2O结构优化计算

    要启用力的计算,需要compute_forces=True。Aims需要一个明确给定的XC泛函,所以我们将xc='LDA'。xc关键字由几个ASE计算器支持,可以更容易地指定常用的xc泛函。

    运行之后,会出现一下新的文件。ASE会先建立control.ingeometry.in,然后在这两个输入文件的基础上运行FHI-Aims,产生aims.out。一定要检查一下这些文件。作为完美主义者和偏执狂,我们当然期望保证ASE设置的每一个参数都是我们所设想的。

    大多数ASE计算器可以使用calc.write_input_file(atoms)生成一个文件,而不触发计算。例如,如果您希望现在生成文件,但是以后运行它们(无论是否使用ASE),这是非常有用的。

    ASE知道许多文件格式。ase.io.read()可以读取输入文件和输出文件,并返回Atoms。这些文件也可以用ASE  GUI直接打开。

    注意,默认情况下,后续的计算将相互覆盖。因此Aims输入和输出文件对应于结构弛豫的最后一步。ase.optimize的文档会告诉我们,我们可以通过添加一个“观察者”(observer)来阻止这种覆盖的行为,或者使用更灵活的ase.optimize.Dynamics.irun()方法来强制将不同的步骤放到不同的目录中。




    附录:计算器与代码之间的通信


    下面的知识对于正常使用ASE不是必要的。除非您对如何优化ASE和外部计算器之间的通信感兴趣,否则您可以跳过。

    不同的计算器以不同的方式与计算代码通信。GPAW是用Python编写的,因此ASE和GPAW运行在同一个进程中。然而,FHI-aims是一个单独的程序。Aims计算器为我们所做的是生成一个输入文件,运行FHI-aims,读取输出,并返回结果。

    我们刚做了一个涉及多个几何步骤的弛豫。每一步都启动一个新的Aims流程,然后停止。这是低效的,因为一个步骤的基态电荷密度和波函数将是下一个步骤的一个很好的初始猜测,降低了收敛所需的步骤数。但是当程序终止时,这些量就丢失了。为了在结构优化和动力学方面获得最佳性能,我们需要避免这种效率损失。

    许多ASE计算器支持更高级的通信方式。这些计算器可以通过管道(pipes)(Lammps, CP2K)或接口(sockets)(Siesta, Aims,  Espresso)与持久外部进程通信,或者它们可以通过直接库调用(Lammpslib, GPAW)在同一进程中工作。

    ASE可以使用i-PI协议通过接口(sockets)与FHI-aims 通信(http://ipi-code.org/)。这是通过将计算器包装在ase.calculators.socketio.SocketIOCalculator中来实现的。接口(sockets)计算器将使用它包装的计算器来启动一个计算,然后运行它。

    关于接口(sockets)I/O计算器的文档已经提供了完整的示例,因此我们只需要稍作调整就可以在本地机器上运行它们。

    选做练习:给予我们刚才使用FHO-aim进行弛豫计算的例子,写一段代码使用ase.calculators.socketio.SocketIOCalculator运行同样的计算

    你可以运行python3  myscript.py来查看计算总共花了多长时间。在接口(sockets)上运行弛豫能得到多大的加速?INET接口(sockets)通常具有高延迟。如果你没有看到太多的加速,这可能是原因。在这种情况下,尝试切换到UNIX接口(sockets)。

    接口(sockets)I/O计算器自动生成一个输入文件,并立即启动计算。因为它只启动流程一次,所以后续步骤不会相互覆盖,我们可以在aims.out中找到所有的中间步骤。

    练习答案

    GPAW优化

    
    

    from ase import Atoms

    from ase.optimize import BFGS

    from gpaw import GPAW

    atoms = Atoms('HOH',positions=[[0, 0, -1], [0, 1, 0], [0, 0, 1]])

    atoms.center(vacuum=3.0)

    calc = GPAW(mode='lcao', basis='dzp', txt='gpaw.txt')

    atoms.calc = calc

    opt = BFGS(atoms, trajectory='opt.traj')

    opt.run(fmax=0.05)

    FHI-aims优化

    
    

    import os

    from ase import Atoms

    from ase.optimize import BFGS

    from ase.calculators.aims import Aims

    os.environ['ASE_AIMS_COMMAND'] = 'aims.x'

    os.environ['AIMS_SPECIES_DIR'] = '/home/alumne/software/FHIaims/species_defaults/light'

    atoms = Atoms('HOH',positions=[[0, 0, -1], [0, 1, 0], [0, 0, 1]])

    calc = Aims(xc='LDA', compute_forces=True)

    atoms.calc = calc

    opt = BFGS(atoms, trajectory='opt-aims.traj')

    opt.run(fmax=0.05)

    FHI-aims/socket-io优化

    import os

    from ase import Atoms

    from ase.optimize import BFGS

    from ase.calculators.aims import Aims

    from ase.calculators.socketio import SocketIOCalculator

    os.environ['ASE_AIMS_COMMAND'] = 'aims.x'

    os.environ['AIMS_SPECIES_DIR'] = '/home/alumne/software/FHIaims/species_defaults/light'

    atoms = Atoms('HOH',positions=[[0, 0, -1], [0, 1, 0], [0, 0, 1]])

    opt = BFGS(atoms, trajectory='opt-aims-socketio.traj')

    aims = Aims(xc='LDA',compute_forces=True,use_pimd_wrapper=('UNIX:mysocket', 31415))

    with SocketIOCalculator(aims, unixsocket='mysocket') as calc:

       atoms.calc = calc

       opt.run(fmax=0.05)


    计算狗·模拟计算

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

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

    2019-10-25

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

    2021-01-22

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

    2021-06-19

    基础理论丨一文了解XPS(概念、定性定量分析、分析方法、谱线结构)

    2020-05-03

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

    2019-10-25

    Zeta电位的基本理论、测试方法和应用

    2020-08-24

    项目推荐/Project
    第一性原理-NO3RR

    第一性原理-NO3RR

    第一性原理-AIMD

    第一性原理-AIMD

    热门文章/popular

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

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

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

    基础理论丨一文了解XPS(概念、定性定量分析、分析方法、谱线结构)

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

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

    微信扫码分享文章

    意见反馈

    有奖举报

    商务合作

    ...

    更多

    公众号

    关注我们 了解更多

    小程序

    随时预约 掌握进度

    举报有奖

    TEL: 191-3608-6524

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

    举报内容:

    200

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

    意见反馈

    Suggestions

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

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

    200

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

    收起

    01

    专属信用额度,先测后付0元下单

    02

    下单享高额积分,万千好礼免费兑

    200
    200元无门槛优惠券
    立即激活 立即下单
    已使用
    已作废

    全流程在线可视化,便捷高效触手可及

    如下单过程中有任何疑问或需要帮助,请随时咨询专属顾问~
    9
    9折无门槛优惠券

    支付一笔订单后可领取

    立即领取 立即下单
    已使用
    已作废

    免费测+惊喜盲盒+高额福利,多重福利大放送

    新人免费测

    双双开盲盒(100%中奖)

    邀请人专享

    受邀人专享

    创建/加入团队,解锁定制化权益

    01

    1500元团队专属优惠券

    02

    万元大额信用额度,享先测后付

    03

    团队成员统一开票报销;

    04

    专业工程师课题专属服务

    领取成功,请下单
    请您支付一笔订单后才可以领取优惠券
    Document
    关于我们 新手帮助 测试干货 商务合作 基金查询 相关资质 模拟计算 现场测试 服务项目 科研绘图 同步辐射 电池行业

    联系方式/contact

    400-152-6858

    工作时间/work time

    09:00-18:00

    测试狗公众号

    关注我们 了解更多

    测试狗小程序

    随时预约 掌握进度

    蜀公网安备51010602000648号

    蜀ICP备17005822号-1

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

    Copyright@测试狗·科研服务