用户工具

站点工具

本页面的其他翻译:
  • zh

atk:添加_组合_修改经典势函数

这是本文档旧的修订版!


添加、组合、修改经典势函数

简介

新的 ATK-ForceField 软件包提供了许多涵盖广泛元素和系统的预定义经典势。但是,如果您对某个特定的势感兴趣,而其尚未成为预定义集的一部分,只要有支持的基础势,您就可以轻松地添加这些参数并创建自己的势。您还可以修改现有势的单个参数将其调整为特殊的参考系统。此外,您可以结合不同的势来涵盖更广泛的元素。本教程简要概述了 ATK-ForceField 的此功能。

注意

对于 2017 年之前的 QuantumATK 版本,ATK-ForceField 计算器位于 ATK-Classical 之下。

有关 ATK-ForceField 和基础 TremoloX 软件包中可用势的分类和函数的详细概述及文档,请查看 ATK Reference ManualTremoloX section。在那里,您将找到所有功能的定义和相应的参数。

注意

请注意,如果您需要使用新的势,请务必仔细阅读基础出版物,以确保势函数适合您需要的应用。

如果有可能,您应该将一些获得的基准值与经典势作比较以与实验值或适宜的更高水平的计算如结果一致,如 DFT 模拟。尤其适用于不同势的组合,因为它们可能已经在特定上下文中被参数化了,且并不总是能够确保应用在完全不同的环境中。

从零开始添加一个新的经典势函数

在本节中,您将学习如何将取自文献中势函数的一个新参数集添加到 ATK-ForceField 计算器。您将按照指导从头开始完成势函数的设置以解释 TremoloX 势集的各种内容。在实践中,通常从相似的势开始会更合适些,将其发送到 Editor,并将 Script details 设置为 “Show defaults” 用以报告势的所有详细信息,然后就是在 Editor 中编辑参数。

作为第一个例子,您将考虑一种简单的氧化钛晶体。最受欢迎的二氧化钛的经典势之一是由 Matsui 和 Akaogi(MA)[1]提出的,因为它很好地再现了晶体和无定形二氧化钛体系的基本性质。稍后,您将设置一个用于无定形氧化物系统[2]模拟的势。

设置系统

为了设置合适的测试系统,请打开 Builder,单击 Add From database,搜索 “TiO2”,然后选中并添加 Rutile 晶体结构。

您现在可以将构型发送到 ScriptGenerator 设置所需的优化、分子动力学或分析脚本。现在,您可以选择任何一个任意计算器作为占位符。一个典型的模拟脚本可以包括 Calculator、Optimization OptimizeGeometry 和 Analysis ElasticConstants 模块。为获得准确的结果,请将 OptimizeGeometry 设置中的 maximum force 和 maximum stress 值以及 ElasticConstants 设置中的 maximum force 设置为 0.001 eV /Å(eV /Å3)。此外,取消勾选 OptimizeGeoemtry 控件中 Constrain cell 的选框以优化晶格参数。

将脚本发送到 Editor

设置势函数

Editor 中,找到定义势的模块(即 BulkConfiguration 之后和 OptimizeGeometry 模块之前的所有部分)并删除它。

为定义一个新的 TremoloX 势,您首先需要初始化一个新的 TremoloXPotentialSet 数据块。您可以通过添加以下内容实现:

potentialSet = TremoloXPotentialSet('MatsuiAkaogi_TiO')

圆括号中的字符串定义了势的名称,但对其功能没有任何影响。

目前为止,势集还是空的,因此您需要添加所有必需的组件。您应该首先添加 ParticleTypes。在本例中,通过在脚本中插入以下两行来添加一个钛和一个氧粒子类型:

potentialSet.addParticleType(ParticleType(symbol='O', mass=15.9994*atomic_mass_unit, charge=-1.098))
potentialSet.addParticleType(ParticleType(symbol='Ti', mass=47.867*atomic_mass_unit, charge=2.196))

粒子电荷取自文献[1]。MA 势由两种交互类型组成:

1.Tosi-Fumi(通常也称为 Buckginham)型势(即指数、排斥项贡献和有吸引力的范德瓦尔斯部分的组合)。 2.静电库仑相互作用力模拟原子的粒子电离。

第一部分可以使用 TosiFumuPotential 添加,实现了势函数

$$V(r) = A e^{B(\sigma -r)} - \frac{C}{r^6} - \frac{D}{r^8} \, .$$

如果将上述公式与参考文献中给出的等式进行比较[1],您会注意到最后一项不是必需的,这就意味着 D 必须设置为零。注意文献[1]中的能量单元单位为 kJ / mol。参数必须以此为单位或转换为电子伏特。A,B,C,D 和 $\sigma$ 参数可以按照如下设置:

potentialSet.addPotential(TosiFumiPotential(particleType1='O',
                                            particleType2='Ti',
                                            A=0.811696*kiloJoulePerMol,
                                            B=5.154639*Angstrom**-1,
                                            sigma=2.8171*Angstrom,
                                            C=1215.0*kiloJoulePerMol*Angstrom**6,
                                            D=0.0*eV*Angstrom**8,
                                            r_i=6.0*Angstrom,
                                            r_cut=7.5*Angstrom))
potentialSet.addPotential(TosiFumiPotential(particleType1='O',
                                            particleType2='O',
                                            A=0.979056*kiloJoulePerMol,
                                            B=4.27350*Angstrom**-1,
                                            sigma=3.2678*Angstrom,
                                            C=2916.0*kiloJoulePerMol*Angstrom**6,
                                            D=0.0*eV*Angstrom**8,
                                            r_i=6.0*Angstrom,
                                            r_cut=7.5*Angstrom))
