最大局域化 Wannier 函数方法简介
作者:刘人熙,邮箱:rxliu@stu.pku.edu.cn
审核:陈默涵,邮箱:mohanchen@pku.edu.cn
最后更新时间:2023/11/09
一、Wannier 函数是什么?
电子的能量和波函数是电子结构计算中最关心的物理量之一,了解电子的这两个性质,就能进一步了解电子乃至原子体系的更多性质。
在周期性势场中,电子波函数满足布洛赫定理(Bloch Theorem),该定理指出,当电子处于满足
V(r+R)=V(r)
的周期性势场V(r)下时,电子的本征波函数ψnk(r)满足公式ψnk(r)=eik⋅runk(r),
其中unk(r)是另一个周期性函数,满足
unk(r)=unk(r+R),这里的R代表晶格矢量。
图 1 左列展示了一维情况下一些布洛赫波函数的形态,即通常情况下,电子波函数在实空间中是非局域的。
事实上,电子波函数的模平方代表电子出现的概率密度,能被实验验证。在计算中,可以发现电子波函数有一个可调节的“相位因子“,这个随机的相位因子可以导致计算出来的电子波函数在实空间的局域程度不同。因此,长期以来,人们一直在探索什么形式的电子波函数适合描述例如共价键这样的物理性质,Wannier 函数就是常用的一种方法。
Wannier 函数就是一种周期性势场中的电子波函数表示方法,早在 1937 年,Gregory H. Wannier 最早定义了周期性势场中的波函数可以写成:
|Rn⟩=V(2π)3∫BZdke−ik⋅R|ψnk⟩
这里的 V 代表晶格体积。从公式直观上看,这相当于在第一布里渊区中对电子波函数做傅立叶变换,也就是对各个本征态波函数ψnk按照e−ik⋅R的权重做加权平均,把各个本征态“折叠”到R晶格中,实现局域化。得到的波函数|Rn⟩被称作 Wannier 函数,一维的图示如图 1 右列。

