Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 13 additions & 5 deletions Manuals/FDS_User_Guide/FDS_User_Guide.tex
Original file line number Diff line number Diff line change
Expand Up @@ -3371,10 +3371,12 @@ \subsection{Simulating Bench-scale Measurements like the TGA, DSC, and MCC}
Note: If applying \ct{TGA_ANALYSIS} to a case where the \ct{SURF} is associated with a \ct{PART} class yet to be inserted into the calculation, FDS may not find the \ct{SURF} and hence throw an error. In this case, create a simple case with a single particle that is inserted at the start.
\end{warning}

The result of the \ct{TGA_ANALYSIS} is a single comma-delimited file called \ct{CHID_tga.csv}. The first and second columns of the file consist of the time and sample temperature. The third column is the normalized sample mass; that is, the sample mass divided by its initial mass. The following columns list the mass fractions of the individual material components. The next column is the total mass loss rate, in units of s$^{-1}$, followed by the mass loss rates of the individual material components. The next column is the heat release rate per unit mass of the sample in units of W/g, typical of an MCC measurement. The final column is the rate of heat absorbed by the sample normalized by its {\it original} mass, also in units of W/g, typical of a DSC measurement.
The result of the \ct{TGA_ANALYSIS} is a single comma-delimited file called \ct{CHID_tga.csv}. The first and second columns of the file consist of the time and sample temperature. The third column is the normalized sample mass; that is, the sample mass divided by its initial mass. The following columns list the mass fractions of the individual material components. The next column is the total mass loss rate, in units of s$^{-1}$, followed by the mass loss rates of the individual material components. The next column is the heat release rate per unit mass of the sample in units of W/g, typical of an MCC measurement. The final two columns are the rate of heat absorbed by the sample normalized by its {\it original} mass and by its {\it instantaneous} mass, respectively. The former is labelled \ct{DSC} and the latter \ct{STA}, both in units of W/g. \ct{STA} means Simultaneous Thermal Analysis, where a TGA and DSC measurement are made simultaneously, in which case the instantaneous mass of the sample is available.

The timestep used in the TGA analysis can be controlled with \ct{TGA_DT} on the \ct{SURF} line. The output spacing for temperature can be set with \ct{TGA_DUMP} on the \ct{SURF} line.

The \ct{TGA}, \ct{MCC} or \ct{DSC/STA} output can be multiplied by \ct{X_CONVERSION_FACTOR}, where \ct{X} is \ct{TGA}, \ct{MCC}, or \ct{DSC}, respectively. For example, the \ct{DSC} output assumes that an enthermic reaction is represented by a positive peak, and an exothermic reaction by a negative peak. To flip this around, set \ct{DSC_CONVERSION_FACTOR=-1}.

Details of the output quantities are discussed in Sec.~\ref{info:material_components}. Further details on these measurement techniques and how to interpret them are found in the FDS Verification Guide~\cite{FDS_Verification_Guide}.

\subsubsection{Example}
Expand All @@ -3383,13 +3385,16 @@ \subsubsection{Example}

The upper two plots in Fig.~\ref{tga_results} show the results of the TGA analysis; that is, the decrease in mass as a function of sample temperature. The left plot shows the total sample mass and the right shows the individual components. Below these are two plots that show the mass loss rates of the total sample and its components. These plots are simply the (negative) values of the first derivative of the upper plots.

The lower left plot in Fig.~\ref{tga_analysis} shows the results of the MCC analysis; that is, the gas phase combustion heat release rate per unit mass of the original sample. Note that this MCC plot does not include evidence of the evaporation of water because water vapor does not combust. The integral (with respect to time) under the MCC curve yields $Q=12\,680$~J/g. The heat of combustion of the ``cellulose,'' which is the assumed gas phase fuel resulting from the pyrolysis of dry wood and char, is $h_{\rm c}=14\,988$~J/g. The dry wood and char constitute $Y=0.846$ of the original sample, thus $h_{\rm c} \, Y \approx Q$.
The lower left plot in Fig.~\ref{tga_analysis} shows the results of the MCC analysis; that is, the gas phase combustion heat release rate per unit mass of the original sample. Note that this MCC plot does not include evidence of the evaporation of water because water vapor does not combust. The integral (with respect to time) under the MCC curve yields $Q=12\,680$~J/g. The heat of combustion of the ``cellulose,'' which is the assumed gas phase fuel resulting from the pyrolysis of dry wood and char, is $h_{\rm c}=14\,988$~J/g. The dry wood and char constitute $Y=0.846$ of the original sample, thus $h_{\rm c} \, Y \approx Q$.