potentialSet.addPotential(TosiFumiPotential(particleType1='Ti',
                                            particleType2='Ti',
                                            A=0.644336*kiloJoulePerMol,
                                            B=6.49351*Angstrom**-1,
                                            sigma=2.3664*Angstrom,
                                            C=506.25*kiloJoulePerMol*Angstrom**6,
                                            D=0.0*eV*Angstrom**8,
                                            r_i=6.0*Angstrom,
                                            r_cut=7.5*Angstrom))

每个势函数的前两个参数决定了势的哪两种粒子类型相互作用。附加参数 $r_{i}$ 和 $r_{cut}$ 确定范围和截断行为。在本例中,对于小于 6 Å 的距离,势函数遵循原始形式,而对于较大距离,如高达 7.5 Å 时会调用平滑函数。在较大距离处,假设这些相互作用为零。

通过添加合适的 Coulomb solver 来考虑静电相互作用。所有的 Coulomb solver 都使用您为粒子类型定义的粒子电荷。ATK-ForceField 中的默认算法是 CoulombDSF,采用一个截断和阻尼移位力(DSF)来平滑过渡[2]。为使这种方法获得较高精度(这对于静态计算尤其重要,如弹性常数,声子或晶格常数),必须选择足够高的截断值(例如 ≥ 15 Å)。在这里,我们将有选择地使用 smooth-particle-mesh-Ewald 方法(CoulombSPME),它能够自动处理库仑相互作用的远程贡献。Coulombsolver 可通过以下添加:

potentialSet.setCoulombSolver(CoulombSPME(r_cut=9.0*Angstrom))

最后,您必须初始化实际的 TremoloXCalculator,并将创建的势集合作为参数传递。之后,您必须将计算器附加到块体构型:

calculator = TremoloXCalculator(parameters=potentialSet)
bulk_configuration.setCalculator(calculator)

脚本的其余部分可以保留原样。您可以在文件 ↓ TiO2_Matsui.py 中找到示例脚本。

现在,您可以将脚本发送到 JobManager 并启动计算。结果应与文献[1]一致。

无定形氧化物的势函数

在本例中,引入的另一种势被设计用于模拟非晶材料,如钛、硅、铪或氧化钽,以及它们的混合氧化物[3]

注意

ATK-2015 版本开始,这种势已经可以作为预定义势 Trinastic_HfOSiTaTi_2013

为测试势,您可以使用前一个示例中的金红石构型。该势与 MA 势相似,如上所示,但它另外还包含了一个 MorsePotential

$$V(r) = E_{ij} \left [ \left(1 - e^{-k_{ij}(r-r_0)} \right)^2 - 1 \right ]$$

实际上,文献[3]中提出的公式省略了方括号中最后一项的贡献。然而,由于该项仅表示能量的恒定偏移,对 MD 模拟中的力并无影响,因此我们将在此处忽略这种差异。尽管通过使用 TosiFumiPotential 原则上可以设置类似于前面示例的势函数项,但我们将采用单独地添加所有项呈现另一种可选方法。

为了获得势,您需要一个取自 BuckinghamPotential 一个离散项的指数排斥贡献,因此您将使用 LennardJonesMNPotential,最后用 MorsePotential

在 Ti-O 相互作用的例子中展示了势的设置。通过从文献[3]插入相应的 element-pair-specific 势参数,其他元素遵循相同的方案。

从初始化一个新的 TremoloXPotentialSet 开始,添加具有相应粒子电荷的粒子类型:

potential_set = TremoloXPotentialSet('Trinastic_JCP2013')
potential_set.addParticleType(ParticleType(symbol='O', mass=15.9994*atomic_mass_unit, charge=-1.2))
potential_set.addParticleType(ParticleType(symbol='Ti', mass=47.867*atomic_mass_unit, charge=2.4))

然后定义一个排除 Buckingham 项:

potential_set.addPotential(BuckinghamPotential(particleType1='O',
                                               particleType2='Ti',
                                               A=5105.12*eV,
                                               rho=0.2253*Angstrom,
                                               r_i=6.0*Angstrom,
                                               r_cut=7.5*Angstrom))

添加色散项。您将仅需要 Lennard-Jones 势中具有吸引力的部分,即 A 参数必须设置为零:

potential_set.addPotential(LennardJonesMNPotential(particleType1='O',
                                                   particleType2='Ti',
                                                   A=0.0*eV*Angstrom**12,
                                                   B=20.0*eV*Angstrom**6,
                                                   m=12,
                                                   n=6,
                                                   r_cut=10.0*Angstrom))

添加 Morse 势:

potential_set.addPotential(MorsePotential(particleType1='O',
                                          particleType2='Ti',
                                          E_0=0.3478*eV,
                                          k=1.9*Angstrom**-1,
                                          r_0=1.96*Angstrom,
                                          r_i=6.5*Angstrom,
                                          r_cut=7.0*Angstrom))

最后,设置一个 Coulomb solver,如 CoulombSPMECoulombDSF 计算静电相互作用力,并初始化一个具有以下势集的新 TremoloXCalculator:

potential_set.setCoulombSolver(CoulombSPME(r_cut=9.0*Angstrom))
calculator = TremoloXCalculator(parameters=potential_set)

在文献[3]中,提出了一种可供选择的强大参数化,可以通过插入相应的参数替代上文展示的那些来实现。其余元素对之间交互的实现也类似。在文献[3]的参数表中,您会发现对于某些元素组合,Morse 能量参数为零,即意味着这些元素之间不需要 Morse 势。完整的势可以在文件 ↓ script_Trinastic_potential.py.txt 中找到。

Tersoff 和 Lennard-Jones 的组合势函数

设置系统

MoS2 中的层内和层间内聚力

参考

atk/添加_组合_修改经典势函数.1556503307.txt.gz · 最后更改: 2019/04/29 10:01 由 xie.congwei

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