Laminar flame speed of an adiabatic flame - definition of grids

651 views
Skip to first unread message

Julia Stellner

unread,
May 2, 2018, 2:51:32 PM5/2/18
to Cantera Users' Group
Hello dear Cantera team,

I have a question regarding the adiabatic_flame.py example.
How does this file technically work? I know that the grids are defined by the width. So Cantera is calculating the flame speed from 0 meters to 0.03 meters.
But how many grids does it have? Is it correct to say that the grids are like cells of a specific size? Is Cantera calculating the speed from 0 to 0.03 meters in many small cells which are defined by the grid?

After running this adiabatic_flame.py example Cantera saves two solution files. A CSV file and a XML file.
In the CSV file are listed the different lengths from 0 to 0.03 meter, the flames speeds....
Is every given point in the CSV Excel sheet one cell?
So if there are for example 400 points from 0 to 0.03 meter, can I say that Cantera is calculating with 400 cells?

Another question is, when I know the number of cells, does it give me a hint on the thickness of the flame?

I'm looking forward to your reply.
Thank you very much!

Julia

Alex K

unread,
May 2, 2018, 4:52:55 PM5/2/18
to Cantera Users' Group
Hi Julia,

The flame speed is the eigenvalue solution to the free flame problem, it corresponds to the velocity at the inlet (cold) boundary. E.g. if your flame object is 'f' then f.u[0] will return the inlet velocity which is also the flame speed (since the convective velocity is matching the deflagration speed and the flame is stationary in the frame of reference moving with flame).

Others here know much more about the implementation details, but Cantera uses mesh refinement based on user specified criteria to add more grid points where the solution changes rapidly (like across the flame front). You don't know ahead of time how many grid points will be in the solution, it will depend on how stringent your refinement criteria are, and also on the error tolerances that you specify. 

The "free flame" class inherits the following method:

set_refine_criteria(self, domain, ratio=10.0, slope=0.8, curve=0.8, prune=0.05)

Which would be invoked before solving the free flame problem like:

f.set_refine_criteria(ratio=3, slope=0.06, curve=0.12)
 
The documentation explains the meaning of these arguments and suggests a range of reasonable values. You can also control the steady state and transient errors, and I believe that this is demonstrated in the example python script for the free flame problem.

The number of grid points in the solution doesn't really give you much information about the flame thickness. I suppose you could expect that for a given error tolerance and grid refinement criteria that thinner flames will require more grid points to resolve, but why use such an indirect measure when you can just calculate the flame thickness using the solution (see e.g. this recent discussion).

Hope that's of help,

Alex

Julia Stellner

unread,
May 8, 2018, 8:42:56 AM5/8/18
to Cantera Users' Group
Hi Alex,

thank you very much for your answer. You helped me a lot in understanding the toppic better.

Are these grid points camparable with the cells in a 3D CFD simulation? There the system is defined with many small cells which are homogenous, but the cells are different from each other?

I need to understand this, to compare the simulation of Cantera and a 3D CFD program.

Thanks!

Alex K

unread,
May 8, 2018, 11:02:53 AM5/8/18
to Cantera Users' Group
Hi Julia,

In some ways you can think of the solution at grid points in Cantera (which solves spatial gradients with finite difference numerical methods) as equivalent to the solution at cell-centers from a finite-volume (FV) CFD code. Note that there is a fundamental difference in terms of the numerical methods used to evaluate spatial gradients. But, yes, they can solve the same governing equations and, potentially, produce the same answer within some bounds determined by the order of accuracy of the numerical methods, assuming that appropriate numerical methods are selected and correctly implemented, and that everything is sufficiently resolved. 

I'm not sure if this answers your question, perhaps you could provide more specific information about what you are trying to do/compare?

Best,

Alex
Reply all
Reply to author
Forward
0 new messages