The lower right plot Fig.~\ref{tga_analysis} shows the results of the DSC analysis. The curve represents the rate of heat absorbed by the sample. The three peaks represent the endothermic reactions where heat from the hot gas is used to evaporate water or pyrolyze the wood and char. The plateaus between the reaction peaks represent the heating of the solid only. For example, at a temperature of 200~$^\circ$C, the value is $\dot{q}(200)=0.075$~W/g which corresponds to the specific heat of the dry wood which has not yet undergone its conversion to char:
The lower right plot Fig.~\ref{tga_analysis} shows the results of the DSC/STA analysis. The black curve (DSC) represents the rate of heat absorbed per unit mass of the original sample. The red curve represents the rate of heat absorbed per unit mass of the pyrolyzing sample. The three peaks represent the endothermic reactions where heat from the hot gas is used to evaporate water or pyrolyze the wood and char. The plateaus between the reaction peaks represent the heating of the solid only. For example, at a temperature of 500~$^\circ$C, only ash remains and the value of the DSC curve is $\dot{q}_{\rm DSC}(500)\approx0.0045$~W/g from which the value of the specific heat can be computed:
\be
c_p = \frac{\dot{q}_{\rm DSC}(500)}{Y(500) \, \beta} \approx 1 \; \hbox{kJ/(kg K)}
\ee
The term $Y(500)\approx0.054$ in the denominator is the ratio of mass of the ash at 500~$^\circ$C to the mass of the original wet wood. For the STA curve, the specific heat is obtained simply by dividing the STA value $\dot{q}_{\rm STA}(500)\approx0.0834$~W/g by the heating rate, $\beta$.
\be
c_p = \frac{\dot{q}(200)}{Y(200) \, \beta} = 1 \; \hbox{kJ/(kg K)}
c_p = \frac{\dot{q}_{\rm STA}(500)}{\beta} \approx 1 \; \hbox{kJ/(kg K)}
\ee
The term $Y(200)=0.9$ in the denominator is the ratio of mass of the sample at 200~$^\circ$C to the original mass.