易于验证 Wannier 函数是正交归一的,布洛赫波函数可以通过逆傅立叶变换从 Wannier 函数得到:
|ψnk⟩=∑Reik⋅R|Rn⟩
于是对于同一个能带的子空间来说,布洛赫波函数和 Wannier 函数都可以构成电子波函数的完备表示,也就是
Pn=∑R|Rn⟩⟨Rn|=∑k|ψnk⟩⟨ψnk|。
二、最大局域化 Wannier 函数
2.1 Wannier 函数的不唯一性
Wannier 的局域化定义简单直接,深受学界欢迎,但是它存在随规范变化因而不唯一的问题。这种不唯一性来源于布洛赫波的不唯一性,对于非简并的nk态的本征波函数ψnk,规范变换后的ψnkeiϕ(k)(ϕ(k)为实数)同样是本征态,二者之间只差一个相位因子。但是这样一来,布洛赫波中的unk分量就变成了unkeiϕ(k),Wannier 函数就变成了V(2π)3∫BZdke−ik⋅R+iϕ(k)|ψnk⟩,得到的 Wannier 函数就完全不一样了。
在简并情况下,比如说 J 个能带构成一组互相相交的能带,和其他能带不相交,这时这 J 个能带的本征波函数做幺正变换,依然可以构成本征波函数,也就是
|˜ψnk⟩=∑mUkmn|ψmk⟩
依然是本征态,他们可以张成对应于这 J 个能带的同一个线性空间,该线性空间的投影算符可以写作
Pk=∑Jn=1|ψnk⟩⟨ψnk|=∑Jm=1|˜ψmk⟩⟨˜ψmk|。
第二个等号具体证明如下:
J∑m=1|˜ψmk⟩⟨˜ψmk|=J∑m=1J∑pqUkmp|ψpk⟩Uk∗qm⟨ψqk|
=J∑pqJ∑m=1Uk∗qmUkmp|ψpk⟩⟨ψqk|=J∑pqδpq|ψpk⟩⟨ψqk|=J∑p=1|ψpk⟩⟨ψpk|
也就是说一组或者一个孤立的能带的投影算符是不随规范变换的。
这时不同规范下的 Wannier 函数的变换会更为复杂,Wannier 函数也存在不唯一确定的问题。
所以是否可以选取一个给定的规范,可以在一个系统上给出唯一的一组 Wannier 函数,满足我们在第一部分中提出的两个动机呢?这个简单的问题并没有在固体物理建立的最初几十年里有一个完整的解答。
2.2 独立的能带的 Wannier 函数的 spread 函数
直到 1997 年,Nicola Marzari 和 David Vanderbilt 在文献[1]提出,可以针对一组孤立的 J 个能带(也可以是单独一个孤立的能带),要求 Wannier 函数在晶格内的 spread 最小,以此作为规范,所谓的 spread 就是在 Wannier 函数上位置 r 的方差
Ω=∑n⟨0n|r2|0n⟩−|⟨0n|r|0n⟩|2.
Marzari 和 Vanderbilt 进一步发现这个 spread 函数可以分为规范不变和随规范变换的两个部分,并且给出了最小化 spread 函数的稳定的数值算法。
具体来说,规范不变的部分是:
ΩI=∑n[⟨0n|r2|0n⟩−∑Rm|⟨Rm|r|0n⟩|2],
规范变换的部分是
˜Ω=∑n∑Rm≠0n|⟨Rm|r|0n⟩|2,
规范不变的部分可以写作:
ΩI=∑nα[⟨0n|r2α|0n⟩−∑Rm⟨0n|rα|Rm⟩⟨Rm|rα|0n⟩]
=∑nα[⟨0n|r2α|0n⟩−∑m⟨0n|rαPmrα|0n⟩]
=∑nα⟨0n|rα(1−∑mPm)rα|0n⟩=∑nα⟨0n|rαQrα|0n⟩
上式中最后一个等号使用了定义
P=∑mPm=∑km|ψmk⟩⟨ψmk|,
Q=1−P,
因为 P 和 Q 算符是考虑的这组孤立能带上的投影矩阵和互补矩阵,所以它们是不随规范变换的,这一点已经在上文证明过。
ΩI可以进一步写成
ΩI=∑nα⟨0n|∑m|0m⟩⟨0m|rαQrα|0n⟩=Trc(PrαQrα)
这里的角标 c 表示对单个晶格(cell)求迹,也就是只对能带指标求迹。可以看到ΩI只和P,Q有关,是规范不变的。我们还可以进一步证明规范不变的部分是非负的,具体来说,ΩI可以进一步写作Trc[(PrαQ)(PrαQ)†],
这显然是非负的,使用投影矩阵满足
P2=P,P†=P
的性质不难证明该等式。
在布洛赫表象下,Wannier 函数的r和r2的均值可以表示为:
⟨Rn|r|0m⟩=iV(2π)2∫dkeik⋅R⟨unk|∇k|umk⟩,
⟨Rn|r2|0m⟩=−V(2π)2∫dkeik⋅R⟨unk|∇2k|umk⟩
这里直接引用了文献[2]的结果。
这里对 k 的散度在 DFT 中,可以近似表示为相邻的 k 点的波函数之间的差分,具体来说就是:
∇f(k)=∑bbωb[f(k+b)−f(k)]+O(b2),
这里的b是k指向相邻 k 点的向量,ωb是一个量纲为b−2的常数权重参数,所以 spread 函数和他的导数都可以表示为布洛赫波函数中的周期性分量之间的内积,也就是
Mk,bmn=⟨umk|un,k+b⟩,
换句话说,密度泛函理论软件只需要提供Mk,bmn这个物理量,就可以通过优化得出最局域化的 Wannier 函数。
经过一系列推导,可以得到ΩI在布洛赫表象下的表达式:
ΩI=1N∑k,bωb(J−∑mn|M(k,b)mn|2)=1N∑k,bωbTr(P(k)Q(k+b))
这里的P(k)=∑n|unk⟩⟨unk|,Q(k)=1−P(k),J是能带数。
考虑到Tr(AB)=||A−B||2/2,可以看到规范不变的 spread 函数衡量的是每个 k 点与其相邻 k 点上布洛赫波函数张成的线性空间的差别,可以看作是不同 k 点上的线性空间之间的“溢出函数” (spilage function)。换句话说,如果整个布里渊区内的 k 点上,布洛赫波函数张成的空间都一模一样,那么Tr(PkQ(k+b))就是 0,规范不变部分的 spread 函数会直接消失,达到最小值。实际上,ΩI可以看作是这组孤立能带的本征态构成的线性空间的一个本征性质,所以不会随这个线性空间内的表象变换而变化。
在实际的计算中,spread 函数是作为一个整体优化的,但ΩI部分其实不会随优化改变,是一个固定的值。
2.3 纠缠能带的 Wannier 函数的 Spread 函数
2.2 部分简要叙述了对于一组孤立的能带,如何定义 spread 函数、如何将 spread 函数划分为规范不变和随规范变换的部分,以及 spread 函数在布洛赫表象下的表示。上述定义和划分在简并能带的情况是否依然成立呢?答案是肯定的,2001 年,Ivo Souza、Nicola Marzari 和 David Vanderbilt 共同在文献[3]提出了在一组纠缠的能带中抽取部分能带,对其 Wannier 函数做最大局域化的方法。Souza 等人提出了这样一个案例:对铜金属而言,其壳层电子 (3d104s1)既包含 d 轨道电子也包含 s 轨道电子,直觉上说,d 轨道电子比较局域化,对应于能带中的窄带;s 轨道电子比较接近自由电子,对应于能带中的宽带。但实际上 s 轨道和 d 轨道发生了杂化,他们的能带是重叠在一起的,难以将 s 和 d 的能带、Wannier 函数区分开。这时,我们可以通过最大局域化 Wannier 函数的方式实现以上目的。
具体的做法是这样的,首先选取一个能量区间(energy window),这个区间包含 d 轨道的能带,也可以包含 s 轨道的能带。对于这个区间内的 k 点,如果只有 d 轨道的能带,就什么都不做;如果既含有 d 轨道也含有 s 轨道,就对这个 k 点的 d 轨道对应的ΩI做最小化。这相当于在 s 和 d 轨道的本征态构成的线性空间里优化 d 轨道构成的子空间S(k),使该子空间与其他 k 点上的 d 轨道空间尽可能接近。完成这一步优化后,再按照优化独立能带的 Wannier 函数的办法优化˜Ω。
完成优化后,可以通过 Slater-Koster 方法做内插值得到任意 k 点上的能带,从而实现对纠缠能带的解耦,在这个例子里就是可以把 d 轨道对应的能带和 s 轨道对应的能带分开,让他们各自长得像窄带和宽带。具体的做法可以参看文献[3] III F 部分和 IV 部分。
2.4 优化 Wannier 函数的 Spread 函数
在优化 spread 函数时,如果考虑的是纠缠能带中的一部分能带,就需要先优化ΩI,再优化˜Ω;如果考虑的是孤立能带,直接优化˜Ω。
2.4.1 通过自洽迭代方法优化ΩI
对于纠缠的能带中需要局域化的布洛赫波函数,需要优化的 spread 函数ΩI=1Nkp∑k,bωb∑Nm=1[1−∑Nn=1|M(k,b)mn|2],其中N是考虑的能带数量,例如在铜的例子中,N=5。因为ΩI是对整个布里渊区求和的,各个 k 点耦合在一起,所以需要自洽迭代地对ΩI做优化。具体来说,在第 i 轮迭代,要求|u(i)nk⟩,n=1...N正交归一,同时u(i)nk可以使Ω(i)I达到极小,运用拉格朗日乘子法,写出变分方程:
δΩ(i)Iδu(i)∗nk+N∑n=1Λ(i)nm,kδδu(i)∗mk[⟨u(i)mk|u(i)nk⟩−δmn]=0
经过一系列线性代数操作(详细步骤在文献[3]III C 部分),得到最后的特征方程:
[∑bωbˆP(i−1)k+b]|u(i)mk⟩=λ(i)mk|u(i)mk⟩
其中的ˆP(i−1)k+b是k+b上的投影算符ˆP(i−1)k+b=∑Nn=1|u(i−1)nk+b⟩⟨u(i−1)nk+b|。如果迭代不稳定,可以采用类似 charge mixing 的方法,线性混合前后两步迭代的ˆPk+b,即[ˆP(i)k+b]in=αˆP(i−1)k+b+(1−α)[ˆP(i−1)k+b]in,这里的[ˆP(i)k+b]in表示第 i 步迭代输入的投影算符,ˆP(i−1)k+b表示第 i-1 步输出的投影算符。
在实际计算中,需要在特定的基组上把投影算符展开为矩阵做对角化,在这里选择的是选取的能量区间内原始的布洛赫函数unk(这是必要的,因为优化算法本身不保证每次迭代得到的P(i)k仍然落在原始布洛赫函数张成的线性空间里,这里选取基底相当于把新得到的投影算符投影到这个空间里,保证每次迭代得到的布洛赫函数仍在原始的线性空间范围内),所以最终需要对角化的矩阵是Z(i)mn(k)=⟨umk|∑bωb[ˆP(i)k+b]in|unk⟩,这是一个大小为N×N的厄米矩阵。每次自洽迭代中,需要对每个 k 点对角化Z(i)mn(k),得到u(i)nk;计算新的投影矩阵,进入下一次迭代。
最后还存在一个初始值Z(0)mn(k)如何选取的问题,这实际上是在选取初始的子空间S(k)。这里固然可以选择原始的布洛赫波函数unk构成子空间,但是也可以有意地选择子空间使得其 Wannier 表象更接近我们的直觉认知。比如我们认为 Wannier 函数可能接近于一组名为gn(r),n=1...N的实空间基函数,那么就可以把每个 k 点上的布洛赫波函数投影到这组基函数上:|ϕnk⟩=∑Nwinm=1A(k)mn|umk⟩,其中A(k)mn=⟨umk|gn⟩,Nwin是能量区间中总能带数。这样的投影轨道还不满足布洛赫波函数正交归一的要求,所以需要对其做正交归一化使其成为新的布洛赫波函数:|u(0)nk⟩=∑Nm=1(S−1/2)mn|ϕmk⟩=∑Nkwinm=1(AS−1/2)mn|umk⟩
其中的重叠矩阵Smn=Skmn=⟨ϕmk|ϕnk⟩=(A†A)mn,这样就可以通过实空间中布洛赫波函数在一组预想的基函数上的投影给出来投影矩阵Pk的初猜,从而开始自洽迭代优化。
2.4.2 通过梯度下降方法优化˜Ω
获得每个 k 点上需要考虑的布洛赫波函数张成的线性空间S(k)(也是获得每个 k 点上的投影矩阵Pk)之后,就可以通过梯度下降法寻找使得 spread 函数最小的规范变换。这里的梯度下降不是对unk做任意的梯度下降,因为需要满足新的unk和原来的unk之间的规范变换关系(幺正变换)。具体的做法是一次对布洛赫波函数做一个微小的转动U(k)mn=δmn+dW(k)mn,其中dW(k)mn=−dW(k)†mn是一个反厄米矩阵,从而满足U(k)mn是幺正的。经过一些推导(详细推导参考文献[1]的 IV B 部分),可以获得 spread 函数的梯度:
G(k)=dΩdW(k)=4∑bωb(A[R(k,b)]−S[T(k,b)])
其中R(k,b)=M(k,b)mnM(k,b)∗nn,T(k,b)mn=M(k,b)mnM(k,b)nn⋅(ImlnM(k,b)nn+b⋅¯rn),¯rn=−1N∑(k,b)ωbbImlnMnn(k,b)
在实际计算中,梯度下降的步长被设置为固定的ϵ=α/4ω,其中ω=∑bωb,这样微扰矩阵ΔW(k)写作ΔW(k)=αω∑bωb(A[R(k,b)]−S[T(k,b)]),因为这个矩阵是反厄米的,所以波函数可以直接按照unk→eΔW(k)unk变换,进入下一次迭代。这时 spread 函数的变化是dΩ=−α4ω∑k||G(k)||2。
三、参考文献
- Nicola Marzari and David Vanderbilt, Maximally localized generalized Wannier functions for composite energy bands, Phys. Rev. B 56, 12847 (1997). (提出最大局域化 Wannier 函数方法的文献)
- Blount, E. I., Solid State Phys. 13, 305 (1962). (关于 Bloch 状态的诸多基础性质的讨论,最大局域化中⟨nR|r|m0⟩在布洛赫表象下的表达式来源于此)
- Ivo Souza, Nicola Marzari, and David Vanderbilt, Maximally localized generalized Wannier functions for entangled energy bands, Phys. Rev. B 65, 035109 (2001). (从纠缠能带中解耦出部分能带,做最大局域化 Wannier 函数的文献)
- Arash A. Mostofi, Jonathan R. Yates, Young-Su Lee, Ivo Souza, David Vanderbilt, Nicola Marzari, wannier90: A tool for obtaining maximally-localised Wannier functions, Comput. Phys. Commun., 178, 9, 685 (2008). (Wannier90 软件的初始文献)