[Burner_flame] - How to choose an adequate value for mdot?

451 views
Skip to first unread message

comb_int

unread,
Feb 26, 2018, 9:42:04 AM2/26/18
to Cantera Users' Group

I am experiencing problems when it comes to set the value of mdot in a burner stabilizes frame in CANTERA.


I have been choosing it based on the laminar burning velocity obtained with a freely propagating routine, but with the simply refines the grid indefinitely. I was able to achieve a solution with a very small mdot, but this is not consistent with the value it should have (mdot was about 10 times smaller than the value expected, leading to laminar burning velocities for CH4/air flames of only 0.04 m/s).


Can anybody help?

Bryan W. Weber

unread,
Feb 26, 2018, 9:48:47 AM2/26/18
to Cantera Users' Group
Hi,

Please post the code you're using either as a text file attachment or by copy/pasting into the post, and let us know which version of Cantera, from what interface, and what operating system. Please also include any CTI files that aren't built-in to Cantera.

Best,
Bryan

Ray Speth

unread,
Feb 26, 2018, 10:07:15 AM2/26/18
to Cantera Users' Group
Hi,

I think there is some misunderstanding about what the burner-stabilized flame model represents. As a references, I would recommend Section 16.6.1 of Chemically Reacting Flow by Kee, Coltrin, and Glarborg.

In short, the burner stabilized flame is on in which heat loss to a burner surface (e.g. a porous plate) is what fixes the position of the flame, while the mass flow rate through the burner is set as an input. If you assume that this inlet velocity ls less than the laminar flame speed, a flame established downstream of the burner will propagate upstream until it starts to lose heat to the burner. This heat loss will decrease the propagation speed of the flame until it reaches some steady-state position just downstream of the burner. Note that the "flame speed" in this case is just whatever the inlet value is -- it is not a result of any calculation. In addition, if the inlet velocity is greater than the laminar flame speed, the flame will simply be pushed further downstream, and no steady-state solution exists.

Regards,
Ray


On Monday, February 26, 2018 at 9:42:04 AM UTC-5, comb_int wrote:
Message has been deleted

comb_int

unread,
Feb 26, 2018, 10:46:12 AM2/26/18
to Cantera Users' Group
Thank you very much.

What I intend to study is the flame structure. Could I assume that in this case, regardless of the flame speed obtained, that the results for the molar fractions of each species are valid?

Ray Speth

unread,
Feb 26, 2018, 10:59:31 AM2/26/18
to Cantera Users' Group
Hi,

Is there a reason you are not using the model for freely-propagating laminar flames (class FreeFlame)? In that model, the flame speed will be calculated, with your input used only as an initial guess. In the case of the burner-stabilized flame, the solution and flame structure will depend on your input mass flow rate.

Regards,
Ray

comb_int

unread,
Feb 26, 2018, 11:08:39 AM2/26/18
to Cantera Users' Group
Bryan W. Weber

Here is my code. I am using GRI-Mech for CH4/air flames. I intend to model CO2 dilution, hence the lines contemplating a dilution percentage. 
I am computing an estimate of mdot using results I already have for CH4/air flames SL.

Cantera 2.3.0 with Python.

"""
A burner-stabilized premixed biogas(CH4+CO2)-air flame at atmospheric pressure.
"""

import cantera as ct
import numpy as np

# Simulation parameters
p = 1 * ct.one_atm # pressure [Pa]
Tbur = 300.0 # burner temperature [K]
Phi = 1.0 # equivalence ratio
Sl = 0.3842 # laminar flame speed [m/s]

width = 5
tol_ss = [1.0e-2, 1.0e-4]  # [rtol atol] for steady-state problem
tol_ts = [1.0e-2, 1.0e-4]  # [rtol atol] for time stepping
loglevel = 1  # amount of diagnostic output (0 to 5)
refine_grid = 1  # 1 to enable refinement, 0 to disable

# IdealGasMix object used to compute mixture properties
gas = ct.Solution('gri30.cti','gri30_mix') # Gri-Mech 3.0

# Definition of the premixed gas composition
fuel = 'CH4' #definition of the fuel species
perc_diluent = 5 #percentage of the diluent in the fuel mixture
diluent = 'CO2' #definition of the diluent species
m = gas.n_species
stoich_O2 = gas.n_atoms(fuel,'C')+0.25*gas.n_atoms(fuel,'H')
air_N2_O2_ratio = 3.76
ifuel = gas.species_index(fuel)
idiluent = gas.species_index(diluent)
iO2 = gas.species_index('O2')
iN2 = gas.species_index('N2')

# Creation of the reactants vector
reactants = np.zeros(m,'d')
reactants[ifuel] = Phi
reactants[idiluent] = (perc_diluent*Phi)/(100-perc_diluent)
reactants[iO2] = stoich_O2
reactants[iN2] = stoich_O2*air_N2_O2_ratio

# Calculation of the mass flow rate
rhoO2 = 1.428 # density (kg/m^3)
rhoN2 = 1.250
rhoCH4 = 0.714
rhoCO2 = 1.963
sum_reactants = sum(reactants)
rho = (rhoO2*reactants[iO2]+rhoN2*reactants[iN2]+rhoCH4*reactants[ifuel]+rhoCO2*reactants[idiluent])/sum_reactants
mdot = Sl*rho # mass flow rate (kg/m^2/s)

# Set the gas state to that of the unburned gas
gas.TPX = Tbur, p, reactants

# Flame object
f = ct.BurnerFlame(gas, width=width)

f.burner.T = Tbur
f.burner.X = reactants
f.burner.mdot = mdot

f.set_initial_guess()
f.flame.set_steady_tolerances(default=tol_ss)
f.flame.set_transient_tolerances(default=tol_ts)
f.show_solution()

f.energy_enabled = False
f.set_max_jac_age(10, 10)
f.solve(loglevel, refine_grid=False)
f.save('bg1_burner_flame.xml', 'no_energy',
       'solution with the energy equation disabled')

f.set_refine_criteria(ratio=9.0, slope=0.50, curve=0.60)
f.energy_enabled = True
f.solve(loglevel, refine_grid)
f.save('bg1_burner_flame.xml', 'energy',
       'solution with the energy equation enabled')

f.transport_model = 'Multi'
f.solve(loglevel, refine_grid)
f.show_solution()
print('multicomponent flamespeed = ', f.u[0])
f.save('bg1_burner_flame_1.xml','energy_multi',
       'solution with the energy equation enabled and multicomponent transport')

f.write_csv('bg_burner_flame_sim_q7_phi-1.0_binary_test5.csv', quiet=False)

comb_int

unread,
Feb 26, 2018, 11:09:04 AM2/26/18
to Cantera Users' Group
I am using the burner stabilized flame model to compare with experimental results obtained in a Bunsen burner. Mainly may interrogation mark is on why is Cantera so fast in achieving a solution when I use a low inlet velocity and cannot do the same for the actual "correct" inlet velocity. 

Do you have any clue to what I can do to improve my simulations?

Ray Speth

unread,
Feb 27, 2018, 9:07:58 PM2/27/18
to Cantera Users' Group
Hi,

I think you need to carefully consider what models you are using -- a planar flame stabilized by heat loss, which is what is simulated by the BurnerFlame class, is not the same as a Bunsen burner flame, which is an aerodynamically-stabilized flame.

In the case where you put in too high of a value for the mass flow rate, the issue with the solver speed is a bit complicated (although this has been improved in the development version of Cantera), but the important part is this: eventually, it will find a solution in which there is no flame within any finite domain downstream of the burner.

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