ABACUS 分子动力学续算实操
真实40+40步续算、最少状态文件、全局时钟与连续轨迹的实际误差。
阅读本篇目录
下载13个条件的完整输入、原生轨迹、续算状态与绘图脚本,解压进入附件根目录。先用已有数据生成图表:
bash analyze.sh
结果在reference/analysis、图片在reference/figures、ASE轨迹在reference/export。从头执行整套流程:
sbatch submit.slurm
脚本在新的work中依次运行13个条件,已有work时请新解压,避免覆盖已完成结果。想先跑一个条件,可在计算资源环境中加载下述模块、运行setup.py后用run_case.py指定目录名;普通用户不要在登录节点运行DFT。提交模板申请1张P100、1个MPI进程、1个线程,套餐用户按实际权限用yskit生成脚本。
本例ABACUS3.10.1模块为abacus/3.10.1-p100,GNU13.3、HPC-X2.50/OpenMPI5.0.10rc2、CUDA12.8环境,实际为P100双精度;后处理为ase/3.29.0。模型采用32原子fcc铝、3价电子LDA赝势Al.pz-vbc.UPF及PZ泛函,40Ry、Γ点、64条带,共96个价电子。不能用同名11价电子赝势替换后仍保留这些带数与精度设置。
这批轨迹只有40fs,用来指导输入、读取和续算,不用于扩散系数、熔点、平衡密度或收敛热力学性质。
1 续算要保留什么#
本例把NVE拆成0→40步、40→80步,两段各20fs,同时另跑完整0→80步作对照。需要前半段的Restart_md.dat及对应STRU/STRU_MD_40,其中保留结构、速度和当前步数。续算不能重新随机生成速度,也不能把其他模型的文件拷来使用。
前半段完整INPUT:
INPUT_PARAMETERS
suffix tutorial
pseudo_dir ../../PP_ORB
ntype 1
basis_type pw
calculation md
ecutwfc 40
nbands 64
ks_solver cg
symmetry 0
device gpu
precision double
scf_thr 1e-7
scf_nmax 100
smearing_method gaussian
smearing_sigma 0.01
cal_force 1
cal_stress 1
out_chg 0
md_type nve
md_nstep 40
md_dt 0.5
md_tfirst 300
md_seed 12345
md_dumpfreq 1
md_restartfreq 40
dft_functional pz
init_vel 1
md_tlast 300
dump_force 1
dump_vel 1
dump_virial 1
后半段完整INPUT:
INPUT_PARAMETERS
suffix tutorial
pseudo_dir ../../PP_ORB
ntype 1
basis_type pw
calculation md
ecutwfc 40
nbands 64
ks_solver cg
symmetry 0
device gpu
precision double
scf_thr 1e-7
scf_nmax 100
smearing_method gaussian
smearing_sigma 0.01
cal_force 1
cal_stress 1
out_chg 0
md_type nve
md_nstep 80
md_dt 0.5
md_tfirst 300
md_seed 12345
md_dumpfreq 1
md_restartfreq 40
dft_functional pz
init_vel 1
md_tlast 300
dump_force 1
dump_vel 1
dump_virial 1
md_restart 1
md_restart 1读取旧状态,md_nstep 80是总目标步数,所以从第40步继续时再跑40步,并非再加80步。电子初始化仍按本例原子叠加密度重新建立首个SCF,不依赖私有二进制电荷重启文件。
2 从新解压的资料包实际操作#
下面这段在计算资源环境中执行,先只跑前半段,再新建手动续算目录,保留前半段输出:
module purge
module load abacus/3.10.1-p100
python3 -B setup.py
python3 -B run_case.py al-restart-first
mkdir work/cases/al-restart-manual
cp inputs/al-restart-second/INPUT inputs/al-restart-second/STRU inputs/al-restart-second/KPT work/cases/al-restart-manual/
mkdir -p work/cases/al-restart-manual/OUT.tutorial/STRU
cp work/cases/al-restart-first/OUT.tutorial/Restart_md.dat work/cases/al-restart-manual/OUT.tutorial/
cp work/cases/al-restart-first/OUT.tutorial/STRU/STRU_MD_40 work/cases/al-restart-manual/OUT.tutorial/STRU/
cd work/cases/al-restart-manual
mpirun -np 1 abacus > restart.log
如果已经运行完整run.sh,应新解压后再做这个手动练习,不能在已有work上重复执行setup。确认新输出MD_dump第一帧为40、最后一帧为80,再检查每步电子收敛。
NHC/NPT的Restart_md.dat还含链变量等扩展状态,不能按本例NVE两行文件手工裁剪。换算法、质量或体系后,也不能视为同一条连续轨迹。
3 对齐全局时间再比较#

本例原始参考的最大位置偏差约3.924×10⁻⁵Å,原生打印总能量的最大差约1.361×10⁻⁴eV。ASCII状态有限小数和重新开始的SCF可带来有限差异;不同GPU执行也可能有很小数值差。附件同时保留原生表、高精度分量重建和逐时刻误差,不要求轨迹二进制逐位相同。
python - <<'PY'
import json
with open('reference/analysis/RESULTS.json') as f:
a=json.load(f)
for key,value in a['restart'].items():
print(key,value)
PY
4 合并轨迹时去掉重复接缝#
前半段含0~40帧,后半段含40~80帧,合并时只保留一次第40步。时间使用全局步数×0.5fs,不把后半段重新从0计时。分析长轨迹时还应核对元素顺序、晶胞和输出频率。
参阅原生续算状态读写。