VASP计算设置模块
本模块用于自动设置VASP计算任务,支持多个输入路径和灵活的输出配置。
模块概述
该模块提供了一组函数,用于:
自动发现结构文件和目录
创建VASP计算所需的所有输入文件
保持原有的目录分类结构
生成可自定义的提交脚本
主要函数说明
create_incar(config)
创建INCAR文件。
参数:
- config: 配置字典,包含INCAR参数
返回: - Incar对象
作用: 根据配置参数生成VASP的INCAR输入文件。
setup_vasp_calculation(poscar_path, output_dir, config)
为单个结构设置VASP计算。
参数:
- poscar_path: POSCAR文件路径
- output_dir: 输出目录路径
- config: 配置字典
返回: - 布尔值,表示设置是否成功
作用: 为单个结构创建完整的VASP计算目录,包括POSCAR、INCAR、POTCAR和提交脚本。
create_submission_script(output_dir, config)
创建完全可自定义的SLURM提交脚本。
参数:
- output_dir: 输出目录路径
- config: 配置字典,包含提交脚本配置
返回: - 无返回值
作用: 根据配置文件生成适应不同HPC环境的SLURM提交脚本。
discover_structure_dirs(input_paths)
自动发现所有输入路径中的结构目录。
参数:
- input_paths: 输入路径列表
返回: - 发现的目录信息列表,每个元素包含name、path、prefix、type等信息
作用: 扫描输入路径,识别包含.vasp文件的目录,为后续处理做准备。
process_directory_for_vasp(input_dir, output_base_dir, config, prefix=””)
处理整个目录的结构用于VASP计算。
参数:
- input_dir: 输入目录路径
- output_base_dir: 输出基础目录
- config: 配置字典
- prefix: 目录前缀(可选)
返回: - 设置的计算任务数量
作用: 遍历目录中的所有.vasp文件,为每个结构设置VASP计算,保持原有目录结构。
配置参数说明
配置文件需要包含以下VASP设置相关参数:
vasp_setup:
input_paths: # 输入路径列表
- './deformed_structures'
- './perturbed_structures'
output_dir: './vasp_calculations' # 输出目录
vasp:
incar_parameters: # INCAR参数
PREC: 'Accurate'
ENCUT: 500
...
submission: # 提交脚本配置
slurm_headers:
- '#SBATCH --job-name=vasp_calculation'
- '#SBATCH --nodes=1'
modules:
- 'module load vasp/5.4.4'
vasp_execution:
- 'srun vasp_std'
输入输出结构
输入结构: 任意包含.vasp文件的目录结构,如:
deformed_structures/
├── BaTiO3/
│ ├── BaTiO3_mp-2998_supercell.vasp
│ └── BaTiO3_mp-2998_perturb_0001.vasp
└── SrTiO3/
└── SrTiO3_mp-5229.vasp
输出结构: 保持原有结构,每个结构一个计算目录:
vasp_calculations/
├── BaTiO3/
│ ├── BaTiO3_mp-2998_supercell/
│ │ ├── POSCAR
│ │ ├── INCAR
│ │ ├── POTCAR
│ │ └── submit.sh
│ └── BaTiO3_mp-2998_perturb_0001/
└── SrTiO3/
└── SrTiO3_mp-5229/
使用示例
# 直接运行模块
python vasp_setup.py
# 或在Python代码中调用
from vasp_setup import main
main("input.yaml")
注意事项
需要正确配置INCAR参数以适应计算需求
POTCAR生成依赖potcar_generator模块
提交脚本需要根据实际HPC环境调整配置
已完成的计算(存在OUTCAR)会自动跳过
保持原有目录结构便于数据管理和追溯