Skip to content

Blowers Masel Arrhenius trained and evaluated with T-varying ∆Hr(T) ? #1748

@rwest

Description

@rwest

Bug Description

Here

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

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions