这是本文档旧的修订版!
版本:2017.1
本教程介绍了新的 GeneralizedLatticeMatch 方法,用于将两个块状晶体组合到一个界面。
在很多情况下,尽管形成界面的两个表面上没有精确的结构信息,人们也对在两种材料之间创建一个真实的界面很感兴趣。GeneralizedLatticeMatch 方法可以仅基于它们的整体晶体结构自动查找两个晶体之间所有可能的界面超胞来简化这个过程。此方法是 [JLS + 17] 中描述算法的优化版本。与 The Interface Builder in QuantumATK 中描述的在 Interface Builder 中使用的晶格匹配方法相比,本方法是很公正的,因为它考虑了两个晶体形成界面的所有可能表面。
为每个界面进行大量的结构参数计算使人们可以容易分析匹配模式,选择最合适的界面用于进一步研究。然后,可以采用 QuantumATK 中的 Interface Builder 轻松实现创建所需的界面结构。
下文描述了 GeneralizedLatticeMethod 方法中采用算法的主要步骤,与 Interface Builder 中使用的算法非常相似(请参见 The Interface Builder in QuantumATK)。
1.首先,创建形成界面两种材料中第一种的可能表面矢量 $[\mathbf{a}_{1}, \mathbf{a}_{2}]$,从原胞 Bravais 向量的线性组合开始:
$$\mathbf{a}_1 = \sum_{i=1}^3 c_i \mathbf{u}_i \quad c_i \in \mathbb{Z},$$
$$\mathbf{a}_2 = \sum_{i=1}^3 c_i^\prime \mathbf{u}_i \quad c_i^\prime \in \mathbb{Z},$$
随后对所得矢量从 $\mathbf{R}^3$ 到 $\mathbf{R}^2$ 投影。使用相同的步骤创建第二个表面的矢量 $[[\mathbf{b}_{1}, \mathbf{b}_{2}]]$。如下文输入和输出说明部分所述,形成表面晶胞的数量由下列设定限制:
2.每组表面晶胞的匹配都通过在 Interface Builder 中使用的晶格匹配法,详情参见技术注解 The Interface Builder in QuantumATK。
3.然后计算得到的平均应变为: $$\mathbf{\bar{\varepsilon}} = \sqrt{\frac{\varepsilon_{11}^2 + \varepsilon_{22}^2 + \varepsilon_{11}\varepsilon_{22} + \varepsilon_{12}^2}{4}}$$
如在技术注解 The Interface Builder in QuantumATK 中的定义,这里的 $\epsilon_{11}$、$\epsilon_{22}$ 和 $\epsilon_{12}$ 是 2 D 应变张量的组分。
请注意,此处平均应变的定义与 The Interface Builder in QuantumATK 中使用的不同。当前的应变定义更适合本方法,因为它是应变张量的不变量。
为了使用 GeneralizedLatticeMatch 方法,可以如下设置一个简单的脚本:
1 # Read the BulkConfiguration of the primitive cell of the 2 # first material 3 configuration_1 = nlread('InAs.py',BulkConfiguration)[-1] 4 # Read the BulkConfiguration of the primitive cell of the 5 # second material 6 configuration_2 = nlread('Al.py',BulkConfiguration)[-1] 7 8 # Run the GeneralizedLatticeMatch method 9 generalized_lattice_match = GeneralizedLatticeMatch( 10 configuration_1, 11 configuration_2, 12 max_strain=0.02, 13 maximum_miller_index=3, 14 longest_surface_lattice_vector=50*Angstrom, 15 max_surface_area=200.0*Angstrom**2, 16 user_given_miller_index=None 17 )
该脚本读取两个输入文件,每个输入文件包含构成界面两种材料之一的块体原胞的 BulkConfiguration。然后,将 GeneralizedLatticeMatch 方法应用于这两个结构。可以设置许多输入参数用以控制可能的界面超胞的精度和搜索范围。输入参数的完整列表为:
configuration_1
:第一种材料块体原胞的 BulkConfiguration。configuration_2
:第二种材料块体原胞的 BulkConfiguration。max_strain
:施加在每个表面的最大应变。maximum_miller_index
:密勒指数 $[h,k,l]$ 定义给每个表面的最大值。longest_surface_lattice_vector
:每个表面晶格矢量 $[\mathbf{a}_{1}, \mathbf{a}_{2}]$ 和 $[[\mathbf{b}_{1}, \mathbf{b}_{2}]]$ 的最大长度。max_surface_area
:界面超胞表面区域的最大值。user_given_miller_index
:configuration_1
表面预先定义的密勒指数。
当参数 user_given_miller_index
设置为不同于 None
的值时,可能表面的搜索仅限于第二种材料,而第一种材料的表面保持固定。此选项将在示例 2 使用。
计算出可能的匹配后,结果将直接输出在计算的 QuantumATK 日志文件中。匹配项将按照应变增加的顺序显示,并列出表征每个匹配项的多个输出参数。
+----------------------------------------------------------------------------------------+ | A B Strain Atoms Area Aspect Angle Rotation | +----------------------------------------------------------------------------------------+ [ 1 0 0] >-< [ 1 0 0] 0.000110 29 72.9 1.0 90.0 0.0 [ 2 2 1] >-< [ 1 0 0] 0.000110 23 163.9 2.2 153.4 26.6 [ 3 3 2] >-< [ 1 1 1] 0.004030 28 170.9 1.2 162.6 60.3
输出参数:
A
:密勒指数 $[h,k,l]$ 的第一个表面。B
:密勒指数 $[h,k,l]$ 的第二个表面。Strain
:两个表面的最大应变。Atoms
:界面超胞的总原子数。Area
:界面超胞的表面区域。Aspect
:界面超胞两个表面矢量的纵横比。通过在比值的分子上取最大矢量计算比率。Angle
:界面超胞两个矢量的夹角。Rotation
:界面超胞连个表面的旋度。