用户工具

站点工具


atk:dft-1:2和dft-pps密度泛函方法计算电子态

差别

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

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
atk:dft-1:2和dft-pps密度泛函方法计算电子态 [2020/06/01 21:04] – [手动设置 DFT-1/2 参数] xie.congweiatk:dft-1:2和dft-pps密度泛函方法计算电子态 [2021/12/06 15:57] (当前版本) – [DFT-12 和 DFT-PPS 密度泛函方法计算电子态] fermi
行 1: 行 1:
-====== DFT-12 和 DFT-PPS 密度泛函方法计算电子态 ======+====== DFT-1/2 和 DFT-PPS 密度泛函方法计算电子态 ======
  
 **版本:**2017.0 **版本:**2017.0
行 146: 行 146:
 ===== DFT-PPS 法 ===== ===== DFT-PPS 法 =====
  
 +
 +如上文所述,DFT-PPS 法是将偏移应用于 SG15 赝势的非局域投影。赝势的非局域部分 $\hat{V}_\text{nl}$ 根据以下修改:
 +
 +$$\hat{V}_\text{nl} \rightarrow \hat{V}_\text{nl} \mathrel{+}
 +\sum_l |p_{l} \rangle  \alpha_{l} \langle p_{l} | ,$$
 +
 +求和覆盖了所有的投影 $p_{l}$,$\alpha_{l}$ 是一个取决于轨道角动量量子数 $l$ 的经验参数。注意,这种方法不会增加 DFT 计算的计算成本!
 +
 +所需的投影偏移参数已针对硅和锗进行了优化,仅可与 PBE 密度函数和 SG15 赝势一起使用。这些作为单独的基组实现:
 +
 +<code python>  
 +BasisGGASG15.Silicon_LowProjectorShift
 +BasisGGASG15.Silicon_MediumProjectorShift
 +BasisGGASG15.Silicon_HighProjectorShift
 +BasisGGASG15.Silicon_UltraProjectorShift
 +
 +BasisGGASG15.Germanium_MediumProjectorShift
 +BasisGGASG15.Germanium_HighProjectorShift
 +BasisGGASG15.Germanium_UltraProjectorShift
 +</code>
 +
 +对于每一种元素,同样的优化投影偏移设置都应用在所有的 SG15 基组。脚本 [[https://docs.quantumatk.com/_downloads/projector_shifts.py|↓ projector_shifts.py]] 展示了 Si 和 Ge 的固有 DFT-PPS 参数。
 +
 +<code python>  
 +basis_sets = [
 +    BasisGGASG15.Silicon_MediumProjectorShift,  # Si PPS-PBE SG15-Medium
 +    BasisGGASG15.Germanium_HighProjectorShift , # Ge PPS-PBE SG15-High
 +    ]
 +for basis_set,element in zip(basis_sets,['Si','Ge']):
 +    print(element)
 +    projector_shift = basis_set.projectorShift()
 +    print("s-shift: %+.3f eV" % projector_shift.sOrbitalShift().inUnitsOf(eV))
 +    print("p-shift: %+.3f eV" % projector_shift.pOrbitalShift().inUnitsOf(eV))
 +    print("d-shift: %+.3f eV" % projector_shift.dOrbitalShift().inUnitsOf(eV))
 +</code>
 +
 +运行后会产生如下所示的输出。Si 的 ''d-shift'' 是 0.0 eV,因为硅没有 d 电子:
 +
 +<code python>  
 +Si
 +s-shift: +21.330 eV
 +p-shift: -1.430 eV
 +d-shift: +0.000 eV
 +Ge
 +s-shift: +13.790 eV
 +p-shift: +0.220 eV
 +d-shift: -2.030 eV
 +</code>
 ==== Si、SiGe、Ge 的带隙和晶格常数 ==== ==== Si、SiGe、Ge 的带隙和晶格常数 ====
 +
 +
 +
 +如下所示,在 {{:atk:script_generator.png?direct&25|}} **Script Generator** 中,通过为 Si 或 Ge 选择其中一个 ''ProjectorShift'' 基组就可以启动 DFT-PPS 法。从普通 PBE 切换到 DFT-PPS 无需更改其他计算器设置。
 +
 +
 +{{ :atk:dft-1:pps_scripter-20200601.png?700 |}}
 +
 +DFT-PPS 法非常方便的一点是,它可以像普通 GGA 计算一样进行几何优化(力和应力最小化)–实际上,通常选择 DFT-PPS 参数提供高度精确半导体晶格常数的同时还能得到准确的带隙。
 +
 +接下来,您将研究块体 Si 和 Ge 和一个简单的 50/50 SiGe 合金。这三个块体构型在脚本 [[https://docs.quantumatk.com/_downloads/bulks.py|↓ bulks.py]] 中定义。脚本 [[https://docs.quantumatk.com/_downloads/pbe.py|↓ pbe.py]] 运行对 3 个构型进行结构优化和能带结构分析,而 [[https://docs.quantumatk.com/_downloads/pps.py|↓ pps.py]] 采用 DFT-PPS 法进行同样的操作。
 +
 +最后一个脚本如下所示。请注意该特定脚本中从第 2 到 12 行,从外部脚本导入了块体构型,并在这些构型和基组上建立了 Python 循环:
 +
 +{{ :atk:dft-1:截图-20200601.png?600 |}}
 +
 +
 +<code python>  
 +1   # -*- coding: utf-8 -*-
 +2   from bulks import si, ge, sige
 +3   setVerbosity(MinimalLog)
 +4   
 +5   configurations = [si,ge,sige]
 +6   labels         = ['Si','Ge','SiGe']
 +7   si_basis = BasisGGASG15.Silicon_MediumProjectorShift
 +8   ge_basis = BasisGGASG15.Germanium_HighProjectorShift
 +9   basis_sets     = [[si_basis], [ge_basis], [si_basis,ge_basis]]
 +10   
 +11   for bulk_configuration,label,basis_set in zip(configurations,labels,basis_sets):
 +12       outfile = "%s_PPS.hdf5" % label
 +13   
 +14       # -------------------------------------------------------------
 +15       # Calculator
 +16       # -------------------------------------------------------------
 +17       k_point_sampling = MonkhorstPackGrid(
 +18           na=9,
 +19           nb=9,
 +20           nc=9,
 +21           )
 +22       numerical_accuracy_parameters = NumericalAccuracyParameters(
 +23           k_point_sampling=k_point_sampling,
 +24           density_mesh_cutoff=90.0*Hartree,
 +25           )
 +26   
 +27       calculator = LCAOCalculator(
 +28           basis_set=basis_set,
 +29           numerical_accuracy_parameters=numerical_accuracy_parameters,
 +30           )
 +31   
 +32       bulk_configuration.setCalculator(calculator)
 +33       nlprint(bulk_configuration)
 +34       bulk_configuration.update()
 +35       nlsave(outfile, bulk_configuration)
 +36   
 +37       # -------------------------------------------------------------
 +38       # Optimize Geometry
 +39       # -------------------------------------------------------------
 +40       fix_atom_indices_0 = [0, 1]
 +41       constraints = [FixAtomConstraints(fix_atom_indices_0)]
 +42   
 +43       bulk_configuration = OptimizeGeometry(
 +44           bulk_configuration,
 +45           max_forces=0.05*eV/Ang,
 +46           max_stress=0.1*GPa,
 +47           max_steps=200,
 +48           max_step_length=0.2*Ang,
 +49           constraints=constraints,
 +50           trajectory_filename=None,
 +51           optimizer_method=LBFGS(),
 +52           constrain_bravais_lattice=True,
 +53       )
 +54       nlsave(outfile, bulk_configuration)
 +55       nlprint(bulk_configuration)
 +56   
 +57       # -------------------------------------------------------------
 +58       # Bandstructure
 +59       # -------------------------------------------------------------
 +60       bandstructure = Bandstructure(
 +61           configuration=bulk_configuration,
 +62           route=['L', 'G', 'X'],
 +63           points_per_segment=50
 +64           )
 +65       nlsave(outfile, bandstructure)
 +</code>
 +
 +
 +下载这 3 个脚本([[https://docs.quantumatk.com/_downloads/bulks.py|↓ bulks.py]], [[https://docs.quantumatk.com/_downloads/pbe.py|↓ pbe.py]], [[https://docs.quantumatk.com/_downloads/pps.py|↓ pps.py]]),用 {{:atk:job_manager.png?direct&25|}} **Job Manager** 或从终端运行后两个脚本:
 +
 +<code python>  
 +$ atkpython pps.py > pps.log
 +$ atkpython pbe.py > pbe.log
 +</code>
 +
 +每个作业执行大概需要 5 分钟。
 +
 +然后使用脚本 [[https://docs.quantumatk.com/_downloads/plot_pps.py|↓ plot_pps.py]] 绘制结果。运行该脚本应产生下图,其中对于 PBE (虚线)和 DFT-PPS (实线),计算出的间接带隙显示为红色圆圈,计算出的晶格常数显示为蓝色正方形。
 +
 +Si 和 Ge 的 DFT-PPS 带隙与实验比较一致(黑色圆点;来自参考文献 <color #00a2e8>[LRS96]</color> ),并且随锗含量递增大致呈线性变化。相反地,普通的 PBE 法预测 Ge 带隙为零。
 +
 +与未经校正的 PBE 相比,纯 Si 和 Ge 的 DFT-PPS 晶格常数也更接近实验(灰色方块)。
 +
 +{{ :atk:dft-1:sige-20200601.png?600 |}}
 +
  
  
  
 ==== 手动设置 DFT-PPS 参数 ==== ==== 手动设置 DFT-PPS 参数 ====
 +
 +当然,也可以手动设置 DFT-PPS 投影偏移参数,而不使用默认值。对于没有默认 DFT-PPS 参数(仅 Si 和 Ge 当前具有默认值)的元素,这将在 DFT-PPS 计算中特别有用。
 +
 +''PseudoPotentialProjectorShift'' 类的一个实例提供投影偏移,然后将其作为 SG15 基组的参数。例如,以下脚本手动地将 Si 和 Ge 的 DFT-PPS 参数设置为默认:
 +
 +<code python>  
 +#----------------------------------------
 +# Basis Set
 +#----------------------------------------
 +# Basis set for Silicon
 +SiliconBasis_projector_shift = PseudoPotentialProjectorShift(
 +    s_orbital_shift=21.33*eV,
 +    p_orbital_shift=-1.43*eV,
 +    d_orbital_shift=0.0*eV,
 +    f_orbital_shift=0.0*eV,
 +    g_orbital_shift=0.0*eV
 +    )
 +SiliconBasis = BasisGGASG15.Silicon_Medium(projector_shift=SiliconBasis_projector_shift)
 +
 +# Basis set for Germanium
 +GermaniumBasis_projector_shift = PseudoPotentialProjectorShift(
 +    s_orbital_shift=13.79*eV,
 +    p_orbital_shift=0.22*eV,
 +    d_orbital_shift=-2.03*eV,
 +    f_orbital_shift=0.0*eV,
 +    g_orbital_shift=0.0*eV
 +    )
 +GermaniumBasis = BasisGGASG15.Germanium_High(projector_shift=GermaniumBasis_projector_shift)
 +
 +# Total basis set
 +basis_set = [
 +    SiliconBasis,
 +    GermaniumBasis,
 +    ]
 +</code>
 +
 +
 +<WRAP center alert 100%>
 +=== 警告 ===
 +选择适当的 DFT-PPS 参数可能是一件非常微妙的事情,并且通常需要数值优化程序。[[https://docs.scipy.org/doc/scipy/reference/optimize.html|SciPy]] 软件可以提供许多此类例程,但是,如果您选择使用非默认 DFT-PPS 参数,则这些参数的质量完全由用户自己承担!
 +
 +QuantumWise 不支持优化 DFT-PPS 参数。如果有默认参数的,我们通常建议用户使用默认值。
 +</WRAP>
 +
 +
 +
 +
 +
 +
 +
  
  
  
-===== 参数 ===== 
  
  
  
 +===== 参考 =====
  
 +  * 英文原文:https://docs.quantumatk.com/tutorials/dft_half_pps/dft_half_pps.html
 +  * [FMT08] Luiz G. Ferreira, Marcelo Marques, and Lara K. Teles. Approximation to density functional theory for the calculation of band gaps of semiconductors. //Phys. Rev. B//, 78:125116, Sep 2008. [[http://dx.doi.org/10.1103/PhysRevB.78.125116|doi:10.1103/PhysRevB.78.125116]].
 +  * [FMT11] (1, 2) Luiz G. Ferreira, Marcelo Marques, and Lara K. Teles. Slater half-occupation technique revisited: the LDA-1/2 and GGA-1/2 approaches for atomic ionization energies and band gaps in semiconductors. //AIP Adv//., 1(3):032119, 2011. [[https://aip.scitation.org/doi/10.1063/1.3624562|doi:10.1063/1.3624562]].
 +  * [LRS96] (1, 2, 3) M. Levinshtein, S. Rumyantsev, and M. Shur, editors. //Handbook Series on Semiconductor Parameters//. volume 1. World Scientific Publishing Cp. Pte. Ltd., Singapore, 1996.
 +  * [WZ95] L.-W. Wang and A. Zunger. Local-density-derived semiempirical pseudopotentials. //Phys. Rev. B//, 51:17398–17416, 1995. [[http://dx.doi.org/10.1103/PhysRevB.51.17398|doi:10.1103/PhysRevB.51.17398]].
atk/dft-1/2和dft-pps密度泛函方法计算电子态.1591016678.txt.gz · 最后更改: 2020/06/01 21:04 由 xie.congwei

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