ABACUS 准原子轨道实操
真实Si2的SZV准原子轨道、矩阵输出、官方工具和病态投影诊断。
阅读本篇目录
下载15个原生步骤、完整输入、矩阵和绘图脚本,解压进入附件根目录。先读取已有结果:
bash analyze.sh
结果表在reference/analysis,高清图在reference/figures。如需重新计算,在新解压的目录提交:
sbatch submit.slurm
脚本先生成教学基组,再按依赖运行10个SCF和5个NSCF步骤,最后提取、比较和画图;新的输出在work。已有work时请新解压,脚本不会覆盖已计算目录。
采用ABACUS3.10.1模块abacus/3.10.1-p100,GNU13.3、HPC-X2.50/OpenMPI5.0.10rc2,1个MPI进程、1线程、CPU双精度;ASE3.29.0、NumPy和SciPy用于后处理。模板分配P100主机资源,但这些接口实际走CPU路径,不代表GPU加速,也不是Intel Xeon 8173M性能测试。不要在登录节点直接运行DFT计算。
1 QO解决什么问题#
NAO是SCF求解时使用的数值原子轨道基;QO是把选定电子态空间映射到较小的原子中心模型。本例硅原胞有2个真实Si原子,PBE四价电子赝势、8个电子,原始DZP基有26个NAO。使用szv的sp策略得到8个QO,加入d得到18个QO。
QO不是重新用8轨道完成自洽,也不等于最大局域Wannier函数。官方后处理构造选定的4条占据态空间,并补充未占据方向,因此占据态接近机器精度的重建是算法构造结果,不能据此宣布导带准确。
2 准备完整输入#
下面是si-qo-szv-sp-k3的完整文件;赝势和轨道已在附件PP_ORB中。
INPUT_PARAMETERS
suffix tutorial
pseudo_dir ../../PP_ORB
orbital_dir ../../PP_ORB
ntype 1
basis_type lcao
calculation scf
ecutwfc 80
nbands 14
ks_solver genelpa
symmetry -1
device cpu
precision double
scf_thr 1e-7
scf_nmax 100
smearing_method fixed
cal_force 0
cal_stress 0
out_chg 1
out_mat_hs 1 12
out_wfc_lcao 1
qo_switch 1
qo_basis szv
qo_strategy sp
qo_thr 1e-8
qo_screening_coeff 0.1
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
K_POINTS
0
Gamma
3 3 3 0 0 0
qo_switch 1输出QO投影;qo_basis szv取库基中相应角动量的第一条径向函数,qo_strategy sp选择s和p。qo_thr是轨道尾部/积分范围阈值,不是电子收敛阈值。symmetry -1保留完整k网格,便于后续傅里叶操作。out_mat_hs 1 12和out_wfc_lcao 1输出原始H/S与NAO系数。
STRU中Si质量为28.0855,使用Si赝势和Si轨道,原胞常数10.26Bohr。本篇固定教学几何,没有做结构优化或推荐材料带隙。
3 只运行一个小例子#
在已获得的计算资源中,从一份新解压附件的根目录执行:
module purge
module load abacus/3.10.1-p100
python3 -B setup.py
python3 -B run_case.py si-qo-szv-sp
ls work/cases/si-qo-szv-sp/OUT.tutorial/QO_ovlp_0.dat
先看running_scf.log的电子收敛,再看data-0-H、data-0-S、WFC_NAO_K1.txt和QO_ovlp_0.dat。H单位Ry,能带表单位eV;QO重叠矩阵不是单位矩阵,需要求解广义本征值问题Hc=ESc。不要把S丢掉后直接对角化H。
4 用工具提取并判断模型#
analyze.py调用随附的官方tools/qo/postprocess.py,保留其原文件和许可,同时独立核对H/S、C†SC、广义本征方程和QO结果。全部k点保留,不使用自动筛掉误差点的路径。
python - <<'PY'
import csv
with open('reference/analysis/qo-models.csv') as f:
for r in csv.DictReader(f):
print(r['name'], 'QO数',r['QO_dimension'],
'S条件数',r['metric_max_condition'],
'可用模型',r['accepted_stable_model'])
PY

本例hydrogen/energy-valence、screening=0.1虽然完成SCF,但投影重叠矩阵条件数约1.25×10¹³,不能作为稳定QO能带模型。原始NAO的SCF正常,与QO投影病态是两回事。请先用本例SZV流程,再检查自己的体系;不要复制这个hydrogen设置当通用推荐。
当前3.10.1对qo_screening_coeff绝对值小于1e-6有输入限制,不能照旧工具README把0当关闭开关。hydrogen/minimal-valence还会遇到Si的3d电子构型限制。本篇没有将这两种设置作为可运行步骤。
继续直接能带和插值比较。参数历史说明请结合3.10.1官方工具README和该版QO源代码阅读,README中的较早实现描述不应替代当前版本实际行为。