#!/usr/bin/env python3 # """ Runs a Quantum Package calculation using a Gaussian input file. Usage: qp_gaussian INPUT """ # Requires pymatgen (https://pymatgen.org/) # pip install pymatgen import os import sys import os.path try: import qp_path except ImportError: print("source quantum_package.rc") from docopt import docopt import pymatgen from pymatgen.io.gaussian import GaussianInput def main(arguments): filename = arguments["INPUT"] with open(filename,'r') as f: text = f.read() in_file = GaussianInput.from_string(text) d = in_file.as_dict() charge = ("%d"%(d["charge"])).replace('-','m') basis = d["basis_set"] mult = d["spin_multiplicity"] natoms = len(d["molecule"]["sites"]) with open("g09.xyz","w") as f: f.write("%d\n"%natoms) f.write("%s\n"%d["title"]) f.write("%s\n"%in_file.get_cart_coords()) if basis is None: print("Basis set not found. Use '/' before basis set") sys.exit(1) command = f"rm -rf g09.ezfio" os.system(command) command = f"qp_create_ezfio -c {charge} -m {mult} g09.xyz -b {basis} -o g09.ezfio" os.system(command) command = f"rm -rf g09.xyz" os.system(command) command = f"qp_run scf g09.ezfio" os.system(command) command = f"qp_set_frozen_core g09.ezfio" os.system(command) if d["functional"] == "FCI": command = f"qp_run fci g09.ezfio" elif d["functional"] == "CIS": command = f"qp_run cis g09.ezfio" elif d["functional"] == "CISD": command = f"qp_run cisd g09.ezfio" os.system(command) if __name__ == '__main__': ARGUMENTS = docopt(__doc__) main(ARGUMENTS)