Skip to content

Reaction Objects and Methods

Hao-Wei Pang edited this page Oct 11, 2019 · 18 revisions
  • all types of reaction object classes and functions
  • how kinetics are stored (e.g. differences Arrhenius and ArrheniusEP)

Script reaction.py in RMG-Py/rmgpy/

In RMG Py, a chemical reaction is represented in memory as a: class:Reaction object. This module also provides the: class: ReactionModel class for representing a set of chemical reactions and the species involved.

class Reaction contains:

index: class: int A unique nonnegative integer index

label: str A descriptive string label

reactants: class:list The reactant species (as :class:Species objects)

products: class: list The product species (as :class:Species objects)

kinetics: class: KineticsModel The kinetics model to use for the reaction

reversible: bool True if the reaction is reversible, False if not

transitionState: class: TransitionState The transition state

duplicate: bool True if the reaction is known to be a duplicate, False if not

degeneracy': class: double` The reaction path degeneracy for the reaction

pairs: class: `list`` Reactant-product pairings to use in converting reaction flux to species flux

init

The __init__ function is used to set the initial values for all the listed attributes above, there's also a conditional statement to check whether the diffusion_limiter is enabled or not. If it's enabled add an another attribute called as k_effective_cache.

repr

The __repr__ function is used to return a string representation that can be used to reconstruct the object. It checks whether any of the attributes are empty and assigns some value if they are empty using the conditional statements.

str

The __str__ function returns a neatly arranged chemical reaction with reactants and products from __self.reactants__ and __self.products__ attributes and connects them with arrow ' <=> '

reduce

The __reduce__ function is a helper function used when pickling an object.

to_chemkin

to_chemkin function takes three arguments self , speciesList , kinetics and returns the chemkin-formatted string for this reaction. If kinetics is set to True, the chemkin format kinetics will also be returned (requires the speciesList to figure out third body colliders). Otherwise, only the reaction string will be returned.

to_cantera

  1. The to_cantera function converts the RMG Reaction object to a Cantera Reaction object with the appropriate reaction class. From kinetics module, various models are imported, for example, Arrhenius, ArrheniusEP.

  2. Creating an empty list that will be filled with species later as speciesList

  3. The dictionary for reactants are created in the next line using for loop to iterate through the reactants and reactant name is assigned using recursive function and the reactants are added to the dictionary by checking them whether they are already present in the dictionary or not using conditional statements.

  4. The same procedure is followed to create the products dictionary.

  5. The kinetics models are set in the next setup according to their type. The types of kinetics and their representative kinetics models from cantera is listed below.

Types of kinetics

  • Arrhenius
  • Cantera: ElementaryReaction
  • ElementaryReaction: A reaction which follows mass-action kinetics with a modified Arrhenius reaction rate.
  • ArrheniusEP
  • Arrhenius but with an Evans-Polanyi rate rule
  • MultiArrhenius
  • Cantera: multiple ElementaryReaction types with duplicate attribute set True
  • PDepArrhenius
  • Cantera: PlogReaction
  • PlogReaction: A pressure-dependent reaction parameterized by logarithmically interpolating between Arrhenius rate expressions at various pressures.
  • Chemkin: PLOG
  • MultiPDepArrhenius
  • Cantera: mulpiple PlogReaction types with duplicate attribute set True
  • Chebyshev
  • Cantera: ChebyshevReaction
  • ChebyshevReaction: A pressure-dependent reaction parameterized by a bivariate Chebyshev polynomial in temperature and pressure.
  • Chemkin: CHEB
  • ThirdBody
  • Cantera: ThreeBodyReaction
  • ThreeBodyReaction: A reaction with a non-reacting third body “M” that acts to add or remove energy from the reacting species.
  • Lindemann
  • Cantera: FalloffReaction or ChemicallyActivatedReaction (though we always translate to FalloffReaction)
  • FalloffReaction : A parameterization used to describe the fall-off in reaction rate constants due to intermolecular energy transfer. These functions are used by reactions defined using the FalloffReaction and ChemicallyActivatedReaction classes.
  • Troe
  • Cantera: FalloffReaction or ChemicallyActivatedReaction (though we always translate to FalloffReaction)

  1. Setting the reversibility, duplicate and ID attributes. The duplicate is set to True and the ID to original rmg index.

  2. The function will print an error if there are no kinetics to convert at the end.

get_URL

The get_URL functions create an URL from official RMG-website to search for the specific reaction.

  • An empty string is declared which will be filled with reactants and products after running the loops and adds the reactant species to an empty string. Then the URL is generated by concatenating the base URL with an empty string.

Functions(is_isomerization, is_association, is_dissociation, is_unimolecular, has_template)

  • All these functions return True if the reaction represents isomerization, association, dissipation, unimolecular.

matches_species

The function matches_species returns True if the given reactants represent the total set of reactants or products for the current reaction, or False if not. The reactants should be: class:Molecule objects. It checks the forward reaction for any isomorphism, using a is_isomorphic function which is defined in the next step.