04-ase-calculators:用 ASE 统一驱动 VASP、Gaussian、CP2K、OpenMX¶
目的¶
同一个 Atoms 对象,换一个计算器(Calculator)就能交给不同的第一性原理程序计算。本目录给出四个最小可用脚本,并展示每个计算器的环境变量、单位约定和常见坑。
文件说明¶
| 文件 | 程序 | 体系 | 要点 |
|---|---|---|---|
ase_vasp_relax.py |
VASP 6.x | 体相 Si | --mode vasp:VASP 自己优化(IBRION=2, ISIF=3);--mode ase:ASE 的 BFGS + FrechetCellFilter,VASP 只做单点 |
ase_gaussian_h2o_opt.py |
Gaussian 16 | H2O | GaussianOptimizer 调用 Gaussian 内置优化器,然后做频率 |
ase_cp2k_water_sp.py |
CP2K 2023.x–2026.x | H2O(非周期) | cp2k.psmp -s shell 模式;复杂设置用 inp 模板 |
ase_openmx_si.py |
OpenMX 3.9/4.0 | 体相 Si | energy_cutoff、convergence 以 eV 为单位输入 |
job_ase_vasp.slurm |
— | — | 在 Slurm 作业中运行 ASE 驱动脚本的模板 |
运行步骤¶
先设置环境变量(建议写进 ~/.bashrc,见 第1章):
# VASP:VASP_PP_PATH 指向“包含 potpaw_PBE/ 的上级目录”
export VASP_PP_PATH=$HOME/pp # $HOME/pp/potpaw_PBE/Si/POTCAR
export ASE_VASP_COMMAND="mpirun -np 16 vasp_std"
# Gaussian:PREFIX 会被替换为 label
export ASE_GAUSSIAN_COMMAND="g16 < PREFIX.com > PREFIX.log"
export GAUSS_SCRDIR=/tmp/$USER
# CP2K
export CP2K_DATA_DIR=/path/to/cp2k/data
export ASE_CP2K_COMMAND="mpirun -np 4 cp2k.psmp -s"
# OpenMX
export OPENMX_DFT_DATA_PATH=/path/to/openmx4.0/DFT_DATA19
export ASE_OPENMX_COMMAND=openmx
不调用程序、只检查输入是否正确(推荐先做这一步):
python ase_vasp_relax.py --dry-run # 生成 si_relax_vasp/{INCAR,KPOINTS,POSCAR,POTCAR}
python ase_gaussian_h2o_opt.py --dry-run # 打印 g16/h2o_opt.com
python ase_openmx_si.py --dry-run # 打印 omx/si.dat(需要 DFT_DATA19 中的 Si_PBE19.vps)
正式运行(在计算节点或作业脚本内):
sbatch job_ase_vasp.slurm # VASP(作业脚本内设置 ASE_VASP_COMMAND)
python ase_gaussian_h2o_opt.py
python ase_cp2k_water_sp.py --relax
python ase_openmx_si.py --np 8
预期结果 / 如何检查¶
- VASP:
si_relax_vasp/OUTCAR中出现reached required accuracy;PBE 下 Si 的晶格常数约 5.47 Å(PBE 一般比实验值 5.431 Å 大约 0.7%)。 - Gaussian:
g16/h2o_opt.log末尾为Normal termination,频率任务没有虚频(grep "imaginary" g16/h2o_freq.log无输出)。 - CP2K:标准输出打印能量和力;运行目录中的
h2o.inp是 ASE 合成的完整输入,h2o.out是 CP2K 输出(grep "ENERGY| Total FORCE_EVAL" h2o.out)。调试通信可加debug=True。 - OpenMX:
omx/si.out中有Utot.行,omx/si.log(标准输出)中有The SCF was achieved。
注意事项¶
ASE_VASP_COMMAND未设置时会报Please set either command in calculator or one of the following environment variables ...。- ASE ≥ 3.23 的文件型计算器(Gaussian、OpenMX 等)若没有命令配置,会报
EnvironmentError: No configuration of openmx,设置ASE_<NAME>_COMMAND或~/.config/ase/config.ini即可。 - ASE 的 OpenMX 接口会把
System.CurrentDirectory写成绝对路径,脚本中显式设为./;高级功能(DFT+U、NEGF、Wannier)请直接手写.dat。 - 不要把 POTCAR 提交到 Git 仓库或公开上传,它受 VASP 许可证保护。
返回教程:第4章 ASE 与 pymatgen 实战