Skip to content

Commit

Permalink
Merge pull request #12404 from drjfloyd/nondim_spyro
Browse files Browse the repository at this point in the history
FDS Source: Add flux and thickness interpolation to sbpyro
  • Loading branch information
drjfloyd authored Jan 28, 2024
2 parents 21dd429 + 8e9af21 commit c1666e6
Show file tree
Hide file tree
Showing 14 changed files with 4,417 additions and 633 deletions.
79 changes: 54 additions & 25 deletions Manuals/FDS_User_Guide/FDS_User_Guide.tex
Original file line number Diff line number Diff line change
Expand Up @@ -2723,33 +2723,60 @@ \subsection{Thermally-Thick Solids that Burn at a Specified Rate}
\subsection{Scaling the Burning Rate by the Heat Flux}
\label{info:scaled_burning}

FDS has a simple scaling-based pyrolysis model (SBPyro) to extrapolate burning rate data collected from a cone calorimeter or similar device to the heat feedback occurring during an FDS simulation. This model is invoked by specifying a {\ct REFERENCE\_HEAT\_FLUX} along with {\ct HRRPUA}, {\ct IGNITION\_TEMPERATURE}, and {\ct RAMP\_Q} where {\ct HRRPUA} and {\ct RAMP\_Q} define the burning rate where the test data is shifted so 0 s is the time the sample started burning in the test. {\ct REFERENCE\_HEAT\_FLUX} is the average heat flux to the surface occurring during testing, which includes the exposure heat flux and the heat feedback from the flame. When a wall cell reaches the {\ct IGNITION\_TEMPERATURE}, this model starts marching along the test data curve using a scaled time step where the scaled time step is the FDS time step adjusted by the ratio of {\ct REFERENCE\_HEAT\_FLUX} to the summation of the FDS incident radiative heat flux and net convective heat flux. At the scaled time, the ramp output is similarly scaled by the ratio of the FDS incident flux and net convective heat flux to the {\ct REFERENCE\_HEAT\_FLUX}. Because the instantaneous heat flux at the surface varies significantly from time step to time step, the incident heat flux is time-averaged in this model. The default time-averaging window is 1 second, but this can be changed by the user by setting {\ct REFERENCE\_HEAT\_FLUX\_TIME\_INTERVAL} on the {\ct SURF} line. The time-averaged heat flux used in the scaling approach can be output as the boundary quantity {\ct REFERENCE\_HEAT\_FLUX}. The scaling-based pyrolysis model has been evaluated in heat fluxes ranging from 15~kW/m$^{2}$ to 92~kW/m$^{2}$; however, most of validation data is in the range from 25~kW/m$^2$ to 75~kW/m$^2$. By default the model does not limit the range of heat fluxes which are used in the scaling. This range can be modified by setting the surface quantities {\ct MINIMUM\_SCALING\_HEAT\_FLUX} and {\ct MAXIMUM\_SCALING\_HEAT\_FLUX}. An example where this may be desirable is in simulating fires with small ignition sources where the grid is not fine enough to resolve the flux from the initiating fuel.
FDS has a simple scaling-based pyrolysis model (SBPyro), using inputs on {\ct SURF}, that scales burning rate data collected from a cone calorimeter or similar device to the actual heat feedback during an FDS simulation. This model requires a thermally-thick surface with a specified {\ct HRRPUA} and {\ct IGNITION\_TEMPERATURE}. Test data is specified with {\ct REFERENCE\_HEAT\_FLUX}, {\ct REFERENCE\_THICKNESS}, and {\ct RAMP\_Q}.
{\ct REFERENCE\_HEAT\_FLUX} is the radiant heat flux in kW/m$^{2}$ imposed by the test device to the sample prior to the start of pyrolysis, i.e. what a water-cooled heat flux gauge would measure. This is an array of up to ten values. {\ct REFERENCE\_THICKNESS} is the tested thickness of the sample in m for each {\ct REFERENCE\_HEAT\_FLUX}. This is just the combustible portion of the sample and not any insulation or other inert backing materials. This parameter is not required. If no {\ct REFERENCE\_THICKNESS} are given, FDS will assume the thickness of the first layer of the surface, i.e. {\ct THICKNESS(1)}. IF one {\ct REFERENCE\_THICKNESS} is given for a {\ct REFERENCE\_HEAT\_FLUX}, then all thicknesses must be given even if they are the same as {\ct THICKNESS(1)}. The {\ct REFERENCE\_THICKNESS} should represent the nominal thickness of the material. Typically when samples are acquired for a cone testing there are slight differences in thickness due to manufacturing or sample preparation. If a group of {\ct REFERENCE\_HEAT\_FLUX} values are intended to be the same thickness, then the same {\ct REFERENCE\_THICKNESS} should be used. {\ct RAMP\_Q} defines the burning rate over time for a pair of {\ct REFERENCE\_HEAT\_FLUX} and {\ct REFERENCE\_THICKNESS}. The test data should be adjusted so that 0~s in the ramp represents the time the sample started burning in the test. Values for {\ct REFERENCE\_HEAT\_FLUX} and {\ct REFERENCE\_THICKNESS} must be grouped by increasing thickness with increasing flux in each group of thicknesses.