Expand Down Expand Up @@ -13398,6 +13403,7 @@ \section{\texorpdfstring{{\tt SURF}}{SURF} (Surface Properties)}
\ct{DEFAULT} & Logical & Section~\ref{info:SURF} & & \ct{F} \\ \hline
\ct{DELTA_TMP_MAX} & Real & Section~\ref{info:solid_phase_stability} & $^\circ$C & 10 \\ \hline
\ct{DRAG_COEFFICIENT} & Real & Section~\ref{info:boundary_fuel_model} & & 2.8 \\ \hline
\ct{DSC_CONVERSION_FACTOR} & Real & Section~\ref{info:TGA_DSC_MCC} & & 1 \\ \hline
\ct{DT_INSERT} & Real & Section~\ref{info:particle_flux} & s & 0.01 \\ \hline
\ct{E_COEFFICIENT} & Real & Section~\ref{info:suppression} & \si{m^2/(kg.s)} & \\ \hline
\ct{EMBER_GENERATION_HEIGHT(2)} & Real & Section~\ref{info:ember_generation_surf} & m & \\ \hline
Expand Down Expand Up @@ -13438,6 +13444,7 @@ \section{\texorpdfstring{{\tt SURF}}{SURF} (Surface Properties)}
\ct{MATL_ID(:,:)} & Char.~Array & Section~\ref{info:solid_pyrolysis} & & \\ \hline
\ct{MATL_MASS_FRACTION(:,:)} & Real Array & Section~\ref{info:solid_pyrolysis} & & \\ \hline
\ct{MAXIMUM_SCALING_HEAT_FLUX} & Real & Section~\ref{info:scaled_burning} & \si{kW/m^2} & \\ \hline
\ct{MCC_CONVERSION_FACTOR} & Real & Section~\ref{info:TGA_DSC_MCC} & & 1 \\ \hline
\ct{MINIMUM_BURNOUT_TIME} & Real & Section~\ref{veg_burnout_time} & s & 1000000 \\ \hline
\ct{MINIMUM_LAYER_THICKNESS} & Real & Section~\ref{info:solid_phase_stability} & m & 1.E-4 \\ \hline
\ct{MINIMUM_SCALING_HEAT_FLUX} & Real & Section~\ref{info:scaled_burning} & \si{kW/m^2} & 0 \\ \hline
Expand Down Expand Up @@ -13497,6 +13504,7 @@ \section{\texorpdfstring{{\tt SURF}}{SURF} (Surface Properties)}
\ct{TEXTURE_MAP} & Character & Section~\ref{info:texture_map} & & \\ \hline
\ct{TEXTURE_WIDTH} & Real & Section~\ref{info:texture_map} & m & 1. \\ \hline
\ct{TGA_ANALYSIS} & Logical & Section~\ref{info:TGA_DSC_MCC} & & \ct{F} \\ \hline
\ct{TGA_CONVERSION_FACTOR} & Real & Section~\ref{info:TGA_DSC_MCC} & & 1 \\ \hline
\ct{TGA_DT} & Real & Section~\ref{info:TGA_DSC_MCC} & s & 0.01 \\ \hline
\ct{TGA_DUMP} & Real & Section~\ref{info:TGA_DSC_MCC} & K & 1 \\ \hline
\ct{TGA_FINAL_TEMPERATURE} & Real & Section~\ref{info:TGA_DSC_MCC} & $^\circ$C & 800. \\ \hline
Expand Down
3 changes: 3 additions & 0 deletions Source/cons.f90
Original file line number Diff line number Diff line change
Expand Up @@ -747,6 +747,9 @@ MODULE GLOBAL_CONSTANTS
REAL(EB) :: TGA_DUMP=1._EB !< Temperature output interval (K), starting at TMPA, to use for special TGA calculation
REAL(EB) :: TGA_HEATING_RATE=5._EB !< Heat rate (K/min) to use for special TGA calculation
REAL(EB) :: TGA_FINAL_TEMPERATURE=800._EB !< Final Temperature (C) to use for special TGA calculation
REAL(EB) :: TGA_CONVERSION_FACTOR=1._EB !< Conversion factor for TGA output
REAL(EB) :: MCC_CONVERSION_FACTOR=1._EB !< Conversion factor for MCC output
REAL(EB) :: DSC_CONVERSION_FACTOR=1._EB !< Conversion factor for DSC output

LOGICAL :: IBLANK_SMV=.TRUE. !< Parameter passed to smokeview (in .smv file) to control generation of blockages

