Skip to content

Commit 55b122c

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents 91b4281 + e10a818 commit 55b122c

File tree

8 files changed

+86
-46
lines changed

8 files changed

+86
-46
lines changed

Manuals/FDS_User_Guide/FDS_User_Guide.tex

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2280,16 +2280,13 @@ \subsubsection{Logarithmic Law of the Wall}
22802280
Refer to the FDS Tech Guide \cite{FDS_Tech_Guide} for further details of the formulation. To specify this heat transfer model for a particular surface, set \ct{HEAT_TRANSFER_MODEL} equal to \ct{'LOGLAW'} on the \ct{SURF} line. Note that the loglaw model is not well-suited for buoyant flows---it requires a well-resolved ``wind'' near the surface and is therefore mainly applicable to forced convection type flows with high grid resolution.
22812281

22822282
\subsubsection{Blowing Heat Transfer}
2283-
\label{blowing}
2283+
\label{info:blowing}
22842284

2285-
If a surface is emitting (``blowing'') or removing (``sucking'') gas, the flow normal to the surface disrupts the thermal boundary layer. Blowing tends to decrease the heat transfer coefficient while sucking tends to increase it. Adding \ct{BLOWING=T} to the \ct{SURF} line will account for this effect, except for DNS simulations where empirical heat transfer correlations are not used. When \ct{BLOWING=T}, the heat transfer coefficient is adjusted as follows~\cite{Plate_blowing}:
2285+
If a surface is emitting (``blowing'') or removing (``sucking'') gas, the flow normal to the surface disrupts the thermal boundary layer. Blowing tends to decrease the heat transfer coefficient while sucking tends to increase it. Adding \ct{BLOWING=T} to the \ct{SURF} line will account for this effect, except for DNS simulations where empirical heat transfer correlations are not used. When \ct{BLOWING=T}, the heat transfer coefficient is adjusted as follows~\cite{Plate_blowing,Taylor&Krishna}:
22862286
\begin{equation}
2287-
\Phi_h = \frac{\dot{m}'' c_p}{h}
2287+
h_{\rm blowing} = \underbrace{\left[\frac{\Phi_h}{{\exp}(\Phi_h)-1}\right]}_{{\mbox{\scriptsize \tt BLOWING CORRECTION}}} h \quad ; \quad \Phi_h = \frac{\dot{m}'' c_p}{h}
22882288
\end{equation}
2289-
\begin{equation}
2290-
h_{\rm blowing} = \frac{\Phi_h}{{\rm e}^{\Phi_h}-1} h
2291-
\end{equation}
2292-
where $h$ is the unadjusted heat transfer coefficient, $\dot{m}''$ is the mass flow rate per unit area (positive for blowing), and $c_p$ is the specific heat of the gas.
2289+
where $h$ is the unadjusted heat transfer coefficient, $\dot{m}''$ is the mass flow rate per unit area (positive for blowing), and $c_p$ is the specific heat of the gas.,
22932290

22942291
\subsection{Adiabatic Surfaces}
22952292
\label{info:adiabatic}
@@ -3916,7 +3913,7 @@ \subsection{Louvered HVAC Vents}
39163913
\subsection{HVAC Mass Transport}
39173914
\label{info:hvacmasstransport}
39183915

3919-
FDS can account for the time delay of species and enthalpy transport through HVAC networks by discretizing individual HVAC ducts. This can by done using either \ct{N_CELLS} on an HVAC duct input or by setting \ct{HVAC_MASS_TRANSPORT_CELL_L}. The input \ct{N_CELLS} divides the length on the duct into \ct{N_CELLS} uniform segments. The parameter \ct{HVAC_MASS_TRANSPORT_CELL_L} defines a cell length that is applied to all ducts in an input file unless overridden by \ct{N_CELLS}. IF specified, the number of cells for a duct is taken as the nearest integer of the duct \ct{LENGTH} divided by \ct{HVAC_MASS_TRANSPORT_CELL_L}. The current HVAC solver does not account for heat loss in the HVAC network.
3916+
FDS can account for the time delay of species and enthalpy transport through HVAC networks by discretizing individual HVAC ducts. This can by done using either \ct{N_CELLS} on an HVAC duct input or by setting \ct{HVAC_MASS_TRANSPORT_CELL_L} on \ct{MISC}. The input \ct{N_CELLS} divides the length on the duct into \ct{N_CELLS} uniform segments. The parameter \ct{HVAC_MASS_TRANSPORT_CELL_L} defines a cell length that is applied to all ducts in an input file unless overridden by \ct{N_CELLS}. When specified, the number of cells for a duct is the duct \ct{LENGTH} divided by \ct{HVAC_MASS_TRANSPORT_CELL_L} rounded to the nearest integer (minimum of 1 cell). The current HVAC solver does not account for heat loss in the HVAC network.
39203917

