@@ -162,6 +162,7 @@ class Scheduler(object):
162162 kinetics_adapter (str, optional): The statmech software to use for kinetic rate coefficient calculations.
163163 freq_scale_factor (float, optional): The harmonic frequencies scaling factor.
164164 trsh_ess_jobs (bool, optional): Whether to attempt troubleshooting failed ESS jobs. Default is ``True``.
165+ trsh_rotors (bool, optional): Whether to attempt troubleshooting failed rotor scan jobs. Default is ``True``.
165166 ts_adapters (list, optional): Entries represent different TS adapters.
166167 report_e_elect (bool, optional): Whether to report electronic energy. Default is ``False``.
167168 skip_nmd (bool, optional): Whether to skip normal mode displacement check. Default is ``False``.
@@ -219,6 +220,7 @@ class Scheduler(object):
219220 kinetics_adapter (str): The statmech software to use for kinetic rate coefficient calculations.
220221 freq_scale_factor (float): The harmonic frequencies scaling factor.
221222 trsh_ess_jobs (bool): Whether to attempt troubleshooting failed ESS jobs. Default is ``True``.
223+ trsh_rotors (bool): Whether to attempt troubleshooting failed rotor scan jobs. Default is ``True``.
222224 ts_adapters (list): Entries represent different TS adapters.
223225 report_e_elect (bool): Whether to report electronic energy.
224226 skip_nmd (bool): Whether to skip normal mode displacement check.
@@ -253,6 +255,7 @@ def __init__(self,
253255 e_confs : Optional [float ] = 5 ,
254256 fine_only : Optional [bool ] = False ,
255257 trsh_ess_jobs : Optional [bool ] = True ,
258+ trsh_rotors : Optional [bool ] = True ,
256259 kinetics_adapter : str = 'arkane' ,
257260 freq_scale_factor : float = 1.0 ,
258261 ts_adapters : List [str ] = None ,
@@ -284,6 +287,7 @@ def __init__(self,
284287 self .job_types = job_types if job_types is not None else default_job_types
285288 self .fine_only = fine_only
286289 self .trsh_ess_jobs = trsh_ess_jobs
290+ self .trsh_rotors = trsh_rotors
287291 self .kinetics_adapter = kinetics_adapter
288292 self .freq_scale_factor = freq_scale_factor
289293 self .ts_adapters = ts_adapters if ts_adapters is not None else default_ts_adapters
@@ -2888,7 +2892,7 @@ def check_scan_job(self,
28882892
28892893 if len (list (actions .keys ())) \
28902894 and 'pivTS' not in self .species_dict [label ].rotors_dict [job .rotor_index ]['invalidation_reason' ] \
2891- and self .trsh_ess_jobs :
2895+ and self .trsh_ess_jobs and self . trsh_rotors :
28922896 # The rotor scan is problematic (and does not block a TS reaction zone), troubleshooting is required.
28932897 logger .info (f'Trying to troubleshoot rotor '
28942898 f'{ self .species_dict [label ].rotors_dict [job .rotor_index ]["pivots" ]} '
@@ -3219,9 +3223,9 @@ def troubleshoot_scan_job(self,
32193223 - ``True`` if the troubleshooting is valid.
32203224 - The actions are applied in the troubleshooting.
32213225 """
3222- if not self .trsh_ess_jobs :
3226+ if not self .trsh_ess_jobs or not self . trsh_rotors :
32233227 logger .warning (f'Not troubleshooting failed scan job { job .job_name } . To enable troubleshooting, '
3224- f'set the "trsh_ess_jobs" to "True".' )
3228+ f'set the "trsh_ess_jobs" and the "trsh_rotors" arguments to "True".' )
32253229 return False , dict ()
32263230
32273231 label = job .species_label
@@ -3413,7 +3417,7 @@ def troubleshoot_ess(self,
34133417 level_of_theory (Level, dict, str): The level of theory to use.
34143418 conformer (int, optional): The conformer index.
34153419 """
3416- if not self .trsh_ess_jobs :
3420+ if not self .trsh_ess_jobs or not self . trsh_rotors and job . job_type == 'scan' :
34173421 logger .warning (f'Not troubleshooting failed { label } job { job .job_name } . '
34183422 f'To enable troubleshooting, set the "trsh_ess_jobs" argument to "True".' )
34193423 return None
0 commit comments