Skip to content

Commit b18deff

Browse files
authored
Merge pull request #2928 from sevyharris/surface_uncertainty_sens
Uncertainty Part 2: Surface sensitivity. Adds surface sensitivity to the RMG uncertainty tool.
2 parents 731b402 + 14b014e commit b18deff

1 file changed

Lines changed: 26 additions & 8 deletions

File tree

rmgpy/tools/uncertainty.py

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -961,7 +961,8 @@ def assign_intermediate_uncertainties(self, g_param_engine=None, k_param_engine=
961961
self.kinetic_intermediate_uncertainties.append(dlnkdq)
962962

963963
def sensitivity_analysis(self, initial_mole_fractions, sensitive_species, T, P, termination_time,
964-
sensitivity_threshold=1e-3, number=10, fileformat='.png'):
964+
sensitivity_threshold=1e-3, number=10, fileformat='.png', initial_surface_coverages=None,
965+
surface_volume_ratio=None, surface_site_density=2.72e-5):
965966
"""
966967
Run sensitivity analysis using the RMG solver in a single ReactionSystem object
967968
@@ -970,20 +971,37 @@ def sensitivity_analysis(self, initial_mole_fractions, sensitive_species, T, P,
970971
number is the number of top species thermo or reaction kinetics desired to be plotted
971972
"""
972973

973-
from rmgpy.solver import SimpleReactor, TerminationTime
974+
from rmgpy.solver import SimpleReactor, SurfaceReactor, TerminationTime
974975
from rmgpy.quantity import Quantity
975976
from rmgpy.rmg.listener import SimulationProfileWriter, SimulationProfilePlotter
976977
from rmgpy.rmg.settings import ModelSettings, SimulatorSettings
977978
T = Quantity(T)
978979
P = Quantity(P)
979980
termination = [TerminationTime(Quantity(termination_time))]
980981

981-
reaction_system = SimpleReactor(T=T,
982-
P=P,
983-
initial_mole_fractions=initial_mole_fractions,
984-
termination=termination,
985-
sensitive_species=sensitive_species,
986-
sensitivity_threshold=sensitivity_threshold)
982+
surface_mech = any([x.contains_surface_site() for x in self.species_list])
983+
if surface_mech:
984+
assert surface_volume_ratio is not None, 'Must provide surface_volume_ratio for sensitivity analysis of surface mechanisms'
985+
surface_volume_ratio = Quantity(surface_volume_ratio)
986+
987+
if not surface_mech:
988+
reaction_system = SimpleReactor(T=T,
989+
P=P,
990+
initial_mole_fractions=initial_mole_fractions,
991+
termination=termination,
992+
sensitive_species=sensitive_species,
993+
sensitivity_threshold=sensitivity_threshold)
994+
else:
995+
reaction_system = SurfaceReactor(T=T,
996+
P_initial=P,
997+
initial_gas_mole_fractions=initial_mole_fractions,
998+
initial_surface_coverages=initial_surface_coverages,
999+
surface_volume_ratio=surface_volume_ratio,
1000+
surface_site_density=surface_site_density,
1001+
n_sims=1,
1002+
termination=termination,
1003+
sensitive_species=sensitive_species,
1004+
sensitivity_threshold=sensitivity_threshold)
9871005

9881006
# Create the csv worksheets for logging sensitivity
9891007
util.make_output_subdirectory(self.output_directory, 'solver')

0 commit comments

Comments
 (0)