firemodels / fds

Fire Dynamics Simulator
https://pages.nist.gov/fds-smv/
Other
664 stars 623 forks source link

Different plume temperatures with EXTINCTION2 and 32 vs. 64 bit mpi runs #1064

Closed gforney closed 9 years ago

gforney commented 9 years ago
See thread below.

We get drastically different results for the plume temperature/combustion
heat release for mpi_intel_linux_32 and mpi_intel_linux_64 for the Sandia
methane pool fire case.

Ran your exact case with SVN6184, mpi_intel_linux_64.

Is this because I have 64 bits, or a different version of Smokeview?

There seems to be nothing wrong with my HRR or combustion efficiency.

J

-----Original Message-----
From: McDermott, Randall J. [mailto:randall.mcdermott@nist.gov]
Sent: 10. toukokuuta 2010 18:17
To: Vaari Jukka
Subject: RE: Extinction model

Jukka,

Here is the result I get with the latest code (mpi_intel_linux_32) and I
also attached the input file with the mods you suggested.

I am seeing temperatures around 215 C and they should be near 1000.  You
are not seeing this?

R
________________________________________
From: Vaari Jukka [Jukka.Vaari@vtt.fi]
Sent: Monday, May 10, 2010 10:28 AM
To: McDermott, Randall J.
Subject: FW: Extinction model

Got the MPI working. But the cases seem to run fine with MPI as well.

Was what you are referring to related to the thing with the location of the
Q_BOUND block?

Was that 300 C really the global maximum of the flame temp?

-----Original Message-----
From: Vaari Jukka
Sent: 10. toukokuuta 2010 16:56
To: 'McDermott, Randall J.'
Subject: RE: Extinction model

Downloaded and tested SVN6184, serial. Test24, 6cm.

- with E2=T and CFT=1207 the case runs fine
- with E2=T and CFT=1630 the case runs fine (I used 1630 for the methane
cup flame)

This points to a MPI problem. Currently my environment is a mess, I'm
having problems compiling MPI so cannot test.

A couple of minor things.

- with EXTINCTION2=.TRUE., you should set SUPPRESSION_SEARCH=.FALSE.
because the new criterion is about a single cell.
- with EXTINCTION2=.TRUE., you should specify the fuel on the REAC line
because the thermophysical properties of the fuel affect the suppression
criterion
- the only major difference I see between COMBUSTION_MF and COMBUSTION_MF2
is that COMBUSTION_MF has a lot of OpenMP directives that are missing from
COMBUSTION_MF2

J

-----Original Message-----
From: McDermott, Randall J. [mailto:randall.mcdermott@nist.gov]
Sent: 7. toukokuuta 2010 15:42
To: Vaari Jukka
Subject: RE: Extinction model

Any of the Sandia pool fire cases.  I committed them yesterday:

http://code.google.com/p/fds-smv/source/browse/#svn/trunk/FDS/trunk/Validation/Sandia_Plumes/FDS_Input_Files

The 6 cm cases run pretty fast.  I would see flame temperatures around 300
C with the extinction model on and I would get something I considered more
plausible, 1000 C, with the old version.

I'd be interested to see if you find the same.

The Matlab scripts to look at the mean velocity profiles are also
committed.  See sandia_methane_fire.m

Thanks,
R
________________________________________
From: Vaari Jukka [Jukka.Vaari@vtt.fi]
Sent: Friday, May 07, 2010 5:28 AM
To: McDermott, Randall J.
Subject: Extinction model

Randy,

could you tell me what were the exact cases giving you a hard time with the
new extinction model?

Jukka

Original issue reported on code.google.com by randy.mcdermott on 2010-05-10 17:37:19


gforney commented 9 years ago
Set the bounds in Smokeview to be the same. Glenn has been experimenting with 
different strategies of handling the colorbar.

Original issue reported on code.google.com by mcgratta on 2010-05-10 17:47:56

gforney commented 9 years ago
This is not just a color bar issue.  My global max temp is 265 C.

Original issue reported on code.google.com by randy.mcdermott on 2010-05-10 17:50:11

gforney commented 9 years ago
Perhaps I should mention that I edited the makefile to set FCOMPL=mpif90 for
mpi_intel_linux_64. Using mpif77 yielded a lot of complaints.

Original issue reported on code.google.com by jukka.vaari@vtt.fi on 2010-05-10 18:04:44