39213918
If a duct is discretized, then all other ducts in that ductrun must also be discretized. There is no requirement that the same cell size be used for all ducts in a ductrun. A ductrun is any collection of interconnected HVAC components where a path exists between two components via traversing ducts in the ductrun.
39223919

@@ -8700,7 +8697,7 @@ \subsection{Freezing the Output Value, Example Case: \ct{hrr_freeze}}
87008697
\subsection{Example Case: Heat Release Rate of a Spreading Fire}
87018698
\label{spreading_fire}
87028699

8703-
In this example, a fire spreads radially from a single point as directed by the parameters \ct{SPREAD_RATE} and \ct{XYZ} on a \ct{VENT} line. Usually, the user specifies the heat release rate per unit area (\ct{HRRPUA}) for each burning surface cell on the corresponding \ct{SURF} line, but in this case, a specific time \ct{RAMP} for the {\em total} heat release rate is specified. The following input lines show how the user-specified \ct{RAMP} called \ct{'HRR'} controls the total HRR of the growing fire. The key point is that the user-specified {\em total} HRR is divided by the area of burning surface, and this heat release rate per unit area is imposed on all burning cells. Normally FDS will adjust a mass flux input (\ct{MASS_FLUX}, \ct{HRRPUA} ,etc.) input to account for any differences in the area of the \ct{VENT} as specified with \ct{XB} and the area is it is actually resolved on the grid. In this case we are using control functions to determine the heat release rate. In this case the control logic is directly computing the required flux based on the area as resolved so no additional correction is needed. When false, the \ct{AREA_ADJUST} flag prevents any additional adjustment. Regardless of the fact that the spreading fire reaches a barrier and is stopped from spreading radially, the user-specified \ct{RAMP} controls the HRR, as shown in Fig.~\ref{spreading_fire_hrr}.
8700+
In this example, a fire spreads radially from a single point as directed by the parameters \ct{SPREAD_RATE} and \ct{XYZ} on a \ct{VENT} line. Usually, the user specifies the heat release rate per unit area (\ct{HRRPUA}) for each burning surface cell on the corresponding \ct{SURF} line, but in this case, a specific time \ct{RAMP} for the {\em total} heat release rate is specified. The following input lines show how the user-specified \ct{RAMP} called \ct{'HRR'} controls the total HRR of the growing fire. The key point is that the user-specified {\em total} HRR is divided by the area of burning surface, and this heat release rate per unit area is imposed on all burning cells. Normally FDS will adjust a mass flux input (\ct{MASS_FLUX}, \ct{HRRPUA} ,etc.) input to account for any differences in the area of the \ct{VENT} as specified with \ct{XB} and the area is it is actually resolved on the grid. In this case we are using control functions to determine the heat release rate. In this case the control logic is directly computing the required flux based on the area as resolved so no additional correction is needed. When false, the \ct{AREA_ADJUST} flag prevents any additional adjustment. Regardless of the fact that the spreading fire reaches a barrier and is stopped from spreading radially, the user-specified \ct{RAMP} controls the HRR, as shown in Fig.~\ref{spreading_fire_hrr}.
87048701
\begin{lstlisting}
87058702
&VENT SURF_ID='FIRE', XB=1.0,7.0,1.0,7.0,0.0,0.0, XYZ=3.0,3.0,0.0, SPREAD_RATE=0.1, AREA_ADJUST=F /
87068703

