电荷密度混合算法介绍

作者:孙亮,邮箱:l.sun@pku.edu.cn

审核:陈默涵,邮箱:mohanchen@pku.edu.cn

最后更新时间:2023/11/09

一、背景

做基于 Kohn-Sham Density Functional Theory(KSDFT)的第一性原理计算的过程就是求解 Kohn-Sham (KS)方程

的过程。由于其中

均依赖于电荷密度,KS 方程无法直接求解,只能采取迭代的方法,也就是自洽场迭代法(scf, self-consistent field)。其流程可以概括为

上述过程也可以看作一个不动点问题:代表从的映射。

我们常常采用电荷密度混合(charge mixing)方法来提升 scf 迭代过程的稳定性和收敛效率,引入 charge mixing 方法后,scf 流程可概括为

其中表示 charge mixing 方法,它将前几步的电荷密度以一定的比例混合,得到下一步输入映射的电荷密度

下面我们将介绍几种常用的 charge mixing 方法:plain mixing, Pulay mixing, 以及Broyden mixing方法。这三种算法均已实现在 ABACUS 中。

为了方便,下文中我们统一采用狄拉克符号,比如电荷密度记为

二、算法介绍

我们一般定义残差,当它的模时,迭代达到收敛。实际计算中,无法真正做到模为零,一般设置一个阈值来判断是否收敛。

值得一提的是,下面的推导中,我们都以电荷密度作为变量,但这些算法都适用于 charge mixing 过程中其它量的混合,比如动能密度等。它们也不仅适用于电荷密度混合,也可用于其它的优化问题。

1. Plain mixing

Plain mixing,也称 simple mixing,其思路是将做线性组合,得到下一步的,为了保证混合前后电子数不变,混合的公式为

其中为 mixing 的步长,可以取 0 到 1 间的实数,越小,则迭代越稳定,但收敛所需的步数可能越多。(见第三部分,介绍 ABACUS 里面的相关参数)

一般而言,plain mixing 收敛较慢,不在实际计算中采用。

2. Pulay mixing

Pulay mixing[1]也叫 direct inversion of the iterative sub-space (DIIS) method,其思路是用前步的电荷密度做线性组合,在此线性空间中找到一个“最佳”的电荷密度,使得取极小值,再由线性组合得到下一步的

下面我们首先给出算法流程,然后进行相应的推导。

2.1 算法流程

需要存储前步迭代的

  • 计算大小为的矩阵
  • 计算逆矩阵
  • 计算混合系数
  • 更新密度为 mixing 的步长。

2.2 算法推导

为了记号方便,我们将参与线性组合的前步电荷密度重新标记为

首先我们定义,为了保证电子数守恒,要求

为了找到最佳的组合,使得取极小值,同时满足的条件,我们采用拉格朗日乘子法,定义

进一步假设,即,上式变为

上面我们定义了,它满足

于是有

两边同乘并对求和,有

,有,因此

代回上式,我们得到最佳混合比例

最终,我们得到由前步电荷密度线性组合可以得到的“最佳”电荷密度,相应的残差,其中的系数

因此下一次迭代的初始电荷密度

3. Broyden mixing

Broyden mixing 是拟牛顿法的一种,它的思路是对的雅可比矩阵的逆进行近似,从而采用牛顿法进行迭代。

在其发展过程中,曾出现过不同的形式,这里我们介绍的是 1988 年 Johnson 提出的 Simplified modified Broyden method[2],它兼具收敛速度快与内存消耗少的优势,也是 ABACUS 默认采用的 mixing 方法。

我们先给出算法流程,再进行推导,以下推导参考了文献[3]。

3.1 算法流程

首先我们定义

需要存储前步迭代的

  • 计算大小为的矩阵
  • 计算逆矩阵
  • 计算混合系数
  • 更新密度为 mixing 的步长。

3.2 算法推导

3.2.1 牛顿法

我们首先介绍牛顿法,对于 charge mixing 中的不动点问题,可以改写为

,这里

假设,且附近足够光滑,选附近的作为出发点,做泰勒展开,有

