Hi,
I'm working with virtual optimized kinetic schemes, composed by virtual reactions and virtual chemical species, which are built through optimization of both kinetic rate parameters and virtual species thermo-chemical properties in order to capture reference target flame quantities (for more details: Mélody Cailler, Nasser Darabiha, Benoît Fiorina - Development of a virtual optimized chemistry method. Application to hydrocarbon/air combustion -
http://doi.org/10.1016/j.combustflame.2019.09.013).
I've been working with this methodology in CANTERA. One of the first tests to verify that the first optimization step (evaluate virtual species thermo-chemical properties) yields good results is to calculate the adiabatic flame temperature of a fuel/air mixture (say a stoichiometric methane/air at 300 K and 1 atm).
When I build a mechanism using two products (Opt2P.cti), I can use cantera's equilibrate function normally.
import cantera as ct
gas = ct.Solution('Opt2P.cti')
gas.TP = 300, ct.one_atm
gas.set_equivalence_ratio(1.0, 'F', 'O2:1.0 N2:3.76') # F here is equal to CH4
gas.equilibrate('HP', solver='gibbs')
However, when I extend the formulation to four products (Opt4P.cti), the equilibrate function returns:
"CanteraError thrown by MultiPhase::equilibrate_MultiPhaseEquil:
No convergence for T"
In both cases, when I implement an enthalpy balance, I get adiabatic temperature values consistent with those obtained with the reference mechanism (gri30.cti) using the equilibrate function.
I've tried other solver options, however the results are not consistent. Only the 'gibbs' solver gives me comparable values to 'gri30' model.
I have attached the optimized mechanisms, in case anyone could take a look.
NASA coefficients and virtual species masses are optimized to recover averaged properties of the multi-component real ('gri30') mixture.
Does anyone have any idea why the equilibrate function works well with 2 virtual products and not with 4? Am I missing something obvious?
I appreciate any suggestions!
Regards,
Alex