An example demonstrating the scaling behavior is given below with results shown in Fig.~\ref{fig:cone_demo}. In this example a material with cone test data at 50 kW/m$^2$ is exposed to fluxes of 25, 50, and 75 kW/m$^2$. It can be seen that at 25 kW/m$^2$ the test data is stretched out in time by a factor of 2 with a reduction in burning rate of a factor of 2. Similarly at 75 kW/m$^2$, the curve is collapsed by 50~\% with the burning rate increased by 50~\%.
If the test data represents an inert test device where only pryolysis but no combustion occurs, then set {\ct INERT\_Q\_REF=T}. This flag applies to all specified test data.

The instantaneous heat feedback in FDS can vary greatly from time step to time step. In an actual fire the burning rate is tied to the sample temperature, and thermal inertia means the burning rate changes more slowly than then instantaneous flux. This natural smoothing can be approximated by setting a smoothing window using {\ct REFERENCE\_HEAT\_FLUX\_TIME\_INTERVAL} in s. The default values is 1~s.

By default the model does not limit the values of the FDS predicted heat feedback used to scale the test data. Upper and lower limits to the FDS predicted flux can be set using {\ct MINIMUM\_SCALING\_HEAT\_FLUX} and {\ct MAXIMUM\_SCALING\_HEAT\_FLUX} in kW/m$^2$. For example, weakly burning sources on coarse grids may have poorly resovled heat feedback, and setting a lower bound to the flux used for scaling may help the model predictions.

Multiple-layer samples may require special consideration. If the sample thickness tested is the same as the sample thickness modeled, then there is no need to set {\ct REFERENCE\_THICKNESS} and the model will correctly scale. If the sample tested is different then the sample model, then set {\ct REFERENCE\_THICKNESS} to relatively scale {\ct THICKNESS(1)}. For example, the test data is from a two-layer sample where the combustible mass density of each layer (density times thickness times one minus the char fraction) is 5~kg/m$^{2}$ and the FDS simulation is 5~kg/m$^{2}$ and 10~kg/m$^{2}$. The FDS model has 50~\% more combustible mass. If {\ct THICKNESS(1)} for the simulation is 1 cm, then setting {\ct REFERENCE\_THICKNESS} to 0.67~cm would represent that the FDS model has 50~\% more combustible mass than the test.

An example demonstrating the scaling behavior is given below with results shown in Fig.~\ref{fig:cone_demo}. In this example there is a material with cone test data at 25, 50, and 75 kW/m$^2$. Using just the 50 kW/m$^2$, the sample is exposed to fluxes of 25, 50, and 75 kW/m$^2$. It can be seen that at 25 kW/m$^2$ the test data is stretched out in time by a factor of 2 with a reduction in burning rate of a factor of 2. Similarly at 75 kW/m$^2$, the curve is collapsed by 50~\% with the burning rate increased by 50~\%. The 50 kW/m$^2$ simply returns the test data curve. A fourth surface is modeled that uses the 25 and 75 kW/m$^2$ with the sample exposed to a flux of 50 kW/m$^2$. The resulting burning rate is an average of the 25 and 75 kW/m$^2$ test data. Both extrapolation and interpolation do not perfectly reproduce the test data; however, they do capture the general behavior in terms of burning duration, peak burning rate, and time of peak.

\begin{lstlisting}
&MATL ID='SAMPLE', CONDUCTIVITY=100, DENSITY=1000, SPECIFIC_HEAT=1, EMISSIVITY=1/

