目录

1平面波函数和布里渊区

2 k空间中的积分

Guass-Legendre(高斯-勒让德)求积方法 | Guass型求积公式 + Legendre多项式

3在布里渊区如何选择点

4 k空间的总结


收敛是执行DFT计算时候一个重要概念。就比如在本专栏第一篇文章,DFT所确定的原子构型基态电荷密度,就是由一组复杂的数学方程给出。为了在计算机上面实际求解这一问题,必须进行一系列数值近似:多维空间中的积分必须近似为该函数在有限点集合上面的积分;本应该表示为无穷多个加和项的解,也必须截断成有限个加和。对于这种数值近似,在计算次数逐渐增加时候,能得到更为精确的解,这一过程称之为收敛。

DFT计算数值收敛并不等价于求出了薛定谔方程的精确解,因为在做数学近似的时候截断丢失了本不应该丢掉的量,所以DFT计算存在计算精度问题,这个问题以后探讨。

1平面波函数和布里渊区

采用晶格矢量表示,在空间中重复的晶胞成为超晶胞。如果在这个周期性系统中求解薛定谔方程,特德解需要满足布洛赫定理的基本特点,该定理认为:所求的解可以表达成若干项的连加和,即:

  (1)

式中:在空间中具有与超晶胞相同的周期性,也就是对于任意整数

   (2)

该定理意味着可以用每一个k值分别独立的求解薛定谔方程。刚才是从薛定谔方程角度进行说明,该定理也同样适用于薛定谔方程这些解所衍生出来的其他物理量,例如电荷密度。

综合考虑来说,使用k求解DFT数学问题要比使用r更为方便。因为函数称为波函数,所以采用这一计算思想的方法称之为波函数计算。矢量r的空间称之为实空间,矢量k的空间称之为k空间(倒易空间)。下面介绍k空间的一些特点。

