用户工具

站点工具


atk:使用akmc方法模拟si0.5ge0.5中空位的扩散

差别

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

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
atk:使用akmc方法模拟si0.5ge0.5中空位的扩散 [2018/05/27 09:45] – [获取初始结构] xie.congweiatk:使用akmc方法模拟si0.5ge0.5中空位的扩散 [2018/06/15 10:23] (当前版本) – [使用AKMC方法模拟Si0.5Ge0.5中空位的扩散] fermi
行 1: 行 1:
 ====== 使用AKMC方法模拟Si0.5Ge0.5中空位的扩散 ====== ====== 使用AKMC方法模拟Si0.5Ge0.5中空位的扩散 ======
- 
- 
- 
- 
  
 **版本:**2017. alpha **版本:**2017. alpha
行 13: 行 9:
 对于经典的 MD 模拟,超过几百纳秒的模拟是不切实际的。但是,通过使用 AKMC,我们将能够在更长的时间范围内对体系的动态进行模拟。这是因为 KMC 模拟是将体系的动态描述为状态之间的转换,故一旦发现就可以快速计算出来。 对于经典的 MD 模拟,超过几百纳秒的模拟是不切实际的。但是,通过使用 AKMC,我们将能够在更长的时间范围内对体系的动态进行模拟。这是因为 KMC 模拟是将体系的动态描述为状态之间的转换,故一旦发现就可以快速计算出来。
 </WRAP> </WRAP>
 +
 +
 +<WRAP center info 100%>
 +=== 提示 ===
 +**本教程使用特定版本的QuantumATK创建,因此涉及的截图和脚本参数可能与您实际使用的版本略有区别,请在学习时务必注意。**
 +</WRAP>
 +
  
 {{ :atk:introbar.png?direct&900 |}} {{ :atk:introbar.png?direct&900 |}}
 ===== 获取初始结构 ===== ===== 获取初始结构 =====
  
