Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[2.0.0] 2026-03-17¶
Added¶
- Add typed pydantic config models (
CalcConfig,ComputingConfig) with cached loaders - Add
VaspRunclass that owns run-level concerns (error checking, magmom parsing) - Add configurable job resource parameters (
atoms_per_node,rerun_increase,rerun_increase_factor) toComputingConfig - Add smart rerun diagnosis: relaxations distinguish "completed all NSW without converging" (relaunch same params) from "timed out" (apply rerun strategy)
Changed¶
- Add
developbranch to CI pull request trigger - Replace hardcoded calculation ordering with a dependency graph (
CALC_DEPENDENCIES+ topological sort) VaspInputCreatorandJobManagernow use shared cached config loaders instead of reading JSON on each instantiation- Migrate from black/flake8/isort to ruff
- Update comprehensive test suite:
test_vasp_input_creator.py,test_job_manager.py,test_config.py, and additional analyzer failure mode tests VaspInputCreatornow accepts a pymatgenStructuredirectly instead of aposcar_source_pathBaseCalculationManagergeneralized withvasp_runsdict to support both single-run and multi-run managers- Job naming (
pad_string) extracted fromVaspInputCreatorinto eachCalculationManagerviajob_prefix - Move
job_prefixabstract property toBaseCalculationManagerfor SLURM job naming - Bulkmod strains are now independent jobs, each with their own
VaspRun,VaspInputCreator, andJobManager - Bulkmod handles per-strain failures individually instead of restarting from scratch
- Update example calculations from VASP 6.3.2 (CuO, NaCl) to VASP 6.4.3 (NaCl, Fe, NiO, BCC_Ti)
make_potcar_anonymousnow produces minimal pymatgen-parseable POTCARs instead of bare TITEL-line stubs- Update test fixtures to 4 materials covering spin-polarization, DFT+U, re-relaxation, and elastic instability
- Migrate CI workflows (tests, publish, mkdocs) from pip to uv
Removed¶
- Remove bulkmod-specific SLURM templates (
vasp-bulkmod.yml,vasp-bulkmod-quest.yml,vasp-bulkmod-bridges2.yml); bulkmod strains now reuse static templates - Remove
bulkmodentry fromcalc_config.json; bulkmod now uses thestaticcalc config
[1.4.2] - 2025-11-13¶
Fixed¶
- Fix hubbard settings to only apply to oxygen-containing compounds
[1.4.1] - 2025-10-09¶
Changed¶
- Updated pre-commit version
Fixed¶
- Fixed walltime formatting for walltimes longer than 24 hours
[1.4.0] - 2025-08-12¶
Added¶
- Write documentation and deploy as gh-pages
- Add type hints and type checking
Changed¶
- README is simplified and points to the documentation site
[1.3.5] - 2025-08-10¶
Changed¶
- Enforce calculation types ordering in VaspManager
[1.3.4] - 2025-08-03¶
Changed¶
- Change POSCAR precision from 8 to 16 to avoid symmetry errors associated with floating point errors
[1.3.3] - 2025-04-02¶
Changed¶
- Use SPDX license expression for compliance with PEP 639
[1.3.2] - 2025-04-02¶
Changed¶
- Use dynamic versioning in pyproject.toml
[1.3.1] - 2025-04-01¶
Added¶
- Added publish to PyPi github workflow
[1.3.0] - 2025-03-24¶
Added¶
- Added optional mixing tags (AMIX, BMIX) to INCAR from calc config
Changed¶
- Updated quest configuration for quest[10,11,12] nodes
[1.2.0] - 2025-03-23¶
Added¶
- Added oqmd psuedopotentials json, oqmd-settings branch now uses these psuedopotentials by default
- Added primitive to be passed in calculation manager kwargs
- Allow custom calculation configs for individual job managers
- Added sort_by callable for sorting results by keys
- Allow other filenames for slurm exe and jobid files
- Added (optional) write tags LCHARG, LWAVE, and LVTOT to calc config
- Catch sbatch errors with subprocess.check_output()
- Added ASCII logo to VaspManager init
- Added international_monoclinic argument to get_pmg_structure_from_poscar
Changed¶
- Changed vasp.q permissions to executable executable
- Added newline to end of jobid file
- Updated property setters in Analyzers
- Updated github actions versions
- [BREAKING] ElasticAnalyzer is now a better standalone analyzer, and all of the associated processing of VASP outputs is now in the from_calc_dir method. This makes it easier to use ElasticAnalyzer as a utility if you only have the elastic constants and a structure
- Updated managers with named loggers. Each manager should now print the material name when logging, which should make things easier to track when using multiprocessing
- Stopped pinning versions, track pymatgen master instead
- [BREAKING] Unify path naming conventions. Use _dir for directories and _path for filepaths for clarity
Fixed¶
- Fixed rlx restart behavior if to_rerun is False
- Fixed spacing in VASP error handling message
- Fixed github actions coverage
- Fixed static post-hoc analysis
- Fixed stopping behavior for better status tracking
[1.1.4] - 2024-01-17¶
Added¶
- Added ability to run static calculations without a previously existing rlx calculation
- Added capability to override job preambles/commands by placing a {computer}.yml file in the calculations folder
- Added capability to override the global calc_config.json by placing a new calc_config.json in a material's calculation mode folder
Changed¶
- Major update to error handling, including tracking of STOPPED calculations
- Changed number of cores reserved for memory when hitting out-of-memory errors as well as for new Quest 9+ nodes
- Changed default VASP settings for elastic calculations in calc_config.json. Convergence testing w.r.t. smearing and KPOINTS is still recommended
- Allow VaspManager to recognize previously zipped archives (for rlx-coarse or rlx calculations)
- Removed bulkmod_standalone as a mode and incorporated the behavior into the normal bulkmod manager
Fixed¶
- Ensure elastic calculations use a conventional unit cell
[1.1.3] - 2023-10-19¶
Added¶
- Added the ability to write a KPOINTS file by specifying write_kpoints: true in calc_config.json
Changed¶
- Major updates to vasp error handling
- Changed default symprec in calc_config.json
- When a job fails, double the walltime instead of doubling the number of nodes. This is typically more efficient in terms of total computational cost
- Made variable names in util functions more explicit
Fixed¶
- Fixed error in increasing the walltime upon job failure
- Made the mpitasks variable uniform in the vasp.q yml files, and fix the improper reference to mpi_tasks
- Fixed POTCAR path in computing_config.json
- Fixed error in ElasticManager when the number of displacements >= 100
- Fixed Quest computing configuration after Quest8 nodes were retired
- Fixed automatic NBANDS for ElasticManager when the number of available compute cores is greater than ¾ the number of electrons
- Fixed BulkmodManager symlink creation when the symlink already exists
[1.1.2] - 2023-10-06¶
Added¶
- Added support for bridges2 in computing_config.json and vasp.q yml templates
Changed¶
- Use only pyproject.toml instead of setup.py and pyproject.toml
- Changed LICENSE to .md instead of .txt
- Changed utility functions (phead, ptail, pgrep) to iterate over lines in the file rather than reading the entire file into memory
- pot_dict.json is now a symbolic link to enable better support for multiple VASP versions
- Utilize yml tempaltes for vasp.q creation for easier customizability