gforney commented 9 years ago
Kevin to the rescue...

The problem was that ICFT was not being initialized in COMBUSTION_MF.  SVN 6194 works
for me for all serial, mpi, 32, and 64 bit versions.

So, first, please Jason and Jukka have a look at how we added ICFT and make sure it
is what you want.

Next, this makes me curious why we don't just use COMBUSTION_MF2.  It seems like
slowly moving things over to COMBUSTION_MF is error prone.  Recall DYF was not being
initialized either.

Lastly, it seems to me that DYF in the extinction model should be based on the
turbulent mixing model, not complete combustion.  This is why I was previously
playing with moving the DYF calc to before SUPPRESSION (see SVN 6142). Maybe this
will work now.  Please have a look at this and see if you agree.

Original issue reported on code.google.com by randy.mcdermott on 2010-05-10 22:08:52

gforney commented 9 years ago
ICFT looks fine.  I'm not sure DYF should be based on the mixing.  We are looking to
compute when a unit mass of fuel burns if the mass of diluent gasses present will
keep a flame temperature from being reached.  

Suppression was moved to _MF from _MF2 rather than the other way around since there
were more changes to the rest of _MF that weren't in _MF2.

Original issue reported on code.google.com by drjfloyd on 2010-05-11 12:19:27

gforney commented 9 years ago
The flame temperature that is possible depends on the fuel that CAN burn.  It can't
burn if it can't mix.

Original issue reported on code.google.com by randy.mcdermott on 2010-05-11 12:29:23

gforney commented 9 years ago
I think I'm with Randy regarding DYF. But then, this will need to be tested. Sandia
test 24 with 6 cm seems to work with the Q_BOUND block moved before IF_SUPPRESSION.
But we need under-ventilated test cases.

If we go for the single-cell suppression model, then the SUPPRESSION_SEARCH loop
should be removed because it just eats CPU.

Original issue reported on code.google.com by jukka.vaari@vtt.fi on 2010-05-11 12:39:00

gforney commented 9 years ago
Yes, if there is zero mixing then there is no combustion.  But once the fuel and
"air" mix, we are just looking to see if the amount of diluent gasses in the "air"
prevent a flame temperature for being reach for the amount of fuel that does burn.
 I
guess I am not sure how you propose to do this.  Say we have a grid cell that is 1000
kg of air 1 kg of fuel and the mixing time is such that 100 % of the fuel mixes over
the time step.  Are you proposing we then base the extinction on the total mass of
gasses in the cell in which case there would be no-combustion as 1 kg of fuel would
not be able to raise 1000 kg of air to a flame temperature.  

Original issue reported on code.google.com by drjfloyd on 2010-05-11 12:47:59

gforney commented 9 years ago
I don't understand.  DYAIR is the stoichiometric value of the "air" mixture, right?

This depends on DYF.  We are not proposing to base extinction on the 1000 kg of air.
 We are just saying to compute DYF first, which may be limited by either O2 or
mix_time.  They see if burning that amount of fuel in a stoichiometric mixture with
"air" can raise the temp above critical.

Original issue reported on code.google.com by randy.mcdermott on 2010-05-11 12:55:35

gforney commented 9 years ago
I guess we just have to see if it works.

Original issue reported on code.google.com by drjfloyd on 2010-05-11 13:06:50

gforney commented 9 years ago
Is there any documentation for EXTINCTION2 (COMBUSTION_MF2)? I'd like to look it over
(without having to translate the source if possible).

Original issue reported on code.google.com by williamson.justin.wade on 2010-05-11 13:40:25

gforney commented 9 years ago
Reverse psychology?  I may have changed my mind.

Consider two situations with the same fuel, O2, and diluent concentrations, and for
the sake of argument let's say we know that we are near "close" to the extinction
limit.  The only difference in the two cases is that for one mix_time >> dt and for
the other mix_time < dt.  That is, in the first case mixing is slow (laminar -- low
strain) and in the second case mixing is fast (turbulent -- high strain).

It seems to me that high strain case should extinguish but that a flame kernel is
possible in the low strain case.

Looking at the criterion in EXTINCTION2 I presume that the greater DYF is the more
likely the flame is the burn.  If that is true, then using DYF based on EDC gives the
opposite trend to what I described above: if mix_time is large, DYF is small.

