背景介绍

DFT(LDA和GGA)对于一般体系的计算结果是令人满意的,尤其是能带结构的计算,这些一般体系主要是金属体系或者是只包含前三周期元素的体系。但是,对于包含d电子或者f电子的体系,特别是过渡金属氧化物或者氮化物,DFT直接计算的结果往往是错误的,所以在金属/绝缘体的判定上常常出错。LDA和GGA往往会低估一些绝缘体或者半导体的带隙,甚至最高占据轨道(VBM或者HOMO)在Fermi面之上,变成金属。对于包含d或者f电子的体系,VBM或者HOMO往往是来自这些金属原子的d电子或者f电子,而DFT无法直接处理d轨道或者f轨道的强关联相互作用,目前广泛采用LDA+U的方法来处理d电子或者f电子的这种强关联相互作用【1】。

LDA+U核心思想是:首先将研究体系的轨道分隔成两个子体系(subsystem),其中一部分是一般的DFT算法(如LSDA,GGA)等可以比 较准确描述的体系,另外是定域在原子周围的轨道如d或者f轨道,这些轨道在标准的DFT计算下不能获得正确的能量与占据数之间的关系(如DFT总是认为分 数占据是能量最小的,而不是整数占据);对于d或者f轨道,能带模型采用Hubbard模型,而其他轨道仍然是按照Kohn-Sham方程求解;d以及f 轨道电子之间的关联能采用一个和轨道占据以及自旋相关的有效U表示;整体计算的时候需要将原来DFT计算过程中已经包含的部分关联能扣除,这部分一般叫 Double Counting part,并且用一个新的U来表示,最终的结果是在DFT计算的基础上新增加一个和d或者f轨道直接相关的分裂势的微扰项,这部分能量可以采用一般微扰理 论计算【2】。

方法介绍

U值计算目前仍然是一个研究的难点和热点,最近PWmat实现了一种用线性响应理论计算U值的方法,下面我们将对这种方法进行详细介绍:

首先U值表示定域轨道电子与电子之间的相互作用,其操作算符如下:

其中,ak, ai+表示湮灭和产生算符,i,j,k,l是原子轨道基组

其中V仅仅表示数字,需要注意的是,上式中索引指数i,j,k,l和变量r,r`,需要考虑存在自旋指数σ。

进一步,我们假设是相同角动量L内的2L+1原子轨道,对于球谐函数YL,i(降低自旋指数),然后考虑对称性,V的形式可以简化为:

其中ah是Klein-Gordon系数,形式如下:

只有偶次的Fh不为零,例如F0,F2,F4和F6(f轨道)。人们习惯上假设J=(F2+F4)/14=0(d轨道),定义U=F0。

现在,如果我们插入单个Slater行列式波函数来计算Hint的期望值,并减去重复项,然后整理之后得到:

I遍历不同的原子,σ是自旋指数,是一个矩阵,形式如下:

其中,是Kohn-Sham波函数,o(q,)是它的占据数。

到目前为止,我们应该如何计算U值呢?我们可以通过下式计算:

但是这不包括周围环境对该原子的屏蔽左右,因此计算出来的U值偏大。另外人们也可以通过经验方法估算U值,得到任何我们想要的值。这里我们介绍一种用Koopman`s条件来得到U值【3】。作为原子轨道占据数的函数,在电子数N到N+1的变化时,总能应该是直线。所以我们可以调整U的值,直到最后的总能变成直线。

实际上,很难occupy所有。事实证明,进行线性响应计算更容易。另外,决定哪个轨道占据也很困难,因此在线性响应计算中,我们将从所有轨道上获取电荷:

我们具有自旋σ的总和,所有最后,我们只有一个U值,而不是两个U,每个自旋一个。我们将通过线性响应计算来确定响应电荷来自哪个轨道(或者多个轨道)。

至此,我们得到一个新的Hamiltonian(线性能量项下的线性响应):

