这是本文档旧的修订版!
版本:2017. alpha
在本教程中,我们将采用自适应动力学蒙特卡洛方法(AKMC)模拟 Si0.5Ge0.5 合金空位扩散。AKMC 是一种可以即时执行的动力学蒙特卡洛(KMC)模拟算法,无需预先定义一组状态和反应机制。通过定位势能面上的鞍点确定反应机制,然后运用谐波过渡态理论(HTST)计算反应速率。您可以在以下教程中了解更多 AKMC 方法的相关信息:Adaptive Kinetic Monte Carlo Simulation of Pt on Pt(100)。
对于经典的 MD 模拟,超过几百纳秒的模拟是不切实际的。但是,通过使用 AKMC,我们将能够在更长的时间范围内对体系的动态进行模拟。这是因为 KMC 模拟是将体系的动态描述为状态之间的转换,故一旦发现就可以快速计算出来。
为了生成初始的 Si0.5Ge0.5 合金结构,我们在 2015 版 ATK 的 Builder 里点击 Builders Substitutional Alloy。如果您使用的是更早版本,可以用这个脚本代替:↓initial-structure.py。
现在,您可以在 Builder 的主窗口和 Stash 中看到初始合金结构。可能与上图显示的有所不同,这是因为合金是随机生成的。接下来,我们要在初始结构上做一个 Si 的空位。本例中,我们删除了前面蓝色 Ge 后面的一个黄色 Si。您也可以随机创建一个 Si 空位。
现在,我们将要优化初始结构。
alloy.nc
。您也可以下载使用脚本:↓initial-structure.py。该脚本会生成一个硅超胞,然后用 Ge 随机替换 Si 以达到 50:50 的比例,最后做一个如下所示的 Si 空位。
通过拖动脚本到主 VNL 窗口并放到 Job Manager 上或直接通过终端运行脚本。
现在您已经有包含一个空位的 4×4×4 SiGe 超胞,结构优化后保存为 alloy.nc
。请注意,这是一个很小的体系,仅用于说明的目的。进行科学有效的模拟时,您将需要一个更大的体系。您可以通过从 LabFloor 合金中选中 gID0001,并将其拖放到 Viewer 从而在实现在 VNL 中可视化结构的功能。效果如下所示。
上图结构中有一个空位,但很难识别出。您将执行一个 LocalStructure 计算找出哪个原子没有典型的类金刚石排列方式。
local_structure.nc
。现在,您可以更清晰的观察到结构中的空位。在主窗口中,打开 Viewer 中的 LocalStructure,并展开侧栏的 Local Structure 面板,选择 Diamond-like。现在,所有不在空位附近并具有理想晶体结构的原子都被已经选中。打开 Properties 对话框,在 Atoms 选项卡中将所选原子的 opacity(不透明度)改为 0.1。将其他原子变得几近透明可以凸显空位附近的原子。结果如下图所示,请注意原子群中间明显的空缺。
现在您已经有一个优化好的初始结构,可以开始进行 AKMC 模拟了。将 alloy.nc
从主 VNL 窗口拖到 Script Generator。 New Calculator 会在 Scripter 中自动加载。从 ATK 2017 版开始,AdaptiveKineticMonteCarlo 是在 Scripter 操作实现的。如果您用的是老版本,您可以下载脚本 ↓adding-akmc.py,将其附加在 Editor 的目录里,而不用按照如下的步骤操作。
添加 Optimization AdaptiveKineticMonteCarlo 模块。
1. 双击 AdaptiveKineticMonteCarlo。
2. 在 Saddle Search 选区,设置 Number of searches 为 100。
3. 在 Optimization 选区,按下 Atomic Constraint Editor 按钮。
4. 在 Molecular Dynamics 部分,设置 temperature 为 1200 K。
如果您查看 AdaptiveKineticMonteCarlo 界面上的 Help… 按钮,里面有设置和定义的详细介绍。更高的搜索次数和更高的置信度会提供给我们更好的准确性,但相应的计算成本也会很大。
5. 保存输出文件为 akmc.nc
。
您看到的 AKMC 脚本(无论是从 Scripter 还是 ↓adding-akmc.py)都可以使用现存的文件重启模拟。更多有关 AKMC 参数描述的详细内容可参考教程:Adaptive Kinetic Monte Carlo Simulation of Pt on Pt(100)。
现在运行脚本,在台式机上耗时应该不超过半小时。最后,您将会有一个 MarkovChain 数据块存储在 akmc_markov_chain.nc
文件,一个 KineticMonteCarlo 数据块存储在 akmc_kmc.nc
文件。MarkovChain 数据块存储了模拟期间的所有状态(构形)以及它们之间的连接,它可以用来计算整个体系的全速率矩阵。
由于这些方法里的随机元素存在,您也许不能获得跟此处完全相同的结果。如果您想要追求与本教程相同的分析,可以下载用于制作教程的文件:↓akmc_kmc.nc,↓akmc_markov_chain.nc 和 ↓akmc_log.nc。
选择 Labfloor 上 akmc_markov_chain.nc 文件里的 labfloor_markovchain.png gID000,点击右边面板的 Markov Chain Analyzer。
检查每个状态(下面图里显示的为状态 0 和状态 5),使用 movie 工具里的播放按钮 查看原子的扩散和移动。从状态 0 开始,系统到状态 1 的能量势垒非常低,为 0.065 eV。您观察过程影片可以发现,它似乎是弛豫过程而不是真正的扩散。