Expand Down
9 changes: 5 additions & 4 deletions Source/read.f90
Original file line number Diff line number Diff line change
Expand Up @@ -7736,7 +7736,7 @@ SUBROUTINE READ_SURF(QUICK_READ)
NAMELIST /SURF/ ADIABATIC,ALLOW_SURFACE_PARTICLES,ALLOW_UNDERSIDE_PARTICLES,AREA_MULTIPLIER,BACKING,BLOWING,&
BURN_AWAY,BURN_DURATION,CELL_SIZE,CELL_SIZE_FACTOR,COLOR,&
CONVECTION_LENGTH_SCALE,CONVECTIVE_HEAT_FLUX,CONVERT_VOLUME_TO_MASS,DEFAULT,DELTA_TMP_MAX,DRAG_COEFFICIENT,&
DT_INSERT,E_COEFFICIENT,&
DSC_CONVERSION_FACTOR,DT_INSERT,E_COEFFICIENT,&
EMBER_GENERATION_HEIGHT,EMBER_IGNITION_POWER_MEAN,EMBER_IGNITION_POWER_SIGMA,EMBER_TRACKING_RATIO,EMBER_YIELD,&
EMISSIVITY,EMISSIVITY_BACK,EXTERNAL_FLUX,EXTINCTION_TEMPERATURE,&
FREE_SLIP,INERT_Q_REF,FYI,GEOMETRY,HEAT_OF_VAPORIZATION,HEAT_TRANSFER_COEFFICIENT,HEAT_TRANSFER_COEFFICIENT_BACK,&
Expand All @@ -7745,7 +7745,8 @@ SUBROUTINE READ_SURF(QUICK_READ)
INNER_RADIUS,INTERNAL_HEAT_SOURCE,LAYER_DIVIDE,&
LEAK_PATH,LEAK_PATH_ID,LENGTH,MASS_FLUX,MASS_FLUX_TOTAL,MASS_FLUX_VAR,MASS_FRACTION,&
MASS_TRANSFER_COEFFICIENT, &
MATL_ID,MATL_MASS_FRACTION,MASS_PER_VOLUME,MINIMUM_BURNOUT_TIME,MINIMUM_LAYER_THICKNESS,MLRPUA,MOISTURE_FRACTION,&
MATL_ID,MATL_MASS_FRACTION,MASS_PER_VOLUME,MCC_CONVERSION_FACTOR,MINIMUM_BURNOUT_TIME,&
MINIMUM_LAYER_THICKNESS,MLRPUA,MOISTURE_FRACTION,&
N_LAYER_CELLS_MAX,NEAR_WALL_EDDY_VISCOSITY,NEAR_WALL_TURBULENCE_MODEL,NET_HEAT_FLUX,&
NO_SLIP,NPPC,NUSSELT_C0,NUSSELT_C1,NUSSELT_C2,NUSSELT_M,&
PARTICLE_EXTRACTION_VELOCITY,PARTICLE_MASS_FLUX,PARTICLE_SURFACE_DENSITY,PART_ID,&
Expand All @@ -7757,8 +7758,8 @@ SUBROUTINE READ_SURF(QUICK_READ)
RGB,ROUGHNESS,SHAPE_FACTOR,SPEC_ID,&
SPREAD_RATE,STRETCH_FACTOR,SURFACE_VOLUME_RATIO,&
TAU_EF,TAU_MF,TAU_PART,TAU_Q,TAU_T,TAU_V,TEXTURE_HEIGHT,TEXTURE_MAP,TEXTURE_WIDTH,&
TGA_ANALYSIS,TGA_DT,TGA_DUMP,TGA_FINAL_TEMPERATURE,TGA_HEATING_RATE,THICKNESS,TIME_STEP_FACTOR,&
TMP_BACK,TMP_FRONT,TMP_FRONT_INITIAL,TMP_GAS_BACK,TMP_GAS_FRONT,TMP_INNER,TRANSPARENCY,&
TGA_ANALYSIS,TGA_CONVERSION_FACTOR,TGA_DT,TGA_DUMP,TGA_FINAL_TEMPERATURE,TGA_HEATING_RATE,THICKNESS,&
TIME_STEP_FACTOR,TMP_BACK,TMP_FRONT,TMP_FRONT_INITIAL,TMP_GAS_BACK,TMP_GAS_FRONT,TMP_INNER,TRANSPARENCY,&
VEG_LSET_BETA,VEG_LSET_CHAR_FRACTION,VEG_LSET_FIREBASE_TIME,VEG_LSET_FUEL_INDEX,VEG_LSET_HT,VEG_LSET_IGNITE_TIME,&
VEG_LSET_M1,VEG_LSET_M10,VEG_LSET_M100,VEG_LSET_MLW,VEG_LSET_MLH,VEG_LSET_QCON,&
VEG_LSET_ROS_00,VEG_LSET_ROS_BACK,VEG_LSET_ROS_FLANK,VEG_LSET_ROS_HEAD,VEG_LSET_ROS_FIXED,VEG_LSET_SIGMA,&
Expand Down
23 changes: 13 additions & 10 deletions Source/wall.f90
Original file line number Diff line number Diff line change
Expand Up @@ -3840,15 +3840,15 @@ SUBROUTINE TGA_ANALYSIS(NM)

