diff --git a/arc/main.py b/arc/main.py index 8b32925e3e..87d4f0d13a 100644 --- a/arc/main.py +++ b/arc/main.py @@ -81,6 +81,7 @@ class ARC(object): composite_method (str, dict, Level, optional): Composite method. conformer_level (str, dict, Level, optional): Level of theory for conformer searches. conformer_opt_level (str, dict, Level, optional): Level of theory for conformer searches, interchangable with `conformer_level`. + conformer_sp_level (str, dict, Level, optional): Level of theory for conformer sp jobs after opt. opt_level (str, dict, Level, optional): Level of theory for geometry optimization. freq_level (str, dict, Level, optional): Level of theory for frequency calculations. sp_level (str, dict, Level, optional): Level of theory for single point calculations. @@ -169,6 +170,7 @@ class ARC(object): level_of_theory (str): A shortcut representing either sp//geometry levels or a composite method. composite_method (Level): Composite method. conformer_opt_level (Level): Level of theory for conformer searches. + conformer_sp_level (str, dict, Level, optional): Level of theory for conformer sp jobs after opt. opt_level (Level): Level of theory for geometry optimization. freq_level (Level): Level of theory for frequency calculations. sp_level (Level): Level of theory for single point calculations. @@ -247,6 +249,7 @@ def __init__(self, compute_transport: bool = False, conformer_level: Optional[Union[str, dict, Level]] = None, conformer_opt_level: Optional[Union[str, dict, Level]] = None, + conformer_sp_level: Optional[Union[str, dict, Level]] = None, dont_gen_confs: List[str] = None, e_confs: float = 5.0, ess_settings: Dict[str, Union[str, List[str]]] = None, @@ -349,6 +352,7 @@ def __init__(self, self.level_of_theory = level_of_theory self.composite_method = composite_method or None self.conformer_opt_level = conformer_level or conformer_opt_level or None + self.conformer_sp_level = conformer_sp_level or None self.opt_level = opt_level or None self.freq_level = freq_level or None self.sp_level = sp_level or None @@ -493,6 +497,8 @@ def as_dict(self) -> dict: restart_dict['compute_transport'] = self.compute_transport if self.conformer_opt_level is not None: restart_dict['conformer_opt_level'] = self.conformer_opt_level.as_dict() + if self.conformer_sp_level is not None: + restart_dict['conformer_sp_level'] = self.conformer_sp_level.as_dict() if self.dont_gen_confs: restart_dict['dont_gen_confs'] = self.dont_gen_confs if self.ts_adapters is not None: @@ -611,6 +617,7 @@ def execute(self) -> dict: rxn_list=self.reactions, composite_method=self.composite_method, conformer_opt_level=self.conformer_opt_level, + conformer_sp_level=self.conformer_sp_level, opt_level=self.opt_level, freq_level=self.freq_level, sp_level=self.sp_level, @@ -985,6 +992,10 @@ def set_levels_of_theory(self): self.conformer_opt_level = Level(repr=self.conformer_opt_level) logger.info(f'Conformers opt:{default_flag} {self.conformer_opt_level}') + if self.conformer_sp_level is not None: + self.conformer_sp_level = Level(repr=self.conformer_sp_level) + logger.info(f'Conformers sp: {self.conformer_sp_level}') + if self.reactions or any([spc.is_ts for spc in self.species]): if not self.ts_guess_level: self.ts_guess_level = default_levels_of_theory['ts_guesses'] diff --git a/arc/scheduler.py b/arc/scheduler.py index 456bde0a56..b91ae254e9 100644 --- a/arc/scheduler.py +++ b/arc/scheduler.py @@ -131,6 +131,7 @@ class Scheduler(object): project_directory (str): Folder path for the project: the input file path or ARC/Projects/project-name. composite_method (str, optional): A composite method to use. conformer_opt_level (Union[str, dict], optional): The level of theory to use for conformer comparisons. + conformer_sp_level (Union[str, dict], optional): The level of theory to use for conformer sp jobs. opt_level (Union[str, dict], optional): The level of theory to use for geometry optimizations. freq_level (Union[str, dict], optional): The level of theory to use for frequency calculations. sp_level (Union[str, dict], optional): The level of theory to use for single point energy calculations. @@ -203,6 +204,7 @@ class Scheduler(object): Allowed values are He, Ne, Ar, Kr, H2, N2, O2. composite_method (str): A composite method to use. conformer_opt_level (dict): The level of theory to use for conformer comparisons. + conformer_sp_level (dict): The level of theory to use for conformer sp jobs. opt_level (dict): The level of theory to use for geometry optimizations. freq_level (dict): The level of theory to use for frequency calculations. sp_level (dict): The level of theory to use for single point energy calculations. @@ -231,6 +233,7 @@ def __init__(self, project_directory: str, composite_method: Optional[Level] = None, conformer_opt_level: Optional[Level] = None, + conformer_sp_level: Optional[Level] = None, opt_level: Optional[Level] = None, freq_level: Optional[Level] = None, sp_level: Optional[Level] = None, @@ -311,6 +314,7 @@ def __init__(self, self.servers = list() self.composite_method = composite_method self.conformer_opt_level = conformer_opt_level + self.conformer_sp_level = conformer_sp_level self.ts_guess_level = ts_guess_level self.opt_level = opt_level self.freq_level = freq_level