Modifying stoichiometry of a mechanism reaction

195 views
Skip to first unread message

Bruno Campos

unread,
Jul 25, 2021, 10:51:30 PM7/25/21
to Cantera Users' Group
Hello,

I am working with a kinect scheme where one of the reaction's stoichiometry changes for each time step (since there is a temeprature dependency). Therefore, on the mechanism file (cti file) the reaction is only written for the first time step.
I have been trying to use the modify_reaction (cantera function) to update the stoichiometry on the following time step, however, it seems like this function only affects the reaction rates. Everything else is calculated based on the first given reaction (like the mass fraction (.Y), for example). 

How should I update the stoichiometry of a given reaction, where the stoichiometry changes with time?

Thank you in advance,
Bruno Campos

PS- I am using python

Ray Speth

unread,
Jul 26, 2021, 11:02:04 AM7/26/21
to Cantera Users' Group
Hi Bruno,

Can you provide a more concrete example of what you mean? Do you really want to change the reaction stoichiometry, or just the rate of reaction based on some combination of the reactant concentrations and temperature?

Regards,
Ray

Bruno Campos

unread,
Jul 29, 2021, 2:05:24 PM7/29/21
to Cantera Users' Group
Hi Ray,

What I am trying to do is to implement this reaction:

LIGOH => H2O + CH3OH + 0.45 CH4 + 0.2 C2H4 + 1.4 GCO + 0.6 GCOH2 + 0.1 GH2 + 4.15 Char + [(1 - x13) * (y13/100 * FE2MACR + (1 - y13/100) * (H2O + 0.5 CO + 0.2 CH2O + 0.4 CH3OH + 0.2 CH3CHO + 0.2 C3H6O + 0.6 CH4 + 0.65 C2H4 + GCO + 0.5 GCOH2 + 5.5 Char)) + x13 ⁄ (10.5 Char + 3 H2O + 0.5 CO2 + 3 H2)]
where
y13 = -3.6800E-11*T^5 + 8.2619E-08 * T^4 - 6.8901E-05 * T^3 + 2.6124E-02 * T^2 - 4.5911 *T + 4.0398E + 02; T in [C]

[The article is appended to this post, the reaction scheme can be seen in Table 1]

Since y13 depends on the temperature, the stoichiometry is affected by the temperature. To do this I was trying to use the following piece of code 

def modify_reaction(self, y13):
x3=0.3
a = (1 - x3)
d = (1 - y13)
# Reaction 13
Rx = self.mech.reaction(7)
Rx.reactants = {'LIGOH': 1}
Rx.products = {'GCO': 1.4 + a*d, 'GCOH2': 0.6 + a*d*0.5, 'GH2':0.1, 'CH3OH': 1 + a*d*0.4, 'C11H12O4': a*y13, 'CH2O': a*d*0.2, 'CH3CHO': a*d*0.2, 'C3H6O': a*d*0.2, 'CO2': x3*0.5, 'CO': a*d*0.5, 'H2O': 1 + a*d + x3*3, 'CH4': 0.45 + a*d*0.6, 'CHAR': 4.15 + a*d*5.5 + x3*10.5, 'C2H4': 0.2 + a*d*0.65, 'H2': x3*3}
self.mech.modify_reaction(7, Rx)

However, this seems to not change the stoichiometry of the reaction.

Thank you for your time,
Bruno
Anca-Couce_2016.pdf

Ray Speth

unread,
Aug 6, 2021, 11:26:33 PM8/6/21
to Cantera Users' Group
Hi Bruno,

At least as far as the temperature dependence goes, I think you should be able to write this as two separate reactions, one producing FE2MACR, and one producing the other products, with the temperature dependence folded into the rate constant. To make the rate constants have this arbitrary temperature dependence, you could fit coefficients for a Chebyshev polynomial reaction rate. I don't know what x13 is in this expression, and whether that makes this any more difficult.

Regards,
Ray
Reply all
Reply to author
Forward
0 new messages