opposite diffusion flame

509 views
Skip to first unread message

Roger

unread,
Aug 9, 2013, 10:07:40 AM8/9/13
to canter...@googlegroups.com
Hey,

I am new to Cantera and i am having some difficulties with modelling with opposite diffusion flames.
I have modified the Diffflame file that is available in the samples. I want to check different air-fuel ratios and see the effect on certain concentrations for a CH4/air flame.
My problem lies in the fact that i dont know how to implement a different air-fuel ratio. The parameters I can adjust are the massflows of the oxidizer and the fuel
however this only changes the position of the flame front.
The link to the np_flameinit file suggests i can vary the coefficient of the oxidizer (Nuox). However adjusting this coefficient doesnt result in different max flame temperatures. In fact no adjustment of any sort can seem to change the maximum flame temperature. Am i missing some fundamental knowledge about Burke-Schumann flames or is there a way i can implement an air-fuel ratio?
Thanks in advance for the help.

Roger

Ray Speth

unread,
Aug 9, 2013, 11:29:57 AM8/9/13
to canter...@googlegroups.com
Roger,

An opposed flow diffusion flame doesn't have a single "air/fuel" ratio. Instead, the air/fuel ratio goes from zero at the air inlet to infinity at the fuel inlet. In between, there will be a location where the mixture is stoichiometric, and this is where the flame will sit. To first order, the flame temperature at this location will be the adiabatic flame temperature for the stoichiometric mixture. If you want to simulate a flame with a lower flame temperature, you will need to add a diluent to either the fuel or oxidizer stream.

Regards,
Ray

Roger

unread,
Aug 10, 2013, 9:52:28 AM8/10/13
to canter...@googlegroups.com

Hey Ray,

Thanks for the info.

Roger
Op vrijdag 9 augustus 2013 17:29:57 UTC+2 schreef Ray Speth:

Roger

unread,
Oct 13, 2013, 8:46:36 AM10/13/13
to canter...@googlegroups.com
Ray, sorry to bother you with another question but im having another problem with the diffusion flame and i am thinking there might be a bug in Cantera.
I made the massflowratios equal to a range of lambda's (or equivalence ratios if thats more convenient) ranging from 0.4-2.2. And im certain i implemented this in the correct way.
Ill post a piece of the code here:

for lambda = [0.4 0.6 0.8 1.0 1.2 1.4 1.6. 1.8 2.0 2.2];
            s = 4;                            % Stoichiometric Coefficient for Methane
            m_O2_div_m_CH4 = lambda*s;        % Ratio O2/Methane for lambda
            Massfraction_fuel = 1;            % Mass fraction fuel in fuel stream
            Massfraction_oxid = 0.233;        % Mass fraction oxygen in air stream
            mdot_f = 0.001;                       % Initial massflow fuel kg/m2/s
            mdot_o = m_O2_div_m_CH4*Massfraction_fuel*mdot_f/Massfraction_oxid; %Massflow air

            % Calculate initial density's
            fuelcomp = set(gas, 'T', tin_f, 'P', p, 'X', comp2);
            density_f = density(fuelcomp)  ;      % density fuel
            oxidcomp = set(gas, 'T', tin_o, 'P', p, 'X', comp1);
            density_o = density(oxidcomp)     ;   % density air
    
            % Calculate initial velocity's
            velocity_f = mdot_f/density_f  ;    % inlet velocity fuel
            velocity_o = mdot_o/density_o   ;   % inlet velocity air
 
Now i want to define a global strain rate which i calculate according to:
             strain_g = (velocity_f + velocity_o)/(2*L)

So i want to define my own global strain rate with an initial value so i can compare the different lambdas at the same global strain rate.
%             fun = @(x) (velocity_f*x + velocity_o*x)/(2*L) - Strain;
%             x0 = 0.1; % initial interval
%             x = fzero(fun,x0);
%            
%             velocity_f = velocity_f*x
%             velocity_o = velocity_o*x
%             mdot_f = velocity_f*density_f;
%             mdot_o = velocity_o*density_o;
  
So the way i implemented this is by finding a factor X in which i have to multiply the velocitys with so that their ratio keeps constant (so the same lambda) but they now ahve the global strain rate i defined with Strain.
This also works, the value i want to have for the global strain is given and i got the massflows that i need in this case.
Now when i use these massflows in my methane diffusion flame i specify the initial components according to:

comp1      = 'O2:0.21, N2:0.79';
comp2      = 'CH4:1'; 

What i would expect to get is if i plot the maximum temperature for each lambda, the max would lie on 1. This is not the case. I have tried to find what is the cause and i think i have found it.
What happens is that the flame sits relatively close towards the fuel inlet, for some reason the initial CH4 mass fraction does not start at 1 ! It starts somewhere around 0.8 or even lower for higher lambdas. This explains that the maximum temperatures are affected since i actually simulate leaner flames, but my real question is what can cause the mass fraction of CH4 not to start at 1? I specifically specified it to be 1 at the inlet, yet somehow it is lower than 1. 

Even if i drop the scaling of the global strain rate and i just let the strain increase for higher lambda (because the air stream gets a higher velocity) it still happens! Could this be a bug in cantera? It sort of looks like because the flame is close to the fuel inlet the mass fraction of one is calculated outside the flow domain and from there drops towards the value starting at 0. I would really love your advise on this one!