-为了生成初始的 Si<sub>0.5</sub>Ge<sub>0.5</sub> 合金结构,我们在 **2015** 版 **ATK** 的{{:atk:builder.png?direct&25|}} **Builder**里点击 Builders {{:atk:arrow.png?direct&5|}} Substitutional Alloy。如果您使用的更早版本,可以用这个脚本代替:[[https://docs.quantumwise.com/_downloads/initial-structure.py|↓initial-structure.py]]。+为了生成初始的 Si<sub>0.5</sub>Ge<sub>0.5</sub> 合金结构,我们在 **2015** 版 **ATK** 的 {{:atk:builder.png?direct&25|}} **Builder** 里点击 Builders {{:atk:arrow.png?direct&5|}} Substitutional Alloy。如果您使用的更早版本,可以用这个脚本代替:[[https://docs.quantumwise.com/_downloads/initial-structure.py|↓initial-structure.py]]。
  
   - 打开 {{:atk:builder.png?direct&25|}} **Builder**。   - 打开 {{:atk:builder.png?direct&25|}} **Builder**。
行 23: 行 26:
   - Bulk Tools {{:atk:arrow.png?direct&5|}} Repeat,设置 A = 4,B = 4,C = 4,点击         //Apply// 按钮。   - Bulk Tools {{:atk:arrow.png?direct&5|}} Repeat,设置 A = 4,B = 4,C = 4,点击         //Apply// 按钮。
   - 选择 Builders {{:atk:arrow.png?direct&5|}} Substitutional Alloy。   - 选择 Builders {{:atk:arrow.png?direct&5|}} Substitutional Alloy。
-  - 采用默认设置,用 Ge 替代 50% 的Si。+  - 采用默认设置,用 Ge 替代 50% 的 Si。
   - 点击 //Create// 按钮。   - 点击 //Create// 按钮。
  
行 30: 行 33:
  
  
-现在,您可以在 **Builder** 的主窗口和 **Stash** 中看到初始合金结构。可能与上图显示的有所不同,因为合金是随机生成的。接下来,我们要在初始结构上做一个 Si 的空位。本例中,我们在前面删除了蓝色 Ge 后面的一个黄色 Si。您也可以随机创建一个 Si 空位。+现在,您可以在 **Builder** 的主窗口和 **Stash** 中看到初始合金结构。可能与上图显示的有所不同,这是因为合金是随机生成的。接下来,我们要在初始结构上做一个 Si 的空位。本例中,我们删除了前面蓝色 Ge 后面的一个黄色 Si。您也可以随机创建一个 Si 空位。
  
 现在,我们将要优化初始结构。 现在,我们将要优化初始结构。
行 45: 行 48:
 通过拖动脚本到主 **VNL** 窗口并放到 {{:atk:job_manager.png?direct&25|}} **Job Manager** 上或直接通过终端运行脚本。 通过拖动脚本到主 **VNL** 窗口并放到 {{:atk:job_manager.png?direct&25|}} **Job Manager** 上或直接通过终端运行脚本。
  
-现在您已经有包含一个空位的 4×4×4 SiGe 超胞,结构优化后保存为 ''alloy.nc''。请注意,这是一个很小的体系,仅用于说明的目的。进行科学有效的模拟时,您将需要一个更大的体系。您可以通过从 **LabFloor** 合金中选中 //gID0001// 并将其拖放到 {{:co:viewer.png?direct&25|}} **Viewer**从而在实现在 **VNL** 中可视化结构的功能。效果如下所示。+现在您已经有包含一个空位的 4×4×4 SiGe 超胞,结构优化后保存为 ''alloy.nc''。请注意,这是一个很小的体系,仅用于说明的目的。进行科学有效的模拟时,您将需要一个更大的体系。您可以通过从 **LabFloor** 合金中选中 //gID0001//并将其拖放到 {{:co:viewer.png?direct&25|}} **Viewer** 从而在实现在 **VNL** 中可视化结构的功能。效果如下所示。
  
 {{ :atk:alloy_opt.png?direct&800 |}} {{ :atk:alloy_opt.png?direct&800 |}}
  
-片中的结构有一个空位,但很难识别出。您将执行一个// LocalStructure// 计算找出哪个原子没有典型的类金刚石排列方式。+图结构有一个空位,但很难识别出。您将执行一个// LocalStructure// 计算找出哪个原子没有典型的类金刚石排列方式。
  
   - 从 **LabFloor** 将 //gID0001// 结构拖到 {{:atk:script_generator.png?direct&25|}} **Scripter**。   - 从 **LabFloor** 将 //gID0001// 结构拖到 {{:atk:script_generator.png?direct&25|}} **Scripter**。
行 56: 行 59:
   - 点击 {{:atk:sendto.png?direct&20|}} 按钮,将脚本发送到 **Job manager**,运行计算。预计耗时在一分钟内。   - 点击 {{:atk:sendto.png?direct&20|}} 按钮,将脚本发送到 **Job manager**,运行计算。预计耗时在一分钟内。
  
-现在,您可以更清晰的观察结构中的空位。在主窗口中,打开 **Viewer** 中的 **LocalStructure**,并展开侧栏的 **Local Structure** 面板,选择 //Diamond-like//。现在,所有不在空位附近并具有理想晶体结构的原子都被已经选中。打开 **Properties** 对话框,在 **Atoms** 选项卡中将所选原子的 opacity(不透明度)改为 0.1。将其他原子变得几近透明可以凸显空位附近的原子。结果如下图所示请注意原子群中间明显的空缺。+现在,您可以更清晰的观察结构中的空位。在主窗口中,打开 **Viewer** 中的 **LocalStructure**,并展开侧栏的 **Local Structure** 面板,选择 //Diamond-like//。现在,所有不在空位附近并具有理想晶体结构的原子都被已经选中。打开 **Properties** 对话框,在 **Atoms** 选项卡中将所选原子的 opacity(不透明度)改为 0.1。将其他原子变得几近透明可以凸显空位附近的原子。结果如下图所示请注意原子群中间明显的空缺。
  
  
行 64: 行 67:
  
 ===== 运行 AKMC 模拟 ===== ===== 运行 AKMC 模拟 =====
 +
 +现在您已经有一个优化好的初始结构,可以开始进行 AKMC 模拟了。将 ''alloy.nc'' 从主 **VNL** 窗口拖到 **Script Generator**。{{:atk:calculator.png?direct&25|}} **New Calculator** 会在 Scripter 中自动加载。从 **ATK 2017** 版开始,AdaptiveKineticMonteCarlo 是在 **Scripter** 操作实现的。如果您用的是老版本,您可以下载脚本 [[https://docs.quantumwise.com/_downloads/adding-akmc.py|↓adding-akmc.py]],将其附加在 {{:atk:editor.png?direct&25|}} **Editor** 的目录里,而不用按照如下的步骤操作。
 +
 +添加 Optimization {{:atk:arrow.png?direct&5|}} AdaptiveKineticMonteCarlo 模块。
 +
 +1. 双击 {{:atk:optimization.png?direct&25|}} **AdaptiveKineticMonteCarlo**。
 +
 +2. 在 //Saddle Search// 选区,设置 //Number of searches// 为 100。
 +
 +3. 在 //Optimization// 选区,按下 //Atomic Constraint Editor// 按钮。
 +
 +
 +  * 选择一个离空位最远的原子。
 +  * 按下 //Add tag from Selection// 按钮。
 +  * 将 Constraint 的选择从 //None// 改为 //Fixed//
 +  * 按下 //OK//。
 +
 +
 +4. 在 //Molecular Dynamics// 部分,设置 //temperature// 为 1200 K。
 +
 +<WRAP center important 100%>
 +=== 注意 ===
 +如果您查看 AdaptiveKineticMonteCarlo 界面上的 **Help...** 按钮,里面有设置和定义的详细介绍。更高的搜索次数和更高的置信度会提供给我们更好的准确性,但相应的计算成本也会很大。
 +</WRAP>
 +
 +5. 保存输出文件为 ''akmc.nc''
 +
 +<WRAP center tip 100%>
 +=== 提示 ===
 +您看到的 AKMC 脚本(无论是从 **Scripter** 还是 [[https://docs.quantumwise.com/_downloads/adding-akmc.py|↓adding-akmc.py]])都可以使用现存的文件重启模拟。更多有关 AKMC 参数描述的详细内容可参考教程:[[https://docs.quantumwise.com/tutorials/akmc_pt_on_pt_100_surface/akmc_pt_on_pt_100_surface.html#akmc-pt-on-pt-100-surface|Adaptive Kinetic Monte Carlo Simulation of Pt on Pt(100)]]。
 +</WRAP>
 +
 +现在运行脚本,在台式机上耗时应该不超过半小时。最后,您将会有一个 //MarkovChain// 数据块存储在 ''akmc_markov_chain.nc'' 文件,一个 //KineticMonteCarlo// 数据块存储在  ''akmc_kmc.nc'' 文件。//MarkovChain// 数据块存储了模拟期间的所有状态(构形)以及它们之间的连接,它可以用来计算整个体系的全速率矩阵。
 +
 +<WRAP center important 100%>
 +=== 注意 ===
 +由于这些方法里的随机元素存在,您也许不能获得跟此处完全相同的结果。如果您想要追求与本教程相同的分析,可以下载用于制作教程的文件:[[https://docs.quantumwise.com/_downloads/akmc_kmc.nc|↓akmc_kmc.nc]],[[https://docs.quantumwise.com/_downloads/akmc_markov_chain.nc|↓akmc_markov_chain.nc]] 和 [[https://docs.quantumwise.com/_downloads/akmc_log.nc|↓akmc_log.nc]]。
 +</WRAP>
 +
 +选择 **Labfloor** 上 akmc_markov_chain.nc 文件里的 {{:atk:labfloor_markovchain.png?direct&30|}} //gID000//,点击右边面板的 **Markov Chain Analyzer**。
 +
 +检查每个状态(下面图里显示的为状态 0 和状态 5),使用 movie 工具里的播放按钮 {{:atk:arrow.png?direct&15|}} 查看原子的扩散和移动。从状态 0 开始,系统到状态 1 的能量势垒非常低,为 0.065 eV。您观察过程影片可以发现,它似乎是弛豫过程而不是真正的扩散。
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
  
行 69: 行 124:
  
  
 +{{ :atk:markov_state0.png?direct&800 |}}
  
 +从状态5我们发现了连接状态 4 和状态 9 的鞍点。它们具有比从状态 0 开始更高的势垒。当您看到过程影片时,硅和锗在空位中扩散、互换。如果您在结构窗口上单击鼠标右键,可以选择 Show Bonds,这有助于沿着能量图显示原子的运动。
 ==== 状态 5 ==== ==== 状态 5 ====
 +
 +{{ :atk:markov_state5.png?direct&800 |}}
 +
 +<WRAP center important 100%>
 +=== 注意 ===
 +谨记,您可能从随机生成的合金中获得其他结果。
 +</WRAP>
 +
 +//Kinetic Monte Carlo// 数据块里存储着时间和状态间变化的轨迹,还有沿 Markov chain 的步数排列(即 KMC 步数)。按下 ''ctrl'' 键,同时选择 ''akmc_kmc.nc'' 里的 {{:atk:labfloor_kineticmontecarlo.png?direct&30|}} 和 ''akmc_markov_chain.nc'' 里的 {{:atk:labfloor_markovchain.png?direct&30|}},然后就可以看到右侧面板已激活的 **Kinetic Monte Carlo Analyzer...**。输出结果应该如下所示,但也可能与以下所示结果不完全相同:
 +
 +{{ :atk:kmc_analyzer.png?direct&800 |}}
 +
 +以上分析显示了采用 //Kinetic Monte Carlo// 方法模拟,状态随时间的变化轨迹。KMC 步数、运算时间及其对应的状态 ID 和能量都显示在下表中。点击 {{:atk:arrow.png?direct&15|}} 按钮,您会看到不同状态间能量随时间变化的动态图。由于曲线的时间轴上是对数坐标,接近 0 秒处的第 0 步和第 1 步会不太清晰。您可以找到不同的鞍点状态和每个状态的停留时间或离开时间。从初始状态(0 eV)开始,此图显示了搜索到的其他鞍点的能量随时间变化差异。
 +
 +在 **LabFloor**,点击 ''akmc_kmc.nc'' 的 {{:atk:labfloor_kineticmontecarlo.png?direct&30|}},选择右侧面板的 **Text Representation**。
 +
 +<code>
 + # Item:  0
 + # File:  C:\tutorial\akmc\akmc_kmc.nc
 + # Title: akmc_kmc.nc - gID000
 + # Type:  KineticMonteCarlo
 +    Step #   Time (seconds)  State
 +        0   0.00000000e+00      0
 +           4.72548280e-13      1
 +           6.40378862e-13      3
 +           8.06232998e-13      4
 +           5.87851546e-10      5
 +           5.02734297e-09      4
 +           5.98297032e-09      7
 +           6.50322348e-09      4
 +           7.34741500e-09      7
 +           1.04551543e-08      4
 +        10   2.38590351e-08      8
 +        .
 +        .
 +        .
 +      1501   9.97728735e-07      3
 +      1502   9.99898062e-07      4
 +      1503   1.00003149e-06      3
 +      1504   1.00593170e-06      4
 +      1505   1.00605679e-06      3
 +
 +</code>
 +
 +
 +它包含了与我们在 **Kinetic Monte CarloAnalyzer** 表中所见的信息。此处,我们展示了一个较长的模拟结果,500 个鞍点的搜索。第一列是 KMC 算法的步数编号,第二列代表 KMC 仿真中的总运算时间,第三列显示的是当前状态编号,并与 //MarkovChain// 数据块中一个特定最小能量的构形对应。请注意底部文本部分(步骤//#1501〜1505//)的中断和时间超过了 1 微秒,实际上它来源于此文件的中间部分:[[https://docs.quantumwise.com/_downloads/akmc_kmc_500.nc|↓akmc_kmc_500.nc]]。
 +
 +
 +<WRAP center important 100%>
 +=== 注意 ===
 +请不要混淆 KMC 步骤数和鞍点编号。KMC 模拟过程中选择发现的鞍点代表了它们是最有可能事件。为了确保模拟的准确性,Markov chain 中的每个状态都具有相关的置信度,它是对每个 KMC 步骤相对应状态的概率估计,必然事件会被选中。在每个状态下都要执行鞍点搜索,直到达到用户定义的置信度。一旦达到置信水平,KMC 模拟将继续进行,直至状态的置信度低于目标水平。
 +</WRAP>
 +
 +
 +上面的输出内容包含的 KMC 步数要比脚本中设定的500个鞍点搜索数目多。这表明在某种程度上,KMC 算法在相同状态之间来回跳动。但由于 AKMC 是一种随机方法,也完全可能出现与此相反的情况,即 KMC 总步数远小于指定的鞍点搜索数。这种行为也是非常依赖系统的。
 +
 +<WRAP center important 100%>
 +=== 注意 ===
 +请注意最终时间大于 1 微秒。这个时间尺度要比我们调查到的单独采用 MD 所用时间长得多。
 +</WRAP>
 +
 +在在 **LabFloor**,您将能找到一个 {{:atk:labfloor_akmclog.png?direct&25|}} //akmc_log// 数据块,点击 **Text Representation** 打开。您应该可以看到等同于如下所示的信息,显示了您在脚本中设定的 100 个鞍点搜索的结果。
 +
 +<code>
 +
 +# Item:  0
 +# File:  C:\tutorial\akmc\akmc_log.nc
 +# Title: akmc_log.nc - gID000
 +# Type:  AKMCLog
 +state id search number confidence  message
 +                     0.000000  Found new state
 +                     0.864665  Found saddle connecting to state 1 again
 +                     0.950213  Found saddle connecting to state 1 again
 +                     0.981684  Found saddle connecting to state 1 again
 +                     0.993262  Found saddle connecting to state 1 again
 +                     0.000000  Found new state
 +                     0.000000  Found new state
 +                     0.000000  No barrier was found between the end points of the NEB calculation. Check to see if there are enough images and that the NEB is converged.
 +                     0.375441  Found saddle connecting to state 3 again
 +                     0.375441  No barrier was found between the end points of the NEB calculation. Check to see if there are enough images and that the NEB is converged.
 +                  10   0.375441  No barrier was found between the end points of the NEB calculation. Check to see if there are enough images and that the NEB is converged.
 +                  11   0.840168  Found saddle connecting to state 2 again
 +                  12   0.840168  No barrier was found between the end points of the NEB calculation. Check to see if there are enough images and that the NEB is converged.
 +                  13   0.877314  Found saddle connecting to state 3 again
 +                  14   0.923293  Found saddle connecting to state 2 again
 +                  15   0.923293  No barrier was found between the end points of the NEB calculation. Check to see if there are enough images and that the NEB is converged.
 +                  16   0.940208  Found saddle connecting to state 2 again
 +                  17   0.940208  No barrier was found between the end points of the NEB calculation. Check to see if there are enough images and that the NEB is converged.
 +
 +</code>
 +
 +
 +第一列是用于鞍点搜索的初始状态的 //id//,第二列是搜索编号(在 100 个鞍点搜索中),第三列是对从当前区域开始的过程进行充分采样计算得到的置信度,最后一列是搜索结果。本案例中,算法从状态 0 开始 5 次鞍点搜索后找到 1 个新状态并满足 99% 的置信度,然后进入状态 1(//id// 1)。它发现一共有 2 个新状态(状态 2 和 3),17 个搜索找到了重复的状态,6 个搜索由于各种原因没有找到新状态。始状态从 //id// 0 到 //id// 1 的已发生改变,表明 KMC 算法已经迈入一个新的状态,且鞍点搜索将从那里继续进行。
 +
 +
 +
 +
 +
 +
 +
  
  
 ===== 结论 ===== ===== 结论 =====
  
 +在本教程中,我们研究了在 300 K 下,怎样采用 AKMC 方法对含有 1 个空位的合金进行扩散模拟。AKMC 方法可以有效地搜索 1 微秒时间范围内初始状态附近的鞍点。当您运行更长时间的模拟或搜索更多鞍点时,可以选择与在实验上为了理解状态间动态变化所用时间相当的范围。
 +
 +在一项真正的研究中,验证经典势能的结果和采用 DFT 重新优化 NEB 描述势垒总是非常重要的,这对于更准确的判断系统的路径也是很有帮助的。
 ===== 参考 ===== ===== 参考 =====
  
 +  * 英文原文:[[https://docs.quantumwise.com/tutorials/akmc-empirical-sige/akmc-empirical-sige.html|https://docs.quantumwise.com/tutorials/akmc-empirical-sige/akmc-empirical-sige.html]]
atk/使用akmc方法模拟si0.5ge0.5中空位的扩散.1527385551.txt.gz · 最后更改: 2018/05/27 09:45 由 xie.congwei

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