Exemplo n.º 1
0
 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
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
 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