firemodels / fds

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

smoke vs speed correlation in Evac #1663

Closed gforney closed 9 years ago

gforney commented 9 years ago
Please complete the following:

Application Version:
SVN Revision Number:
Compile Date:

I recently wrote an article in which I highlighted that different evacuation models
employ different correlations and data-sets to reduce the speeds of the agents because
of a reduction in the visibility conditions. FDS+Evac is also included in the paper:

Ronchi E, Gwynne SMV, Purser D, Colonna P: Representation of the Impact of Smoke on
Agent Walking Speeds in Evacuation Models.
http://dx.doi.org/10.1007/s10694-012-0280-y

Would it be possible to enhance the capabilities of Evac by embedding all the different
smoke vs speed correlations and the two main data-sets available in the literature?
We have described in the paper 5 possible interpretations and two data-sets currently
adopted by evacuation models (including the one used by FDS+Evac). I was thinking that
Timo may find this paper of interest for a possible future enhancement of Evac.

Cheers,
Enrico

Original issue reported on code.google.com by enricoronchi84 on 2012-07-31 20:16:39

gforney commented 9 years ago
Timo will take a look at this.

Original issue reported on code.google.com by mcgratta on 2012-07-31 20:23:57

gforney commented 9 years ago
Hi Enrico!

Well this could be easily done in the evac.f90. See the lines 
at about 8070. One could easily add here a CASE construct for
different smoke vs speed correlations. Now there is the Lund
correlation (well, a little bit modified so that the user
has some control over it). The speed does not go to zero, but
this can be changed by the user given minimum speed. And similar
things added also.

So, what kind of correlations are needed?

 A) A linear function like speed(d_smoke)=speed(d_smoke=0)*(1-constant)
    like there already is (with the minimum speed). Well, perhaps a more
    general linear decay: speed=speed_nosmoke if d_smoke < some density.
    then a linear decrease to minimum speed (that might be zero or not).
    So, the user could give the "correct" input constants, the default
    would be the present ones in FDS+Evac.

 B) A more general function, some polynomial? 

These are easily programmed, if you just give a nice mathematical
formulas and nice input keyword names for the users. 

Some different (Jin and Lund) correlatins might be chosen just by some keyword,
so the values of the constants are not needed in the input (they would
be inside the evac.f90 already).

So, write some nice "fortran mathematical formulas" like those on
the line 8071 (about) and I'll write these to the source code.
Use some "nice" names for the constants. The numerical factor 1.0E-6
in the source code is just for a mg <=> kg conversion.

TimoK

Original issue reported on code.google.com by tkorhon1 on 2012-08-06 14:04:00

gforney commented 9 years ago
Thanks for your reply Timo.

I have sent you a private email since I would like to discuss about this issue by mentioning
some correlations that can not be shared publicly (they are protected by copyright).

I look forward to hearing your comments,
Enrico

Original issue reported on code.google.com by enricoronchi84 on 2012-08-09 10:56:36

gforney commented 9 years ago
Well, if you want to use some correlations that you can not
write publicly, then I will not add these in the source code.
The source code is public domain. And if there is some copyright
etc reason that these should not be used, then these should not
be there. But if the correlations are already published on some
journal etc,  then one can use these formulas, if there are no
patents  saying otherwise. But if these correlations  are 
"private communication" origin, then you should do the changes
in the source code and compile the code yourself.

I would help you to program the source code bu saying the
lines where you should change the code and say how you
should do this. Well, just overwrite the Lund formula
that is there already. You do not need the user input
changes, because you can give the "secret numbers" just
as numbers inside the source code, because you will be
compiling the code youself. And the Fortran mathematical
formulas are easy to write and there are free fortran
tutorials on the net, where you will find the names
of different mathematical functions in Fortran.

TimoK

Original issue reported on code.google.com by tkorhon1 on 2012-08-13 09:00:00

gforney commented 9 years ago
Hi Enrico!

Check the source code FDS 6.0.0 SVN number 12260.

ToDo: Manual (Timo) + tests (Enrico), well I can not compile
for win32 nor win64. I have just a Linux compiler...

