Read a small synthetic VASP output directory.¶
from pathlib import Path
from tempfile import TemporaryDirectory
from httk.atomistic.integrations.vasp.io import VASPOutputs
POSCAR = """synthetic
1.0
1 0 0
0 1 0
0 0 1
He
1
Direct
0 0 0
"""
OSZICAR = " 1 F= -.1 E0= -.2 dE =-.01\n"
XDATCAR = "\n".join(POSCAR.splitlines()[:7]) + "\nDirect configuration= 1\n0 0 0\n"
OUTCAR = """ vasp.5.2.12 synthetic
GGA = PE
ENCUT = 300.0 eV
----------------------------------------- Iteration 1( 1) ---------------------------------------
FREE ENERGIE OF THE ION-ELECTRON SYSTEM (eV)
free energy TOTEN = -0.100 eV
energy without entropy= -0.100 energy(sigma->0) = -0.100
General timing and accounting informations
"""
def main() -> None:
with TemporaryDirectory() as temporary:
directory = Path(temporary)
(directory / "POSCAR").write_text(POSCAR, encoding="utf-8")
(directory / "OSZICAR").write_text(OSZICAR, encoding="utf-8")
(directory / "XDATCAR").write_text(XDATCAR, encoding="utf-8")
(directory / "OUTCAR").write_text(OUTCAR, encoding="utf-8")
with VASPOutputs(directory) as outputs:
assert outputs.poscar is not None
assert outputs.oszicar is not None
assert outputs.xdatcar is not None
assert outputs.outcar is not None
assert outputs.xdatcar.nframes == 1
assert outputs.outcar.final_energies.final
print("VASP outputs:", outputs.poscar["symbols"], outputs.xdatcar.nframes)
if __name__ == "__main__":
main()