@@ -11447,15 +11444,16 @@ \section{Solid Phase Output Quantities}
1144711444
\endhead
1144811445
\ct{ADIABATIC SURFACE TEMPERATURE} & Section~\ref{info:AST} & $^\circ$C & B,D \\ \hline
1144911446
\ct{AMPUA}$^2$ & Section~\ref{bucket_test_1} & kg/m$^2$ & B,D \\ \hline
11450-
\ct{AMPUA_Z}$^1$ & Section~\ref{bucket_test_1} & kg/m$^2$ & B,D \\ \hline
11447+
\ct{AMPUA_Z}$^1$ & Section~\ref{bucket_test_1} & kg/m$^2$ & B,D \\ \hline
1145111448
\ct{BACK WALL TEMPERATURE} & Section~\ref{info:BACK} & $^\circ$C & B,D \\ \hline
11449+
\ct{BLOWING CORRECTION} & Section~\ref{info:blowing} & & B,D \\ \hline
1145211450
\ct{BURNING RATE} & Mass loss rate of fuel & \unit{kg/(m^2.s)} & B,D \\ \hline
1145311451
\ct{CONDENSATION HEAT FLUX} & Section~\ref{info:condensation} & \unit{kW/m^2} & B,D \\ \hline
1145411452
\ct{CONVECTIVE HEAT FLUX} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & B,D \\ \hline
1145511453
\ct{CONVECTIVE HEAT FLUX GAUGE} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & B,D \\ \hline
1145611454
{\scriptsize\tt CONVECTIVE HEAT TRANSFER REGIME} & Section \ref{info:convection} & & B,D \\ \hline
1145711455
\ct{CPUA}$^2$ & Section~\ref{bucket_test_1} & \unit{kW/m^2} & B,D \\ \hline
11458-
\ct{CPUA_Z}$^1$ & Section~\ref{bucket_test_1} & \unit{kW/m^2} & B,D \\ \hline
11456+
\ct{CPUA_Z}$^1$ & Section~\ref{bucket_test_1} & \unit{kW/m^2} & B,D \\ \hline
1145911457
\ct{DEPOSITION VELOCITY} & Section~\ref{info:deposition} & m/s & B,D \\ \hline
1146011458
\ct{FRICTION VELOCITY} & Section~\ref{info:yplus} & m/s & B,D \\ \hline
1146111459
\ct{GAUGE HEAT FLUX} & Section~\ref{info:heat_flux} & \unit{kW/m^2} & B,D \\ \hline
@@ -12577,7 +12575,7 @@ \section{\texorpdfstring{{\tt MISC}}{MISC} (Miscellaneous Parameters)}
1257712575
\ct{H_F_REFERENCE_TEMPERATURE} & Real & Section~\ref{info:enthalpy} & $^\circ$C & 25. \\ \hline
1257812576
\ct{HUMIDITY} & Real & Section~\ref{info:humidity} & \% & 40. \\ \hline
1257912577
\ct{HVAC_LOCAL_PRESSURE} & Logical & Section~\ref{info:HVAC} & & \ct{T} \\ \hline
12580-
\ct{HVAC_MASS_TRANSPORT_CELL_L} & Logical & Section ~\ref{info:hvacmasstransport} & & \ct{F} \\ \hline
12578+
\ct{HVAC_MASS_TRANSPORT_CELL_L} & Real & Section ~\ref{info:hvacmasstransport} & m & \\ \hline
1258112579
\ct{HVAC_PRES_RELAX} & Real & Section ~\ref{info:HVAC} & & 1.0 \\ \hline
1258212580
\ct{HVAC_QFAN} & Logical & Section ~\ref{info:HVAC_QFAN} & & \ct{F} \\ \hline
1258312581
\ct{IBLANK_SMV} & Logical & Section~\ref{info:SLCF} & & \ct{T} \\ \hline
@@ -13358,7 +13356,7 @@ \section{\texorpdfstring{{\tt SURF}}{SURF} (Surface Properties)}
1335813356
\ct{ALLOW_UNDERSIDE_PARTICLES} & Logical & Section~\ref{info:surface_droplets} & & \ct{F} \\ \hline
1335913357
\ct{AREA_MULTIPLIER} & Real & Section~\ref{info:area_mult} & & 1.0 \\ \hline
1336013358
\ct{BACKING} & Character & Section~\ref{info:BACKING} & & \ct{'EXPOSED'} \\ \hline
13361-
\ct{BLOWING} & Logical & Section~\ref{blowing} & & \\ \hline
13359+
\ct{BLOWING} & Logical & Section~\ref{info:blowing} & & \\ \hline
1336213360
\ct{BURN_AWAY} & Logical & Section~\ref{info:BURN_AWAY} & & \ct{F} \\ \hline
1336313361
\ct{BURN_DURATION} & Real & Section~\ref{info:BURN_DURATION} & s & 1000000 \\ \hline
1336413362
\ct{CELL_SIZE(:)} & Real Array & Section~\ref{info:solid_phase_stability} & m & \\ \hline

