Source code for pysisyphus.calculators.PyPsi4

try:
    import psi4
except ImportError:
    pass
import numpy as np

from pysisyphus.calculators.Calculator import Calculator
from pysisyphus.constants import BOHR2ANG
from pysisyphus.xyzloader import make_xyz_str


[docs] class PyPsi4(Calculator): def __init__(self, method, basis, **kwargs): super().__init__(**kwargs) self.method = method self.basis = basis self.meth_bas = f"{self.method}/{self.basis}" psi4.core.be_quiet() psi4.set_memory(f"{self.pal*self.mem} MB")
[docs] def get_forces(self, atoms, coords): xyz = make_xyz_str(atoms, coords.reshape(-1, 3) * BOHR2ANG) mol = psi4.geometry(xyz) energy, wfn = psi4.energy(self.meth_bas, return_wfn=True) gradient = psi4.gradient(self.meth_bas, molecule=mol, ref_wfn=wfn) results = { "energy": energy, "forces": -np.asarray(gradient).flatten(), } return results
def __str__(self): return f"PyPsi4({self.name})"