其中,仅仅是原子I上的一个数值。

在计算中,可以设置U=0,(从LDA开始),即:

对原子I设置一个最终的,其他原子的设置为零,然后进行SCF计算,现在就有E(),移除最后一项,还可以得到()和(nI),最后得到U的形式为

该公式可以理解为,当我们添加额外LDA+U项EU时,该项的二阶导数将抵消LDA项的二阶导数,从而使得最终结果成为nI的线性函数(Koopmans`s 条件),即

最终U的形式为:

事实证明,由于上述过程中nI的变化,总电荷是守恒的(实际上并未在原子I上增加一个额外的电荷),因此存在一个人为引入的项[0]。该项对应于SCF计算前下nI的变化(无库伦相互作用),必须从上述U的计算公式中减掉,所有我们可以得到:

这里,偏导数应该理解为只有该原子具有nI的变化,其他原子没有变化,所以有:

其中,当我们将一个αI放在一个原子上,而将其他原子的αI设为零,ΔαI和ΔnI是从上述计算中得到的数值。但是其他原子上的ΔnI不为零。

为了计算,我们首先计算:

然后得到:

Eq.(1)

注意,对于Koopmans条件,这实际上是在假设,当存在一个ΔnI时,所有其他ΔnI应该为零。实际上,也可以避免这种情况,也就是说,当存在一个ΔnI(有一个外部ΔαI和变化引起)时,在SCF响应中,其他原子的ΔnI时,所有其他可以是任意值。此时,U可以被定义为:

Eq.(2)

实例演示

总结

1.计算给定系统的U值的核心思想是U值取决于局域环境(与其他轨道的杂化以及U的局域屏蔽)。

2.如果存在几种不同类型的原子,所有原子都需要不同的U,则需要在这些不同的原子上添加LDAU_lambda(αI)。 使用Eq.(2),可以直接计算,这些U可以一次计算一个。 使用Eq.(1),必须使用对称性等来获得所有具有U的原子的χ矩阵,然后将其求逆。 注意,χ矩阵不包含不需要加U的原子。

3.严格来说,也可以得到具有自旋依赖性的U,例如,在etot.input中设置:“ LDAU_PSP1 = 2,U1,U2”,添加扰动,请使用LDAU_lambda_1和lambad_2(在atom.config的LADU_lambda部分中)。

4.在某些情况下,可能难以决定要使用哪个系统来计算U。例如,在水分解催化中,是使用裸露的过渡金属(TM),还是使用连接了OH或O的过渡金属系统。 人们可以为这些系统计算不同的U,但是使用不同的U计算其相对能量将很危险(可能是错误的)。 因此,要么使用平均值U进行以后的计算,要么使用裸露的U(也许)。

参考文献:

【1】http://blog.sina.com.cn/s/blog_553461e901013xx1.html

【2】http://blog.sina.com.cn/s/blog_6a8a6ba40100pvfb.html

【3】M. Cococcioni, S. de Gironcoli, “Linear response approach to the calculation of the effective interaction Parameters in the LDA+U method”, Phys. Rev. B, 71, 035105 (2005).

LDA+U中U值的计算方法相关推荐

  1. mysql的hash分区_MySQL中hash和key分区值的计算方法

    MySQL中hash和key分区值的计算方法 mysql中有一种叫作key作为partition key的类型.来看看记录是怎么分布的 对于hash 分区,使用%操作符,每个partition key ...

  2. 三分钟完全了解PyTorch中卷积层内部计算方法和权值初始值的来历,让你对模型有更深层次的理解

    首先先说明第一个答案,也就是PyTorch中卷积层的计算方法,其实这点很多人可能在书上已经看过图了,我只是用代码复现一遍 我们把所有变量都明确,首先是输入变量,我们设为2 * 2的全1矩阵,如下: 然 ...

  3. 自然语言处理(NLP)之gensim中的TF-IDF的计算方法

    自然语言处理(NLP)之gensim中的TF-IDF的计算方法 step 1.  去掉所有文本中都会出现的词 texts = [['这是', '一个', '文本'], ['这是', '第二个', '文 ...

  4. 什么是PING值,PING值的计算方法

    什么是PING值,PING值的计算方法 PING (Packet Internet Grope),因特网包探索器,用于测试网络连接量的程序.Ping发送一个ICMP 回声请求消息给目的地并报告是否收到 ...

  5. 功放限幅保护_限幅器在音响系统中限幅阈值的计算方法

    原标题:限幅器在音响系统中限幅阈值的计算方法 对于专业音响系统工程师来说,限幅器的应用随处可见,无论大小音响系统,使用非常普遍.但限幅器应用于系统中往往仅限于限制输入到功放输入端的电平幅值,使之信号电 ...

  6. 深度学习入门(三)——神经元激活值的计算方法

    深度学习入门(三)--神经元激活值的计算方法 1.隐含层神经元的意义 介绍完全连接神经网络的基本结构和工作流程,可能会有人疑问了,神经元中存放的激活值是如何确定的?在解答这个问题之前,小编需要首先介绍 ...

  7. float和double的精度和取值范围计算方法

    C/C++各数据类型大小和取值范围 类型名称 字节数 取值范围 signed char 1 -2^7(-128) ~ 2^7-1(127) unsigned char 1 0 ~ 2^8-1(255) ...

  8. Python中按值来获取指定的键

    转自: https://blog.csdn.net/Jerry_1126/article/details/87907162 Python字典中的键是唯一的,但不同的键可以对应同样的值,比如说uid,可 ...

  9. 腾讯微博API时间线相关接口返回的微博信息中head值使用问题

    腾讯微博API时间线相关接口返回的微博信息中head值表示作者头像url,这个链接直接访问并不能使用,需要再附加一个参数指定图片的大小(100.50),比如:[head]/100.

最新文章

  1. VS中dll以及lib生成路径设置
  2. 过采样中用到的SMOTE算法
  3. 接上文 VM安装的ubuntu系统,配置双网卡
  4. 解引用NULL为什么会导致程序挂死?
  5. LQR轨迹跟踪算法Python/Matlab算法实现_LQRmatrix推导
  6. Callable介绍
  7. easyui tree 默认选中第一个元素
  8. 超棒的30款JS类库和工具
  9. Linux篇:shell脚本监控主机状态的3种方式
  10. android 双清菜单,什么是双清?如何双清手机?安卓手机双清教程
  11. Navicat Premiumx64 使用注册机激活
  12. 企事业单位 固定资产管理系统
  13. yum安装ruby_Centos安装ruby
  14. SQL刷题:排名的问题
  15. Leetcode——860.柠檬水找零——题解—+代码实现
  16. Windows截图快捷键及自动保存路径
  17. 中国企业学习管理系统(LMS)市场趋势报告、技术动态创新及市场预测
  18. 关于微信小程序picker之multiSelector多列选择器
  19. 使用Python读取raw格式图像并显示
  20. EMQ X 存储消息到 MySQL 数据库

热门文章

  1. MT6735手动修改屏幕分辨率
  2. Cesium实战记录(八)三维风场+风速热力图(水平+垂直)
  3. 电子计算机技术的发展情况,新时期电子信息技术发展现状与趋势分析
  4. CS硕士妹子找工作经历【阿里人搜等互联网公司】
  5. 安装BT5 backtrack5 linux 无线网卡驱动
  6. STM32学习——入门小项目
  7. 用PHP查看微信撤回的消息,python实现文件助手中查看微信撤回消息
  8. EDSR MDSR IRAN RCN -pytorch实现及代码常见问题
  9. disruptor源码阅读与分析---RingBuffer与Sequence
  10. 一文读懂BLOB算法