ABACUS 线性响应数值控制
实际虚轨道、响应核、求解器、盒尺寸和展宽,解释原生单位与有限模型。
阅读本篇目录
下载H₂的22个条件、完整输入、原生结果和绘图脚本,解压进入附件根目录,先读取已有数据:
bash analyze.sh
表和数组在reference/analysis,高清图在reference/figures。需要从头重算时,在新的附件目录提交:
sbatch submit.slurm
模板分配1张P100,先顺序运行各条件,再后处理。实时传播使用GPU,线性响应使用同主机的CPU路径;申请了GPU不代表线性响应获得GPU加速。脚本拒绝覆盖已有work,重算请新解压。这是一套含多项控制的演示,整套耗时长于单个小例子。
环境为ABACUS3.10.1模块abacus/3.10.1-p100,GNU13.3、HPC-X2.50/OpenMPI5.0.10rc2、CUDA12.8,1个MPI进程和1线程,双精度;ASE3.29.0环境提供NumPy/SciPy和绘图依赖。不包含Intel Xeon 8173M性能对照。文中的直接计算命令应在已分配的计算资源中执行,不在登录节点运行DFT。
1 区分改变物理近似与改变数值精度#
本例9个条件包括虚轨道数、响应核、LAPACK/Davidson求解器、辅助网格、盒尺寸和展宽。所有条件均使用相同PBE基态设定;xc_kernel lda/rpa/pbe改变的是响应核,不意味着其中一个案例的基态也已改用LDA。
| 控制 | 案例 | 如何理解 |
|---|---|---|
| 虚轨道 | pbe4 / pbe8 | 4→8虚轨道,激发空间改变 |
| 响应核 | pbe8 / rpa8 / lda8 | 不同近似,不能仅称为数值收敛 |
| 求解器 | dav2 / lapack2 | 同8虚轨道,均只求最低2态 |
| 辅助网格 | pbe8 / ecut60 | 40→60Ry,其他主要设置相同 |
| 盒尺寸 | pbe8 / cell10 | 8→10Å,周期镜像及归一化同时关注 |
| 展宽 | pbe8 / width02 | η=0.01→0.02Ry,激发本征值应不变 |
2 提取实际控制结果#
python - <<'PY'
import csv
with open('reference/analysis/conditions.csv') as f:
for r in csv.DictReader(f):
if r['kind']=='lr':
print(r['name'],'kernel',r['kernel'],'solver',r['solver'],
'第一激发/eV',r['first_excitation_eV'],
'eta/Ry',r['eta_Ry'])
PY
本例8虚轨道下,第一激发能PBE核为14.0222eV,RPA核为15.0085eV,LDA核为14.0481eV;它们来自同一类PBE基态,不应据此宣布哪种方法普遍更准确。10Å盒的PBE值为14.0384eV,仍保留有限盒差异。
3 小空间使用LAPACK,迭代求解器留出扩展空间#
附件的h2-lr-dav2与h2-lr-lapack2均在8维粒子–空穴空间中求最低2态。Davidson案例使用:
nvirt 8
lr_nstates 2
lr_solver dav
lr_thr 1e-6
pw_diag_ndim 2
pw_diag_ndim控制迭代子空间扩展。不要在很小的8维空间里要求8个目标态再扩展到16维;小空间直接用LAPACK更合适。实际最低2态与直接矩阵结果对照,不能将算法名称不同写成新的物理性质。
4 分子盒尺寸会改变体积归一化谱强度#

原生吸收表达式带1/V,增大同一分子的真空盒会稀释按周期体积归一化的谱强度。本例图中另画V×原生吸收帮助比较形状,但这个体积缩放量没有被命名为实验吸收截面。盒变大后若峰位仍变化,还需检查周期镜像、网格与基组,不能只把高度乘回来就宣布孤立分子收敛。
展宽从0.01改到0.02Ry会改变峰高和宽度,不改变同一激发空间的本征值。原生η的Ry单位与实时后处理使用的eV单位应分别标清。
5 用于自己的体系#
先检查基态和物理模型,再逐项比较虚轨道空间、激发态数、求解阈值、盒尺寸/k点、辅助网格和响应核。跃迁偶极的方向、亮暗态和原生振子强度应结合选择定则阅读,不能只找一条峰。绝对能量、有限基组或短轨迹的操作演示不代替充分收敛的材料或分子研究。