用户工具

站点工具


atk:器件计算中重复使用电极

差别

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

到此差别页面的链接

后一修订版
前一修订版
atk:器件计算中重复使用电极 [2019/06/30 14:54] – 创建 xie.congweiatk:器件计算中重复使用电极 [2019/06/30 15:07] (当前版本) – [电极和器件的单独脚本] xie.congwei
行 1: 行 1:
 ====== 器件计算中重复使用电极 ====== ====== 器件计算中重复使用电极 ======
 +
 +本文为使用 QuantumATK 电子器件的典型研究,涉及对器件区域进行不同修改产生影响的系统研究。修改的变动可以是半导体线中的掺杂剂/空位的原子位置或类型,或者是附着到纳米管上的不同分子等。在任何情况下,电极通常都保持不变。因此,可以仅计算一次电极的电子结构,然后在其他计算中对其重复使用以节省计算时间。
 +
 +因此,在本教程中,您将学习如何重复使用器件电极进行不同的计算,从而通过仅计算一次电极的收敛状态来节省时间。
 +
 +
 +<WRAP center important 100%>
 +=== 注意 ===
 +**方法**
 +QuantumATK 的器件计算通常分为两步:首先计算电极的自洽状态,然后进行实际的器件计算。任何之后的 SCF 分析和其他操作都是在这两个步骤之后完成的。
 +
 +重复使用初始电极计算是这样的:如上所述,从为正常器件计算所设计的 Python 脚本开始,您将该计算分成两个脚本:一个脚本用于计算并保存电极的自洽状态,另一个重复使用这些电极并在器件计算中直接启用。
 +</WRAP>
 +
 +
 +<WRAP center alert 100%>
 +=== 警告 ===
 +**计算设置**
 +重要的是,用于电极计算的参数与将在最终器件计算中使用的参数相同,或者至少非常近似。否则,电极费米能级相对于器件平均费米能级可能会发生变化,导致 SCF 收敛出现问题。
 +
 +因此,首先要确定数值精度参数,如交换关联函数、温度、网格截止、基组等,然后在整个计算程序中坚持使用这些参数。
 +
 +此外,电极和器件 **k 点取样**在 A 和 B 方向上相互匹配是绝对必要的!您不能在器件中沿 A 使用 3 个 k 点,而在电极中沿 A 使用 7 个 k 点。
 +</WRAP>
 +
 +
  
  
 ===== 电极和器件的单独脚本 ===== ===== 电极和器件的单独脚本 =====
 +
 +
 +需要准备一些脚本,但主要是复制/粘贴现有的 Python 代码行:
 +
 +  - 首先,像您通常对待某些具有代表性的中心区域那样设置完整的器件计算。可以使用 Script Generator {{:atk:script_generator.png?direct&25|}} 完成此项任务,并为要使用的数值精度参数做出适当的选择。
 +  - 保存脚本的两个副本:''electrode.py'' 和 ''device.py''
 +  - 在 Editor {{:atk:editor.png?direct&25|}} 中打开 ''electrode.py'',并向下滚动到定义 ''device_configuratio''n 的位置,通常如下图所示,**删除**这些行。
 +
 +<code python>  
 +device_configuration = DeviceConfiguration(
 +    central_region,
 +    [left_electrode, right_electrode]
 +    )
 +</code>
 +
 +<WRAP center tip 100%>
 +=== 提示 ===
 +脚本 ''electrode.py'' 仅用于计算电极。您可能希望完全删除中心区域的定义以保持整洁,但这并非是绝对必要的。
 +</WRAP>
 +
 +4.现在向下滚动至脚本末尾,删除与器件计算器相关的所有内容。也就是说,从以下注释行中**删除**所有行直至脚本末尾:
 +
 +<code python>  
 +#----------------------------------------
 +# Device Calculator
 +#----------------------------------------
 +</code>
 +
 +5.在脚本末尾**添加**以下几行,并将脚本保存为 ''electrodes.py''
 +
 +<code python>  
 +left_electrode.setCalculator(left_electrode_calculator)
 +left_electrode.update()
 +nlsave('left_electrode.nc', left_electrode)
 +right_electrode.setCalculator(right_electrode_calculator)
 +right_electrode.update()
 +nlsave('right_electrode.nc', right_electrode)
 +</code>
 +
 +<WRAP center important 100%>
 +=== 注意 ===
 +在电极完全相同的情况下,删除涉及 “right_electrode” 的三行,并从所有剩余变量中删除带有 “left” 前缀的:
 +<code python>  
 +electrode.setCalculator(electrode_calculator)
 +electrode.update()
 +nlsave('electrode.nc', electrode)
 +</code>
 +</WRAP>
 +
 +6.**运行**电极脚本,如利用 Job Manager {{:atk:job_manager.png?direct&25|}}。
 +
 +7.现在开始修改脚本 ''device.py''。从头开始,删除所有涉及左右电极结构的行,即**删除**所有线直至(但不包括)
 +
 +<code python>  
 +# -------------------------------------------------------------
 +# Central region
 +# -------------------------------------------------------------
 +</code>
 +
 +8.代替地,在脚本的顶部**添加**以下行,即从文件中读取保存的电极:
 +
 +<code python>  
 +left_electrode = nlread("left_electrode.nc")[0]
 +right_electrode = nlread("right_electrode.nc")[0]
 +</code>
 +
 +<WRAP center tip 100%>
 +=== 提示 ===
 +在电极完全相同的情况下,如果仅执行并保存单个电极计算,如 ''electrode.nc'',使用此文件可以加载两个电极。
 +</WRAP>
 +
 +9.建议(但不是绝对必要)也删除电极计算器的定义,包括器件计算器中的几行:
 +
 +<code python>  
 +electrode_calculators=
 +    [left_electrode_calculator, right_electrode_calculator],
 +</code>
 +
 +是的,您已成功将电极和器件计算分离成了两个脚本。完成电极计算后,您可以运行 ''device.py'',并观察到它完全绕过了电极计算。
 +
 +<WRAP center tip 100%>
 +=== 提示 ===
 +**下一步是什么?**
 +对于这些电极计算的每个新的中心区域结构,只需替换 **device.py** 中 **central_region** 的定义,然后运行器件计算。确认检查器件参数,如偏压等。
 +
 +或者,您可以将上面的步骤 7-9 应用于任何完整的器件计算脚本,同时牢记有关数值精度参数的要点。
 +</WRAP>
 +
 +===== 参考 =====
 +
 +  * 英文原文:https://docs.quantumwise.com/tutorials/reusing_electrodes/reusing_electrodes.html
 +
  
atk/器件计算中重复使用电极.1561877671.txt.gz · 最后更改: 2019/06/30 14:54 由 xie.congwei

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