用户工具

站点工具


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

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
atk:如何弛豫器件体系的几何结构 [2016/09/19 15:49] – [BRR方法] dong.dongatk:如何弛豫器件体系的几何结构 [2018/03/20 18:40] (当前版本) liu.jun
行 2: 行 2:
 ====== 如何弛豫器件体系的几何结构 ====== ====== 如何弛豫器件体系的几何结构 ======
  
-在这篇教程中,你会学习到如何利用“刚性”(rigid body)结构限制和简单的优化步骤,来快速、可靠的弛豫一个器件结构的内坐标。+在使用QuantumATK进行器件(Device)模型的计算时,如何进行可靠的进行结构优化是常常困扰用户,尤其是初学者的重要问题。在这篇教程中,你会学习到如何利用“刚性”(rigid body)结构限制和简单的优化步骤,来快速、可靠的弛豫一个器件结构的内坐标。 
 + 
 +本教程中针对的是一个 A、B 方向上为周期性结构的 “三维” 器件,尤其值得注意的是两端电极是不同种材料构成,这导致了在构建界面时的晶格匹配和由于 A、B 方向应力导致的 C 方向的伸缩,类似的体系还包括: 
 +  * 磁性隧道结一类的多层结构; 
 +  * 同种材料的不同晶向构成电极。 
 + 
 +两端电极相同时,不会存在晶格匹配和应力问题,但这里介绍的优化方法也同样适用。 
 + 
 +<WRAP center info 100%> 
 +=== 提示 === 
 +**本教程使用特定版本的QuantumATK创建,因此涉及的截图和脚本参数可能与您实际使用的版本略有区别,请在学习时务必注意。** 
 +</WRAP>
  
  
行 13: 行 24:
   - 第二步:优化中心区域。中心区域的最优长度通常是未知的。对于周期性结构,还需要使应力最小化。但是,应力场对于器件结构来说是不唯一确定的,因此需要使用其他的方法。   - 第二步:优化中心区域。中心区域的最优长度通常是未知的。对于周期性结构,还需要使应力最小化。但是,应力场对于器件结构来说是不唯一确定的,因此需要使用其他的方法。
  
-在第二步中,我们必须在确保电极扩展层内坐标不变的前提下最小化器件总能量。在ATK里至少有两种方法实现。+在第二步中,我们必须在确保电极扩展层内坐标不变的前提下最小化器件总能量。在QuantumATK里至少有两种方法实现。
  
 ==== BRR方法 ==== ==== BRR方法 ====
行 23: 行 34:
 ==== 1D最小化 ==== ==== 1D最小化 ====
  