OPEN (LU_TGA,FILE=FN_TGA,FORM='FORMATTED',STATUS='REPLACE')
WRITE(TCFORM,'(A,I3.3,A,I3.3,A)') "(A,",SF%N_MATL+1,"(A,',')",SF%N_MATL+1,"(A,','),A)"
WRITE(LU_TGA,TCFORM) 's,C,',('g/g',N=1,SF%N_MATL+1),('1/s',N=1,SF%N_MATL+1),'W/g,W/g'
WRITE(LU_TGA,TCFORM) 's,C,',('g/g',N=1,SF%N_MATL+1),('1/s',N=1,SF%N_MATL+1),'W/g,W/g,W/g'
WRITE(LU_TGA,TCFORM) 'Time,Temp,','Total Mass',(TRIM(MATERIAL(ONE_D%MATL_INDEX(N))%ID)//' Mass',N=1,SF%N_MATL),'Total MLR',&
(TRIM(MATERIAL(ONE_D%MATL_INDEX(N))%ID)//' MLR',N=1,SF%N_MATL),'MCC,DSC'
(TRIM(MATERIAL(ONE_D%MATL_INDEX(N))%ID)//' MLR',N=1,SF%N_MATL),'MCC,DSC,STA'

SURF_DEN_0 = SF%SURFACE_DENSITY
WRITE(TCFORM,'(A,I3.3,5A)') "(",2*SF%N_MATL+5,"(",TRIM(FMT_R),",','),",TRIM(FMT_R),")"
WRITE(TCFORM,'(A,I3.3,5A)') "(",2*SF%N_MATL+6,"(",TRIM(FMT_R),",','),",TRIM(FMT_R),")"
TMP_DUMP = TMPA + TGA_DUMP
DO I=1,N_TGA
IF (ONE_D%LAYER_THICKNESS(1)<TWO_EPSILON_EB) EXIT
TMP_LOOP: DO I=1,N_TGA
IF (ONE_D%LAYER_THICKNESS(1)<TWO_EPSILON_EB) EXIT TMP_LOOP
T_TGA = REAL(I,EB)*TGA_DT
B1%TMP_G = TMPA + TGA_HEATING_RATE*T_TGA
IF (TGA_WALL_INDEX>0) THEN
Expand Down Expand Up @@ -3878,12 +3878,15 @@ SUBROUTINE TGA_ANALYSIS(NM)
ELSE
HRR = 0._EB
ENDIF
WRITE(LU_TGA,TCFORM) REAL(T_TGA,FB), REAL(B1%TMP_G-TMPM,FB), (REAL(SURF_DEN(N)/SURF_DEN_0,FB),N=0,SF%N_MATL), &
REAL(-SUM(ONE_D%M_DOT_S_PP(1:SF%N_MATL))/SURF_DEN_0,FB), &
(REAL(-ONE_D%M_DOT_S_PP(N)/SURF_DEN_0,FB),N=1,SF%N_MATL), &
REAL(HRR,FB), REAL(B1%HEAT_TRANS_COEF*(B1%TMP_G-B1%TMP_F)*0.001_EB/SURF_DEN_0,FB)
WRITE(LU_TGA,TCFORM) REAL(T_TGA,FB), REAL(B1%TMP_G-TMPM,FB), &
(REAL(TGA_CONVERSION_FACTOR*SURF_DEN(N)/SURF_DEN_0,FB),N=0,SF%N_MATL), &
REAL(-TGA_CONVERSION_FACTOR*SUM(ONE_D%M_DOT_S_PP(1:SF%N_MATL))/SURF_DEN_0,FB), &
(REAL(-TGA_CONVERSION_FACTOR*ONE_D%M_DOT_S_PP(N)/SURF_DEN_0,FB),N=1,SF%N_MATL), &
REAL(MCC_CONVERSION_FACTOR*HRR,FB), &
REAL(DSC_CONVERSION_FACTOR*B1%HEAT_TRANS_COEF*(B1%TMP_G-B1%TMP_F)*0.001_EB/SURF_DEN_0,FB), &
REAL(DSC_CONVERSION_FACTOR*B1%HEAT_TRANS_COEF*(B1%TMP_G-B1%TMP_F)*0.001_EB/SURF_DEN(0),FB)
ENDIF
ENDDO
ENDDO TMP_LOOP

CLOSE(LU_TGA)
DEALLOCATE(SURF_DEN)
Expand Down
Loading