&SURF ID='SAMPLE25', IGNITION_TEMPERATURE=0, EXTERNAL_FLUX=25,
HEAT_TRANSFER_COEFFICIENT=0, HRRPUA=1, RAMP_Q='CONE',
REFERENCE_HEAT_FLUX=50,MATL_ID='SAMPLE',THICKNESS=0.01 /
&SURF ID='SAMPLE50', IGNITION_TEMPERATURE=0, EXTERNAL_FLUX=50,
HEAT_TRANSFER_COEFFICIENT=0, HRRPUA=1, RAMP_Q='CONE',
REFERENCE_HEAT_FLUX=50, MATL_ID='SAMPLE', THICKNESS=0.01 /
&SURF ID='SAMPLE75', IGNITION_TEMPERATURE=0, EXTERNAL_FLUX=75,
HEAT_TRANSFER_COEFFICIENT=0, HRRPUA=1, RAMP_Q='CONE',
REFERENCE_HEAT_FLUX=50, MATL_ID='SAMPLE', THICKNESS=0.01 /

&VENT XB=0.1,0.3,0.0,0.1,0.0,0.0, SURF_ID='SAMPLE25' /
&VENT XB=0.6,0.7,0.0,0.1,0.0,0.0, SURF_ID='SAMPLE50' /
&VENT XB=1.1,1.2,0.0,0.1,0.0,0.0, SURF_ID='SAMPLE75' /

&RAMP ID='CONE', T=0, F=0/
&RAMP ID='CONE', T=1, F=2.03437906875814 /
&RAMP ID='CONE', T=2, F=2.12156674313349 /
&SURF ID='SAMPLE25',COLOR='BLUE',IGNITION_TEMPERATURE=0,EXTERNAL_FLUX=25,
HEAT_TRANSFER_COEFFICIENT=0,HRRPUA=1,RAMP_Q='CONE 50',
REFERENCE_HEAT_FLUX=50,MATL_ID='SAMPLE',THICKNESS=0.01/
&SURF ID='SAMPLE50',COLOR='BLUE',IGNITION_TEMPERATURE=0,EXTERNAL_FLUX=50,
HEAT_TRANSFER_COEFFICIENT=0,HRRPUA=1,RAMP_Q='CONE 50',
REFERENCE_HEAT_FLUX=50,MATL_ID='SAMPLE',THICKNESS=0.01/
&SURF ID='SAMPLE75',COLOR='BLUE',IGNITION_TEMPERATURE=0,EXTERNAL_FLUX=75,
HEAT_TRANSFER_COEFFICIENT=0,HRRPUA=1,RAMP_Q='CONE 50',
REFERENCE_HEAT_FLUX=50,MATL_ID='SAMPLE',THICKNESS=0.01/
&SURF ID='SAMPLE50B',COLOR='BLUE',IGNITION_TEMPERATURE=0,EXTERNAL_FLUX=50,
HEAT_TRANSFER_COEFFICIENT=0,HRRPUA=1,RAMP_Q='CONE 25','CONE 75',
REFERENCE_HEAT_FLUX=25,75,MATL_ID='SAMPLE',THICKNESS=0.01/

&MATL ID='SAMPLE',CONDUCTIVITY=100,DENSITY=1000,SPECIFIC_HEAT=1,EMISSIVITY=1/

&VENT XB=0.0,0.1,0.0,0.1,0.0,0.0,SURF_ID='SAMPLE25',IOR=3/
&VENT XB=0.1,0.2,0.0,0.1,0.0,0.0,SURF_ID='SAMPLE50',IOR=3/
&VENT XB=0.2,0.3,0.0,0.1,0.0,0.0,SURF_ID='SAMPLE75',IOR=3/
&VENT XB=0.3,0.4,0.0,0.1,0.0,0.0,SURF_ID='SAMPLE50B',IOR=3/

&RAMP ID='CONE 25',T=0.0,F=0.000/
&RAMP ID='CONE 25',T=1.0,F=0.000/
...
&RAMP ID='CONE 25',T=1281.1,F=0.921/
&RAMP ID='CONE 25',T=1282.1,F=0.000/

&RAMP ID='CONE 50',T=0.0,F=0.000/
&RAMP ID='CONE 50',T=1.0,F=2.034/
...
&RAMP ID='CONE 50',T=509.0,F=43.013/
&RAMP ID='CONE 50',T=510.0,F=0.000/

&RAMP ID='CONE 75',T=0.0,F=1.114/
&RAMP ID='CONE 75',T=1.0,F=0.120/
...
&RAMP ID='CONE', T=509, F=43.0125860251721 /
&RAMP ID='CONE', T=510, F=0/
&RAMP ID='CONE 75',T=329.0,F=269.313/
&RAMP ID='CONE 75',T=330.0,F=0.000/

