这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
atk:如何弛豫器件体系的几何结构 [2016/09/04 20:38] – [两电极器件的1DMIN 优化] nie.han | atk:如何弛豫器件体系的几何结构 [2018/03/20 18:40] (当前版本) – liu.jun | ||
---|---|---|---|
行 2: | 行 2: | ||
====== 如何弛豫器件体系的几何结构 ====== | ====== 如何弛豫器件体系的几何结构 ====== | ||
- | 在这篇教程中,我们将会学习到如何利用“刚性”结构限制和简单的优化步骤,来快速、可靠的弛豫一个器件结构的内坐标。 | + | 在使用QuantumATK进行器件(Device)模型的计算时,如何进行可靠的进行结构优化是常常困扰用户,尤其是初学者的重要问题。在这篇教程中,你会学习到如何利用“刚性”(rigid body)结构限制和简单的优化步骤,来快速、可靠的弛豫一个器件结构的内坐标。 |
+ | |||
+ | 本教程中针对的是一个 A、B 方向上为周期性结构的 “三维” 器件,尤其值得注意的是两端电极是不同种材料构成,这导致了在构建界面时的晶格匹配和由于 A、B 方向应力导致的 C 方向的伸缩,类似的体系还包括: | ||
+ | * 磁性隧道结一类的多层结构; | ||
+ | * 同种材料的不同晶向构成电极。 | ||
+ | |||
+ | 两端电极相同时,不会存在晶格匹配和应力问题,但这里介绍的优化方法也同样适用。 | ||
+ | |||
+ | <WRAP center info 100%> | ||
+ | === 提示 === | ||
+ | **本教程使用特定版本的QuantumATK创建,因此涉及的截图和脚本参数可能与您实际使用的版本略有区别,请在学习时务必注意。** | ||
+ | </ | ||
- | {{ : | ||
===== 前言 ===== | ===== 前言 ===== | ||
- | 器件结构内坐标的弛豫,是一个冗长费时间的过程。主要有两个原因: | + | 器件结构内坐标的弛豫,是一个冗长费时的过程。主要有两个原因: |
- | 双电极体系由三个区域组成:左右两个电极,以及一个由电极扩展层和中心散射区组成的中心区域。在第一性原理计算中,每一部分的几何结构需要单独优化,但是同时中心区域的两电极扩展层必须和相应的电极匹配。 | + | 双电极体系由三个区域组成:左右两个电极,以及一个由电极扩展层和中间散射区组成的中心区域。在第一性原理计算中,每一部分的几何结构需要单独优化,但是同时中心区域的两电极扩展层必须和相应的电极匹配。 |
- | - 优化电极。当优化完电极后,需要确定中心区域的电极扩展层是否匹配优化后的电极。 | + | - 第一步:优化电极。当优化完电极后,需要确定中心区域的电极扩展层是否匹配优化后的电极。 |
- | - 优化中心区域。中心区域的最佳长度通常并不是提前已知的。对于周期性结构,需要使应力最小化。但是,应力场并不单单由器件结构确定,因此需要其他的方法确定。 | + | - 第二步:优化中心区域。中心区域的最优长度通常是未知的。对于周期性结构,还需要使应力最小化。但是,应力场对于器件结构来说是不唯一确定的,因此需要使用其他的方法。 |
- | 在第二步中,我们必须在确保电极扩展层内坐标不变的前提下最小化器件总能量。在ATK里至少有两种方法实现。 | + | 在第二步中,我们必须在确保电极扩展层内坐标不变的前提下最小化器件总能量。在QuantumATK里至少有两种方法实现。 |
==== BRR方法 ==== | ==== BRR方法 ==== | ||
首先是完全弛豫电极结构,并在此基础上构建双电极器件结构。之后,我们需要取出并弛豫中心区域的晶胞,但是必须对电极扩展层的原子进行“刚性”结构限制。之后可以恢复添加两端电极,重新得到器件(或是界面)结构。这个方法计算效率比较高,通常可以得到大部分的弛豫结构。我们称这种方法为“Bulk Rigid Relaxation (BRR)”。 | 首先是完全弛豫电极结构,并在此基础上构建双电极器件结构。之后,我们需要取出并弛豫中心区域的晶胞,但是必须对电极扩展层的原子进行“刚性”结构限制。之后可以恢复添加两端电极,重新得到器件(或是界面)结构。这个方法计算效率比较高,通常可以得到大部分的弛豫结构。我们称这种方法为“Bulk Rigid Relaxation (BRR)”。 | ||
+ | |||
BRR方法不计算整个器件的总能量,因此重新得到的器件结构可能不是能量最低的几何构型。部分电子态性质可能会对这种差异敏感。 | BRR方法不计算整个器件的总能量,因此重新得到的器件结构可能不是能量最低的几何构型。部分电子态性质可能会对这种差异敏感。 | ||
==== 1D最小化 ==== | ==== 1D最小化 ==== | ||
- | 更有力的方法则必须使器件处于能量最小化状态(相对于内坐标和中心区域长度),即在改变中心区域长度的同时进行整个双电极器件的计算。这是一个一维原子链最小化的问题,在每一步都针对原子位置作弛豫。因此,我们称之为1DMIN。为此,我们发展了用ATK进行这种最小化的方案,使之尽可能有效地处理这个问题,但是这种方法的计算量远大于BRR方法。因此,我们建议在对中心区域使用BRR弛豫之后,再进行1DMIN计算。 | + | 更“暴力”的方法是将器件体系能量对内坐标和中心区域长度优化至最小,即在改变中心区域长度的同时进行整个双电极器件的计算。这是一个一维原子链最小化的问题,在每一步都针对原子位置作弛豫。因此,我们称之为 1DMIN。为此,我们发展了用 |
- | 这篇教程介绍了利用BRR和1DMIN方法对电极和中心区域的弛豫。教程中的实例是用经典力场方法对银-金接触表面进行弛豫。利用经典势可以使计算更快捷,同样的方法可以适用于DFT计算。通常,我们会建议利用DFT计算来检验ATK-Classical计算的结果。 | + | 这篇教程介绍了利用 BRR 和 1DMIN 方法对电极和中心区域的弛豫。教程中的实例是用经典力场方法对银-金接触表面进行弛豫。利用经典势可以使计算更快捷,同样的方法可以适用于 DFT 计算。通常,我们会建议利用 DFT 计算来检验 ATK-Classical 计算的结果。 |
<WRAP center round info 100%> | <WRAP center round info 100%> | ||
行 34: | 行 45: | ||
===== 准备工作 ===== | ===== 准备工作 ===== | ||
- | 生成一个“device_relaxation”的新项目。我们从一个未弛豫的双电极结构开始。其结构可以参照此处教程[[http:// | + | 生成一个“device_relaxation”的新项目。我们从一个未弛豫的双电极结构开始。其结构可以参照此处【[[atk:构建ag_100_和au_111_界面模型|教程:构建Ag(100)和Au(111)界面模型]]】或者从此处下载结构脚本{{ : |
在项目中保存py文件,并将其拖拽至{{: | 在项目中保存py文件,并将其拖拽至{{: | ||
- | 两电极结构如下图所示。它由左电极Ag(100)、中心区域、右电极Au(111)构成。利用{{: | + | 两电极结构如下图所示。它由左电极 Ag(100)、中心区域、右电极 Au(111) 构成。利用 {{: |
{{ : | {{ : | ||
===== 电极弛豫 ===== | ===== 电极弛豫 ===== | ||
- | 电极的几何结构是由Ag(100)和Au(111)构成(参考[[http:// | + | 电极的几何结构是由 Ag(100) 和 Au(111) 构成(参考【[[atk:构建ag_100_和au_111_界面模型|教程:构建Ag(100)和Au(111)界面模型]]】)其左右晶胞的结构采用了实验上的几何数据。我们假设实验结构也是理论上能量最低的结构。(实际研究中需要弛豫晶胞以验证这一点) |
- | 在接触器件构建中,我们选择Strain second surface(对第二个表面施加应力)处理表面晶胞。这意味着在形成界面的过程中,Ag(100)结构将会保持实验上的结构,而Au(111)表面将在x、y方向上将被拉伸。当晶胞在x、y方向上拉伸之后,它将按照材料的泊松比在z方向上弛豫。 | + | 在接触器件模型构建中,我们选择Strain second surface(对第二个表面施加应力)处理表面晶胞。这意味着在形成界面的过程中,Ag(100) 结构将会保持实验上的结构,而 Au(111) 表面将在 x、y 方向上将被拉伸。当晶胞在 x、y 方向上拉伸之后,它将按照材料的泊松比在 z 方向上弛豫。 |
- | 接下来,我们将把这种弛豫应用于Au(111)晶胞,方法是在保持x、y方向固定的情况下对z方向上的应力进行弛豫。获得的Au(111)结构将会应用到中心区域的金原子中。 | + | 接下来,我们将把这种弛豫应用于 Au(111) 晶胞,方法是在保持 x、y 方向固定的情况下对 z 方向上的应力进行弛豫。获得的 Au(111) 结构将会同样应用到中心区域的金原子中。 |
- | 打开**Builder**并重命名右电极结构为Au111,双击激活结构,并发送至{{: | + | 打开 **Builder** 并重命名右电极结构为 Au111,双击激活结构,并发送至 {{: |
- | {{: | + | * {{: |
- | {{: | + | * {{: |
{{ : | {{ : | ||
- | 打开**New Calculator**,选择ATK-Classical计算方法,并选择“EAM_Zhou_2004”势。点击OK。 | + | 打开 **New Calculator**,选择 ATK-Classical 计算方法,并选择 “EAM_Zhou_2004” 势。点击 OK。 |
- | 下一步,点开** OptimizeGeometry **: | + | 下一步,点开 ** OptimizeGeometry **: |
- | - 设置force tolerance为0.01 | + | - 设置 force tolerance 为 0.01 |
- | - 设置stress tolerance为0.001 | + | - 设置 stress tolerance 为 0.001 |
- | - 取消z方向的晶胞固定(Constrain cell) | + | - 取消 z 方向的晶胞固定(Constrain cell) |
{{ : | {{ : | ||
- | 发送脚本至{{: | + | 发送脚本至 {{: |
- | 我们将会在** LabFloor**看到一个“Au111.nc”的nc文件,它包含了弛豫前后的两个结构的结构数据。选中两个结构,并拖拽至{{: | + | 我们将会在 ** LabFloor** 看到一个 “Au111.nc” 的 nc 文件,它包含了弛豫前后的两个结构的结构数据。选中两个结构,并拖拽至{{: |
- | 弛豫后的结果压缩了0.75%。为了应用到中心区域,打开**Builder**,双击打开中心区域结构。 | + | 弛豫后的结果压缩了 0.75%。为了应用到中心区域,打开 **Builder**,双击打开中心区域结构。 |
- | - 在stash面板重命名为“central” | + | - 在 stash 面板重命名为 “central” |
- 鼠标选中所有金原子 | - 鼠标选中所有金原子 | ||
- | - 打开右侧Bulk Tools ‣ Stretch Cell插件 | + | - 打开右侧 Bulk Tools ‣ Stretch Cell 插件 |
- | - 在C轴中输入0.9925 | + | - 在 C 轴中输入 0.9925 |
- | - 使用“Selected atoms are” stretched. | + | - 使用 “Selected atoms are” stretched. |
- | - 点击Apply。 | + | - 点击 Apply。 |
{{ : | {{ : | ||
<WRAP center round info 100%> | <WRAP center round info 100%> | ||
- | **注意** | + | === 注意 |
- | 这个应变很小,肉眼很难察觉。但是可以通过打开“Lattice Parameters”插件,点击{{: | + | 这个应变很小,肉眼很难察觉。但是可以通过打开“Lattice Parameters”插件,点击 {{: |
</ | </ | ||
行 83: | 行 94: | ||
===== 中心区域弛豫 ===== | ===== 中心区域弛豫 ===== | ||
- | 现在,我们仅需要进行中心器件弛豫。当进行几何优化时,我们希望电极扩展层可以自由移动,因此我们需要在两端添加真空层: | + | 现在我们就可以进行中心区域弛豫了。当进行几何优化时,我们希望电极扩展层可以**自由移动**,因此我们需要在两端添加真空层: |
- | 鼠标点击绘制窗口的背景区域,确保没有原子被选中。点开右侧的Bulk Tools ‣ Stretch Cell ,利用C-vector slider,延长晶胞30%的长度,或者简单将因子设置为1.3。然后点击Apply应用,晶胞就会相应的增大。 | + | 鼠标点击绘制窗口的背景区域,确保没有原子被选中。点开右侧的 Bulk Tools ‣ Stretch Cell ,利用 C-vector slider,延长晶胞30%的长度,或者简单将因子设置为 1.3。然后点击 Apply 应用,晶胞就会相应的增大。 |
- | 点开Coordinate Tools ‣ Center,取消勾选A、B,点击Apply,可将中间区域制动设置到中心。 | + | |
+ | 点开 Coordinate Tools ‣ Center,取消勾选 A、B,点击 Apply,可将中间区域制动设置到中心。 | ||
{{ : | {{ : | ||
- | 我们要固定电极扩展层的原子,但为了在后面便于使用“Device from bulk”工具添加电极时确定电极的长度,我们需要比常规的电极扩展层多固定一层。为此,选中最外层的5层银原子,点开Selection Tools ‣ Tags。在“Click here to write a new tag...”输入框中,输入Left。 | + | 我们要固定电极扩展层的原子,但为了在后面便于使用 “Device from bulk” 工具添加电极时自动确定电极的长度,我们需要比常规的电极扩展层多固定一层。为此,选中最外层的 5 层银原子,点开 Selection Tools ‣ Tags。在 “Click here to write a new tag...” 输入框中,输入Left |
- | 接下来,同样选择最外层的4个金原子, 标记为Right. | + | 接下来,同样选择最外层的 4 个金原子, |
{{ : | {{ : | ||
- | 发送结构至**Script Generator**,设置如下参数: | + | 发送结构至 **Script Generator**,设置如下参数: |
- | - 添加**New Calculator**和**OptimizeGeometry**项目。 | + | - 添加 **New Calculator** 和 **OptimizeGeometry** 项目。 |
- | - 选择ATK-Classical方法,和EAM_Zhou_2004势做计算。 | + | - 选择 ATK-Classical 方法,和 EAM_Zhou_2004 势做计算。 |
- 在几何优化中设置如下参数: | - 在几何优化中设置如下参数: | ||
- | - 设置force tolerance为0.01 eV/Å. | + | - 设置 force tolerance 为 0.01 eV/Å. |
- | - 点击Save trajectory,设置文件名为central.nc。 | + | - 点击 Save trajectory,设置文件名为 central.nc。 |
- | - 单击Add Constraints,对两电极扩展层的设置“Rigid”结构限制. | + | - 单击 Add Constraints,对两电极扩展层的设置 “Rigid” 结构限制. |
- | - 检查Left和Right两个标签要标记的原子是否正确。在两个标签的下拉菜单中选择“Rigid”。 | + | - 检查 Left 和 Right 两个标签要标记的原子是否正确。在两个标签的下拉菜单中选择 “Rigid”。 |
- | - 点击OK,并返回**Scripter**。 | + | - 点击 OK,并返回 **Scripter**。 |
{{ : | {{ : | ||
<WRAP center round info 100%> | <WRAP center round info 100%> | ||
- | **注意** | + | === 注意 |
- | 可以对一个标记的区域选择“Fixed”,另一个选择“Rigid”,这样可以减少BFGS弛豫步骤,从而节省计算时间。 | + | 可以对一个标记的区域选择 “Fixed”,另一个选择 “Rigid”,这样可以减少 BFGS 弛豫步骤,从而节省计算时间。 |
</ | </ | ||
- | 发送脚本至**Job Manager**,并运行计算。计算非常快,一旦计算结束,我们将会看到central.nc文件出现在**LabFloor**上。 | + | 发送脚本至 **Job Manager**,并运行计算。计算非常快,一旦计算结束,我们将会看到 central.nc 文件出现在 **LabFloor** 上。 |
- | 可以从**Viewer**中看到优化的轨迹动画。 | + | 可以从 **Viewer** 中看到优化的轨迹动画。 |
{{ : | {{ : | ||
- | 优化后的中心区域结构保存在central.nc文件中的gID0002中。这是我们对中心区域结构的最初猜测。将其拖拽至**Builder**中。 | + | 优化后的中心区域结构保存在 central.nc 文件中的 gID0002 中。这是我们对中心区域结构的最初猜测。将其拖拽至 **Builder** 中。 |
- | 打开Device Tools ‣ Device From Bulk,将bulk结构转换为器件。保留默认参数即可。 | + | 打开 Device Tools ‣ Device From Bulk,将 bulk 结构转换为器件。保留默认参数即可。 |
- | 结构如下图所示,右键或F2重命名为“device”。 | + | 结构如下图所示,右键或 F2 重命名为 “device”。 |
{{ : | {{ : | ||
- | ===== 两电极器件的1DMIN 优化 ===== | + | ===== 两电极器件的 1DMIN 优化 ===== |
- | 我们现在可以搜索器件全局最小能量结构了。通过Save as, | + | 我们现在可以搜索器件全局最小能量结构了。通过 Save as, |
{{ : | {{ : | ||
- | 现在我们将用SciPy minimization程序搜索可以使能量最小化的中心区域长度。我们将从device_in.nc的器件结构开始。 | + | 现在我们将用 SciPy minimization 程序搜索可以使能量最小化的中心区域长度。我们将从 device_in.nc 的器件结构开始。 |
- | 我们需要两个脚本:[[http://docs.quantumwise.com/ | + | 我们需要两个脚本:{{ :atk:device.zip |}}和{{ :atk: |
<WRAP center round info 100%> | <WRAP center round info 100%> | ||
- | **注意** | + | === 注意 |
- | 利用device.py 计算其他体系,需要修改脚本,设定相应的势以便能够处理新体系。 | + | 利用 device.py 计算其他体系,需要修改脚本,设定相应的势以便能够处理新体系。 |
</ | </ | ||
- | 两个脚本都可以在VNL的Project Files中看到。拖拽device.py至Jobs,并运行脚本。 | + | 两个脚本都可以在 VNL 的 Project Files 中看到。拖拽 device.py 至 Jobs,并运行脚本。 |
- | 一旦计算完成,将会出现一个数据图窗口。蓝色点是弛豫结构的总能量。晶胞的最初长度是28.51 Å,其他的蓝点是算法模拟出来的结果。其中位于28.58 Å的红色点为中心区域能量最低的点。优化程序只简单地绘制出所示的势能曲线,并找到它的最小值。 | + | 一旦计算完成,将会出现一个数据图窗口。蓝色点是弛豫结构的总能量。晶胞的最初长度是 28.51 Å,其他的蓝点是算法模拟出来的结果。其中位于28.58 Å 的红色点为中心区域能量最低的点。优化程序只简单地绘制出所示的势能曲线,并找到它的最小值。 |
{{ : | {{ : | ||
行 148: | 行 160: | ||
手动关闭弹出的窗口可以结束脚本运行。 | 手动关闭弹出的窗口可以结束脚本运行。 | ||
- | 弛豫器件结构保存在输出文件“device_out.nc”,并包含总能量。红色点处的结构(最终找到的能连个最低点)是最后一个器件结构(id最大的那一个)。 | + | 弛豫器件结构保存在输出文件 “device_out.nc”,并包含总能量。红色点处的结构(最终找到的能连个最低点)是最后一个器件结构(id 最大的那一个)。 |
- | 在**Viewer**中,能量最小点的结构如图所示: | + | 在 **Viewer** 中,能量最小点的结构如图所示: |
{{ : | {{ : | ||
- | 这个例子里,1DMIN弛豫后结构与BRR弛豫的结构相比较,变化十分细微。这可以看出,通常情况BRR方法的结果已经足够精确,并不需要再进行1DMIN的步骤。1DMIN仅用于极其精确的计算。 | + | 这个例子里,1DMIN 弛豫后结构与 BRR 弛豫的结构相比较,变化十分细微。这说明通常情况 BRR 方法的结果已经足够精确,并不需要再进行 1DMIN 的步骤。1DMIN 仅用于极其精确的计算。 |
行 163: | 行 175: | ||
===== 信息图 ===== | ===== 信息图 ===== | ||
+ | 下载pdf版的[[http:// | ||
===== 参考 ===== | ===== 参考 ===== | ||
- | * 英文教程:[[http:// | + | * 英文原文:[[http:// |
+ | * 中文翻译:闫强。 |