Original issue reported on code.google.com by randy.mcdermott on 2010-05-11 13:44:16

gforney commented 9 years ago
Justin,

Nothing yet.  We are all working from the source... very much in development mode.

Original issue reported on code.google.com by randy.mcdermott on 2010-05-11 13:45:39

gforney commented 9 years ago
Jason, Jukka -- note that I made a mistake in my Comment 12.  High strain SHOULD
extinguish... Comment 13 is fixed.

Original issue reported on code.google.com by randy.mcdermott on 2010-05-11 13:51:41

gforney commented 9 years ago
So one possible excercise would be to set up a 2D counterflow flame.

Original issue reported on code.google.com by jukka.vaari@vtt.fi on 2010-05-11 14:00:19

gforney commented 9 years ago
The intent of extinction2 was just to form a stoichiometric mixture of Y_FUEL and
Y_AIR (really all other non-fuel gasses) and see if a flame temperature could be reached.

If we are fuel lean, that mixture is the fuel mass plus that portion of the air mass
required to burn it.  If we are fuel rich that mixture is the air mass plus that mass
of fuel that could be burned.

Original issue reported on code.google.com by drjfloyd on 2010-05-11 14:25:50

gforney commented 9 years ago
If you are fuel rich, shouldn't the excess fuel be treated as a diluent?

Original issue reported on code.google.com by randy.mcdermott on 2010-05-11 14:31:18

gforney commented 9 years ago
Randy,
You're right that DYF would be small when mix_time is large, but DYAIR would be
comparably small because they are proportional. My first glance at the expression you
have to define the react/no-react, the EDC factor would cancel out and have no effect.

The real thing to be concerned about with the rate of mixing is its impact on the
critical flame temperature. 

Original issue reported on code.google.com by williamson.justin.wade on 2010-05-11 14:35:27

gforney commented 9 years ago
On #18 

We want to be able to deal with coarse grids. If we have a grid cell near a burner
that is fuel rich surrounded by grid cells that are basically ambient air, would we
not combustion want to occur in that cell?

Original issue reported on code.google.com by drjfloyd on 2010-05-11 14:42:14

gforney commented 9 years ago
This is why I think our criterion somehow needs to be a function of strain rate
(inverse of mix_time).  In the case you describe, if there is low strain then a flame
kernel may propagate, but if the mixing is vigorous don't you think the excess fuel
would quench the flame?

Justin -- You are right about the cancellation of EDC mix_time.  I should have seen
this... thanks.

Original issue reported on code.google.com by randy.mcdermott on 2010-05-11 14:51:33

gforney commented 9 years ago
Good point on the strain.

Original issue reported on code.google.com by drjfloyd on 2010-05-11 15:01:08

gforney commented 9 years ago
Jason,
This is the fundamental problem with the fire point theory of extinction. It ignores
the impact of strain. If the strain rate at the interface between the fuel rich
injector and the ambient air is high, combustion will not occur. You would have to
move your ignition source away from the high strain region in order to get ignition.

The variables that define extinction are not just limited to composition and
temperature. A general list of the variables is:
1. Composition (mass fractions of reactants and diluents)
2. Initial temperature 
3. Strain rate 
4. Fuel chemistry
5. Local radiation losses (mostly due to soot)
6. Local conduction losses (cold wall interactions, water droplets)

The current model (basically equivalent to fire point theory) eliminates variables
3-6.

Original issue reported on code.google.com by williamson.justin.wade on 2010-05-11 15:01:36

gforney commented 9 years ago
Justin,

I am sure you appreciate this, but keep in mind that we want to stay as simple as
possible.

1. Fuel chemistry is out as a parameter in the near term.
2. I don't see an easy way to handle conduction, other then a specified loss term,
if, say, you knew you were looking at surface ignition.
2. Radiation losses could be accounted for rather simply if we computed Q first and
took a fixed loss.
3. Strain may be easy to account for by considering a simple relation such as: MF =
f(mix_time,Y_F_0,DYF) and using MF*H_F_0 as the mass for fuel considered.  Similar
relations could used for air.

Just some thoughts to consider for the future.  Now that the bug is fixed, I am
actually eager to see how the plumes look with the current E2 model.

Original issue reported on code.google.com by randy.mcdermott on 2010-05-11 15:15:51

