6.6 KiB
title, date, draft, summary
| title | date | draft | summary |
|---|---|---|---|
| DFT中的涂抹 | 2025-01-17T12:36:30+08:00 | true | ISMEAR应该如何设置? |
VASP 里有两个神秘的参数:ISMEAR 和 SIGMA。
初次接触 VASP 的时候我曾经注意到过这个参数,但因为看不懂所以没有深究,然后就把这个事情忘记了。
前几天又有人问我这个问题,我就注意到了这个盲点,于是来研究了一下。
这两个参数控制的是 KS 轨道上在费米能级附近电子如何分布:
尽管按照严格的 DFT 理论,应该是费米能级以下的轨道都被占满、费米能级以上的轨道都空,
但实际计算的时候,有时会做一些平滑过渡,
比如说费米能级下面的第一个轨道放 1.9 个电子、费米能级上面的第一个轨道放 0.1 个电子。
为什么要这样做?乃至于,如果你不了解 DFT 的原理,你可能会问:KS 轨道是什么玩意儿?
这个文章就是要解释这个问题。
需要先说明的一点是:这两个参数是不“物理”的,
也就是说,按照物理图景来思考的话,就不应该有这个平滑过渡,SIGMA 应该永远是 0 才对1 。
设计这个参数只是为了缓解计算细节中的问题,所以之后的解释也都是从计算的角度来解释的。
一点科普:VASP 计算的原理
用 DFT 做计算的人并不见得理解 DFT 的原理(我最开始也是这样,这并不罕见)。 这里简单介绍一下原理,之后才能进一步解释为何要涂抹,如何涂抹更合适。 这一节的内容需要基础的量子力学知识,基础的就够了。
VASP(乃至所有基于 DFT 的第一性原理计算软件)核心目的都是求解关于电子的薛定谔方程:
\hat{H} \Psi(\mathbf{r_1}, \mathbf{r_2}, \ldots, \mathbf{r_N})
= E \Psi(\mathbf{r_1}, \mathbf{r_2}, \ldots, \mathbf{r_N})
这里 E 是总能量,\hat{H} 是哈密顿算符。
\Psi 是所有电子(不是单个电子!)的波函数,\mathbf{r_i} 是第 i 个电子的位置。
也就是说,如果体系有一千个电子的话(这在基于平面波基矢的 DFT 计算中是常见的),这个波函数就是一个三千个维度的复变函数。
这么复杂的函数现在的计算机是没法处理的,稍等会需要想办法来绕过这个问题(实际上求解的是另外一个与它等价的方程);
但形式上来说,这就是我们想要解的方程(解不解得出来另说),所有的计算结果都是求解这个方程得到波函数之后,再得到的副产品。
例如,所谓“弛豫得到体系最稳定的结构”就是知道波函数之后,再计算一下各个原子核的受力,然后把原子核顺着受力方向移动一点,
再重新求解这个方程,如此循环往复,直到所有原子核的受力都小到可以忽略不计为止。
上述哈密顿算符 \hat{H} 至少得包含三项:电子动能、电子和原子核之间的库伦吸引、电子之间的库伦排斥。也就是:
\hat{H} =
\sum_{i} \frac{-\hbar^2}{2m} \nabla_i^2
- \sum_{i, I} \frac{Z_I e^2}{4\pi\varepsilon_0\left|\mathbf{r}_i - \mathbf{R}_I\right|} \
+ \sum\_{i\neq j} \frac{e^2}{8\pi\varepsilon_0\left|\mathbf{r}_i - \mathbf{r}_j\right|}
当然你也可以把更多的东西包含进来(比如原子核之间的斥力,磁场与自旋的耦合,等等),我们对此不做过多讨论, 因为这和之后要说的事情没有关系,我们就假定讨论的体系是这样简单的体系。 这里写出这个表达式来只是为了告诉读者: 到现在为止,哈密顿量和薛定谔方程与量子力学课堂上学的并没有太大不同;但很快我们就要把它改造得面目全非了,不这样做的话没法写程序计算。
这个改造的起点是这样一个结论: 基态电荷密度蕴含了体系所有的信息,包括但不限于基态能量、各个激发态的能量, 各种状态下的波函数、原子核的位置和所带电荷,以及你今天早上吃的豆浆还是油条。 总之,它就是字面意思上的“所有”。 如果你要搜索这个结论的证明的话,大概可以看到一个非常古老、非常简洁但又非常“耐人寻味”的“证明”2 。 但这个证明并不能说服我,我总觉得那就是个循环论证;我感到信服的证明是在某本 DFT 教学的书上看到的3 ,它的证明思路是这样的:
- 薛定谔方程(哈密顿算符)蕴含了体系的一切信息,这是量子力学的基本假设;
- 对于上述体系,只需要三个信息就可以写出哈密顿算符的表达式:各个原子核的位置、各个原子核所带电荷、电子的个数;
- 从基态电荷密度出发,这三个信息都是求出来的:
- 电子个数:在全空间中积分一下就得到了。
- 原子核位置:解析的表达式在书中有给出,没记错的话,大概就是,原子核存在于电荷密度的倒数不连续的地方。
- 原子核所带电荷:解析的表达式在书中也有给出。
- 因此,基态电荷密度已经蕴含了体系的所有信息。
这个结论并没有马上指出我们要如何写代码做计算,而是给出了一个可能: 虽然波函数复杂得可怕,但我们可能并不需要真的求解出它; 我们只要找到绕过波函数求解出基态电荷密度(这只是一个三维的实数函数)的方法,同样可以得到所有想要的信息(基态能量,能带结构,等), 整个过程或许不需要考虑那个三千维的波函数。 事实上也确实是这样做的。这就是“密度泛函理论”(density functional theory,DFT)名字的由来。
这个方法是这样做的:将上述哈密顿量“略微”修改,使得它描述的不再是实际的体系,而是另外一个假象的体系; 其中的粒子也不是电子,而是另外一种假想的粒子。 这个假象的体系有这样两个特点:其一是,它的基态电荷密度与实际体系相同,这样求解出它的基态电荷密度就等于求解出了实际体系的基态电荷密度; 其二是,假想粒子之间没有相互作用,这样假想体系中的