diff --git a/jdftx/scripts/__init__.py b/jdftx/scripts/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/jdftx/scripts/ase/JDFTx.py b/jdftx/scripts/ase/JDFTx.py index 55b17b4b..e9a4a54d 100644 --- a/jdftx/scripts/ase/JDFTx.py +++ b/jdftx/scripts/ase/JDFTx.py @@ -1,271 +1,457 @@ -#!/usr/bin/env python - # Atomistic Simulation Environment (ASE) calculator interface for JDFTx # See http://jdftx.org for JDFTx and https://wiki.fysik.dtu.dk/ase/ for ASE # Authors: Deniz Gunceler, Ravishankar Sundararaman +# Revised by Benjamin Rich from __future__ import print_function #For Python2 compatibility -import os, scipy, subprocess, tempfile, re -from ase.calculators.calculator import Calculator +import numpy as np +import scipy, subprocess, re from ase.units import Bohr, Hartree +from ase import Atoms +import warnings +from os import environ as env_vars_dict +from os.path import join as opj +from pymatgen.io.jdftx.outputs import JDFTXOutputs, implemented_store_vars +from pymatgen.io.jdftx.inputs import JDFTXInfile +from pymatgen.io.ase import AseAtomsAdaptor +from ase.io.jsonio import write_json +import ase.io +from ase.calculators.calculator import ( + Calculator, + CalculatorSetupError, + BaseCalculator, + Parameters, + all_changes +) +from pathlib import Path +from ase.config import cfg + +run_dir_suffix = "jdftx_run" + +class JDFTx(Calculator): + + """ Revised JDFTx calculator for ASE. + + Based on the original JDFTx calculator by Deniz Gunceler and Ravishankar Sundararaman. + Rewritten for compatability with up-to-date ASE versions. Requires pymatgen 2025.5.3 or later. + + Major Changes: + - Uses JDFTx IO module in pymatgen to read and write input and output files. + - Use of JDFTXInfile object + - Implements `read` and `write` methods to read and write restart files: + -