ReactionMechanismGenerator / RMG-Py

Python version of the amazing Reaction Mechanism Generator (RMG).
http://reactionmechanismgenerator.github.io/RMG-Py/
Other
376 stars 226 forks source link

Can't estimate thermo of vacant site. Should be in library (and should be 0) #1909

Closed bz-pomi closed 12 months ago

bz-pomi commented 4 years ago

I want to run the example for e85 reaction as given under RMG-Py path. I followed the procedures for installation and also updated all the database from github. RMG successfully executed for some examples. How can I fix the resulting error on e85 example? error message : * Trimolecular reactions are turned on Adding rate rules from training set in kinetics families... Traceback (most recent call last): File "/home/ba/RMG/RMG-Py/rmg.py", line 111, in main() File "/home/ba/RMG/RMG-Py/rmg.py", line 105, in main rmg.execute(kwargs) File "/home/ba/RMG/RMG-Py/rmgpy/rmg/main.py", line 651, in execute self.initialize(kwargs) File "/home/ba/RMG/RMG-Py/rmgpy/rmg/main.py", line 484, in initialize self.load_database() File "/home/ba/RMG/RMG-Py/rmgpy/rmg/main.py", line 408, in load_database family.add_rules_from_training(thermo_database=self.database.thermo) File "/home/ba/RMG/RMG-Py/rmgpy/data/kinetics/family.py", line 1223, in add_rules_from_training product.thermo = thermo_database.get_thermo_data(product, training_set=True) File "/home/ba/RMG/RMG-Py/rmgpy/data/thermo.py", line 1202, in get_thermo_data thermo0 = self.get_thermo_data_for_surface_species(species) File "/home/ba/RMG/RMG-Py/rmgpy/data/thermo.py", line 1436, in get_thermo_data_for_surface_species raise DatabaseError("Can't estimate thermo of vacant site. Should be in library (and should be 0).") rmgpy.exceptions.DatabaseError: Can't estimate thermo of vacant site. Should be in library (and should be 0).

rwest commented 4 years ago

@bz-pomi: add 'surfaceThermoPt' in your thermoLibraries section of your RMG input file.

Developers: The e85 example specifies kineticsFamilies = ['!Intra_Disproportionation','!Substitution_O'], which means EVERYTHING except those two families, which then turns on all the heterogeneous chemistry families, which then requires estimates of vacant site thermochemistry.

Possible suggestions (one or more of these apply):

  1. Make and use a way to specify something like "default except these two families" rather than "everything except these two families"
  2. Don't ever waste time loading surface families if there is no mention of any surface in the input file (no surface sites to react, so surface site density, etc.)
  3. Include the vacant site with zeros in the primaryThermoLibrary.py
  4. Add running all the examples to some sort of continuous integration test suite, so we notice when we are shipping examples that don't work.

p.s. my suggestion of add 'surfaceThermoPt' in your thermoLibraries section of your RMG input file does indeed make that error go away, but then for me the job crashes later with rmgpy.exceptions.KineticsError: Unable to determine kinetics for reaction with template [<Entry index=2 label="db_2H">, <Entry index=89 label="mb_CO_2H">] in family 2+2_cycloaddition_Cd/rules., but that is a separate issue for another day...

github-actions[bot] commented 1 year ago

This issue is being automatically marked as stale because it has not received any interaction in the last 90 days. Please leave a comment if this is still a relevant issue, otherwise it will automatically be closed in 30 days.