Laminar Flame Speed: no results below 650K and 50bar of pressure

45 views
Skip to first unread message

Leonardo Giordo

unread,
Jul 9, 2025, 9:08:24 AMJul 9
to Cantera Users' Group
Hello,
I have an issue trying to generate the Laminar Flame Speed for a biofuel made by 7 species.
I start with a big reaction mechanism (NUIG Galway University) that I reduce with the workflow described in: 
Mechanism reduction — Cantera 3.2.0a2 documentation.
The code I'm using is the following:

for i, temperature in enumerate(T):
    for j, reactor_pressure in enumerate(P):
        for l, equivalence_ratio in enumerate(phi):
            for k, egr_fraction in enumerate(EGR): 
                    width = 0.005 
                    gas2.TP = temperature, reactor_pressure
                    gas2.set_equivalence_ratio(equivalence_ratio, fuel=fuel, oxidizer=oxidizer)
                    if egr_fraction>0. and egr_fraction<1.:
                        egr_gas.transport_model = 'mixture-averaged'
                        egr_gas.set_equivalence_ratio(1.0, fuel, oxidizer)
                        egr_gas.TP = temperature,reactor_pressure
                        egr_gas.equilibrate('TP', rtol=1e-7)
                        gas2.X = (1.-egr_fraction)*gas2.X + egr_fraction*egr_gas.X
                    flameSpeed = 0
                    flame = ct.FreeFlame(gas2, width=width)
                    flame.transport_model = 'mixture-averaged'
                    flame.set_refine_criteria(ratio=10, slope=0.8, curve=0.8)
                    flame.set_time_step(minimum_deltat, [2, 5, 10, 20, 50, 100, 200,500, 1000])
                    flame.energy_enabled = True
                    callback, speeds, grids = make_callback(flame,nn)
                    flame.set_steady_callback(callback)
                    flame.solve(loglevel=0, refine_grid=True, auto=False)
                    flameSpeed = flame.velocity[0]

As stated, I can't find results below 50 bar and 650K, and around those points there are very few data available. Additionally, at egr 0.1 and 0.2 there are very few points again at low T and P.
The few data points available at low P and T and egr non zero are around phi=1.

The initial width is very low because otherwise it can't find values at low temperatures, furthermore, leaving a higher value also influences the results at higher temperatures.
Am I doing something wrong in the setup?
How can I try to get more data for lower pressures (10, 20 bar) temperatures (500, 600 K) and egr (exhaust recirculating gases 0.1 and 0.2)?
What is causing the model to fail to calculate the LFS?

Kind regards,
Leonardo


Leonardo Giordo

unread,
Jul 10, 2025, 10:50:30 AMJul 10
to Cantera Users' Group
width is 0.00005 *

Ray Speth

unread,
Aug 14, 2025, 3:58:09 PMAug 14
to Cantera Users' Group

Hi Leonardo,

I think your specification of the width is problematic — 5e-5 m is much less than the flame thickness under many conditions. Using a larger value that’s much larger than the flame thickness should not be an issue under most circumstances; at worst, it will just increase the computational effort a bit. If you’re seeing an effect from this, it probably has as much to do with the extremely loose refinement tolerances. slope=0.8 and curve=0.8 are surely underresolving the flame and will lead to significant errors in the calculated flame speed.

You should solve with the auto=True option turned on, which will among other things allow the solver to automatically increase the domain width as needed. When the domain is not wide enough for the flame, it becomes difficult for the solver to satisfy the zero gradient boundary conditions, which is one of the reasons that the solver can fail.

If you’re still having problems, please provide a complete example (attach a copy of the reduced mechanism you’re working with and a version of the code that is actually complete) so others can run it and see the errors that occur.

Regards,
Ray

Reply all
Reply to author
Forward
0 new messages