为什么使用 ABINIT 8.6.3
选择 ABINIT 8.6.3 而非 9.x/10.x 是基于以下实际考量:
- LOBSTER 5.1.1 可以直接读取 ABINIT 8.x 的
_WFK二进制文件。 - ABINIT 9.x/10.x 默认输出 NetCDF 格式的
_WFK.nc文件,需要额外的转换脚本才能被 LOBSTER 识别。 - 使用 8.6.3 版本可以绕过格式转换环节,显著简化工作流,降低出错概率。
ABINIT 8 与 9 输入文件差异
两个版本在操作层面有若干重要差异:
| 特性 | ABINIT 9.10.3 | ABINIT 8.6.3 |
|---|---|---|
| 入口方式 | abinit run.abi | abinit < run.files |
| 赝势指定 | pp_dirpath + pseudos 关键词 | .files 文件末尾列出路径 |
| 结构输入 | xyzfile(两者均支持) | xyzfile(before_v9 已有) |
| MPI 模块 | abinit/9.10.3/openmpi3-mkl | abinit/8.6.3/mpich |
LOBSTER 对 ABINIT 的必需设置
为使 ABINIT 输出的波函数能被 LOBSTER 正确处理,必须在输入文件中加入以下指令:
istwfk *1 # 强制复数波函数(禁用时间反演存储优化)
kptopt 3 # 完整 k 点网格(无对称性约化)
prtdos 3 # 输出投影态密度
prtwf 1 # 输出波函数文件
prtden 0 # 不需要电荷密度输出
PAW 特有设置:
pawecutdg 40-60 # PAW 增强截断能(建议 ≥ 2×ecut,但对大体系需权衡)
K 点必须 Gamma 居中、无位移:
ngkpt X Y Z
nshiftk 1
shiftk 0.0 0.0 0.0文件结构模板
.files 文件(ABINIT 8 入口)
cohp.in # 输入文件名
cohp.out # 输出文件名
cohp_i # 输入数据前缀
cohp_o # 输出数据前缀(生成 cohp_oWFK)
cohp_tmp # 临时文件前缀
/full/path/to/Element1.xml # 赝势1(对应 znucl 第1个元素)
/full/path/to/Element2.xml # 赝势2(对应 znucl 第2个元素).in 输入文件模板
# --- Structure ---
xyzfile ../../str/initial/STRUCTURE.xyz
# --- Cell ---
acell AX AY AZ Bohr
chkprim 0
# --- PAW basis ---
ecut 30
pawecutdg 40
# --- SCF ---
nstep 100
iscf 17
iprcel 45
diemix 0.5
diemac 1000.0
dielng 5.0
npulayit 7
toldfe 1.0d-6
# --- K-points (LOBSTER required) ---
kptopt 3
ngkpt 6 6 2
nshiftk 1
shiftk 0.0 0.0 0.0
# --- Bands & occupation ---
nband N
occopt 7
tsmear 0.03
# --- No optimization ---
optcell 0
ionmov 0
# --- Output ---
prtdos 3
prtden 0
prtwf 1
# --- LOBSTER mandatory ---
istwfk *1SLURM 提交脚本模板
#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=64
#SBATCH --cpus-per-task=1
#SBATCH --job-name=COHP-XXX
#SBATCH --output=job_cohp_%j.out
#SBATCH --mail-user=zhengqing.wei@physik.tu-chemnitz.de
#SBATCH --mail-type=START,END,FAIL,TIME_LIMIT
#SBATCH --partition=epyc,epycng,superepyc,epycgpu
#SBATCH --hint=nomultithread
#SBATCH --threads-per-core=1
#SBATCH --error=error_cohp
module purge
module load gnu7/7.3.0
module load abinit/8.6.3/mpich
echo "=== ABINIT 8.6.3 COHP calculation start: $(date) ==="
mpirun abinit < cohp.files > cohp.log 2>&1
if [ ! -f cohp_oWFK ]; then
echo "ERROR: WFK file not produced"
exit 1
fi
echo "=== ABINIT completed: $(date), WFK size: $(ls -lh cohp_oWFK | awk '{print $5}') ==="
关键注意: module purge 后必须显式加载 gnu7/7.3.0,否则会报 libgfortran.so.4 找不到。
lobsterin 模板
COHPstartEnergy -20
COHPendEnergy 10
basisSet Bunge
basisfunctions Al 3s 3p
basisfunctions C 2s 2p
cohpbetween atom N1 and atom N2
- 对于 ABINIT + PAW-JTH 的组合,建议使用
basisSet Bunge。 - atom 编号与 ABINIT 输入中的原子顺序一致。
PAW 赝势
计算使用的赝势信息如下:
- 路径:
/beegfs-home/users/w.zhengqing/dft/pseudodojo/pbe/paw-sr-11_pbe_standard_xml/ - 环境变量:
$PSEUDOS_PAW - 格式: JTH XML(
.xml后缀) - 可用元素: Al.xml, C.xml, H.xml, N.xml, O.xml, S.xml, Si.xml 等
计算规模与资源估算
以 Al(111) 29 原子 slab 体系(acell z ≈ 83 Bohr)为例:
| 参数 | 值 | 影响 |
|---|---|---|
ngkpt 6 6 2 + kptopt 3 | 72 k-points | 无对称约化,计算量乘以 k 点数 |
pawecutdg 60 | fine grid $72 \times 80 \times 600$ | 内存需求大,初始化缓慢 |
pawecutdg 40 | fine grid $\approx 54 \times 60 \times 432$ | 更快,精度仍可接受 |
nband 150 | 150 条能带 | 内存与对角化时间显著增加 |
nband 82 | 82 条能带 | 更快,38 条空带足够 |
建议: 首次测试建议使用 pawecutdg 40 + nband 82 参数组合,确认流程可正常运行后再逐步提高精度。
输出文件
ABINIT 计算完成后会生成以下文件:
cohp_oWFK— 波函数文件(LOBSTER 直接读取此文件),体积较大(可达数 GB)cohp_oDOS_AT0001~cohp_oDOS_AT00XX— 逐原子投影态密度cohp.out— 完整输出日志
LOBSTER 计算完成后会生成以下文件:
COHPCAR.lobster— COHP 曲线数据ICOHPLIST.lobster— 积分 COHP 值列表DOSCAR.lobster— 态密度数据lobsterout— LOBSTER 日志(用于检查 charge spilling 情况)
常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
libgfortran.so.4: cannot open | module purge 清除了 gnu7 运行时库 | 手动加载 module load gnu7/7.3.0 |
| 初始化阶段非常缓慢(>10 min) | pawecutdg 过大导致 fine grid 规模膨胀 | 将 pawecutdg 降低到 40 |
| WFK 文件未生成 | SCF 未收敛或内存不足 | 检查 cohp.out 末尾输出信息 |
| LOBSTER charge spilling > 5% | 基组不足 | 增加 basisfunctions 条目(如添加 3d 轨道) |
iprcel 45 报错 | ABINIT 8 版本兼容性问题 | 改为 iprcel 0 |
References
- LOBSTER 软件包示例目录:
../util/lobster-5.1.1/ABINIT/(包含 diamond, GaAs, FeNi3, Ti, CNT, fullerene 等体系) - 格式转换工具(ABINIT 9 → LOBSTER):
../util/lobster-5.1.1/tools/abinit_wfk_nc_to_lobster_generic.py - LOBSTER 5.1.1 可执行文件路径:
../util/lobster-5.1.1/lobster-5.1.1