在实空间中可以用晶格矢量的表达式来确定位置,同样的,在虚空间也可以定义三个矢量来确定位置,也就是所谓的倒格矢(并且如果就有,否则就是0,这就有

     

对于实空间晶格矢量,一个很自然的选择就是对于所有i,都有。所以倒格矢满足

对于该体系而言,晶格矢量和倒格矢都定义了立方体,前者边长是a,后者边长是.。

实空间的晶格矢量越大,则倒易空间中所对应的倒格矢越小。

倒格矢所定义的三维形状,并不是总是和实空间的超晶胞形状完全相同。对于FCC晶胞而言:

             

此时,倒格矢是

       

下图画出了这些实空间的晶格矢量和倒格矢。

前面介绍过原胞的概念,就是完全定义一个无限扩展的周期性材料时,含有必要的最少的原子个数的超晶胞。也可以说原胞是含有所需信息的最小体积单元。

Wigner-Seitz定理:无论是对于实空间矢量,还是对倒易晶格矢量,都可以定义原胞。由于倒易空间的原胞具有很多特点,就专门对其进行命名,即布里渊区。布里渊区在材料能带理论中具有核心意义,对于布里渊区的几个特别重要的特点,进行单独的命名。最重要的就是K=0处,在k空间这个位置称之为点。为了完全说明实空间和倒易空间中长度的关系,将(布里渊区的缩写)体积记作为,根据Wigner-Seitz方法在实空间建立的原胞体积记作为,两者之间关系是:

     (3)

2 k空间中的积分

为什么对于DFT计算来说,布里渊区那么重要?因为在实际的DFT计算中,所需要进行的大量工作可以归纳成求算下述形式的积分值,即:

    (4)

该积分主要特点就是:他是在倒易空间中定义的,并对布里渊区中所有可能的k值进行了积分。暂时不讨论这个值从哪来,先考虑如何求他的值。

在计算(4)式的积分值之前,先来看一个数值求算的计算。这个意思就是可以看做在区间里面曲线下面所围成的面积。一开始学习的时候就知道,是将区间分为等区间长度的若干个区域,近似成梯形,然后估算每一段曲线底下的面积相加。可以利用梯形图解方法得到:

  (5)

式中:,

做一个求解一个简单例子来反应梯形求解精度问题。选取,这个函数积分值正好是1,比较直观反应问题

可以看出,选取的间距越小,所算值越精确。

梯形图解法具有两个特征,在估算位置之间,间距均匀相等;每一个估算值都使用了相同的权重(除了两侧端点)。还有一类更为精致的积分方法称之为高斯求积(),形式为:

    (6)

式中:积分点对应于正交多项式的根,而权重与多项式积分有关。对于在区间上面的积分,这种方法称之为拉格朗日求积。下面给出一点具体例子,当n=3时候,式(6)权重和积分点分别为,,,,关于高斯-勒德让求积方法详解可以看

Guass-Legendre(高斯-勒让德)求积方法 | Guass型求积公式 + Legendre多项式

对上述的一位函数进行数值积分的例子可以总结为以下三点:

(1)通过将被积函数在一系列离散点上面进行估值,并在每一个点上面选择合适的权重,再对这些函数值加和,可以近似求算该积分。

(2)随着加和所使用的离散点个数增加,这种数值方法可以给出更精确的结果。假如所使用的点无限多,并对其取极限的时候,这些数值方法就收敛于积分的精确解

(3)在近似求解函数的积分的时候,对位置和权重的不同选择,会极大的影响该方法的收敛和获得更精确解的速度。

3在布里渊区如何选择

对于类似式(4)的积分,因为所需要的DFT计算量大,所以对如何快速估算这些积分进行认真细致的研究,是十分有必要的。最为广泛使用的方法就是在1976年提出来的,绝大多数DFT计算软件都提供了基于该方法选定k点的选项。使用该方法,仅需要确定在倒易空间每个方向上面都使用多少个k点。对于每个晶格矢量长度都相等的超晶胞,他的倒格矢的长度也相等,因此在每个方向上使用相同数量的k点就很明显了。如果在每个方向上面都使用了M个k点,则将该运算标记为使用了个k点。

从以上有关数值积分的讨论中,可以明确的是如果,那么使用个k点的计算应该能够给出更精确的结果。但是,实际上该怎样选择k点,以及选择多少个k点,应继续深究。

下图列出了使用方法所确定的个k点

可以看出,当M>8时候,可见总能几乎和k点个数无关,正如我们所期望的那样,k空间的计算数值收敛情况良好。然而,对于较少的k点,能量随着k点的个数变化任然很大,说明;较少的k点无法给出较好的收敛结果。

上表中最后一列是计算总能的时间除以M=1时计算时间的比值,达到确定收敛所需要的时间比只计算一个k点的时间要长很多。

一个比较令人费解的特征在于u,如果M是奇数,则对于M和M+1,二者的计算时间接近于相等。主要原因:这个计算利用了FCC晶体中所存在的大量对称性。这些对称性意味着:倒易空间的积分并不需要全部使用布里渊区来计算,而是可以使用一部分区域来估算这个积分。根据对称性,不需要进行任何近似,就可以使用这部分区域充满整个布里渊区。这个k空间中缩小的部分区域就是布里渊区()。对于理想FCC晶体等对称性很高的材料,使用IBZ可以极大简化k空间中积分所需要的计算工作量。例如,在本例中如果采用布里渊区取样,在k空间中只有35个独立的点位于IBZ内(如果计算时候没有任何对称性,则将会有1000个点)。

上表给出了每个计算在IBZ中k点的数量。将其与表中所列计算时间相比较,可以说明为什么奇数和偶数M计算时间基本相同-因为他们在IBZ中具有相同的独立k点个数。其发生的原因是:在方法中,使用奇数M包括了IBZ边界上面的一些k点,而偶数M只给出IBZ内部的k点。这意味着当使用少量k点时,使用偶数M比使用奇数M的收敛性好,二者的计算工作量基本相同。在能保证计算收敛,奇数和偶数M之间的区别就不那么重要。

为了表明对称性对减少DFT计算工作量的帮助,选用四原子超晶胞,并将每个原子从他原本的FCC晶格移动一个微小距离,然后重复上表计算。这些位移并不大,仅仅将最近邻原子改变,但是改变了该体系的所有对称性,此时IBZ中的k点数量是。计算结果放在下表,也列出了,即有对称性和没有对称性之间的能量差。

尽管表中各个计算所用时间与IBZ中k点数量存在紧密联系,但是k空间中的计算收敛性仍然与全部布里渊区的k点密度相关。对于非对称体系而言,如果需要达到更高的能量收敛性,需要采用更大数量的k点来进行计算。

可以看出,随着k点的增大,能量差要比总能收敛快得多。这具有很多好处,因为相比于两种构型各自的绝对总能值,更值得注意的是两者之间的能量差,它具有更多的物理意义。因为对于某个原子构型的积分值,在任何一个k点集合上面所得到数值估算都与该系统的真实值存在一定系统误差。如果比较两种结构近似的原子构型,则可以做出以下预期:二者的这个系统性数值误差也非常近似。这意味着,当求算着两种状态之间的能量差值的时候,就抵消掉了他们的系统误差,计算得到的能量差要比相应的总能收敛更加精确。需要强调和理解的是,这个论断建立在如下基础上面:两种原子构型需要“足够近似”,才能让两者所使用的k点也非常近似。在上面所选取的例子中,两种晶体构型就非常近似,区别仅在于超晶胞中的原子位置存在很小的干扰,因此可以套用以上结论。当比较两种晶体结构完全不同的材料时,上述论断就不在合理。

很多时候,采用晶格矢量长度不同的超晶胞计算是非常有好处的。一个明显的例子就是采用具有以下晶格矢量的超晶胞,对体相Cu进行计算,即:

      

该超晶胞中含有16个原子,而在上述立方超晶胞中,只有四个原子。在对这个扩大的超晶胞进行计算时,只要在倒易空间中采用近似的k点密度,其计算的收敛精度也类似。根据该规则,采用个k点就可以得到合理的收敛精度,其中的三个数字分别指倒易晶格矢量方向上面k点的数量。根据倒易格矢的定义,可以得到:采用上述的k点设置方法,定义在倒易空间的每个方向上面都具有相同的k点密度。

4 k空间的总结

(1)在对所要求解的体系进行大量的DFT计算之前,应先考察计算结果对于k点数量的收敛性。

(2)应该给出计算中所使用的k点数量,如果不这样做,就很难对计算结果进行再现。

(3)增大超晶胞的体积减少了达到收敛时所需要的k点数量,因为实空间体积的增加对应着倒易空间体积的减小。

(4)如果计算中涉及不同体积的超晶胞,并需要对其结果进行比较,则在倒易空间选定k点时,需要使不同超晶胞的倒易空间中的密度大致相同,这是使这些计算在k空间中具有类似收敛精度的有效方法。

(5)理解为什么对称性能够减少实际计算所需k点的数量,有助于理解单个计算需要多长时间。但是整体的收敛性是由全布里渊区中k点密度决定的,而不仅仅是IBZ中k点的数量。

DFT计算基本要素之一-倒易空间和k点相关推荐

  1. 输入圆的的半径r 和一个整型数k,当k=1 时,计算圆的面积;当k=2 时,计算圆的周长;当k = 3 时,既要求求圆的周长也要求出圆的面积

     题目:输入圆的的半径r 和一个整型数k,当k=1 时,计算圆的面积:当k=2 时,计算圆的周 长:当k = 3 时,既要求求圆的周长也要求出圆的面积. 解析:输入半径r和整型数k,由题目分析的,由于 ...

  2. matlab syms函数例题,matlab函数计算syms f o s z k D t m q T x;p=f-o-(s-o)*(1-erf(0.5*

    问题描述: matlab函数计算 syms f o s z k D t m q T x; p=f-o-(s-o)*(1-erf(0.5*z/(k*D*(t^m)*exp(q*(1/T-1/273))* ...

  3. 计算二维空间某点的最近k 个点

    查看原文:计算二维空间某点的最近k 个点 | 呆鸥 CSDN 行为大家有目共睹,删除内容,不再更新.

  4. 区间素数 由N(N<=10000)个整数组成的数组,其中连续K(K<=200)个元素构成一个区间,称为K区间。一个K区间中所有素数的和记为Sk,请计算整个数组中,所有K区间中的最大Sk值,并输出。

    由N(N<=10000)个整数组成的数组,其中连续K(K<=200)个元素构成一个区间,称为K区间.一个K区间中所有素数的和记为Sk,请计算整个数组中,所有K区间中的最大Sk值,并输出. ...

  5. Arcpy对要素类添加字段、计算统计要素面积Area、删除字段(地理国情监测)

    Arcpy对要素类添加字段.计算统计要素面积Area.删除字段:(地理国情监测) import arcpy from arcpy import envenv.workspace = r"E: ...

  6. HQChart(C++)指标计算引擎-py接口类IHQData K线数据对接

    HQChart指标计算引擎-py接口类IHQData K线数据对接 IHQData 使用 K线接口 参数: 返回 交流 IHQData IHQData是一个行情数据调用接口类,所有指标计算用到的数据都 ...

  7. 计算正整数n中的第k位数字

    题目描述 编写程序,输入正整数n,然后通过调用函数digit(n,k),使得函数返回正整数n中的第k位数字(从右边算起).例如,digit(829,1)返回9,digit(829,2)返回2,而dig ...

  8. arcgisengine计算线要素总长度_掌握K线并不难!新手请牢记K线四要素:开盘价、收盘价、最低价、最高价,看不懂别炒股...

    (本文由公众号越声攻略(yslc688)整理,仅供参考,不构成操作建议.如自行操作,注意仓位控制和风险自负.) 所有关于炒股的技术和理论都是以价.量.时.空四大要素为主线的,而其中的"价&q ...

  9. dft计算傅里叶级数系数_一道国外的DFT性质的题目

    由于上半年实在太忙太忙,所以导致很久没更新公众号了,特意向各位长期关注的小伙伴表示歉意.今天分享的是DFT性质的应用. 背景:DFT的对称性在解题中是非常常见的,很多同学,一看到"实序列&q ...

最新文章

  1. JavaScript学习总结(十六)——Javascript闭包(Closure)
  2. Linux(RHEL7.0)下安装nginx-1.10.2
  3. mongodb 3.4 安装_暴雨免安装中文版下载
  4. php与java安全之争
  5. 控制使用期限_学校厨房设备延长其使用寿命的方法有哪些呢?
  6. QT案例:登录对话框——主窗口
  7. flask查询User,返回对象列表,提示ypeError: Object of type ‘bytes‘ is not JSON serializable解决办法
  8. 厦门大学c语言上机答案,厦门大学C语言程序设计2016模拟题讲评及课程复习.pptx...
  9. Django_xamin注册model错误
  10. 利用python自动发送邮件(无敌详细讲解版)
  11. 工程导论【职业能力与职业培养】
  12. coreldraw矫正两张图_CorelDRAW矫正图像方法-CDR中如何矫正图像_好特教程
  13. 一张表格分成两页打印_word一页内容怎么分成两页打印
  14. SPSS 效度分析【SPSS 036期】
  15. 共享打印机连接报错问题汇总
  16. 【Java学习笔记】 MYSQL03 学习使用JDBC访问数据 以及 JDBC的优化和封装
  17. Loopback接口和Null接口配置
  18. 三星32英寸智能电视试用 功用全部对得起高价
  19. 计算机缺失程序怎么办,win7电脑缺失dll文件软件打不开怎么办
  20. 【camera】手机相机系统

热门文章

  1. 黑苹果OC引导关闭开机跑代码模式,小白教程
  2. python输入两个数求差_python差值_python差值法_python求差值 - 云+社区 - 腾讯云
  3. wx小程序笔记(1)
  4. 高度虚拟化,成就云数据中心
  5. 日更计划Day1 USACO Feb BronzeT3
  6. threejs 计算不规则体的表面积和体积
  7. 个税应用案例|为什么这么多优秀的企业选择在招行代发工资?
  8. 2021年轻人下班行为报告:我下班了,却又没下班
  9. Github-Readme-Stats 简明教程
  10. 集合源码解读----addAll方法