def from_dict(cls, d): h = QChemErrorHandler(input_file=d["input_file"], output_file=d["output_file"], ex_backup_list=d["ex_backup_list"], rca_gdm_thresh=d["rca_gdm_thresh"], scf_max_cycles=d["scf_max_cycles"], geom_max_cycles=d["geom_max_cycles"]) h.outdata = d["outdata"] h.qcinp = QcInput.from_dict(d["qcinp"]) if d["qcinp"] else None h.error_step_id = d["error_step_id"] h.errors = d["errors"] h.fix_step = QcTask.from_dict(d["fix_step"]) if d["fix_step"] else None return h
def _get_qcinp_from_fw_spec(fw_spec): if isinstance(fw_spec["qcinp"], dict): qcinp = QcInput.from_dict(fw_spec["qcinp"]) else: qcinp = fw_spec["qcinp"] if 'mol' in fw_spec: if isinstance(fw_spec["mol"], dict): mol = Molecule.from_dict(fw_spec["mol"]) else: mol = fw_spec["mol"] for qj in qcinp.jobs: if isinstance(qj.mol, Molecule): qj.mol = copy.deepcopy(mol) return qcinp
def spawn_opt_freq_wf(mol, molname, mission, additional_user_tags, priority, update_spec, charge, spin_multiplicity, grid, qm_method): fw_creator = QChemFireWorkCreator( mol=mol, molname=molname, mission=mission, additional_user_tags=additional_user_tags, priority=priority, update_spec=update_spec) geom_fwid_cal, geom_fwid_db = -1, -2 freq_fwid_cal, freq_fwid_db = -3, -4 geom_fw_cal, geom_fw_db = fw_creator.geom_fw(charge, spin_multiplicity, geom_fwid_cal, geom_fwid_db, method=qm_method) geom_fw_cal.spec["run_tags"]["task_type_amend"] = "imaginary " \ "frequency elimination" freq_fw_cal, freq_fw_db = fw_creator.freq_fw(charge, spin_multiplicity, freq_fwid_cal, freq_fwid_db, method=qm_method) freq_fw_cal.spec["run_tags"]["task_type_amend"] = "imaginary " \ "frequency elimination" if grid: for fw in [geom_fw_cal, geom_fw_db, freq_fw_cal, freq_fw_db]: if isinstance(fw.spec["qcinp"], dict): qcinp = QcInput.from_dict(fw.spec["qcinp"]) else: qcinp = fw.spec["qcinp"] for j in qcinp.jobs: j.set_dft_grid(*grid) j.set_integral_threshold(12) if j.params["rem"]["jobtype"] == "opt": j.scale_geom_opt_threshold(0.1, 0.1, 0.1) j.set_geom_max_iterations(100) fw.spec["qcinp"] = qcinp.as_dict() fw.spec["run_tags"]["grid"] = grid wf = Workflow( [geom_fw_cal, geom_fw_db, freq_fw_cal, freq_fw_db], links_dict={ geom_fwid_db: freq_fwid_cal, geom_fwid_cal: geom_fwid_db, freq_fwid_cal: freq_fwid_db }) return wf