Source/data.f90

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1612,6 +1612,10 @@ SUBROUTINE DEFINE_OUTPUT_QUANTITIES
16121612
OUTPUT_QUANTITY(-81)%BNDF_APPROPRIATE = .FALSE.
16131613
OUTPUT_QUANTITY(-81)%PROF_APPROPRIATE = .TRUE.
16141614

1615+
OUTPUT_QUANTITY(-82)%NAME = 'BLOWING CORRECTION'
1616+
OUTPUT_QUANTITY(-82)%UNITS= ''
1617+
OUTPUT_QUANTITY(-82)%SHORT_NAME = 'bcor'
1618+
16151619
! Fire spread
16161620
OUTPUT_QUANTITY(-90)%NAME = 'FIRE ARRIVAL TIME'
16171621
OUTPUT_QUANTITY(-90)%UNITS = 's'

Source/dump.f90

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9262,13 +9262,13 @@ REAL(EB) FUNCTION SOLID_PHASE_OUTPUT(INDX,Y_INDEX,Z_INDEX,PART_INDEX,OPT_WALL_IN
92629262
SOLID_PHASE_OUTPUT = Q_CON*0.001_EB
92639263

92649264
CASE(77) ! CONVECTIVE HEAT TRANSFER REGIME
9265-
SOLID_PHASE_OUTPUT = 0
9265+
SOLID_PHASE_OUTPUT = 0._EB
92669266
IF (SF%INCLUDE_BOUNDARY_PROP2_TYPE) SOLID_PHASE_OUTPUT = B2%HEAT_TRANSFER_REGIME
92679267
CASE(78) ! SURFACE OXYGEN MASS FRACTION
9268-
SOLID_PHASE_OUTPUT = 0
9268+
SOLID_PHASE_OUTPUT = 0._EB
92699269
IF (SF%INCLUDE_BOUNDARY_PROP2_TYPE) SOLID_PHASE_OUTPUT = B2%Y_O2_F
92709270
CASE(79) ! SURFACE OXYGEN ITERATIONS
9271-
SOLID_PHASE_OUTPUT = 0
9271+
SOLID_PHASE_OUTPUT = 0._EB
92729272
IF (SF%INCLUDE_BOUNDARY_PROP2_TYPE) SOLID_PHASE_OUTPUT = B2%Y_O2_ITER
92739273
CASE(80) ! OXIDATIVE HRRPUA
92749274
SOLID_PHASE_OUTPUT = B1%Q_DOT_O2_PP*0.001_EB
@@ -9284,6 +9284,9 @@ REAL(EB) FUNCTION SOLID_PHASE_OUTPUT(INDX,Y_INDEX,Z_INDEX,PART_INDEX,OPT_WALL_IN
92849284
SOLID_PHASE_OUTPUT = B2%Y_O2_F*EXP(-MAX(0._EB,DEPTH-CHAR_FRONT)/(TWO_EPSILON_EB+ML%GAS_DIFFUSION_DEPTH(1)))
92859285
ENDIF
92869286
ENDIF
9287+
CASE(82) ! BLOWING CORRECTION
9288+
SOLID_PHASE_OUTPUT = 0._EB
9289+
IF (SF%INCLUDE_BOUNDARY_PROP2_TYPE) SOLID_PHASE_OUTPUT = B2%BLOWING_CORRECTION
92879290
CASE(90) ! FIRE ARRIVAL TIME
92889291
IF (PRESENT(OPT_WALL_INDEX)) THEN
92899292
OUTPUT_INDEX = OPT_WALL_INDEX

Source/hvac.f90

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3510,17 +3510,18 @@ SUBROUTINE UPDATE_HVAC_MASS_TRANSPORT(DT,NR)
35103510
MASS_FLUX = DU%RHO_D * DU%VEL(NEW)
35113511

35123512
! Set up of CFL and sub time step
3513-
DT_CFL = DU%DX/(2*DU%VEL(NEW)) ! CFL for Godunov pure upwinding scheme
3513+
DT_CFL = ABS(DU%DX/(2*DU%VEL(NEW))) ! CFL for Godunov pure upwinding scheme
35143514
N_SUBSTEPS = MAX(1,CEILING(DT/DT_CFL))
35153515
DT_DUCT = DT/REAL(N_SUBSTEPS,EB)
35163516

3517+
! Set upwind face indices and allocate flux arrays
3518+
ALLOCATE(ZZ_F(0:DU%N_CELLS,N_TRACKED_SPECIES))
3519+
ALLOCATE(CPT_F(0:DU%N_CELLS))
3520+
ALLOCATE(CPT_C(DU%N_CELLS))
3521+
ALLOCATE(RHOCPT_C(DU%N_CELLS))
3522+
ALLOCATE(RHOZZ_C(DU%N_CELLS,N_TRACKED_SPECIES))
3523+
35173524
SUBSTEP_LOOP: DO NS = 1,N_SUBSTEPS
3518-
! Set upwind face indices and allocate flux arrays
3519-
ALLOCATE(ZZ_F(0:DU%N_CELLS,N_TRACKED_SPECIES))
3520-
ALLOCATE(CPT_F(0:DU%N_CELLS))
3521-
ALLOCATE(CPT_C(DU%N_CELLS))
3522-
ALLOCATE(RHOCPT_C(DU%N_CELLS))
3523-
ALLOCATE(RHOZZ_C(DU%N_CELLS,N_TRACKED_SPECIES))
35243525

35253526
! Populates upwind face variables, accounting for direction of flow (i.e. includes relevant node value as first/last face)
35263527
IF (DU%VEL(NEW)>0._EB) THEN
@@ -3556,13 +3557,14 @@ SUBROUTINE UPDATE_HVAC_MASS_TRANSPORT(DT,NR)
35563557
DU%CP_C(NC) = HGAS / DU%TMP_C(NC)
35573558
ENDDO DU_UPDATE_LOOP
35583559

3559-
DEALLOCATE(RHOZZ_C)
3560-
DEALLOCATE(ZZ_F)
3561-
DEALLOCATE(CPT_F)
3562-
DEALLOCATE(CPT_C)
3563-
DEALLOCATE(RHOCPT_C)
3564-
35653560
ENDDO SUBSTEP_LOOP
3561+
3562+
DEALLOCATE(RHOZZ_C)
3563+
DEALLOCATE(ZZ_F)
3564+
DEALLOCATE(CPT_F)
3565+
DEALLOCATE(CPT_C)
3566+
DEALLOCATE(RHOCPT_C)
3567+
35663568
ENDDO DUCT_LOOP
35673569

35683570

Source/type.f90

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,7 @@ MODULE TYPES
358358
REAL(EB) :: K_SUPPRESSION=0._EB !< Suppression coefficent (m2/kg/s)
359359
REAL(EB) :: V_DEP=0._EB !< Deposition velocity (m/s)
360360
REAL(EB) :: Y_O2_F=0._EB !< Oxygen mass fraction at the surface
361+
REAL(EB) :: BLOWING_CORRECTION=0._EB !< Ackermann blowing correction to heat transfer coefficient
361362

362363
INTEGER :: SURF_INDEX=-1 !< Surface index
363364
INTEGER :: HEAT_TRANSFER_REGIME=0 !< 1=Forced convection, 2=Natural convection, 3=Impact convection, 4=Resolved

Source/wall.f90

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3665,6 +3665,7 @@ REAL(EB) FUNCTION HEAT_TRANSFER_COEFFICIENT(NMX,DELTA_N_TMP,H_FIXED,SFX,WALL_IND
36653665

36663666
IF (SFX%BLOWING .AND. .NOT. SFX%BOUNDARY_FUEL_MODEL .AND. SIM_MODE /= DNS_MODE .AND. ALLOCATED(P1X%M_DOT_G_PP_ACTUAL)) THEN
36673667
PHI = 0._EB
3668+
IF (SFX%INCLUDE_BOUNDARY_PROP2_TYPE) P2X%BLOWING_CORRECTION=0._EB
36683669
ITMP = INT(TMP_FILM)
36693670
DO I=1,N_TRACKED_SPECIES
36703671
IF (ABS(P1X%M_DOT_G_PP_ACTUAL(I)) <= TWO_EPSILON_EB) CYCLE
@@ -3676,6 +3677,7 @@ REAL(EB) FUNCTION HEAT_TRANSFER_COEFFICIENT(NMX,DELTA_N_TMP,H_FIXED,SFX,WALL_IND
36763677
HEAT_TRANSFER_COEFFICIENT = 0._EB
36773678
ELSE
36783679
HEAT_TRANSFER_COEFFICIENT = HEAT_TRANSFER_COEFFICIENT * PHI/(EXP(PHI)-1._EB)
3680+
IF (SFX%INCLUDE_BOUNDARY_PROP2_TYPE) P2X%BLOWING_CORRECTION = PHI/(EXP(PHI)-1._EB)
36793681
ENDIF
36803682
ENDIF
36813683
ENDIF

0 commit comments

Comments
 (0)