Hefei-NAMD专题

Hefei-NAMD能带选择与NAC

选择原始125至136能带,连续化相位,区分重叠差与1/fs耦合,并读取实际数据。

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

本专题用鸢算科技集群实际计算的Si64轨迹、128个快照波函数和非绝热动力学,演示从准备文件到读取布居和画图的操作。原版为2024.05.21固定提交b7c8fc5,DEV为2023.03.29固定提交308d694;两者是代码快照日期,不是正式版本标签。原版使用ifort 2021.10 / Intel oneAPI 2023.2,DEV配套Intel MPI 2021.10与MKL 2023.2、AVX512。

下载完整输入、实际数值、8张图与操作脚本,保存为 hefei-namd.zip:

python3 -m zipfile -e hefei-namd.zip .
cd hefei-namd-silicon-practical-wave286
bash preview.sh
ls preview/figures

预览读取已有数值。希望自己运行原生后处理时,依次执行:

bash prepare.sh
bash calculate.sh
bash extract.sh

输入复制到 work/,原生结果也在其中,CSV与独立提取结果在 results/。本包的小型CPU后处理不重新运行VASP;实际DFT输入另放 inputs/DFT-inputs/,新的DFT需要自己的授权程序和势文件,并经Slurm提交。DEV需要支持AVX512的CPU,正式生产请申请相应CPU资源。

1 哪12条能带进入动力学#

每个实际VASP快照有160条能带。本例选择原始125至136,共12条;在精简NAMD输入里重新编号为1至12:

原VASP能带 NAMD局部能带 本例角色
125–128 1–4 较低的所选态
129 5 所选较低导带态
130 6 本例初始电子态
131–136 7–12 其余所选态

四条实际轨迹的12条KS本征值

图中以各轨迹原始128能带的时间平均为能量零点,便于看变化;不意味着这些本征值已做真空能级校准。局部窗口还应向上下扩展测试,不能把窗口边缘当成电子绝不会离开的物理边界。

2 先处理相邻波函数的任意相位#

本例对每条能带做连续U(1)相位选择,使相邻帧同带重叠的对角元接近实数正值。它不交换能带,也不把近简并子空间任意混合。原始及相位处理后的数据都作了比较。

实际耦合、相邻波函数对角重叠与子空间连续性

四条轨迹最小同带对角重叠约0.94996,Gram白化后的12维子空间最小主重叠不低于0.9993588。前者检查逐带匹配,后者检查整个所选子空间,二者不能互相代替。更强的简并混合需另做子空间处理。

3 从自己的波函数生成文本#

将同一条轨迹的原始160带标准WAVECAR按 snapshots/01/WAVECAR至 32/WAVECAR放好:

module load hefei-namd/2024.05.21
python nac.py snapshots
ls nac-result
head -n 1 nac-result/EIGTXT

助手固定选择125–136、32帧、0.5 fs。本例读取条件为非自旋、单k点、标准复系数RTAG45200;不是Gamma压缩格式读取器,也没有处理SOC、任意多k点或PAW增广重叠。换体系前先修改并核对这些前提。

这里的 nac.py是随包的自有complex128数值助手。原版CoupIJ的系数求和使用较低精度;大平面波基组下需要特别注意求和误差。本例实际动力学统一使用与独立扩展精度求和相符的助手数据,不能把它称为原版直接输出。

下载包已有四条轨迹的自有耦合与本征值,可直接使用,不需要再次计算DFT:

head -n 1 inputs/double-NAC/Si64-300K-seed11/EIGTXT
wc -l inputs/double-NAC/Si64-300K-seed11/NATXT
python - <<'PY'
import numpy as np
a=np.load('reference/nac/Si64-300K-seed11.npz')
print(a['energies_eV'].shape, a['NAC_per_fs'].shape)
print('max |d_ij| /fs =', abs(a['NAC_per_fs']).max())
PY

4 NATXT到底写什么#

相邻归一化波函数重叠为 S_ij=<ψ_i(t)|ψ_j(t+Δt)>。此版本文本NATXT保存实数矩阵差 Re(S_ij−S_ji),每行12×12=144个数,共31行;EIGTXT也有31行、12列,存相应起始帧的eV本征值。完整32帧本征值在NPZ里。

**原生传播程序读取NATXT后再除以2Δt一次。**这里Δt=0.5 fs,2Δt数值恰好为1,容易掩盖重复相除的错误。若改时间步,不能把已除过时间的 NAC_per_fs重新写入NATXT再让程序除一次。

不要凭Fortran列主序就自行转置文本;本例保持当前程序实际使用的行列约定,并用独立TDSE求解对照传播。传播操作见下一篇FSSH。

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

查看配图

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

100%查看原图 ↗