网站地图 关于 合作 招聘 帮助 会员中心

    热线:400-152-6858

    测试狗科研服务

    预存 定制
    Document
    当前位置:文库百科文章详情
    ASE原子模拟环境入门之操作原子
    来源: 时间:2022-12-16 16:36:30 浏览:2136次

    银吸附在镍板上

    我们建立一个由四个Ni原子组成的单层平板和一个Ag吸附原子构成的模型。

    定义原子板

    
    

    >>> from math import sqrt

    >>> from ase import Atoms

    >>> a = 3.55

    >>> atoms = Atoms('Ni4',

    ...               cell=[sqrt(2) * a, sqrt(2) * a, 1.0, 90, 90, 120],

    ...               pbc=(1, 1, 0),

    ...               scaled_positions=[(0, 0, 0),

    ...                                 (0.5, 0, 0),

    ...                                 (0, 0.5, 0),

    ...                                 (0.5, 0.5, 0)])

    >>> atoms.center(vacuum=5.0, axis=2)

    看看晶胞和原子的位置:

    
    

    >>> atoms.cell

    Cell([[5.020458146424487, 0.0, 0.0], [-2.5102290732122423, 4.347844293440141, 0.0], [0.0, 0.0, 10.0]])

    >>> atoms.positions

    array([[ 0.        ,  0.        ,  5.        ],

           [ 2.51022907,  0.        ,  5.        ],

           [-1.25511454,  2.17392215,  5.        ],

           [ 1.25511454,  2.17392215,  5.        ]])

    >>> atoms[0]

    Atom('Ni', [0.0, 0.0, 5.0], index=0)

    将这个结构写入一个文件,并通过调用ase.gui来绘制整个系统:

    >>> from ase.visualize import view

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

    >>> view(atoms)

    在查看器(ase  gui)中,可以在所有三个方向上重复单元格(使用Repeat ‣ View window)。从命令行,使用ase  gui -r 3,3,2 slab.xyz

    我们现在在一个高度为h=1.9Å的三原子中心位点添加一个吸附原子 :

    
    

    >>>h = 1.9

    >>> relative = (1 / 6, 1 / 6, 0.5)

    >>> absolute = np.dot(relative, atoms.cell) + (0, 0, h)

    >>> atoms.append('Ag')

    >>> atoms.positions[-1] = absolute

    现在的结构是这样的:

    
    

    view(atoms)




    构造界面


    现在,我们用Ni(111)和水做一个界面。首先我们需要一层水。在这个脚本WL.py中构建了一层水,并保存在文件WL.traj中。

    WL.py

    
    

    import numpy as np

    from ase import Atoms

    p = np.array(

       [[0.27802511, -0.07732213, 13.46649107],

        [0.91833251, -1.02565868, 13.41456626],

        [0.91865997, 0.87076761, 13.41228287],

        [1.85572027, 2.37336781, 13.56440907],

        [3.13987926, 2.3633134, 13.4327577],

        [1.77566079, 2.37150862, 14.66528237],

        [4.52240322, 2.35264513, 13.37435864],

        [5.16892729, 1.40357034, 13.42661052],

        [5.15567324, 3.30068395, 13.4305779],

        [6.10183518, -0.0738656, 13.27945071],

        [7.3856151, -0.07438536, 13.40814585],

        [6.01881192, -0.08627583, 12.1789428]])

    c = np.array([[8.490373, 0., 0.],

                 [0., 4.901919, 0.],

                 [0., 0., 26.93236]])

    W = Atoms('4(OH2)', positions=p, cell=c, pbc=[1, 1, 0])

    W.write('WL.traj')

    现在运行WL.py脚本,从traj文件中读取原子对象:

    
    

    from ase.io import read

    >>> W = read('WL.traj')

    使用视图的看看结构

    我们看看这个单位晶胞

    
    

    W.cell

    Cell([8.490373, 4.901919, 26.93236])

    我们需要一个镍(111)平板,它与水尽可能接近。一个2 × 4正交的fcc111 超晶胞应该足够好了。

    
    

    >>> from ase.build import fcc111

    >>> slab = fcc111('Ni', size=[2, 4, 3], a=3.55, orthogonal=True)

    
    

    slab.cell

    Cell([5.020458146424487, 8.695688586880282, 0.0])

    看看这两个单元晶胞,我们可以看到,如果我们把其中一个单元晶胞在平面上旋转90度,它们的匹配度相差大约2%。让我们旋转单元晶胞:

    W.cell = [W.cell[1, 1], W.cell[0, 0], 0.0]

    用rotate()旋转分子:

    >>> W.rotate(90, 'z', center=(0, 0, 0))

    再将原子放回到晶胞里

    >>> W.wrap()

    wrap()方法仅在启用周期性边界条件时有效。我们在Ni(111)和水之间有2%的晶格失配,所以我们在平面上缩放水的晶胞以匹配平板的晶胞。参数scale_atoms=True表示原子位置应该随单元格缩放。默认值是scale_atoms=False,表示单元格更改时笛卡尔坐标保持不变。

    
    

    >>> W.set_cell(slab.cell, scale_atoms=True)

    >>> zmin = W.positions[:, 2].min()

    >>> zmax = slab.positions[:, 2].max()

    >>> W.positions += (0, 0, zmax - zmin + 1.5)

    最后我们将水复制到平板上:

    >>> interface = slab + W

    >>> interface.center(vacuum=6, axis=2)

    >>> interface.write('NiH2O.traj')

    两个atoms对象的求和,会将两个atoms对象的原子位置都包括进来,而使用第一个atoms对象的超晶胞。


    计算狗·模拟计算

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

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

    2019-10-25

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

    2021-01-22

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

    2021-06-19

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

    2019-10-25

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

    2020-05-03

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

    2021-01-22

    项目推荐/Project
    第一性原理-声子谱

    第一性原理-声子谱

    第一性原理-吸附能

    第一性原理-吸附能

    热门文章/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

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

    收起

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

    联系方式/contact

    400-152-6858

    工作时间/work time

    09:00-18:00

    测试狗公众号

    关注我们 了解更多

    测试狗小程序

    随时预约 掌握进度

    蜀公网安备51010602000648号

    蜀ICP备17005822号-1

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

    Copyright@测试狗·科研服务