其中为雅可比矩阵,做线性近似后,有

由此得到牛顿法的迭代公式

此公式中出现了雅可比矩阵的逆,精确求解将极为耗时,因此一般通过求解线性方程组来得到它:

,由,有

综上,牛顿法的完整迭代公式为

牛顿法中,需要先求出矩阵,在 charge mixing 的应用场景中,的大小为为实空间格点数,因此的求解和储存都很不方便。

3.2.2 Broyden 算法

为了克服牛顿法的问题,人们提出了拟牛顿法(quasi-Newton),其基本思路是对进行近似,而不是精确求解。拟牛顿法中,我们一般要求近似的仍然满足的条件,称为拟牛顿条件

Simplified modified Broyden method 是拟牛顿法的一种,假设已知,它通过求解以下优化问题得到

其中,均为大小为的矩阵,要求对于前步的均满足拟牛顿条件,

我们仍然采用拉格朗日乘子法,定义

为了方便,这里我们省去了的下标,并且记,其中为拉格朗日乘子组成的大小为的向量。

将上式展开,有

,由上式有

因此

注意我们将括号中的近似成了,上式写成矩阵形式为

代入拟牛顿条件中,要求,因此上述优化问题给出

假设,上式变为

于是迭代公式为

下面我们将此公式改写成更加清楚的形式,首先令,则,因此

其中

最终

三、ABACUS 相关参数介绍

上述三种算法均已在 ABACUS 中实现,下面我们简要介绍 ABACUS 中 charge mixing 的相关参数,并将它们与上面的公式对应起来,详细文档见链接

  • mixing_type:选择 mixing 算法,可选项为 plain, pulay, broyden,分别对应上述三种算法,一般而言,Broyden 算法收敛最快,Pulay 略慢,plain 最慢。默认选项为 broyden
  • mixing_beta:对应上述公式中的参数绝对值越小,则收敛过程越稳定,但达到收敛所需的步数可能增多。对于难以收敛的体系,特别是收敛过程中能量出现上下波动的例子,可以尝试减小 mixing_beta
  • mixing_ndim:对应上述公式中的参数,Pulay 和 Broyden 算法会借助过去步的信息构建下一次迭代的电荷密度,默认值为 8。对于难以收敛的体系,略增大 mixing_ndim 可以增强收敛过程的稳定性。
  • mixing_gg0:是否采用 Kerker scaling 方法,此方法会在倒空间中给乘上的因子,以抑制混合过程中的高频项,其中为波矢,mixing_gg0 设置。特别是对于难以收敛的金属体系,打开 Kerker 方法可以帮助计算达到收敛。
  • mixing_tau:是否对动能密度进行混合,适用于使用 meta-GGA 交换关联泛函的场景。
  • mixing_dftu:是否对密度矩阵进行混合,适用于使用 DFT+U 的场景。
  • scf_thr:对应于 charge mixing 的收敛判据,对于原子轨道基组(LCAO),默认值为 1e-7,对于平面波基组(PW),默认值为 1e-9。
  • scf_thr_type:选择上述公式中内积的定义,以及相应收敛判据的计算方式。

    • 1:表示取实部,收敛判据为,默认用于 PW 基组;
    • 2:,收敛判据为,默认用于 LCAO 基组。

四、参考文献

[1] Pulay P. Convergence acceleration of iterative sequences. The case of SCF iteration[J]. Chemical Physics Letters, 1980, 73(2): 393-398.

[2] Johnson D D. Modified Broyden’s method for accelerating convergence in self-consistent calculations[J]. Physical Review B, 1988, 38(18): 12807.

[3] Lin L, Yang C. Elliptic preconditioner for accelerating the self-consistent field iteration in Kohn--Sham density functional theory[J]. SIAM Journal on Scientific Computing, 2013, 35(5): S277-S298.

Copyright © mcresearch.gitee.io 2023 all right reserved,powered by Gitbook该文章修订时间: 2023-11-10 10:06:33

results matching ""

    No results matching ""