Skip to content

Commit 486aecc

Browse files
authored
Merge pull request #102 from ReactionMechanismGenerator/0diverr
Don't crush if RMG's reaction_system.simulate() fails
2 parents 32e128d + 3cf5287 commit 486aecc

File tree

2 files changed

+29
-20
lines changed

2 files changed

+29
-20
lines changed

t3/main.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,12 @@
3838
from rmgpy.species import Species
3939
from rmgpy.thermo import NASAPolynomial, NASA, ThermoData, Wilhoit
4040

41-
from arc.common import get_ordinal_indicator, key_by_val, read_yaml_file, save_yaml_file
41+
from arc.common import (get_number_with_ordinal_indicator,
42+
get_ordinal_indicator,
43+
key_by_val,
44+
read_yaml_file,
45+
save_yaml_file,
46+
)
4247
from arc.exceptions import ConverterError
4348
from arc.main import ARC
4449
from arc.species.species import ARCSpecies, check_label
@@ -637,13 +642,14 @@ def run_rmg(self):
637642
if rmg_exception_encountered:
638643
self.rmg_exceptions_counter += 1
639644
if self.rmg_exceptions_counter > max_rmg_exceptions_allowed:
640-
self.logger.error(f'This is the {self.rmg_exceptions_counter} exception raised by RMG.\n'
641-
f'Cannot allow more than {max_rmg_exceptions_allowed} RMG exceptions during a T3 run.\n'
642-
f'Not allowing additional exceptions, terminating.')
645+
self.logger.error(f'This is the {get_number_with_ordinal_indicator(self.rmg_exceptions_counter)} '
646+
f'exception raised by RMG.\nCannot allow more than {max_rmg_exceptions_allowed} '
647+
f'RMG exceptions during a T3 run.\nNot allowing additional exceptions, terminating.')
643648
raise ValueError('Terminating due to RMG exceptions.')
644649
else:
645650
self.logger.warning(f'RMG did not converge. '
646-
f'This is the {self.rmg_exceptions_counter} exception raised by RMG.\n'
651+
f'This is the {get_number_with_ordinal_indicator(self.rmg_exceptions_counter)} '
652+
f'exception raised by RMG.\n'
647653
f'The maximum number of exceptions allowed is {max_rmg_exceptions_allowed}.')
648654

649655
elapsed_time = time_lapse(tic)

t3/simulate/rmg_constantTP.py

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -198,21 +198,24 @@ def simulate(self):
198198
if reaction_system.const_spc_names is not None:
199199
reaction_system.get_const_spc_indices(self.rmg_model.reaction_model.core.species)
200200

201-
reaction_system.simulate(
202-
core_species=self.rmg_model.reaction_model.core.species,
203-
core_reactions=self.rmg_model.reaction_model.core.reactions,
204-
edge_species=self.rmg_model.reaction_model.edge.species,
205-
edge_reactions=self.rmg_model.reaction_model.edge.reactions,
206-
surface_species=[],
207-
surface_reactions=[],
208-
pdep_networks=pdep_networks,
209-
sensitivity=True if reaction_system.sensitive_species else False,
210-
sens_worksheet=sens_worksheet,
211-
model_settings=model_settings,
212-
simulator_settings=simulator_settings,
213-
conditions={'T': reaction_system.sens_conditions['T'], 'P': reaction_system.sens_conditions['P']},
214-
prune=False,
215-
)
201+
try:
202+
reaction_system.simulate(
203+
core_species=self.rmg_model.reaction_model.core.species,
204+
core_reactions=self.rmg_model.reaction_model.core.reactions,
205+
edge_species=self.rmg_model.reaction_model.edge.species,
206+
edge_reactions=self.rmg_model.reaction_model.edge.reactions,
207+
surface_species=[],
208+
surface_reactions=[],
209+
pdep_networks=pdep_networks,
210+
sensitivity=True if reaction_system.sensitive_species else False,
211+
sens_worksheet=sens_worksheet,
212+
model_settings=model_settings,
213+
simulator_settings=simulator_settings,
214+
conditions={'T': reaction_system.sens_conditions['T'], 'P': reaction_system.sens_conditions['P']},
215+
prune=False,
216+
)
217+
except ZeroDivisionError as e:
218+
self.logger.warning(f'Cannot simulate reaction system, got:\n{e}')
216219

217220
if reaction_system.sensitive_species:
218221
plot_sensitivity(self.rmg_model.output_directory, index, reaction_system.sensitive_species)

0 commit comments

Comments
 (0)