Hello all,
I'm trying to implement a custom single-step, global irreversible oxidation reaction (for now propane as a fuel) into cantera, so first let me give a little bit of context:
The single-step reaction uses temperature-dependant kinetic parameters (activation energy and pre-exponential factor) to re-create the (possibly non-monotonic) dependency of auto-ignition delay times on initial mixture temperature. Using a single-step reaction with this Arrhenius-type reaction rate expression:
Rate = (rho * Y_fuel / M_fuel)^(n_fuel) * (rho * Y_O2 / M_O2)^(n_o2) * A * exp(- E_a / (R * T))
rho is the mixture density and A is in 1/s in this expression (if reaction order is 1)
Analitically, it can be shown that using this reaction with reaction orders n_fuel + n_o2 = 1 (I use 0.5 for both), the autoignition behaviour can be recreated, given temperature dependent kinetic parameters. Ea and A are derived from autoignition simulations using detailed mechanisms and our own simple integrater code can reproduce the results from the detailed mechanism very well. (The methodology and applications in LES simulations are explained in these papers, but don't waste your time on this :)
10.1088/1742-6596/2885/1/012039, https://doi.org/10.1016/j.proci.2024.105235).
As far as I understand, because of these temperature-dependant kinteic parameters, I have to use a custom reaction rate expression. Based on the custom_reactions.py example and the documentation I have been able to make a working script.
Yet, the results are not what I would expect. I need to multiply the reaction rate by 12 orders of magnitude to get similar (but not as accurate as it should) results to the detailed mechanism and apart from that, there is substantial deviation at high temperatures which makes me think it is not just an order of magnitude problem.
Sorry for rambling, but my question is:
Is there an obvious mistake in my implementation of the custom reaction and rate in my script? How should I handle potential unit conversion? I don't fully understand it from the documentation.
Attached is my script, some results from a detailed mechanism (CRECk-polimi) for plotting and an example of my output.
Many thanks in advance!