两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 |
atk:使用akmc方法模拟si0.5ge0.5中空位的扩散 [2018/05/27 10:03] – [获取初始结构] xie.congwei | atk:使用akmc方法模拟si0.5ge0.5中空位的扩散 [2018/06/15 10:23] (当前版本) – [使用AKMC方法模拟Si0.5Ge0.5中空位的扩散] fermi |
---|
====== 使用AKMC方法模拟Si0.5Ge0.5中空位的扩散 ====== | ====== 使用AKMC方法模拟Si0.5Ge0.5中空位的扩散 ====== |
| |
| |
| |
| |
| |
**版本:**2017. alpha | **版本:**2017. alpha |
对于经典的 MD 模拟,超过几百纳秒的模拟是不切实际的。但是,通过使用 AKMC,我们将能够在更长的时间范围内对体系的动态进行模拟。这是因为 KMC 模拟是将体系的动态描述为状态之间的转换,故一旦发现就可以快速计算出来。 | 对于经典的 MD 模拟,超过几百纳秒的模拟是不切实际的。但是,通过使用 AKMC,我们将能够在更长的时间范围内对体系的动态进行模拟。这是因为 KMC 模拟是将体系的动态描述为状态之间的转换,故一旦发现就可以快速计算出来。 |
</WRAP> | </WRAP> |
| |
| |
| <WRAP center info 100%> |
| === 提示 === |
| **本教程使用特定版本的QuantumATK创建,因此涉及的截图和脚本参数可能与您实际使用的版本略有区别,请在学习时务必注意。** |
| </WRAP> |
| |
| |
{{ :atk:introbar.png?direct&900 |}} | {{ :atk:introbar.png?direct&900 |}} |
| |
===== 运行 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。您观察过程影片可以发现,它似乎是弛豫过程而不是真正的扩散。 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| {{ :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 |
| 1 4.72548280e-13 1 |
| 2 6.40378862e-13 3 |
| 3 8.06232998e-13 4 |
| 4 5.87851546e-10 5 |
| 5 5.02734297e-09 4 |
| 6 5.98297032e-09 7 |
| 7 6.50322348e-09 4 |
| 8 7.34741500e-09 7 |
| 9 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 0 0.000000 Found new state |
| 0 1 0.864665 Found saddle connecting to state 1 again |
| 0 2 0.950213 Found saddle connecting to state 1 again |
| 0 3 0.981684 Found saddle connecting to state 1 again |
| 0 4 0.993262 Found saddle connecting to state 1 again |
| 1 5 0.000000 Found new state |
| 1 6 0.000000 Found new state |
| 1 7 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. |
| 1 8 0.375441 Found saddle connecting to state 3 again |
| 1 9 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. |
| 1 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. |
| 1 11 0.840168 Found saddle connecting to state 2 again |
| 1 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. |
| 1 13 0.877314 Found saddle connecting to state 3 again |
| 1 14 0.923293 Found saddle connecting to state 2 again |
| 1 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. |
| 1 16 0.940208 Found saddle connecting to state 2 again |
| 1 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]] |