-力的方法则必须使器件处于能量最小化状态(相内坐标和中心区域长度,即在改变中心区域长度的同时进行整个双电极器件的计算。这是一个一维原子链最小化的问题,在每一步都针对原子位置作弛豫。因此,我们称之为1DMIN。为此,我们发展了用ATK进行这种最小化的方案,使之尽可能有效地处理这个问题但是这种方法的计算量远大于BRR方法因此我们建议在对中心区域使用BRR弛豫之后,再进行1DMIN计算。+“暴的方法是将器件体系能量对内坐标和中心区域长度优化至最小,即在改变中心区域长度的同时进行整个双电极器件的计算。这是一个一维原子链最小化的问题,在每一步都针对原子位置作弛豫。因此,我们称之为 1DMIN。为此,我们发展了用 QuantumATK 进行这种最小化的方案,使之尽可能有效地处理这个问题但是这种方法的计算量远大于 BRR 方法因此我们建议在对中心区域使用 BRR 弛豫之后,再进行 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://docs.quantumwise.com/tutorials/ag_au_interface.html#ag-au-interfaceBuilding an interface between Ag(100) and Au(111)]]或者从此处下载结构脚本[[|]]+生成一个“device_relaxation”的新项目。我们从一个未弛豫的双电极结构开始。其结构可以参照此处[[atk:构建ag_100_和au_111_界面模型|教程:构建Ag(100)Au(111)界面模型]]或者从此处下载结构脚本{{ :atk:ag_au_interface.zip |}}
 在项目中保存py文件,并将其拖拽至{{:atk:builder.png?25|}}**Builder**中。 在项目中保存py文件,并将其拖拽至{{:atk:builder.png?25|}}**Builder**中。
-两电极结构如下图所示。它由左电极Ag(100)、中心区域、右电极Au(111)构成。利用{{:atk:splitdevice01.png?25|}}插件,将器件分割成左电极、右电极和中心区域。+两电极结构如下图所示。它由左电极 Ag(100)、中心区域、右电极 Au(111) 构成。利用 {{:atk:splitdevice01.png?25|}} 插件,将器件分割成左电极、右电极和中心区域。
  
 {{ :atk:screenshot11.png?500 |}} {{ :atk:screenshot11.png?500 |}}
 ===== 电极弛豫 ===== ===== 电极弛豫 =====
  
-电极的几何结构是由Ag(100)和Au(111)构成(参考[[http://docs.quantumwise.com/tutorials/ag_au_interface.html#ag-au-interface |Building an interface between Ag(100) and Au(111)]])其左右晶胞的结构采用了实验上的几何数据。我们假设实验结构也是理论上能量最低的结构。(实际理论研究中需要弛豫晶胞以验证这一点)+电极的几何结构是由 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,双击激活结构,并发送至{{:atk:script_generator.png?25|}}**Scripter**,添加:+打开 **Builder** 并重命名右电极结构为 Au111,双击激活结构,并发送至 {{:atk:script_generator.png?25|}} **Scripter**,添加:
  
-{{:atk:calculator.png?25 |}}**New Calculator**+  * {{:atk:calculator.png?25 |}}**New Calculator**
  
-{{:atk:optimization.png?25 |}}**OptimizeGeometry**+  * {{:atk:optimization.png?25 |}}**OptimizeGeometry**
  
 {{ :atk:screenshot21.png?500 |}} {{ :atk:screenshot21.png?500 |}}
  
-打开**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)
  
 {{ :atk:screenshot31.png?300 |}} {{ :atk:screenshot31.png?300 |}}
  
-发送脚本至{{:atk:job_manager.png?25|}}** Job Manager **并进行计算,计算耗时不到 1分钟,当执行完之后,检查log文件。 +发送脚本至 {{:atk:job_manager.png?25|}}** Job Manager ** 并进行计算,计算耗时不到 1分钟,当执行完之后,检查 log 文件。 
-我们将会在** LabFloor**看到一个“Au111.nc”的nc文件,它包含了弛豫前后的两个结构的结构数据。选中两个结构,并拖拽至{{:atk:viewer.png?25|}}**Viewer**。在**Viewer**中,鼠标选中晶胞,我们会发现,弛豫前的结构,C方向矢量为7.064 Å ,弛豫后为7.011 Å。这个结果同样可以在“Au111.log”文件中获得。 +我们将会在 ** LabFloor** 看到一个 “Au111.nc” 的 nc 文件,它包含了弛豫前后的两个结构的结构数据。选中两个结构,并拖拽至{{:atk:viewer.png?25|}} **Viewer**。在 **Viewer** 中,鼠标选中晶胞,我们会发现,弛豫前的结构,C 方向矢量为 7.064 Å ,弛豫后为7.011 Å。这个结果同样可以在 “Au111.log” 文件中获得。 
-弛豫后的结果压缩了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。
  
 {{ :atk:screenshot41.png?500 |}} {{ :atk:screenshot41.png?500 |}}
  
 <WRAP center round info 100%> <WRAP center round info 100%>
-**注意** +=== 注意 === 
-这个应变很小,肉眼很难察觉。但是可以通过打开“Lattice Parameters”插件,点击{{:atk:undo_edit.png?25|}}和{{:atk:redo_edit.png?25|}}对比C方向矢量的改变。同样,也可以通过观察Coordinate List。+这个应变很小,肉眼很难察觉。但是可以通过打开“Lattice Parameters”插件,点击 {{:atk:undo_edit.png?25|}} 和 {{:atk:redo_edit.png?25|}} 对比 C 方向矢量的改变。或者也可以观察 Coordinate List。
 </WRAP> </WRAP>
  
行 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,可将中间区域制动设置到中心。
  
 {{ :atk:screenshot51.png?500 |}} {{ :atk:screenshot51.png?500 |}}
  
-我们要固定电极扩展层的原子,但为了在后面便于使用“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 个金原子, 设置为 Right
  
 {{ :atk:screenshot61.png?500 |}} {{ :atk:screenshot61.png?500 |}}
  
-发送结构至**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**。
  
 {{ :atk:screenshot71.png?500 |}} {{ :atk:screenshot71.png?500 |}}
  
 <WRAP center round info 100%> <WRAP center round info 100%>
-**注意** +=== 注意 === 
-可以对一个标记的区域选择“Fixed”,另一个选择“Rigid”,这样可以减少BFGS弛豫步骤,从而节省计算时间。+可以对一个标记的区域选择 “Fixed”,另一个选择 “Rigid”,这样可以减少 BFGS 弛豫步骤,从而节省计算时间。
 </WRAP> </WRAP>
  
-发送脚本至**Job Manager**,并运行计算。计算非常快,一旦计算结束,我们将会看到central.nc文件出现在**LabFloor**上。+发送脚本至 **Job Manager**,并运行计算。计算非常快,一旦计算结束,我们将会看到 central.nc 文件出现在 **LabFloor** 上。
  
-可以从**Viewer**中看到优化的轨迹动画。+可以从 **Viewer** 中看到优化的轨迹动画。
  
 {{ :atk:screenshot8.gif?500 |}} {{ :atk:screenshot8.gif?500 |}}
  
-优化后的中心区域结构保存在central.nc文件中的gID0002中。这是我们对中心区域结构的最初猜测。将其拖拽至**Builder**中。+优化后的中心区域结构保存在 central.nc 文件中的 gID0002 中。这是我们对中心区域结构的最初猜测。将其拖拽至 **Builder** 中。
  
-打开Device Tools ‣ Device From Bulk,将bulk结构转换为器件。保留默认参数即可。+打开 Device Tools ‣ Device From Bulk,将 bulk 结构转换为器件。保留默认参数即可。
  
-结构如下图所示,右键或F2重命名为“device”。+结构如下图所示,右键或 F2 重命名为 “device”。
  
 {{ :atk:screenshot9.png?500 |}} {{ :atk:screenshot9.png?500 |}}
  
-===== 两电极器件的1DMIN 优化 =====+===== 两电极器件的 1DMIN 优化 =====
  
-我们现在可以搜索器件全局最小能量结构了。通过Save as,将器件结构保存为NetCDF文件,并命名为“device_in.nc”。+我们现在可以搜索器件全局最小能量结构了。通过 Save as,将器件结构保存为 NetCDF 文件,并命名为 “device_in.nc”。
  
 {{ :atk:screenshot10.png?500 |}} {{ :atk:screenshot10.png?500 |}}
  
-现在我们将用SciPy minimization程序搜索可以使能量最小化的中心区域长度。我们将从device_in.nc的器件结构开始。 +现在我们将用 SciPy minimization 程序搜索可以使能量最小化的中心区域长度。我们将从 device_in.nc 的器件结构开始。 
-我们需要两个脚本:[[http://docs.quantumwise.com/_downloads/device4.py#ag-au-interfacedevice_relaxation/device.py]][[http://docs.quantumwise.com/_downloads/optimize1.py#ag-au-interfacedevice_relaxation/optimize.py]]。将两个脚本和device_in.nc放在同一个目录下。第一个脚本是读取结构并设置计算参数,第二个脚本包含了计算所需的类和函数的定义。+我们需要两个脚本:{{ :atk:device.zip |}}{{ :atk:optimize.zip |}}。将两个脚本和 device_in.nc 放在同一个目录下。第一个脚本是读取结构并设置计算参数,第二个脚本包含了计算所需的类和函数的定义。
  
 <WRAP center round info 100%> <WRAP center round info 100%>
-**注意** +=== 注意 === 
-利用device.py 计算其他体系,需要修改脚本,设定相应的势以便能够处理新体系。+利用 device.py 计算其他体系,需要修改脚本,设定相应的势以便能够处理新体系。
 </WRAP> </WRAP>
  
-两个脚本都可以在VNL的Project Files中看到。拖拽device.py至Jobs,并运行脚本。+两个脚本都可以在 VNL 的 Project Files 中看到。拖拽 device.py 至 Jobs,并运行脚本。
  
-一旦计算完成,将会出现一个数据图窗口。蓝色点是弛豫结构的总能量。晶胞的最初长度是28.51 Å,其他的蓝点是算法模拟出来的结果。其中位于28.58 Å的红色点为中心区域能量最低的点。优化程序只简单地绘制出所示的势能曲线,并找到它的最小值。+一旦计算完成,将会出现一个数据图窗口。蓝色点是弛豫结构的总能量。晶胞的最初长度是 28.51 Å,其他的蓝点是算法模拟出来的结果。其中位于28.58 Å 的红色点为中心区域能量最低的点。优化程序只简单地绘制出所示的势能曲线,并找到它的最小值。
  
 {{ :atk:screenshot111.png?500 |}} {{ :atk:screenshot111.png?500 |}}
行 148: 行 160:
 手动关闭弹出的窗口可以结束脚本运行。 手动关闭弹出的窗口可以结束脚本运行。
  
-弛豫器件结构保存在输出文件“device_out.nc”,并包含总能量。红色点处的结构(最终找到的能连个最低点)是最后一个器件结构(id最大的那一个)。+弛豫器件结构保存在输出文件 “device_out.nc”,并包含总能量。红色点处的结构(最终找到的能连个最低点)是最后一个器件结构(id 最大的那一个)。
  
-在**Viewer**中,能量最小点的结构如图所示:+在 **Viewer** 中,能量最小点的结构如图所示:
  
 {{ :atk:screenshot12.png?500 |}} {{ :atk:screenshot12.png?500 |}}
  
-这个例子里,1DMIN弛豫后结构与BRR弛豫的结构相比较,变化十分细微。这可以看出,通常情况BRR方法的结果已经足够精确,并不需要再进行1DMIN的步骤。1DMIN仅用于极其精确的计算。+这个例子里,1DMIN 弛豫后结构与 BRR 弛豫的结构相比较,变化十分细微。这说明通常情况 BRR 方法的结果已经足够精确,并不需要再进行 1DMIN 的步骤。1DMIN 仅用于极其精确的计算。
  
  
行 163: 行 175:
 ===== 信息图 ===== ===== 信息图 =====
  
-下载pdf,[[http://docs.quantumwise.com/_downloads/infographics_device_relaxation.pdf#ag-au-interface| Infographics]]。点击顶部按钮查看图片。+下载pdf版的[[http://docs.quantumwise.com/_downloads/infographics_device_relaxation.pdf#ag-au-interface| Infographics]]。点击顶部按钮查看图片。
  
  
 ===== 参考 ===== ===== 参考 =====
-  * 英文教程:[[http://docs.quantumwise.com/tutorials/device_relaxation.html|英文]]。 +  * 英文原文:[[http://docs.quantumwise.com/tutorials/device_relaxation.html]]。 
- +  * 中文翻译:闫强
-文翻译:闫强+
atk/如何弛豫器件体系的几何结构.1474271340.txt.gz · 最后更改: 2016/09/19 15:49 由 dong.dong

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