Enrico's case, add the first 3 options done.
The Lund fit SMOKE_SPEED_ALPHA and SMOKE_SPEED_BETA
are the defaults. Other (Jin's non-irr+irr) ones needs
user input for alpha and beta. Could later be added
as options (Enrico, could you do the transformation of
the Jin linear constants to the present (beta,alpha)
format. Well, just beta/alpha needed...).

The Eqs (1)-(3) are handled with:
SMOKE_MIN_SPEED and SMOKE_MIN_SPEED_VISIBILITY,SMOKE_MIN_SPEED_FACTOR.
If minimum speed is zero (v_s_min and/or v_s_min(i) are zero), then
either one of the MIN_SPEED inputs could be given. If MIN_SPEED_FACTOR
is given, then v_s_min(i) is used, and v_s_min(i) = v0_i*min_speed_factor.

      IF(SMOKE_MIN_SPEED < 0.0_EB .AND. SMOKE_MIN_SPEED_FACTOR < 0.0_EB) THEN
         SMOKE_MIN_SPEED_FACTOR = 0.1_EB ! Default min speed = v0_i*v_s_min_fac
      END IF

             IF (SMOKE_MIN_SPEED_FACTOR > -99998.0_EB) THEN
                SMOKE_MIN_SPEED_TMP = SMOKE_MIN_SPEED_FACTOR
             ELSE
                SMOKE_MIN_SPEED_TMP = SMOKE_MIN_SPEED/HR%SPEED
             END IF

SMOKE_KS_SPEED_FUNCTION (default =1, no others yet):
 ! 1: Linear function c(Ks) = (1 + beta*Ks/alpha), 0 <= c(Ks) <= 1.
This is an user keywork on (some) PERS namelist, the last one read
in is used.

 New formalism by Enrico
 0 <= c(Ks) <= 1, c(Ks=0)=1, c(Ks=inf)=0
 v_s_min: A constant minimum speed for all agents (say 0.3 m/s) in smoke.
 v_s_min(i): Minimum speed of an agent in smoke. v_s_min*v0_i fds+evac now
             Add later user input for this
 ! Linear speed vs smoke density function, default is the Lund fit.
 ! c(Ks) = ( 1 + (BETA*Ks)/ALPHA )  [0,1] interval, c(Ks=0)=1, c(Ks=inf)=0
 SMOKE_SPEED_ALPHA = 0.706_EB   ! Lund 2003, report 3126 (Frantzich & Nilsson)
 SMOKE_SPEED_BETA  = -0.057_EB  ! Lund 2003, report 3126 (Frantzich & Nilsson)

 (1) v_i_smoke = v_i_0*c(Ks) (v_s_min=0.0, same as case (2))
     fds+evac options: v_s_min=0 (SMOKE_MIN_SPEED=0.0)
                       SMOKE_MIN_SPEED_VISIBILITY = 0.01 (very dense smoke)

 (2) v_i_smoke = Max( v_i_0*c(Ks), v_s_min)
     fds+evac options: v_s_min=v_s_min (SMOKE_MIN_SPEED=0.1 for example)
                       SMOKE_MIN_SPEED_VISIBILITY = 0.01 (very dense smoke)

 (3) v_i_smoke = Max( v_i_0*c(Ks), v_s_min(i))
     fds+evac options: v_s_min=v_s_min (SMOKE_MIN_SPEED_FACTOR=0.1 for example)
                       SMOKE_MIN_SPEED_VISIBILITY = 0.01 (very dense smoke)

Enrico, do you need more general v_s_min(i) than just =v0_i*min_speed_factor,
where the factor is same for all agents (in the "old" FDS+Evac it was 0.1 and
it is still the default)? 

TimoK

Original issue reported on code.google.com by tkorhon1 on 2012-08-24 12:33:59

gforney commented 9 years ago
Well, I did not remember to change the status of this issue...

So, now it is "Fixed".

TimoK

Original issue reported on code.google.com by tkorhon1 on 2012-08-24 12:36:44

gforney commented 9 years ago
Hi Timo,

thanks for your work on this issue. About the v_s_min(i), I was discussing about it
in these days with one of the co-authors of the paper (Dave Purser) I mentioned in
this post. We agreed that a possible way to represent this would be to make speed in
smoke a function of original speed (as FDS+Evac is doing). Then, we could implement
a random normally distributed "susceptibility factor" (your SMOKE_MIN_SPEED_FACTOR).
The default could be a distribution with a mean value = 0.1. In this way, we could
represent the individual response to dense smoke. What do you think?

Enrico

Original issue reported on code.google.com by enricoronchi84 on 2012-08-27 07:59:30

gforney commented 9 years ago
Hi Enrico,

So, I should add SMOKE_MIN_SPEED_DIST for the distribution
type, same as in the agent data for the TDET and TPRE 
distributions, but to start with, just normal and truncated
normal ones implemented (and a constant factor).  Inputs
the similarly than for the TDET and TPRE, e.g., SMOKE_MIN_SPEED_MEAN,
..._PARA, ..._PARA2, ..._LOW, ..._HIGH. Default would be:

SMOKE_MIN_SPEED_DIST = -1 => use SMOKE_MIN_SPEED_FACTOR
(or SMOKE_MIN_SPEED). 

Well, as easily I could add uniform and log-normal etc
distributions, just copy-and-paste from TPRE/TDET.

TimoK

Original issue reported on code.google.com by tkorhon1 on 2012-08-27 08:43:38

gforney commented 9 years ago
Well, I'll close this issue (some housekeeping...).
These things should be in the fds6 based evacuation
manual, whenever I have time to make it.

TimoK

Original issue reported on code.google.com by tkorhon1 on 2013-12-02 11:39:49