New issue 37 by cfastdev: Include calculation of plume temperature
http://code.google.com/p/cfast/issues/detail?id=37
At the moment, CFAST does not include a calculation of the plume
temperature. This can impact
targets directly above the fire such that the temperature of the target
will be underestimated.
Methods are available for this calculation in Heskestad's chapter of the
SFPE handbook.
At this point, a routine exist to calculate the plume centerline
temperature (see PlumeTemp in fire.f,
but it is not connected to any CFAST calculation. There are two places for
this connection: targets
and detectors. When the target or detector is located at the x&y position
of a fire, the local gas
temperature (that's currently set to the layer temperature for targets and
the ceiling jet temperature
for detectors (regardless of the height of the detector)) could be
calculated by the plume
temperature correlation
--
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings
Routine for calculating plume temperature is the following (taken from
model JET and verified to provide
results identical to JET from NISTIR 6448:
{{{
subroutine PlumeTemp (qdot, xrad, dfire, tu, tl, rhoamb, zfire,
* zlayer, z, tplume)
! Calculates plume centerline temperature at a specified height above
! the fire
!
! Using Heskestad's correlation for the lower layer and Evan's modification
! when position is in the upper layer
! Inputs:
!
! qdot total heat release rate of the fire (W)
! xrad fraction of fire HRR released as radiation
! dfire fire diamater (m)
! tu upper layer gas temperature (K)
! tl lower layer gas temperature (K)
! rhoamb density of the ambient air (kg/m^3)
! zfire height of the base of the fire (m)
! zlayer height of the hot/cold gas layer interface (m)
! z position to calculate plume centerline temperature (m)
! Output:
!
! tplume plume centerline temperature
implicit none
real*8 qdot, xrad, dfire, tu, tl, rhoamb, zfire, zlayer, z
real*8 tplume
real*8, parameter :: g = 9.8d0, C_T = 9.115d0, Beta = 0.955d0,
* cp = 1.012d0
real*8 z0, qdot_c, z_i1, q_i1star, xi, q_i2star, z_i2, z_eff
z0 = -1.02d0*dfire + 0.083d0*(qdot/1000.d0)**0.4d0
qdot_c = qdot*(1.0d0 - xrad)/1000.d0
if (z.le.zlayer) then
tplume = 9.1d0*(tl/(g*cp**2*rhoamb**2))**(1.d0/3.d0)*
* qdot_c**(2.d0/3.d0)/(z-z0)**(5.d0/3.d0) + tl
else
z_i1 = zlayer - zfire
q_i1star = qdot_c/(rhoamb*cp*tl*sqrt(g)*z_i1**(5.d0/2.d0))
xi = tu/tl
q_i2star = ((1.d0+C_T*q_i1star**(2.d0/3.d0))/
* (xi*C_T)-1.d0/C_T)**(3.d0/2.d0)
z_i2 = (xi*q_i1star*C_T/(q_i2star**(1.d0/3.d0)*((xi-1.d0)*
* (Beta**2+1.d0)+xi*C_T*q_i2star**(2./3.))))**(2.d0/5.d0)*z_i1
z_eff = z-z_i1+z_i2
tplume = 9.28d0*tu*q_i2star**(2.d0/3.d0)*
* (z_i2/z_eff)**(5.d0/3.d0) + tu
end if
return
end subroutine PlumeTemp
Here's how I see the routine inputs mapping to CFAST inputs when a target
is located (X and Y dimensions) at
the same point as one of the fire objects
qdot (total heat release rate of the fire, W) = FQF(i) for fire number i
xrad (fraction of fire HRR released as radiation) = radconsplit(i)
dfire (fire diamater, m) = (farea(i)*4/pi)^1/2
tu (upper layer gas temperature, K) = ZZTEMP(ir,UPPER) for room number ir
tl (lower layer gas temperature, K) = ZZTEMP(ir,LOWER)
rhoamb (density of the ambient air, kg/m^3) = RAMB(ir)
zfire (height of the base of the fire, m) = XFIRE(i,3)
zlayer (height of the hot/cold gas layer interface, m) = ZZHLAY(ir,LOWER)
z (position to calculate plume centerline temperature, m) =
XXTARG(TRGCENZ,it) for target number it
each fire location is (XFIRE(i,1),XFIRE(i,2),XFIRE(i,3)) and target
location is
XXTARG(TRGCENX,it),XXTARG(TRGCENY,it),XXTARG(TRGCENZ,it))
To check if target is located at a fire position:
1) check if IXTARG(TRGROOM,it) = FROOM(i) for targets it= 1:NTARG and fires
i= 0:NUMOBJL
2) check if XXTARG(TRGCENX,it) = XFIRE(i,1) and XXTARG(TRGCENY,it) =
XFIRE(i,2)
To check if target is located at a fire position:
1) check if IXTARG(TRGROOM,it) = IFROOM(i) for targets it= 1:NTARG and
Initial implementation is done (revision 89). Still needs testing and only
done for targets and not yet detectors.
Test file attached that has two targets, one above the fire and one nearby
at the same height.
Attachments:
TestPlume.in 508 bytes