-
Notifications
You must be signed in to change notification settings - Fork 250
Description
Bug Description
Here
RMG-Py/rmgpy/data/kinetics/family.py
Line 3502 in 3e37656
| kinetics = kinetics.to_arrhenius(rxn.get_enthalpy_of_reaction(T)) |
an
ArrheniusBM is converted to an Arrhenius using the ∆Hrxn evaluated at the temperature of interest, something like 1000K, rather than at 298K.
Looking at the code used to fit the BM expressions here
RMG-Py/rmgpy/kinetics/arrhenius.pyx
Line 616 in 91cdd1d
| xdata.append([T, rxn.get_enthalpy_of_reaction(T)]) |
perhaps this is correct, or at least consistent (we shouldn't change one without changing both.)
Skimming the Blowers and Masel paper https://doi.org/10.1002/aic.690461015 I can't see it explicitly say what temperature it's evaluated at (it just says "∆Hr is the heat of reaction", and later "[we have] looked up the heats of reaction [for the 151 reactions in Table 1]") but given that it doesn't talk about barrier heights changing at different temperatures, just barrier heights, it doesn't make sense to me for ∆Hr to be a function of temperature. If Ea is f(∆Hr) and Ea independent of T then ∆Hr is independent of T. I would guess they looked up the 298K value, but as they don't actually give any of the values in the paper I'm not sure how to check. If we're re-training our own parameters then probably its up to us anyway - as long as we're consistent.
To my knowledge (and ability to search) all other calls of to_arrhenius in RMG, whether called on instances of ArrheniusEP, SurfaceArrheniusBEP, StickingCoefficientBEP, or ArrheniusBM, all use ∆Hr298.
My gut says ∆Hr shouldn't be a function of Temperature, and so the BM fitting and evaluating segments linked above are wrong. But I've run out of time to dig deeper.