Regards,
Roger

Op zaterdag 10 augustus 2013 15:52:28 UTC+2 schreef Roger:

Thomas Fiala

unread,
Oct 14, 2013, 3:05:53 AM10/14/13
to canter...@googlegroups.com
Roger,

First of all: You're simulating a non-premixed flame. The peak temperature does depend on the fuel and oxidizer compositions and the strain rate, but not on the equivalence ratio!

Regarding your mass fraction issue: I assume that your grid resolution is too low to capture the drop from 1 to 0.8 on the fuel side. If you try computing the flame on a finer grid, you should see the drop. Besides, I would recommend using a lower rate of oxidizer to fuel mass flow rates so you do not have to simulate the insignificant oxidizer potential flow.

I'm pretty sure that this is not a bug in Cantera, although I cannot speak for the Matlab interface and I personally highly recommend using the (new) Python interface.

Regards,

Thomas

Roger

unread,
Oct 14, 2013, 3:20:49 AM10/14/13
to canter...@googlegroups.com
Thomas, you are right concerning the global equivalence ratio. Peak temperature should be constant for every lambda. However this is not the case due to the mass fraction of CH4 being lower than it should at the inlet. Even if i refine the grid with 100 points it still shows a lower inlet mass fraction for high oxidizer flows and low fuel flows.

Op maandag 14 oktober 2013 09:05:53 UTC+2 schreef Thomas Fiala:

Bok Jik Lee

unread,
Oct 14, 2013, 3:59:45 AM10/14/13
to canter...@googlegroups.com
Roger, 

If you check the sum of mass fractions at the inlet, it should be equal to 1, because at the boundary one of the species conservation equations is replaced with Sum(Yk) = 1 in Cantera.

Also, the mass fraction {Yk} is not fixed at the boundary. If there is concentration gradient then the diffusion into boundary is allowed. Only the mass flux is conserved.

Regards,
Bok 

--
You received this message because you are subscribed to the Google Groups "Cantera User's Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cantera-user...@googlegroups.com.
To post to this group, send email to canter...@googlegroups.com.
Visit this group at http://groups.google.com/group/cantera-users.
For more options, visit https://groups.google.com/groups/opt_out.

Roger

unread,
Oct 14, 2013, 5:15:08 AM10/14/13
to canter...@googlegroups.com
Bok, oke thanks for the information. Concentration gradient into the boundary seems to be the problem indeed. I can avoid this by increasing the fuel stream, but this means that actually i can only simulate for high equivalence ratios.

Op maandag 14 oktober 2013 09:59:45 UTC+2 schreef bjlee:

Ray Speth

unread,
Oct 20, 2013, 4:36:15 PM10/20/13
to canter...@googlegroups.com
Roger,

Can you provide a complete script that demonstrates the behavior you're describing?

Regards,
Ray

Roger

unread,
Oct 21, 2013, 2:54:03 AM10/21/13
to canter...@googlegroups.com
Ray,

I have posted the script i used. You can see for lambda is 1 that the methane inlet concentration is already around 0.92. Increasing lambda (making the massflow ratio closer towards the fuel inlet) lets this number decrease even further.
If you do multiple plots with different lambdas you will see that the maximum temperature drops for increasing lambda (probably because of the lower methane concentration).
If you go for example for lambda = 0.08 then this initial concentration will still be around 1. However when you decrease the strain rate the flame becomes wider and the same problem occurs for values of the strain approaching 1.

Regards,

Roger

Op zondag 20 oktober 2013 22:36:15 UTC+2 schreef Ray Speth:
Diffflame_Methane.m

Ray Speth

unread,
Oct 22, 2013, 11:25:06 AM10/22/13
to canter...@googlegroups.com
Roger,

Thank you for providing the script, it makes it much easier to see what's happening here.

I looked over the implementation of the boundary conditions (in StFlow::eval() and Inlet1D::eval()), and it looks like Cantera is solving the problem it intends to solve. The boundary condition for the temperature is a fixed value condition at each inlet. In contrast, the boundary condition for the species equations is a modified zero-flux condition, e.g.

    D[k] * W[k]/Wmix * dX[k]/dz = U * (Y_in[k] - Y[k])

for each species k, where D is the mixture-averaged diffusion coefficient, W is the species molecular weight, Wmix is the mixture molecular weight, and U is the axial velocity.

I think that this makes more sense than a fixed value condition. You might argue that for consistency, the boundary condition for the energy equation ought to be handled in the same way, and I would be inclined to agree. However, this mixed formulation is also what's used by Oppdif / Chemkin, so I'd be hesitant to change the formulation used by Cantera.

Regards,
Ray

Roger

unread,
Oct 23, 2013, 5:35:57 AM10/23/13
to canter...@googlegroups.com
Ray,

Thanks for the info, it makes it more clear to understanding what is happening. I guess the same implementation as in Oppdif is good enough for me.

Regards,

Roger

Op dinsdag 22 oktober 2013 17:25:06 UTC+2 schreef Ray Speth:
Reply all
Reply to author
Forward
0 new messages