这是本文档旧的修订版!
本教程介绍如何使用一种非常新的方法计算表面性质:基于格林函数的表面计算。与传统的表面片层(slab)模型不同,表面电子态结构通过非平衡态格林函数(NEGF)方法与块体电子态耦合。
这里研究的是银(100)表面的功函数,主要介绍:
首先简单介绍基于格林函数的表面计算,以及与传统slab模型的不同之处。下面两幅图显示了这二者的不同。
slab模型由有限层数的原子构成,C方向两边其他地方是真空,因此这个体系有两个表面(表面-真空界面)。静电(Hartree)势($V_H$)在slab的中间是和块体材料接近的,而在表面处有一定变化,并过渡到真空区域的常数。
与之不同,格林函数表面模型包含一个表面区域,并将其连接在一个电极上,电极部分是一个完整的块体材料周期结构。电子态在电极–表面区域之间的界面上通过格林函数匹配。因此,表面的电子态与块体基底连接,表面的化学势因此被固定为电极的化学势。
与传统的slab模型相比,基于格林函数方法的表面计算有明显的优势:
如前所述,格林函数表面模型有一个电极和一个表面区域(或称中间区域)组成。在ATK的语言里,可以称之为只有一个电极的器件结构。和其他ATK器件(NEGF)计算一样,计算由两步完成:
如下图所示,在晶胞C方向使用了三种不同的边界条件。电极部分向左方向采用周期边界条件,而在电极–表面处采用狄利克雷(Dirichlet)边界条件。而在表面一侧,Neumann边界条件是最自然合理的。
接下来,我们用 DFT 和格林函数方法计算 Ag(100)表面的功函数。基本操作步骤概括如下:
首先我们从银的块体结构出发,创建 (100) 表面。为此,首先使用LDA泛函、FHI赝势和SingleZetaPolarized基组对银的块体进行优化。
创建一个新的VNL project,下载包含优化过的结构的NetCDF文件:silver.nc 和 silver.py。将文件保存至项目文件夹下,注意到银的能带结构计算结果也计算好了,后面我们看到这是有用的。
你可以参考下面两个教程学习如何进行结构优化和能带计算。
将弛豫过的块体结构拖动到 Builder,确认LDA-SZP结构优化得到的晶格常数为 4.148Å。之后选择右侧Builder→Surface (Cleave) tool。
使用这个工具可以获得银晶体在100方向上的表面:点击Next两次,选择“Non-periodic and normal (slab)”,厚度为10层金属原子,如下图。
在下方stash里可以看到silver.nc(100)结构。双击选中它,点击右侧Device Tools → Surface From Bulk,创建用于格林函数计算的表面模型。
Surface from Bulk 工具可以选择电极和表面(这里标记为central region),默认的电极长度 8.3Å 应该正好。你还可以修改central region的长度。
点击 OK 将结构添加到Stash。结构名称前面自动添加了Surface。
使用局域化的基组进行功函数计算,需要在紧邻表面上增加幽灵原子(Ghost atom)(详见:https://docs.quantumwise.com/tutorials/work_function_ag_100/work_function_ag_100.html#work-function-ag-100)。最方便的做法是将表面一层原子转换为幽灵原子。
这个原子现在变成了只有基组没有原子核的幽灵原子。
点击右下角箭头将此结构发送到 Script Grenerator去设置并进行格林函数计算。
在 Script Generator 里双击添加如下计算步骤:
双击打开 New Calculator,在 Basic device 里,选择 LDA 交换关联泛函和 9x9x100 的 k 点。
ATK器件计算时,C方向需要选择很大的k点(这里是100),详见教程使用QuantumATK研究电子输运。 C方向k点仅用于电极部分计算,而不用于主要区域计算,这是因为central region 定义为非周期性体系,因此C方向k点只需要1。
接下来,找到 Basis set/exchange corelation 设置,选择 SingleZetaPolarized
基组。最后,在Poisson Solver设置里,将右侧C表面的的边界条件改为Neumann。