gforney commented 9 years ago
Justin,

General FDS development philosophy is to start simple and make more complex.  Up
until this routine we are discussing, FDS did extinction assuming pure fuel mixing
into pure air (very simple).  When you have gasses like water vapor present, this
doesn't work as c_p water >> c_p air.  Hence this new routine.  We have taken a very
simple approach and added the complexity of accounting for the gasses that are
actually there.  So question 1 is are we at least doing that correctly?

If the answer is no, not much point in adding more logic to something that is already
broken.  

If the answer to that is yes, then lets ask question 2 of what additional complexity
do we want to add, keeping in mind cost (time + memory) vs. gain in predictive
capability and whether or not the additional complexity can be supported at the very
large range of length scales people use FDS for.

Jason

Original issue reported on code.google.com by drjfloyd on 2010-05-11 15:16:58

gforney commented 9 years ago
Jason, 
I agree with you. I'm not trying to suggest that you create a perfect extinction
model. What you have here is appropriate from what I can tell. My list of parameters
is written almost in order of importance, and degree of ease of implementation. 

1. Composition - You have this one nailed down pretty well, including specific heats.
2. Temperature - Same.
3. Strain rate - Randy is correct. Since you have mix_time, you basically have all
that you need to create a functional relationship for the strain rate (scalar
dissipation rate).
4. Fuel chemistry - you are correct to ignore this for now, the data isn't there. You
do have to use some simple chemistry relationships in order to define the relative
importance of the strain rate, but it's best to just calibrate the model for a single
fuel and state that as a limitation.
5. Radiation - You already have a simple radiation sub-model (constant radiative
fraction and radcal gas phase emission). The problem is the combined effects of
radiation and strain rate are non-trivial.
6. Conduction - You already calculate the heat transfer from gas phase to
solids/droplets, but again this is non-trivial. 

When I did my thesis research, I found that composition, temperature, strain rate and
radiation all have comparable effects on extinction. Strain rate should be the next
target for addition to the model, followed by radiation.

Original issue reported on code.google.com by williamson.justin.wade on 2010-05-11 17:08:23

gforney commented 9 years ago
The discussion above deals with the question 'do air and fuel have the time to mix
during a time step', and it stops when mix_time<=dt. Consider however what happens
if
mix_time << dt and we have a highly turbulent situation. In this case the fuel mixes
not only with a stoichiometric amount of air, but also with plenty of excess air. Due
to turbulence, a linear flame front becomes a curved flame front. In a 2D case it is
straightforward to show that the amount of excess air at each point of the flame
front is directly proportional to the local strain rate. This excess air needs to be
heated up to critical flame temperature in order for combustion to proceed.

Original issue reported on code.google.com by jukka.vaari@vtt.fi on 2010-05-11 19:11:19

gforney commented 9 years ago
On #26

from my perspective 6 should be 4 or 5. I'm dealing with water suppression. One case
I have been working with is the extinguishment of a cup-burner flame by ultra-fine
water mist. The experiments available suggest that droplets might completely vaporize
before entering the reaction zone so the current gas-phase suppression algorithm
should be able to deal with it (if not, there's an issue with vaporization). But I
have seen liquid pool fires put out with fire hoses in open air with essentially all
water hitting the flame, not the liquid surface. There is the question of liquid
droplets passing through the flame sheet: how should the suppression algorithm deal
with that.

Original issue reported on code.google.com by jukka.vaari@vtt.fi on 2010-05-11 20:16:41

gforney commented 9 years ago
There are a lot of complex things that happen when you spray water onto a flame.
Particularly when you use a fire hose, there is a substantial amount of momentum and
entrainment with the spray. This will increase the turbulence and the strain rate,
along with the water vapor diluting the reactants and droplets passing through the
flame. The aspect that we know the least about is the interaction between the droplet
and the flame sheet (a cold wall interaction). The other aspects, we have some prior
knowledge to guide us on what to do.

A droplet interaction with a flame sheet is very much a case dependent issue (only
happens when we simulate water suppression). Radiation and strain rate, on the other
hand, have an impact on every fire scenario.

Original issue reported on code.google.com by williamson.justin.wade on 2010-05-11 22:39:04

gforney commented 9 years ago
Closing.  No activity.

Original issue reported on code.google.com by randy.mcdermott on 2011-08-26 19:44:16