This code implements the formulation described in our recent work on approximating the atomic relaxation in the excited state of a defect. Often excited-state calculations with constrained DFT will fail to converge or computation of the relaxation with a higher level of theory is computationally prohibitive. From the vertical excitation energy and the excited-state forces, we derive the zero-phonon line energy and coupling to phonons.
The code is in development and should be treated as a "beta" release. If you are interested in using it, please reach out via email.
Install with pip
pip install git+https://github.com/mturiansky/approx_espes.gitA CLI exists for interacting with the code, and all calculations are assumed to be done in VASP. (If you're interested in using a different code or level of theory, reach out using the email above.) First, perform a calculation of the defect's ground state and the excited state in the geometry of the ground state. Generate configurations with
approx_espes generate /path/to/ground/vasprun.xml /path/to/excited/vasprun.xml --weighting-params '{"center": [0.5, 0.5, 0.5]}'where the position of the defect is specified in fractional coordinates with the --weighting-params tag.
This should produce a directory approx_espes with subdirectory modes, which contains the various generated configurations.
Perform a fixed-geometry calculation for each of these configurations.
The results are parsed with
approx_espes analyzeA table will be written to stdout showing the convergence of various quantities as each additional degree of freedom is included.
Convergence plots can be written to the current directory with the --plot tag.
Example vasprun.xml files for a carbon impurity in GaN, the NV center in diamond, and the carbon dimer in hBN are found in the tests/files directory.
If you use this code, please cite
@misc{turiansky_approximate_2025,
title = {Approximate Excited-State Potential Energy Surfaces for Defects in Solids},
author = {Mark E. Turiansky and John L. Lyons},
year = {2025},
eprint = {2506.12174},
archivePrefix = {arXiv},
primaryClass = {cond-mat.mtrl-sci},
url = {https://arxiv.org/abs/2506.12174},
}