ABACUS 专题

ABACUS LDA、GGA与meta-GGA选择实操

Si2的PZ/PBE/SCAN/r2SCAN、显式Libxc、完整输入与原生能级提取。

更新于 2026-10-29约 4 分钟阅读按任务与环境选择适用配置
阅读本篇目录

下载完整输入、原生能量/力/能级及绘图脚本,解压进入附件根目录。先用已有结果生成表格和四张图:

bash analyze.sh

该步骤只读参考数据,用一个CPU核心处理,不启动DFT。完整重算:

sbatch submit.slurm

脚本申请一张P100,顺序运行20个条件,每个1个MPI进程、1个CPU线程、GPU双精度。参考环境为ABACUS3.10.1、GNU13.3、HPC-X2.50/OpenMPI5.0.10rc2、CUDA12.8、OpenBLAS0.3.30。ABACUS这一构建自带的Libxc是6.2.2,不能套用其他软件扩展的Libxc版本。不要在登录节点执行DFT。本例固定结构、scf_thr=1e-6;截断能和k网格是教学设置,换体系后需自己检查。

1. 选择哪一类泛函#

本篇用同一个Si双原子原胞演示LDA、GGA、meta-GGA与显式Libxc组合。泛函选择改变模型,赝势也要匹配;不能按不同模型总能量的高低来挑“最好”的泛函。

真实Si原胞和已采样k点上的KS能隙

图中前四组使用同一个PBE赝势,LDA另用LDA赝势。SCAN/r2SCAN在这里沿用PBE赝势只为演示选择和接口,不作为严格匹配赝势后的泛函精度比较。

2. 完整PBE输入#

展开完整 INPUT、STRU、KPT

INPUT#

INPUT_PARAMETERS
suffix tutorial
calculation scf
basis_type pw
ecutwfc 40
scf_thr 1e-6
scf_nmax 200
ks_solver cg
device gpu
precision double
cal_force 1
cal_stress 0
pseudo_dir ../../PP_ORB
orbital_dir ../../PP_ORB
out_chg 1
out_pot 1
out_wfc_pw 1
nbands 16
dft_functional pbe

STRU#

ATOMIC_SPECIES
Si 28.0855 Si_ONCV_PBE-1.0.upf

NUMERICAL_ORBITAL
Si_gga_8au_100Ry_2s2p1d.orb

LATTICE_CONSTANT
10.26

LATTICE_VECTORS
0 0.5 0.5
0.5 0 0.5
0.5 0.5 0

ATOMIC_POSITIONS
Direct
Si
0.0
2
0 0 0 1 1 1
0.25 0.25 0.25 1 1 1

KPT#

K_POINTS
0
Gamma
2 2 2 0 0 0

实际跑过的选择如下:

目录 dft_functional 赝势及说明
si-pw-lda pz Si.pz-vbc.UPF,LDA赝势
si-pw-pbe pbe Si_ONCV_PBE-1.0.upf,PBE参考
si-pw-libxc-pbe GGA_X_PBE+GGA_C_PBE 同PBE赝势,显式调用Libxc交换与相关
si-pw-scan scan meta-GGA选择演示,PBE赝势
si-pw-r2scan MGGA_X_R2SCAN+MGGA_C_R2SCAN 显式Libxc meta-GGA组合,PBE赝势

LDA输入同时改了STRU中的赝势文件,不只是改dft_functional。basis_type pw不使用数值原子轨道展开,STRU里保留的轨道文件声明不等于本例采用了LCAO。

3. 查看实际选择和自洽结果#

完整计算后运行:

grep 'dft_functional' work/cases/si-pw-libxc-pbe/OUT.tutorial/INPUT
grep -E 'convergence is achieved|!FINAL_ETOT_IS' work/cases/si-pw-libxc-pbe/OUT.tutorial/running_scf.log

本例原生PBE与显式Libxc PBE的总能量相差约0.00002210 eV/双原子原胞;保留实际微小差异,不要求不同实现逐位相同。该数字不是泛函普遍误差或不同代码的精度保证。

4. 从原生能级提取数据#

istate.info包含k点能级和已经带权的占据数。对8价电子、非磁性Si2,本例用第4带作价带顶候选、第5带作导带底候选,取已采样k点上的最大/最小值。

模型 已采样k点的KS能隙,eV
si-pw-pbe 0.588782
si-pw-libxc-pbe 0.588782
si-pw-scan 0.771318
si-pw-r2scan 0.749942
si-pw-lda 0.483737
python - <<'PY'
import csv
with open('reference/analysis/conditions.csv') as f:
    for r in csv.DictReader(f):
        if r['name'].startswith('si-pw'):
            print(r['name'],r['functional'],r['sampled_gap_eV'])
PY

这里2×2×2网格只有3个不可约k点,不能保证采到真正导带底;表格不能当作已收敛基本带隙,更不是光学吸收边。研究带隙应进一步加密k点或沿合适路径寻找极值。

泛函选择与Libxc接口见ABACUS3.10.1输入源码。杂化泛函另见HSE/PBE0实操。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