【Linux】ACFDT-RPA计算的笔记

ACFDT-RPA方法可以用来推导随机相位近似(RPA)。ACFDT-RPA基态能量E_RPA是ACFDT-RPA相关能量E_c和Hartree-Fock(HF)能量E_EXX的和,其中HF能量是在密度泛函理论(DFT)中使用Kohn-Sham轨道非自洽计算得到的。

如果在INCAR文件中设置ALGO=RPA,VASP将计算RPA中的相关能量。为此,VASP首先计算独立粒子响应函数,使用WAVECAR文件中的未占据态,并使用等离子体涨落方程计算相关能量。

计算ACFDT-RPA总能量的一般步骤有四步或一步完成。一步完成的方法适用于VASP.6及以上版本。这两种方法都包括自洽DFT计算,对KS哈密顿量进行对角化,以及RPA计算本身。虽然一步完成的方法非常方便,但是有一些需要注意的问题。

四步计算ACFDT-RPA总能量的步骤如下:

第一步:进行标准的DFT计算。计算DFT哈密顿量的所有占据轨道(以及通常在VASP中计算的一些未占据轨道)。建议使用高精度(小的EDIFF标签)和较小的扩展宽度(SIGMA标签),避免高阶Methfessel-Paxton扩展。建议使用PBE轨道作为ACFDT-RPA运行的输入,但也可以选择其他选择,如LDA或混合泛函。

第二步:使用DFT轨道计算HF能量E_EXX。在这一步中,需要设置ALGO=EIGENVAL和NELM=1,LWAVE=.FALSE.,LHFCALC=.TRUE.和AEXX=1.0。这一步计算的HF能量包括Hartree能量、动能以及离子的Ewald能量。

第三步:计算足够数量的未占据态。在第一步的OUTCAR文件中,搜索“maximum number of plane-waves:”,然后使用以下INCAR文件再次运行VASP,通过对KS哈密顿量进行精确对角化来确定未占据态。这一步计算使用的KS哈密顿量必须与第一步相同。

第四步:计算ACFDT-RPA相关能量。在这一步中,需要设置NBANDS为最大平面波数,并将ALGO设置为ACFDT。通常将虚频率和虚时间网格点数NOMEGA设置为8-24。

一步完成计算ACFDT-RPA总能量的步骤如下:

在INCAR文件中设置ALGO=RPAR。设置NOMEGA为8-24,LOPTICS为.TRUE.(可选),LPEAD为.TRUE.(6.1和6.2版本需要),并设置EDIFF为1E-8,ISMEAR为0,SIGMA为0.05。不要在INCAR文件中设置NBANDS。

ACFDT-RPA总能量的输出包括RPA相关能量和Hartree-Fock能量的值,以及通过线性回归得到的收敛值。

ACFDT-RPA计算在金属上的一些问题:

对于金属,RPA基态能量最快收敛于k点,如果在相同的k点网格上计算交换能和相关能量,不设置HFRCUT,并且不考虑极化率的长波贡献。

为了评估公式(12)的值,需要将与部分占据相关的E_EXX修正能量添加到RPA基态能量中。在VASP.5.4.1中,可以在OUTCAR文件中找到这个值。

为了忽略长波贡献,只需在ALGO=Exact步骤(第三步)中设置LOPTICS=.FALSE.,并删除目录中的WAVEDER文件。

ACFDT-RPA计算在金属上的一些问题包括:基组收敛性、频率积分的收敛性以及内存限制和并行化等。

基组收敛性是ACFDT-RPA计算中需要注意的一个问题。收敛到足够高的平面波截断能(ENCUT)可能需要较长的计算时间。建议在默认的ENCUT值和增加后的ENCUT值(通常是默认值的1.3倍)下进行计算,并仔细测试收敛性。另一个问题是能量-体积曲线有时可能不够平滑。在这种情况下,最好的策略是设置ENCUT=1.3倍的默认截断能,ENCUTGWSOFT=0.5倍的默认截断能。

频率积分也需要仔细检查,特别是对于小能隙系统(一些破坏对称性的原子),收敛可能较慢,因为单电子带隙可能非常小,需要非常小的最小频率(omega)进行积分。

内存限制和并行化也是需要考虑的问题。ACFDT-RPA方法的空间时间算法需要比四次方算法更多的内存。为了减少内存开销,VASP使用快速傅里叶变换(FFT)来避免在实空间中存储矩阵。并且还避免存储冗余信息,即独立粒子响应函数和极化率矩阵都是分布式的,以及虚频率和虚时间网格点也是分布式的。可以通过设置NTAUPAR和NOMEGAPAR标签来手动分配虚时间和虚频率的网格点。默认值通常是合理的选择,但强烈建议设置MAXMEM标签而不是NTAUPAR标签。MAXMEM标签设置每个节点上每个MPI进程的可用内存。近似的内存需求可以通过以下公式估算:

(NGXNGYNGZ)(NGX_SNGY_S*NGZ_S) / ( NCPU / NTAUPAR ) * 16

其中,NGX、NGY、NGZ是精确交换的FFT网格点数,NGX_S、NGY_S、NGZ_S是超胞的FFT网格点数,NCPU是用于作业的MPI进程数,NTAUPAR是共享相同虚时间点的MPI组数。

对于金属系统,RPA力的计算是可选的。可以通过将LRPAFORCE标签设置为.TRUE.来计算RPA力。这需要计算单电子密度的变化。计算RPA力时,VASP使用线性响应例程自动进行计算。

总之,ACFDT-RPA方法在计算材料的电子结构和性质方面具有重要的应用。然而,需要仔细选择计算参数和检查收敛性,特别是对于金属系统。

在ACFDT-RPA计算中,还有一些其他需要注意的问题和已知的问题。

首先是关于金属系统的RPA计算。金属系统的RPA计算需要特别注意。金属系统的RPA基态能量对于k点的收敛最快,如果交换能和相关能量在相同的k点网格上计算,不设置HFRCUT,并且不考虑极化率的长波贡献。

另一个需要注意的问题是计算的收敛性。ACFDT-RPA计算可能需要较长的计算时间和更高的计算资源才能达到收敛。因此,建议在进行计算之前对计算参数进行仔细测试和优化,以确保结果的准确性和收敛性。

此外,ACFDT-RPA计算还涉及到内存限制和并行化。由于ACFDT-RPA方法的空间时间算法需要较多的内存,因此需要确保计算机集群具有足够的内存来运行计算。此外,合理的并行化策略也可以提高计算效率。

最后,还需要注意一些已知的问题。例如,ACFDT-RPA计算在金属系统上的一些功能可能不受支持。此外,对于一些特殊的系统或情况,可能会出现数值不稳定性或收敛困难的问题。因此,在进行ACFDT-RPA计算时,建议仔细检查计算结果,并与其他计算方法进行比较以确保结果的准确性。