用户工具

站点工具


atk:如何弛豫器件体系的几何结构

如何弛豫器件体系的几何结构

在使用QuantumATK进行器件(Device)模型的计算时,如何进行可靠的进行结构优化是常常困扰用户,尤其是初学者的重要问题。在这篇教程中,你会学习到如何利用“刚性”(rigid body)结构限制和简单的优化步骤,来快速、可靠的弛豫一个器件结构的内坐标。

本教程中针对的是一个 A、B 方向上为周期性结构的 “三维” 器件,尤其值得注意的是两端电极是不同种材料构成,这导致了在构建界面时的晶格匹配和由于 A、B 方向应力导致的 C 方向的伸缩,类似的体系还包括:

  • 磁性隧道结一类的多层结构;
  • 同种材料的不同晶向构成电极。

两端电极相同时,不会存在晶格匹配和应力问题,但这里介绍的优化方法也同样适用。

提示

本教程使用特定版本的QuantumATK创建,因此涉及的截图和脚本参数可能与您实际使用的版本略有区别,请在学习时务必注意。

前言

器件结构内坐标的弛豫,是一个冗长费时的过程。主要有两个原因:

双电极体系由三个区域组成:左右两个电极,以及一个由电极扩展层和中间散射区组成的中心区域。在第一性原理计算中,每一部分的几何结构需要单独优化,但是同时中心区域的两电极扩展层必须和相应的电极匹配。

  1. 第一步:优化电极。当优化完电极后,需要确定中心区域的电极扩展层是否匹配优化后的电极。
  2. 第二步:优化中心区域。中心区域的最优长度通常是未知的。对于周期性结构,还需要使应力最小化。但是,应力场对于器件结构来说是不唯一确定的,因此需要使用其他的方法。

在第二步中,我们必须在确保电极扩展层内坐标不变的前提下最小化器件总能量。在QuantumATK里至少有两种方法实现。

BRR方法

首先是完全弛豫电极结构,并在此基础上构建双电极器件结构。之后,我们需要取出并弛豫中心区域的晶胞,但是必须对电极扩展层的原子进行“刚性”结构限制。之后可以恢复添加两端电极,重新得到器件(或是界面)结构。这个方法计算效率比较高,通常可以得到大部分的弛豫结构。我们称这种方法为“Bulk Rigid Relaxation (BRR)”。

BRR方法不计算整个器件的总能量,因此重新得到的器件结构可能不是能量最低的几何构型。部分电子态性质可能会对这种差异敏感。

1D最小化

更“暴力”的方法是将器件体系能量对内坐标和中心区域长度优化至最小,即在改变中心区域长度的同时进行整个双电极器件的计算。这是一个一维原子链最小化的问题,在每一步都针对原子位置作弛豫。因此,我们称之为 1DMIN。为此,我们发展了用 QuantumATK 进行这种最小化的方案,使之尽可能有效地处理这个问题。但是这种方法的计算量远大于 BRR 方法,因此我们建议在对中心区域使用 BRR 弛豫之后,再进行 1DMIN 计算。

这篇教程介绍了利用 BRR 和 1DMIN 方法对电极和中心区域的弛豫。教程中的实例是用经典力场方法对银-金接触表面进行弛豫。利用经典势可以使计算更快捷,同样的方法可以适用于 DFT 计算。通常,我们会建议利用 DFT 计算来检验 ATK-Classical 计算的结果。

提示 我们对上面的步骤作了一个图形化的解释,可以在此处下载相关的文献 Infographics

准备工作

生成一个“device_relaxation”的新项目。我们从一个未弛豫的双电极结构开始。其结构可以参照此处【教程:构建Ag(100)和Au(111)界面模型】或者从此处下载结构脚本ag_au_interface.zip。 在项目中保存py文件,并将其拖拽至Builder中。 两电极结构如下图所示。它由左电极 Ag(100)、中心区域、右电极 Au(111) 构成。利用 插件,将器件分割成左电极、右电极和中心区域。

电极弛豫

电极的几何结构是由 Ag(100) 和 Au(111) 构成(参考【教程:构建Ag(100)和Au(111)界面模型】)其左右晶胞的结构采用了实验上的几何数据。我们假设实验结构也是理论上能量最低的结构。(实际研究中需要弛豫晶胞以验证这一点)

在接触器件模型构建中,我们选择Strain second surface(对第二个表面施加应力)处理表面晶胞。这意味着在形成界面的过程中,Ag(100) 结构将会保持实验上的结构,而 Au(111) 表面将在 x、y 方向上将被拉伸。当晶胞在 x、y 方向上拉伸之后,它将按照材料的泊松比在 z 方向上弛豫。

接下来,我们将把这种弛豫应用于 Au(111) 晶胞,方法是在保持 x、y 方向固定的情况下对 z 方向上的应力进行弛豫。获得的 Au(111) 结构将会同样应用到中心区域的金原子中。

打开 Builder 并重命名右电极结构为 Au111,双击激活结构,并发送至 Scripter,添加:

  • New Calculator
  • OptimizeGeometry

打开 New Calculator,选择 ATK-Classical 计算方法,并选择 “EAM_Zhou_2004” 势。点击 OK。 下一步,点开 OptimizeGeometry

  1. 设置 force tolerance 为 0.01
  2. 设置 stress tolerance 为 0.001
  3. 取消 z 方向的晶胞固定(Constrain cell)

