Skip to main content

A simple package to run and analyze VASP calculations

Project description

 __      __             __  __
 \ \    / /            |  \/  |
  \ \  / /_ _ ___ _ __ | \  / | __ _ _ __   __ _  __ _  ___ _ __
   \ \/ / _` / __| '_ \| |\/| |/ _` | '_ \ / _` |/ _` |/ _ \ '__|
    \  / (_| \__ \ |_) | |  | | (_| | | | | (_| | (_| |  __/ |
     \/ \__,_|___/ .__/|_|  |_|\__,_|_| |_|\__,_|\__, |\___|_|
                 | |                              __/ |
                 |_|                             |___/ v1.1.2

Tests codecov PyPI Version Requires Python 3.10+

Automatically run VASP relaxation, static, bulk moduli, or elastic constant calculations

How to Install

  1. Create a new environment with python version $\geq$ 3.10
  2. Clone this repository
  3. Run pip install -e . or optionally pip install -e .[dev] to include packages needed for development/contribution

This package is also available on PyPi. To install, run pip install vasp-manager.

User Guide

This package serves to automate VASP calculations. VASP input creation is automatic, and so is job submission, queue monitoring, calculation analysis, and storage of the results. Simply rerun the main script and any calculations that are ready for the next type of calculation will be created and submitted.

VaspManager

The main class for handling all calculations is vasp_manager.VaspManager, which takes in a list of calculation types and material paths. See the class documentation for more details. By default, results are exported to calculations/results.json.

The bulk moduli analysis is carried out in the backend using the open-source pymatgen software to fit an EOS and elastic constant analysis using custom scripts.

Calculation Modes

We include calculation modes "rlx-coarse", "rlx", "static", "bulkmod", "bulkmod_standalone", and "elastic". The desired modes to calculate are specified when initializing a VaspManager object.

  • rlx-coarse: lower precision energy-based relaxation
  • rlx: tighter force-based relaxation
  • static: high accuracy static SCF calculation
  • bulkmod: bulk modulus calculation using an Equation of State (EOS) fit to an energy-volume curve
    • bulkmod_standalone: standalone (no relaxation required) bulk modulus calculation using an EOS (although this is not recommended unless you are sure the cell volume is very close to the equilibrium value)
  • elastic: Determination of elastic constants using the strain/deformation method built into VASP

I generally recommend starting from rlx-coarse, although the functionality is there to start a rlx calculation from the initially provided POSCAR.

Most users' workflows follow rlx-coarserlxstatic. The modes static, bulkmod, and elastic require at least rlx preceding it, but can all be run independently of each other. For example, workflows might look like rlx-coarserlxstaticbulkmod, or rlxelastic, or simply bulkmod_standalone.

Usage Guide

In order to use this package, you MUST

  1. Create a calculations folder where you'd like to run your calculations. Each subfolder of calculations/ should have a unique name and contain a POSCAR. A sample method of creating the calculations folder from a json with names and cifs is available in run_vasp_calculations.py, and an example calculations folder is provided in calculations/.
  2. Configure computing_config.json and place it in the calculations/ directory. You will need to specify your user_id, a potcar_directory, a queuetype, your allocation and a vasp_module (VASP 6 strongly recommended). As of now, only Perlmutter and Bridges2 at NERSC and QUEST at Northwestern University are supported. Any other SLURM based supercomputers can be easily added, but modifications could be made for other queue management systems.
  3. If desired, make modifications to calc_config.json. This must also be placed in the calculations/ directory. Each mode has its own configuration settings with sensible defaults, but these can be easily customized by the user.
    • To include spin polarization, set "ispin": "auto" in calc_config.json; otherwise set "ispin": 1 With this setting, all elements with valence d or f electrons will start with initial magnetic moments of 5 and 7 $\mu_B$, respectively. VaspManager also accepts an additional argument magmom_per_atom_cutoff which defaults to 0. If this argument is passed, rlx calculations that finish with a magmom per atom less than this value with be re-run without spin polarization. This argument only affects rlx calculations, and the spin setting for following static, bulkmod, or elastic calculations is inferred from the final rlx calculation.
    • To include DFT+U for transition metal oxides, set "hubbards": "wang"; otherwise, set "hubbards": null. Currently, only "gga": "PE" (PBE) is supported.

To manually stop VaspManager from processing a material, place a STOP file in that material's directory: e.g. calculations/NaCl/STOP.

The module logger is also made available for information and debugging and can be accessed through logging.getLogger("vasp_manager").

Notes

  • The current implementation has only been tested on Linux and Mac OS.
  • At this point, KPOINT generation is handled through the KSPACING tag in the INCAR, but future versions will be able to specify KPPRA or a manual grid instead. Spin-orbit coupling calculations are also not currently supported.
  • For those using Quest, I recommend using you own pre-compiled version of VASP rather than the Quest VASP module. For those in the Wolverton Group, consider using the quest-hotfix branch.

\\ TODO: Implement band-structure calculations and possibly phonopy calculations

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vasp_manager-1.1.2.tar.gz (7.7 MB view details)

Uploaded Source

Built Distribution

vasp_manager-1.1.2-py3-none-any.whl (8.2 MB view details)

Uploaded Python 3

File details

Details for the file vasp_manager-1.1.2.tar.gz.

File metadata

  • Download URL: vasp_manager-1.1.2.tar.gz
  • Upload date:
  • Size: 7.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.0

File hashes

Hashes for vasp_manager-1.1.2.tar.gz
Algorithm Hash digest
SHA256 252da65dadc517aa6ce84899962019bdcd02c1e1455bc33c1da1d52a5ee31b03
MD5 06dbd1b3e02af95e7de5e2029a2dc3d5
BLAKE2b-256 f395957b695ef38a870c508ebcc3ce5c076c5b20fc8af77ee6e1d7293ffe2f50

See more details on using hashes here.

File details

Details for the file vasp_manager-1.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for vasp_manager-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 69575643f6cb5b06fa3a1a2c8e1f09a91b5d54d24851711b9c215db8d54bf5af
MD5 e6f21d9bb7fe0ef85140830e4d412cf3
BLAKE2b-256 8fcecb9cf6f6a0eeb6f7af53328c9b3005240966cf5a285082ae065929358e0d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page