平面波(PW)计算器和 LCAO 计算器之间的主要差异在于,单电子本征态在平面波基组中展开,而不是原子中心基函数。电子结构的平面波表示在周期性块体系统的计算研究中具有悠久的传统,并具有以下关键优点:仅通过增加计算中包含平面波的数量系统地改善基组(尽管计算成本显着增加)。这使得 PW 计算器成为研究(不是太大)块体系统通常采用 LCAO 计算器的有趣替代,且还可以用作调查特定系统 LCAO 基组准确性的基准。
举个例子,我们将找到块体铜的晶格常数和能带结构,但首先我们需要收敛 PW 基的大小以确保我们的结果准确。
请注意,在 2017 版本的 QuantumATK 中,平面波计算器仍然是测试版,因此它并没有实现所有功能,还有更高的错误风险。从 QuantumATK O-2018.06 开始,它已经是一款功能齐全的成品。
PW 计算器中包含平面波的数量取决于平面波的截断能 $E_\mathrm{cut}$。PW 计算的精确度随平面波数量的增加而增高,但计算成本亦是如此。因此,我们必须通过收敛性研究选择一个计算精度和成本之间的期望权衡。
为收敛 PW 基组,我们计算了一系列截断能下的所需性质,本例指的是总能,即为了研究需要多大的 $E_\mathrm{cut}$ 才可以得到足够精确的结果。
为实现以上,按照下列步骤:
您的 New Calculator 窗口应如下所示:
我们现在需要对 PW 截断创建循环。在脚本顶部,指定编码之后插入以下行,计算截断能在 10-100 Hartree 范围内的总能:
e_cut_list = range(20,110,10)*Hartree for e_cut in e_cut_list:
您还需要在这些行之后缩进所有内容。
您可以通过选中它们并按下 Tab
键快速在编辑器中缩进多行。
最后,我们需要更改 for
循环中使用的变量截断值。找到定义密度网格截断的所在行,这里应该是第 37 行,并将其替换为以下内容:
density_mesh_cutoff=e_cut*4,
找到定义计算器的代码行,输入 wave_function_cutoff=e_cut
,如下所示:
calculator = PlaneWaveCalculator( wave_function_cutoff=e_cut, numerical_accuracy_parameters=numerical_accuracy_parameters, )
默认网格截断是 PW 截断的 4 倍,可以确保没有精度损失和不必要的计算费用。
您的脚本应该像这样:↓ e-cut-conv.py,然后运行它。在现代的笔记本电脑上耗时少于半小时,如果使用 MPI 并行则会大幅缩短时间。
我们计划在 2018 年添加一个允许您从 Script Generator 设置此过程的新功能。
在某些情况下,如果要重复之前的计算,但需要采用较大的 PW 截断,则重启计算会非常有用。以这种方式设置脚本稍微复杂一些,但在我们的例子中,它会使计算运行得更快,所需时间大约减少 2 倍。脚本示例可以在这里下载:↓ restart-e-cut-conv.py。
运行脚本后,我们现在可以绘制系统总能量与 PW 截断值的关系图。您可以使用这个简单脚本绘制数据:↓ plot-e-cut-conv.py。它将生成两个图,一个采用了截断的所有值,另一个图省略了第一个值以使收敛区域的图像更清晰。第二个图应如下所示:
上图显示截断值为 50 Hartree 时,总能量已经收敛到每个原子 10 meV 以内,而 70 Hartree 需要将能量收敛至所选参考值截断值 100 Hartree 时的 1 meV 内。参考和收敛标准的选择由用户基于所需精度决定,且与计算成本相平衡。本例中,我们最感兴趣的是快速计算,因此我们选择 50 Hartree 的截断值。
所需的截断值很大程度上取决于元素和特定的赝势,因此在使用新的赝势时应始终测试收敛。
现在我们已经为可以令人满意的精度找到了所需的 PW 截断值,能够计算一些块体 Cu 的性质了。我们将做晶格常数和能带结构的简单计算。返回 Script Generator 窗口。
在 8 核的计算机上使用 8 个 MPI 进程运行脚本大约需要 10 分钟,因此如果在笔记本电脑上运行,则可能需要几个小时。
ATK-PW 计算器会使用对称性来减少必须计算 k 点的数量,并且在减少的 k 点上并行化。为了获得最有效的并行,您应该在 Script Generator 中检查减少的数量,并使用尽可能接近这个数字除数的多个 MPI 进程。
您现在可以检查日志文件 Copper.log
和数据文件 Copper.hdf5
,验证我们在应力和力优化后得到铜的晶格常数 3.660650 Å,总能量为 -4968.92 eV 以及放大费米能级周围的区域得到以下的能带结构。
在 QuantumATK 2017.0 中,并非所有的 QuantumATK 分析模块都支持 PW 计算器,因为它仍处于测试阶段。但是 Script Generator 了解这一事实,并将删除任何不支持的分析模块,并在生成实际脚本并将其发送到 Editor 或 Job Manager 时忽略它们。如果脚本是手动创建的,QuantumATK 会在遇到不支持平面波计算器的分析模块时给出错误消息。