发送脚本至 Job Manager 并进行计算,计算耗时不到 1分钟,当执行完之后,检查 log 文件。 我们将会在 LabFloor 看到一个 “Au111.nc” 的 nc 文件,它包含了弛豫前后的两个结构的结构数据。选中两个结构,并拖拽至 Viewer。在 Viewer 中,鼠标选中晶胞,我们会发现,弛豫前的结构,C 方向矢量为 7.064 Å ,弛豫后为7.011 Å。这个结果同样可以在 “Au111.log” 文件中获得。 弛豫后的结果压缩了 0.75%。为了应用到中心区域,打开 Builder,双击打开中心区域结构。

  1. 在 stash 面板重命名为 “central”
  2. 鼠标选中所有金原子
  3. 打开右侧 Bulk Tools ‣ Stretch Cell 插件
  4. 在 C 轴中输入 0.9925
  5. 使用 “Selected atoms are” stretched.
  6. 点击 Apply。

注意

这个应变很小,肉眼很难察觉。但是可以通过打开“Lattice Parameters”插件,点击 对比 C 方向矢量的改变。或者也可以观察 Coordinate List。

中心区域弛豫

现在我们就可以进行中心区域弛豫了。当进行几何优化时,我们希望电极扩展层可以自由移动,因此我们需要在两端添加真空层: 鼠标点击绘制窗口的背景区域,确保没有原子被选中。点开右侧的 Bulk Tools ‣ Stretch Cell ,利用 C-vector slider,延长晶胞30%的长度,或者简单将因子设置为 1.3。然后点击 Apply 应用,晶胞就会相应的增大。

点开 Coordinate Tools ‣ Center,取消勾选 A、B,点击 Apply,可将中间区域制动设置到中心。

我们要固定电极扩展层的原子,但为了在后面便于使用 “Device from bulk” 工具添加电极时自动确定电极的长度,我们需要比常规的电极扩展层多固定一层。为此,选中最外层的 5 层银原子,点开 Selection Tools ‣ Tags。在 “Click here to write a new tag…” 输入框中,输入Left 作为这部分原子的标签。

接下来,同样选择最外层的 4 个金原子, 设置标签为 Right。

发送结构至 Script Generator,设置如下参数:

  1. 添加 New CalculatorOptimizeGeometry 项目。
  2. 选择 ATK-Classical 方法,和 EAM_Zhou_2004 势做计算。
  3. 在几何优化中设置如下参数:
  4. 设置 force tolerance 为 0.01 eV/Å.
  5. 点击 Save trajectory,设置文件名为 central.nc。
  6. 单击 Add Constraints,对两电极扩展层的设置 “Rigid” 结构限制.
  7. 检查 Left 和 Right 两个标签要标记的原子是否正确。在两个标签的下拉菜单中选择 “Rigid”。
  8. 点击 OK,并返回 Scripter

注意

可以对一个标记的区域选择 “Fixed”,另一个选择 “Rigid”,这样可以减少 BFGS 弛豫步骤,从而节省计算时间。

发送脚本至 Job Manager,并运行计算。计算非常快,一旦计算结束,我们将会看到 central.nc 文件出现在 LabFloor 上。

可以从 Viewer 中看到优化的轨迹动画。

优化后的中心区域结构保存在 central.nc 文件中的 gID0002 中。这是我们对中心区域结构的最初猜测。将其拖拽至 Builder 中。

打开 Device Tools ‣ Device From Bulk,将 bulk 结构转换为器件。保留默认参数即可。

结构如下图所示,右键或 F2 重命名为 “device”。

两电极器件的 1DMIN 优化

我们现在可以搜索器件全局最小能量结构了。通过 Save as,将器件结构保存为 NetCDF 文件,并命名为 “device_in.nc”。

现在我们将用 SciPy minimization 程序搜索可以使能量最小化的中心区域长度。我们将从 device_in.nc 的器件结构开始。 我们需要两个脚本:device.zipoptimize.zip。将两个脚本和 device_in.nc 放在同一个目录下。第一个脚本是读取结构并设置计算参数,第二个脚本包含了计算所需的类和函数的定义。

注意

利用 device.py 计算其他体系,需要修改脚本,设定相应的势以便能够处理新体系。

两个脚本都可以在 VNL 的 Project Files 中看到。拖拽 device.py 至 Jobs,并运行脚本。

一旦计算完成,将会出现一个数据图窗口。蓝色点是弛豫结构的总能量。晶胞的最初长度是 28.51 Å,其他的蓝点是算法模拟出来的结果。其中位于28.58 Å 的红色点为中心区域能量最低的点。优化程序只简单地绘制出所示的势能曲线,并找到它的最小值。

手动关闭弹出的窗口可以结束脚本运行。

弛豫器件结构保存在输出文件 “device_out.nc”,并包含总能量。红色点处的结构(最终找到的能连个最低点)是最后一个器件结构(id 最大的那一个)。

Viewer 中,能量最小点的结构如图所示:

这个例子里,1DMIN 弛豫后结构与 BRR 弛豫的结构相比较,变化十分细微。这说明通常情况 BRR 方法的结果已经足够精确,并不需要再进行 1DMIN 的步骤。1DMIN 仅用于极其精确的计算。

信息图

下载pdf版的 Infographics。点击顶部按钮查看图片。

参考

atk/如何弛豫器件体系的几何结构.txt · 最后更改: 2018/03/20 18:40 由 liu.jun

© 2014-2020 费米科技(京ICP备14023855号