\end{lstlisting}

\begin{figure}[ht]
Expand Down Expand Up @@ -12858,6 +12885,7 @@ \section{\texorpdfstring{{\tt SURF}}{SURF} (Surface Properties)}
{\ct HT3D} & Logical & Section~\ref{info:ht3d} & & {\ct F} \\ \hline
{\ct ID} & Character & Section~\ref{info:SURF} & & \\ \hline
{\ct IGNITION\_TEMPERATURE} & Real & Section~\ref{info:specified_burning} & $^\circ$C & 5000. \\ \hline
{\ct INERT\_Q\_REF} & Logical & Section~\ref{info:scaled_burning} & & F \\ \hline
{\ct INIT\_IDS} & Char.~Array & Section~\ref{info:trees} & & \\ \hline
{\ct INIT\_PER\_AREA} & Real & Section~\ref{info:trees} & m$^{-2}$ & \\ \hline
{\ct INNER\_RADIUS} & Real & Section~\ref{info:PART_GEOMETRY} & m & \\ \hline
Expand Down Expand Up @@ -12911,8 +12939,9 @@ \section{\texorpdfstring{{\tt SURF}}{SURF} (Surface Properties)}
{\ct RAMP\_V\_X} & Character & Section~\ref{info:RAMP_Vel_Prof} & & \\ \hline
{\ct RAMP\_V\_Y} & Character & Section~\ref{info:RAMP_Vel_Prof} & & \\ \hline
{\ct RAMP\_V\_Z} & Character & Section~\ref{info:RAMP_Vel_Prof} & & \\ \hline
{\ct REFERENCE\_HEAT\_FLUX} & Real & Section~\ref{info:scaled_burning} & \si{kW/m^2} & \\ \hline
{\ct REFERENCE\_HEAT\_FLUX} & Real Array & Section~\ref{info:scaled_burning} & \si{kW/m^2} & \\ \hline
{\ct REFERENCE\_HEAT\_FLUX\_TIME\_INTERVAL} & Real & Section~\ref{info:scaled_burning} & s & 1.0 \\ \hline
{\ct REFERENCE\_THICKNESS} & Real Array & Section~\ref{info:scaled_burning} & m & \\ \hline
{\ct RENODE\_DELTA\_T} & Real & Section~\ref{info:solid_phase_stability} & K & 2 \\ \hline
{\ct RGB(3)} & Integer Array & Section~\ref{info:colors} & & \small 255,204,102 \\ \hline
{\ct ROUGHNESS} & Real & Section~\ref{info:WALL_MODEL} & m & 0. \\ \hline
Expand Down Expand Up @@ -14229,7 +14258,7 @@ \section{File Extension Glossary}


% file extensions ignored by the check_extension script (these keywords are used by the Linux script qfds.sh)
%ignoreext bat
%ignoreext bat
%ignoreext binfo
%ignoreext end
%ignoreext err
Expand All @@ -14247,13 +14276,13 @@ \section{File Extension Glossary}

\bibliography{../Bibliography/FDS_refs,../Bibliography/FDS_general,../Bibliography/FDS_mathcomp}


\appendix

\chapter{Predefined Species}
\label{info:predefined_species}

This appendix lists all predefined species in FDS. If a species name ends in 'p' or 'm', this indicates the positive or negative charge state of that species. If a species ends in 's', this indicates the excited state of that species. This is typically written with a '*' as in CH$^*$. A 'Y in the Liquid column indicates that liquid properties are predefined, and a 'Y' in the Gibbs column indicates that Gibbs energy data is predefined.
This appendix lists all predefined species in FDS. If a species name ends in 'p' or 'm', this indicates the positive or negative charge state of that species. If a species ends in 's', this indicates the excited state of that species. This is typically written with a '*' as in CH$^*$. A 'Y in the Liquid column indicates that liquid properties are predefined, and a 'Y' in the Gibbs column indicates that Gibbs energy data is predefined. Two tables are given, one containing species commonly of interest in fire, common toxic species, and reference species; and a second table containing all species.

\begin{landscape}
\IfFileExists{spec_table.tex}{\input{spec_table.tex}}{\typeout{Error: Missing file spec\_table.tex}}
Expand Down
Loading

0 comments on commit c1666e6

Please sign in to comment.