|
34 | 34 | from arc.level import Level, assign_frequency_scale_factor |
35 | 35 | from arc.job.factory import _registered_job_adapters |
36 | 36 | from arc.job.ssh import SSHClient |
37 | | -from arc.processor import process_arc_project |
| 37 | +from arc.output import write_output_yml |
| 38 | +from arc.processor import process_arc_project, resolve_neb_level |
38 | 39 | from arc.reaction import ARCReaction |
39 | 40 | from arc.scheduler import Scheduler |
40 | 41 | from arc.species.converter import str_to_xyz |
@@ -637,6 +638,35 @@ def execute(self) -> dict: |
637 | 638 | skip_nmd=self.skip_nmd, |
638 | 639 | ) |
639 | 640 |
|
| 641 | + # Determine whether the user supplied the scale factor explicitly, or ARC looked it up. |
| 642 | + _freq_level_for_lookup = self.composite_method if self.composite_method is not None else self.freq_level |
| 643 | + _yml_scale = assign_frequency_scale_factor(level=_freq_level_for_lookup) if _freq_level_for_lookup is not None else None |
| 644 | + _user_provided_scale = (_yml_scale is None or _yml_scale != self.freq_scale_factor) |
| 645 | + |
| 646 | + neb_level = resolve_neb_level(self.ts_adapters) |
| 647 | + |
| 648 | + try: |
| 649 | + write_output_yml( |
| 650 | + project=self.project, |
| 651 | + project_directory=self.project_directory, |
| 652 | + species_dict=self.scheduler.species_dict, |
| 653 | + reactions=self.scheduler.rxn_list, |
| 654 | + output_dict=self.output, |
| 655 | + opt_level=self.opt_level, |
| 656 | + freq_level=self.freq_level, |
| 657 | + sp_level=self.sp_level, |
| 658 | + neb_level=neb_level, |
| 659 | + composite_method=self.composite_method, |
| 660 | + freq_scale_factor=self.freq_scale_factor, |
| 661 | + freq_scale_factor_user_provided=_user_provided_scale, |
| 662 | + bac_type=self.bac_type, |
| 663 | + arkane_level_of_theory=self.arkane_level_of_theory, |
| 664 | + irc_requested=self.job_types.get('irc', True), |
| 665 | + t0=self.t0, |
| 666 | + ) |
| 667 | + except Exception as e: |
| 668 | + logger.error(f'Could not write output.yml: {e}') |
| 669 | + |
640 | 670 | status_dict = self.summary() |
641 | 671 | log_footer(execution_time=self.execution_time) |
642 | 672 | return status_dict |
@@ -1174,10 +1204,10 @@ def check_arkane_level_of_theory(self): |
1174 | 1204 | if self.arkane_level_of_theory is None: |
1175 | 1205 | self.arkane_level_of_theory = self.composite_method if self.composite_method is not None \ |
1176 | 1206 | else self.sp_level if self.sp_level is not None else None |
1177 | | - if self.arkane_level_of_theory is not None and self.bac_type is not None: |
1178 | | - check_arkane_bacs(sp_level=self.arkane_level_of_theory, bac_type=self.bac_type, raise_error=self.compute_thermo) |
1179 | | - else: |
| 1207 | + if self.arkane_level_of_theory is None: |
1180 | 1208 | logger.warning('Could not determine a level of theory to be used for Arkane!') |
| 1209 | + elif self.bac_type is not None: |
| 1210 | + check_arkane_bacs(sp_level=self.arkane_level_of_theory, bac_type=self.bac_type, raise_error=self.compute_thermo) |
1181 | 1211 |
|
1182 | 1212 | def backup_restart(self): |
1183 | 1213 | """ |
|
0 commit comments