From ae888d99cba7b0ecad1dc17d5918f5c2ac1474e5 Mon Sep 17 00:00:00 2001 From: mcgratta Date: Wed, 29 Jul 2026 17:35:04 -0400 Subject: [PATCH 1/9] FDS Validation: Add Sandia_Fireballs --- .../Sandia_Fireballs/.gitignore | 0 Utilities/Python/scripts/Sandia_Fireballs.py | 70 +++++++++++++++++++ Validation/Process_All_Output.sh | 1 + Validation/Run_Parallel.sh | 1 + .../FDS_Input_Files/ethane_fireball.fds | 59 ++++++++++++++++ .../FDS_Input_Files/ethylene_fireball.fds | 59 ++++++++++++++++ .../FDS_Input_Files/isopentane_fireball.fds | 59 ++++++++++++++++ Validation/Sandia_Fireballs/Process_Output.sh | 10 +++ Validation/Sandia_Fireballs/Run_All.sh | 12 ++++ 9 files changed, 271 insertions(+) create mode 100644 Manuals/FDS_Validation_Guide/SCRIPT_FIGURES/Sandia_Fireballs/.gitignore create mode 100644 Utilities/Python/scripts/Sandia_Fireballs.py create mode 100644 Validation/Sandia_Fireballs/FDS_Input_Files/ethane_fireball.fds create mode 100644 Validation/Sandia_Fireballs/FDS_Input_Files/ethylene_fireball.fds create mode 100644 Validation/Sandia_Fireballs/FDS_Input_Files/isopentane_fireball.fds create mode 100755 Validation/Sandia_Fireballs/Process_Output.sh create mode 100755 Validation/Sandia_Fireballs/Run_All.sh diff --git a/Manuals/FDS_Validation_Guide/SCRIPT_FIGURES/Sandia_Fireballs/.gitignore b/Manuals/FDS_Validation_Guide/SCRIPT_FIGURES/Sandia_Fireballs/.gitignore new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Utilities/Python/scripts/Sandia_Fireballs.py b/Utilities/Python/scripts/Sandia_Fireballs.py new file mode 100644 index 00000000000..bfa872b7282 --- /dev/null +++ b/Utilities/Python/scripts/Sandia_Fireballs.py @@ -0,0 +1,70 @@ + +import pandas as pd +import numpy as np +import os + +# include FDS plot styles, etc. +import fdsplotlib + +# Get plot style parameters +plot_style = fdsplotlib.get_plot_style('fds') + +expdir = '../../../exp/Sandia_Fireballs/' +outdir = '../../../out/Sandia_Fireballs/' +figdir = '../../Manuals/FDS_Validation_Guide/SCRIPT_FIGURES/Sandia_Fireballs/' + +E_file = ['ethane_fireball.csv','ethylene_fireball.csv','isopentane_fireball.csv'] +M_file = ['ethane_fireball_cat_devc.csv','ethylene_fireball_cat_devc.csv','isopentane_fireball_cat_devc.csv'] + +marker = ['ko','ro','go'] +label = ['Ethane','Ethylene','Isopentane'] + +git_file = os.path.join(outdir, f'ethane_fireball_cat_git.txt') +version_string = fdsplotlib.get_version_string(git_file) + +fig = fdsplotlib.plot_to_fig([0,80],[0,80], marker_style='k-', + x_min=0, x_max=80, y_min=0, y_max=80, + figure_size=(plot_style['Scat_Paper_Width'],plot_style['Scat_Paper_Height']), + plot_size=(plot_style['Scat_Plot_Width'],plot_style['Scat_Plot_Height']), + plot_origin=(plot_style['Scat_Plot_X'],plot_style['Scat_Plot_Y']), + legend_location='upper left', + revision_label=version_string, + x_label='Measured Heat Flux (kW/m²)', + y_label='Predicted Heat Flux (kW/m²)' + ) + +for i in range(3): + + # Read first CSV file and extract second column into array E + df1 = pd.read_csv(expdir + E_file[i], skiprows=0) + E = df1.iloc[:,1].values # Second column (index 1) + + # Read second CSV file, skip first two rows, and extract the max value into array M + df2 = pd.read_csv(outdir + M_file[i], skiprows=2) + M = df2.iloc[:, 4:].max().values + + # Remove NaN values by creating a mask for valid (non-NaN) values in both arrays + # Ensure both arrays have the same length by taking the minimum length + min_length = min(len(E), len(M)) + E = E[:min_length] + M = M[:min_length] + + # Create mask for non-NaN values in both arrays + valid_mask = ~(np.isnan(E) | np.isnan(M)) + E_clean = E[valid_mask] + M_clean = M[valid_mask] + + # Add data to scatterplot + fdsplotlib.plot_to_fig(E_clean, M_clean,figure_handle=fig, + marker_style=marker[i], + data_label=label[i]) + + df = pd.DataFrame({'Index': range(len(M_clean)),'Heat Flux': M_clean}) + df.to_csv(outdir + label[i] + '.csv', index=False) + df = pd.DataFrame({'Index': range(len(E_clean)),'Heat Flux': E_clean}) + df.to_csv(expdir + label[i] + '.csv', index=False) + +# Save as PDF +fig_file = os.path.join(figdir, f'Sandia_Fireballs.pdf') +fig.savefig(fig_file, format='pdf') + diff --git a/Validation/Process_All_Output.sh b/Validation/Process_All_Output.sh index 2f29c976012..639b6c2d6c3 100755 --- a/Validation/Process_All_Output.sh +++ b/Validation/Process_All_Output.sh @@ -166,6 +166,7 @@ PROCESS PRISME PROCESS Purdue_Flames PROCESS Ranz_Marshall PROCESS Restivo_Experiment +PROCESS Sandia_Fireballs PROCESS Sandia_Jet_Fires PROCESS Sandia_Methane_Burner PROCESS Sandia_Plumes diff --git a/Validation/Run_Parallel.sh b/Validation/Run_Parallel.sh index 14f9065e601..0d446e49421 100755 --- a/Validation/Run_Parallel.sh +++ b/Validation/Run_Parallel.sh @@ -62,6 +62,7 @@ cd OMP_Scaling_Tests; ./Run_All.sh $OPTIONS; cd .. cd Phoenix_LNG_Fires; ./Run_All.sh $OPTIONS; cd .. cd Pool_Fires; ./Run_All.sh $OPTIONS; cd .. cd Purdue_Flames; ./Run_All.sh $OPTIONS; cd .. +cd Sandia_Fireballs; ./Run_All.sh $OPTIONS; cd .. cd Sandia_Jet_Fires; ./Run_All.sh $OPTIONS; cd .. cd Sandia_Methane_Burner; ./Run_All.sh $OPTIONS; cd .. cd Sandia_Plumes; ./Run_All.sh $OPTIONS; cd .. diff --git a/Validation/Sandia_Fireballs/FDS_Input_Files/ethane_fireball.fds b/Validation/Sandia_Fireballs/FDS_Input_Files/ethane_fireball.fds new file mode 100644 index 00000000000..3bfced8932e --- /dev/null +++ b/Validation/Sandia_Fireballs/FDS_Input_Files/ethane_fireball.fds @@ -0,0 +1,59 @@ +&HEAD CHID='ethane_fireball', TITLE='Sandia Fireballs' / + +&TIME T_BEGIN=-10., T_END=20. / +&DUMP DT_HRR=0.1, DT_DEVC=0.1 / + +&MESH IJK=40,40,40, XB=-50,-10,-20,20,0,40, MULT_ID='mesh' / +&MULT ID='mesh', DX=40., DY=40., DZ=40., I_UPPER=3, J_LOWER=-1, J_UPPER=2, K_UPPER=5 / + +&WIND SPEED=3.8, Z_REF=2., DIRECTION=232.8, L=-500., Z_0=0.1 / + +&VENT MB='XMIN', SURF_ID='OPEN' / +&VENT MB='XMAX', SURF_ID='OPEN' / +&VENT MB='YMIN', SURF_ID='OPEN' / +&VENT MB='YMAX', SURF_ID='OPEN' / +&VENT MB='ZMAX', SURF_ID='OPEN' / + +&RADI NUMBER_RADIATION_ANGLES=600, PATH_LENGTH=100. / + +&REAC FUEL ='ETHANE', + SOOT_YIELD=0.001, + RADIATIVE_FRACTION=0.25 / + +&VENT XB=-1.0,1.0,-1.0,1.0,0.,0., SURF_ID='INJECTION' / + +&SURF ID='INJECTION', MASS_FLUX(1)=289.3, SPEC_ID(1)='ETHANE', TMP_FRONT=-32.8, RAMP_MF(1)='fuel', COLOR='RED', NO_SLIP=T / + +&RAMP ID='fuel', T= 0.00, F=0.0 / +&RAMP ID='fuel', T= 0.20, F=0.0 / +&RAMP ID='fuel', T= 0.21, F=1.0 / +&RAMP ID='fuel', T= 1.21, F=1.0 / +&RAMP ID='fuel', T= 1.22, F=0.0 / + +&DEVC ID='HRR_S', X_ID='x', QUANTITY='HRRPUV', XB=-49.5,109.5,20,20,120,120, POINTS=160, DX=0.5, DY=80, DZ=120, SPATIAL_STATISTIC='VOLUME INTEGRAL', TIME_HISTORY=T, OUTPUT=F / +&CTRL ID='x1', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_S-1', PERCENTILE=0.03 / +&CTRL ID='x2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_S-1', PERCENTILE=0.97 / +&CTRL ID='D_S', FUNCTION_TYPE='SUBTRACT', INPUT_ID='x2','x1' / +&DEVC ID='D_S_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_S', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / + +&DEVC ID='HRR_E', Y_ID='y', QUANTITY='HRRPUV', XB=30,30,-59.5,99.5,120,120, POINTS=160, DX=80, DY=0.5, DZ=120, SPATIAL_STATISTIC='VOLUME INTEGRAL', TIME_HISTORY=T, OUTPUT=F / +&CTRL ID='y1', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.03 / +&CTRL ID='y2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.97 / +&CTRL ID='D_E', FUNCTION_TYPE='SUBTRACT', INPUT_ID='y2','y1' / +&DEVC ID='D_E_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_E', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / + +&DEVC ID='Height', QUANTITY='HRRPUV', XB=-50,110,-60,100,0,240, SPATIAL_STATISTIC='CENTROID Z' / + +&SLCF PBY=0.1, QUANTITY='TEMPERATURE', CELL_CENTERED=T / +&SLCF PBY=0.1, QUANTITY='VELOCITY', VECTOR=T / +&SLCF PBY=0.1, QUANTITY='INTEGRATED INTENSITY', CELL_CENTERED=T / +&SLCF PBZ=0.1, QUANTITY='INTEGRATED INTENSITY', CELL_CENTERED=T / +&SLCF PBY=0.1, QUANTITY='HRRPUV', CELL_CENTERED=T / +&SLCF PBY=0.1, QUANTITY='VOLUME FRACTION', SPEC_ID='ETHANE', CELL_CENTERED=T / + +&BNDF QUANTITY='RADIATIVE HEAT FLUX' / + +&CATF OTHER_FILES='fireball_devices.txt' / + +&TAIL / + diff --git a/Validation/Sandia_Fireballs/FDS_Input_Files/ethylene_fireball.fds b/Validation/Sandia_Fireballs/FDS_Input_Files/ethylene_fireball.fds new file mode 100644 index 00000000000..50184a19e04 --- /dev/null +++ b/Validation/Sandia_Fireballs/FDS_Input_Files/ethylene_fireball.fds @@ -0,0 +1,59 @@ +&HEAD CHID='ethylene_fireball', TITLE='Sandia Fireballs' / + +&TIME T_BEGIN=-10., T_END=20. / +&DUMP DT_HRR=0.1, DT_DEVC=0.1 / + +&MESH IJK=40,40,40, XB=-50,-10,-20,20,0,40, MULT_ID='mesh' / +&MULT ID='mesh', DX=40., DY=40., DZ=40., I_UPPER=3, J_LOWER=-1, J_UPPER=2, K_UPPER=5 / + +&WIND SPEED=0.87, Z_REF=2., DIRECTION=54.9, L=-500., Z_0=0.1 / + +&VENT MB='XMIN', SURF_ID='OPEN' / +&VENT MB='XMAX', SURF_ID='OPEN' / +&VENT MB='YMIN', SURF_ID='OPEN' / +&VENT MB='YMAX', SURF_ID='OPEN' / +&VENT MB='ZMAX', SURF_ID='OPEN' / + +&RADI NUMBER_RADIATION_ANGLES=600, PATH_LENGTH=100. / + +&REAC FUEL ='ETHYLENE', + SOOT_YIELD=0.01, + RADIATIVE_FRACTION=0.34 / + +&VENT XB=-1.0,1.0,-1.0,1.0,0.,0., SURF_ID='INJECTION' / + +&SURF ID='INJECTION', MASS_FLUX(1)=288.3, SPEC_ID(1)='ETHYLENE', TMP_FRONT=-59.4, RAMP_MF(1)='fuel', COLOR='RED', NO_SLIP=T / + +&RAMP ID='fuel', T= 0.00, F=0.0 / +&RAMP ID='fuel', T= 0.20, F=0.0 / +&RAMP ID='fuel', T= 0.21, F=1.0 / +&RAMP ID='fuel', T= 1.21, F=1.0 / +&RAMP ID='fuel', T= 1.22, F=0.0 / + +&DEVC ID='HRR_S', X_ID='x', QUANTITY='HRRPUV', XB=-49.5,109.5,20,20,120,120, POINTS=160, DX=0.5, DY=80, DZ=120, SPATIAL_STATISTIC='VOLUME INTEGRAL', TIME_HISTORY=T, OUTPUT=F / +&CTRL ID='x1', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_S-1', PERCENTILE=0.03 / +&CTRL ID='x2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_S-1', PERCENTILE=0.97 / +&CTRL ID='D_S', FUNCTION_TYPE='SUBTRACT', INPUT_ID='x2','x1' / +&DEVC ID='D_S_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_S', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / + +&DEVC ID='HRR_E', Y_ID='y', QUANTITY='HRRPUV', XB=30,30,-59.5,99.5,120,120, POINTS=160, DX=80, DY=0.5, DZ=120, SPATIAL_STATISTIC='VOLUME INTEGRAL', TIME_HISTORY=T, OUTPUT=F / +&CTRL ID='y1', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.03 / +&CTRL ID='y2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.97 / +&CTRL ID='D_E', FUNCTION_TYPE='SUBTRACT', INPUT_ID='y2','y1' / +&DEVC ID='D_E_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_E', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / + +&DEVC ID='Height', QUANTITY='HRRPUV', XB=-50,110,-60,100,0,240, SPATIAL_STATISTIC='CENTROID Z' / + +&SLCF PBY=0.1, QUANTITY='TEMPERATURE', CELL_CENTERED=T / +&SLCF PBY=0.1, QUANTITY='VELOCITY', VECTOR=T / +&SLCF PBY=0.1, QUANTITY='INTEGRATED INTENSITY', CELL_CENTERED=T / +&SLCF PBZ=0.1, QUANTITY='INTEGRATED INTENSITY', CELL_CENTERED=T / +&SLCF PBY=0.1, QUANTITY='HRRPUV', CELL_CENTERED=T / +&SLCF PBY=0.1, QUANTITY='VOLUME FRACTION', SPEC_ID='ETHYLENE', CELL_CENTERED=T / + +&BNDF QUANTITY='RADIATIVE HEAT FLUX' / + +&CATF OTHER_FILES='fireball_devices.txt' / + +&TAIL / + diff --git a/Validation/Sandia_Fireballs/FDS_Input_Files/isopentane_fireball.fds b/Validation/Sandia_Fireballs/FDS_Input_Files/isopentane_fireball.fds new file mode 100644 index 00000000000..4bba338905c --- /dev/null +++ b/Validation/Sandia_Fireballs/FDS_Input_Files/isopentane_fireball.fds @@ -0,0 +1,59 @@ +&HEAD CHID='isopentane_fireball', TITLE='Sandia Fireballs' / + +&TIME T_BEGIN=-10., T_END=20. / +&DUMP DT_HRR=0.1, DT_DEVC=0.1 / + +&MESH IJK=40,40,40, XB=-50,-10,-20,20,0,40, MULT_ID='mesh' / +&MULT ID='mesh', DX=40., DY=40., DZ=40., I_UPPER=3, J_LOWER=-1, J_UPPER=2, K_UPPER=5 / + +&WIND SPEED=1.1, Z_REF=2., DIRECTION=111.8, L=-500., Z_0=0.1 / + +&VENT MB='XMIN', SURF_ID='OPEN' / +&VENT MB='XMAX', SURF_ID='OPEN' / +&VENT MB='YMIN', SURF_ID='OPEN' / +&VENT MB='YMAX', SURF_ID='OPEN' / +&VENT MB='ZMAX', SURF_ID='OPEN' / + +&RADI NUMBER_RADIATION_ANGLES=600, PATH_LENGTH=100. / + +&REAC FUEL ='N-PENTANE', + SOOT_YIELD=0.05, + RADIATIVE_FRACTION=0.40 / + +&VENT XB=-1.0,1.0,-1.0,1.0,0.,0., SURF_ID='INJECTION' / + +&SURF ID='INJECTION', MASS_FLUX(1)=287.5, SPEC_ID(1)='N-PENTANE', TMP_FRONT=114., RAMP_MF(1)='fuel', COLOR='RED', NO_SLIP=T / + +&RAMP ID='fuel', T= 0.00, F=0.0 / +&RAMP ID='fuel', T= 0.20, F=0.0 / +&RAMP ID='fuel', T= 0.21, F=1.0 / +&RAMP ID='fuel', T= 1.21, F=1.0 / +&RAMP ID='fuel', T= 1.22, F=0.0 / + +&DEVC ID='HRR_S', X_ID='x', QUANTITY='HRRPUV', XB=-49.5,109.5,20,20,120,120, POINTS=160, DX=0.5, DY=80, DZ=120, SPATIAL_STATISTIC='VOLUME INTEGRAL', TIME_HISTORY=T, OUTPUT=F / +&CTRL ID='x1', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_S-1', PERCENTILE=0.03 / +&CTRL ID='x2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_S-1', PERCENTILE=0.97 / +&CTRL ID='D_S', FUNCTION_TYPE='SUBTRACT', INPUT_ID='x2','x1' / +&DEVC ID='D_S_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_S', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / + +&DEVC ID='HRR_E', Y_ID='y', QUANTITY='HRRPUV', XB=30,30,-59.5,99.5,120,120, POINTS=160, DX=80, DY=0.5, DZ=120, SPATIAL_STATISTIC='VOLUME INTEGRAL', TIME_HISTORY=T, OUTPUT=F / +&CTRL ID='y1', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.03 / +&CTRL ID='y2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.97 / +&CTRL ID='D_E', FUNCTION_TYPE='SUBTRACT', INPUT_ID='y2','y1' / +&DEVC ID='D_E_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_E', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / + +&DEVC ID='Height', QUANTITY='HRRPUV', XB=-50,110,-60,100,0,240, SPATIAL_STATISTIC='CENTROID Z' / + +&SLCF PBY=0.1, QUANTITY='TEMPERATURE', CELL_CENTERED=T / +&SLCF PBY=0.1, QUANTITY='VELOCITY', VECTOR=T / +&SLCF PBY=0.1, QUANTITY='INTEGRATED INTENSITY', CELL_CENTERED=T / +&SLCF PBZ=0.1, QUANTITY='INTEGRATED INTENSITY', CELL_CENTERED=T / +&SLCF PBY=0.1, QUANTITY='HRRPUV', CELL_CENTERED=T / +&SLCF PBY=0.1, QUANTITY='VOLUME FRACTION', SPEC_ID='N-PENTANE', CELL_CENTERED=T / + +&BNDF QUANTITY='RADIATIVE HEAT FLUX' / + +&CATF OTHER_FILES='fireball_devices.txt' / + +&TAIL / + diff --git a/Validation/Sandia_Fireballs/Process_Output.sh b/Validation/Sandia_Fireballs/Process_Output.sh new file mode 100755 index 00000000000..66ccae6213c --- /dev/null +++ b/Validation/Sandia_Fireballs/Process_Output.sh @@ -0,0 +1,10 @@ +#!/bin/bash +PDIR=../../../out +CUR=`pwd` +DIR=`basename $CUR` + +DDIR=Current_Results +WDIR=$PDIR/$DIR +cp $DDIR/*devc.csv $WDIR +cp $DDIR/*git.txt $WDIR + diff --git a/Validation/Sandia_Fireballs/Run_All.sh b/Validation/Sandia_Fireballs/Run_All.sh new file mode 100755 index 00000000000..691c384b13a --- /dev/null +++ b/Validation/Sandia_Fireballs/Run_All.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# This script runs a set of Validation Cases on a Linux machine with a batch queuing system. +# See the file Validation/Common_Run_All.sh for more information. +export SVNROOT=`pwd`/../.. +source $SVNROOT/Validation/Common_Run_All.sh + +$QFDS $DEBUG $QUEUE -p 96 -d $INDIR ethane_fireball.fds +$QFDS $DEBUG $QUEUE -p 96 -d $INDIR ethylene_fireball.fds +$QFDS $DEBUG $QUEUE -p 96 -d $INDIR isopentane_fireball.fds + +echo FDS cases submitted From 2838d22125293f7fdda45e9c4f54963e4e2e879c Mon Sep 17 00:00:00 2001 From: mcgratta Date: Thu, 30 Jul 2026 10:22:34 -0400 Subject: [PATCH 2/9] FDS Validation: Add Sandia_Fireballs to scatterplot --- Utilities/Python/FDS_validation_dataplot_inputs.csv | 4 ++++ Utilities/Python/FDS_validation_script.py | 1 + Utilities/Python/scripts/Sandia_Pool_Fires.py | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Utilities/Python/FDS_validation_dataplot_inputs.csv b/Utilities/Python/FDS_validation_dataplot_inputs.csv index 3289d1235fb..e2b0e2d095f 100644 --- a/Utilities/Python/FDS_validation_dataplot_inputs.csv +++ b/Utilities/Python/FDS_validation_dataplot_inputs.csv @@ -6578,6 +6578,10 @@ d,PRISME SOURCE,PRISME/PRS_SI_D5a.csv,1,3,TIME,FLT_L2_WC260|FLT_L2_NC260|FLT_L2_ d,PRISME SOURCE,PRISME/PRS_SI_D6.csv,1,3,TIME,FLT_L2_WC260|FLT_L2_NC260|FLT_L2_EC260|FLT_L2_SC260,Exp (FLT_L2_WC260)|Exp (FLT_L2_NC260)|Exp (FLT_L2_EC260)|Exp (FLT_L2_SC260),k-|r-|g-|m-,0,10000,,0,10000,-10000,10000,0,PRISME/PRS_SI_D6_devc.csv,2,3,Time,FLT_L2_WC260|FLT_L2_NC260|FLT_L2_EC260|FLT_L2_SC260,FDS (FLT_L2_WC260)|FDS (FLT_L2_NC260)|FDS (FLT_L2_EC260)|FDS (FLT_L2_SC260),k--|r--|g--|m--,0,10000,,0,10000,-10000,10000,0,SOURCE Test 6; Room 2 Total Heat Flux,Time (min),Heat Flux (kW/m²),0,60,60,0,6,1,no,0.05 0.90,East,,1,PRISME/PRS_SI_D6_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/PRISME/PRS_SI_D6_Room_2_Total_Heat_Flux_Circle,Surface Heat Flux,max,0,PRISME,mo,m,TeX d,PRISME SOURCE,PRISME/PRS_SI_D6a.csv,1,3,TIME,FLT_L2_WC260|FLT_L2_NC260|FLT_L2_EC260|FLT_L2_SC260,Exp (FLT_L2_WC260)|Exp (FLT_L2_NC260)|Exp (FLT_L2_EC260)|Exp (FLT_L2_SC260),k-|r-|g-|m-,0,10000,,0,10000,-10000,10000,0,PRISME/PRS_SI_D6a_devc.csv,2,3,Time,FLT_L2_WC260|FLT_L2_NC260|FLT_L2_EC260|FLT_L2_SC260,FDS (FLT_L2_WC260)|FDS (FLT_L2_NC260)|FDS (FLT_L2_EC260)|FDS (FLT_L2_SC260),k--|r--|g--|m--,0,10000,,0,10000,-10000,10000,0,SOURCE Test 6a; Room 2 Total Heat Flux,Time (min),Heat Flux (kW/m²),0,60,60,0,6,1,no,0.05 0.90,East,,1,PRISME/PRS_SI_D6_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/PRISME/PRS_SI_D6a_Room_2_Total_Heat_Flux_Circle,Surface Heat Flux,max,0,PRISME,mo,m,TeX s,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +d,Sandia Fireballs,Sandia_Fireballs/Ethane.csv,1,2,Index,Heat Flux,Exp,bo,0,10000,,0,10000,-10000,10000,0,Sandia_Fireballs/Ethane.csv,1,2,Index,Heat Flux,FDS,ro,0,10000,,0,10000,-10000,10000,0,Ethane,Index,Heat Flux (kW/m²),0,32,1,0,100,1,no,0.70 0.90,NorthEast,,1,Sandia_Fireballs/ethane_fireball_cat_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Sandia_Fireballs/Ethane_dummy,Target Heat Flux,all,0,Sandia Fireballs,r<,c,TeX +d,Sandia Fireballs,Sandia_Fireballs/Ethylene.csv,1,2,Index,Heat Flux,Exp,bo,0,10000,,0,10000,-10000,10000,0,Sandia_Fireballs/Ethylene.csv,1,2,Index,Heat Flux,FDS,ro,0,10000,,0,10000,-10000,10000,0,Ethylene,Index,Heat Flux (kW/m²),0,32,1,0,100,1,no,0.70 0.90,NorthEast,,1,Sandia_Fireballs/ethylene_fireball_cat_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Sandia_Fireballs/Ethylene_dummy,Target Heat Flux,all,0,Sandia Fireballs,r<,c,TeX +d,Sandia Fireballs,Sandia_Fireballs/Isopentane.csv,1,2,Index,Heat Flux,Exp,bo,0,10000,,0,10000,-10000,10000,0,Sandia_Fireballs/Isopentane.csv,1,2,Index,Heat Flux,FDS,ro,0,10000,,0,10000,-10000,10000,0,Isopentane,Index,Heat Flux (kW/m²),0,32,1,0,100,1,no,0.70 0.90,NorthEast,,1,Sandia_Fireballs/isopentane_fireball_cat_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Sandia_Fireballs/Isopentane_dummy,Target Heat Flux,all,0,Sandia Fireballs,r<,c,TeX +s,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, d,Sandia Jet Fires,Sandia_Jet_Fires/Ethane.csv,1,2,Index,Heat Flux,Exp,bo,0,10000,,0,10000,-10000,10000,0,Sandia_Jet_Fires/Ethane.csv,1,2,Index,Heat Flux,FDS,ro,0,10000,,0,10000,-10000,10000,0,Ethane,Index,Heat Flux (kW/m²),0,32,1,0,100,1,no,0.70 0.90,NorthEast,,1,Sandia_Jet_Fires/ethane_jet_cat_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Sandia_Jet_Fires/Ethane_dummy,Target Heat Flux,all,0,Sandia Jet Fires,c<,c,TeX d,Sandia Jet Fires,Sandia_Jet_Fires/Ethylene.csv,1,2,Index,Heat Flux,Exp,bo,0,10000,,0,10000,-10000,10000,0,Sandia_Jet_Fires/Ethylene.csv,1,2,Index,Heat Flux,FDS,ro,0,10000,,0,10000,-10000,10000,0,Ethylene,Index,Heat Flux (kW/m²),0,32,1,0,100,1,no,0.70 0.90,NorthEast,,1,Sandia_Jet_Fires/ethylene_jet_cat_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Sandia_Jet_Fires/Ethylene_dummy,Target Heat Flux,all,0,Sandia Jet Fires,c<,c,TeX d,Sandia Jet Fires,Sandia_Jet_Fires/Isopentane.csv,1,2,Index,Heat Flux,Exp,bo,0,10000,,0,10000,-10000,10000,0,Sandia_Jet_Fires/Isopentane.csv,1,2,Index,Heat Flux,FDS,ro,0,10000,,0,10000,-10000,10000,0,Isopentane,Index,Heat Flux (kW/m²),0,32,1,0,100,1,no,0.70 0.90,NorthEast,,1,Sandia_Jet_Fires/isopentane_jet_cat_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Sandia_Jet_Fires/Isopentane_dummy,Target Heat Flux,all,0,Sandia Jet Fires,c<,c,TeX diff --git a/Utilities/Python/FDS_validation_script.py b/Utilities/Python/FDS_validation_script.py index 90470a1e11b..acaa4ac66a0 100644 --- a/Utilities/Python/FDS_validation_script.py +++ b/Utilities/Python/FDS_validation_script.py @@ -37,6 +37,7 @@ def safe_run(script_path): print("Crown_Fires..."); safe_run("./scripts/Crown_Fires.py") print("Ranz_Marshall..."); safe_run("./scripts/Ranz_Marshall.py") print("Phoenix_LNG_Fires..."); safe_run("./scripts/Phoenix_LNG_Fires.py") +print("Sandia_Fireballs..."); safe_run("./scripts/Sandia_Fireballs.py") print("Sandia_Jet_Fires..."); safe_run("./scripts/Sandia_Jet_Fires.py") print("Sandia_Plumes_TKE..."); safe_run("./scripts/Sandia_Plumes_TKE.py") print("Sandia_Pool_Fires..."); safe_run("./scripts/Sandia_Pool_Fires.py") diff --git a/Utilities/Python/scripts/Sandia_Pool_Fires.py b/Utilities/Python/scripts/Sandia_Pool_Fires.py index 80c58dfd9f2..a9bab9706fc 100644 --- a/Utilities/Python/scripts/Sandia_Pool_Fires.py +++ b/Utilities/Python/scripts/Sandia_Pool_Fires.py @@ -16,7 +16,7 @@ E_file = ['ethane_pool.csv','ethylene_pool.csv','propane_pool.csv','isopentane_pool.csv'] M_file = ['ethane_pool_cat_devc.csv','ethylene_pool_cat_devc.csv','propane_pool_cat_devc.csv','isopentane_pool_cat_devc.csv'] -marker = ['ko','ro','go','bo'] +marker = ['ko','ro','bo','go'] label = ['Ethane','Ethylene','Propane','Isopentane'] git_file = os.path.join(outdir, f'ethane_pool_cat_git.txt') From 64760649a49df4323778ed7a401c69b21969a45c Mon Sep 17 00:00:00 2001 From: ericvmueller Date: Thu, 30 Jul 2026 13:54:52 -0400 Subject: [PATCH 3/9] FDS Source: scale SEM eddy contributions using all mesh segments of VENT to preserve mean flow and field continuity --- Source/turb.f90 | 52 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/Source/turb.f90 b/Source/turb.f90 index 29f15e8add4..4056527a55a 100644 --- a/Source/turb.f90 +++ b/Source/turb.f90 @@ -1692,15 +1692,16 @@ SUBROUTINE SYNTHETIC_TURBULENCE(DT,T) USE MATH_FUNCTIONS, ONLY: EVALUATE_RAMP USE PHYSICAL_FUNCTIONS, ONLY: GET_WIND_AT_HEIGHT +USE MPI_F08 REAL(EB), INTENT(IN) :: DT,T INTEGER :: NE,NV,NT,II,JJ,KK,NM -INTEGER :: IN,IA,IC +INTEGER :: IN,IA,IC,IERR TYPE(VENTS_TYPE), POINTER :: VT TYPE(SURFACE_TYPE), POINTER :: SF REAL(EB) :: RAMP_T,TSI,SIGMA_MAX,ADV_VEL(3),SGN,UW,VW,WW,U1,V1,W1 -REAL(EB) :: U_ADD,V_ADD,W_ADD -REAL(EB), ALLOCATABLE :: VENT_VEL(:,:) +REAL(EB) :: U_ADD,V_ADD,W_ADD,U_MEAN +REAL(EB), ALLOCATABLE :: VENT_VEL(:,:),VENT_MEAN_SUM(:),VENT_MEAN_CNT(:) LOGICAL, ALLOCATABLE :: VENT_VEL_SET(:) ! Reference: @@ -1860,6 +1861,51 @@ SUBROUTINE SYNTHETIC_TURBULENCE(DT,T) ENDDO VENT_APPLY_LOOP ENDDO MESH_APPLY_LOOP +! Subtract the vent mean of the normal component so fluctuations do not +! change volume flow. Must be global over TOTAL_INDEX (all mesh sections) +! to avod jumps at mesh interfaces +ALLOCATE(VENT_MEAN_SUM(N_VENT_TOTAL),SOURCE=0._EB) +ALLOCATE(VENT_MEAN_CNT(N_VENT_TOTAL),SOURCE=0._EB) +DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX + CALL POINT_TO_MESH(NM) + DO NV=1,N_VENT + VT => VENTS(NV) + IF (VT%N_EDDY==0) CYCLE + NT = VT%TOTAL_INDEX + SELECT CASE (ABS(VT%IOR)) + CASE(1) + VENT_MEAN_SUM(NT) = VENT_MEAN_SUM(NT) + SUM(VT%U_EDDY) + VENT_MEAN_CNT(NT) = VENT_MEAN_CNT(NT) + REAL(SIZE(VT%U_EDDY),EB) + CASE(2) + VENT_MEAN_SUM(NT) = VENT_MEAN_SUM(NT) + SUM(VT%V_EDDY) + VENT_MEAN_CNT(NT) = VENT_MEAN_CNT(NT) + REAL(SIZE(VT%V_EDDY),EB) + CASE(3) + VENT_MEAN_SUM(NT) = VENT_MEAN_SUM(NT) + SUM(VT%W_EDDY) + VENT_MEAN_CNT(NT) = VENT_MEAN_CNT(NT) + REAL(SIZE(VT%W_EDDY),EB) + END SELECT + ENDDO +ENDDO +IF (N_MPI_PROCESSES>1) THEN + CALL MPI_ALLREDUCE(MPI_IN_PLACE,VENT_MEAN_SUM,N_VENT_TOTAL,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,IERR) + CALL MPI_ALLREDUCE(MPI_IN_PLACE,VENT_MEAN_CNT,N_VENT_TOTAL,MPI_DOUBLE_PRECISION,MPI_SUM,MPI_COMM_WORLD,IERR) +ENDIF +DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX + CALL POINT_TO_MESH(NM) + DO NV=1,N_VENT + VT => VENTS(NV) + IF (VT%N_EDDY==0) CYCLE + NT = VT%TOTAL_INDEX + IF (VENT_MEAN_CNT(NT)<=TWO_EPSILON_EB) CYCLE + U_MEAN = VENT_MEAN_SUM(NT)/VENT_MEAN_CNT(NT) + SELECT CASE (ABS(VT%IOR)) + CASE(1); VT%U_EDDY = VT%U_EDDY - U_MEAN + CASE(2); VT%V_EDDY = VT%V_EDDY - U_MEAN + CASE(3); VT%W_EDDY = VT%W_EDDY - U_MEAN + END SELECT + ENDDO +ENDDO +DEALLOCATE(VENT_MEAN_SUM,VENT_MEAN_CNT) + END SUBROUTINE SYNTHETIC_TURBULENCE From a79fe41ed8f0f3c85b8d4264d5f52152165380f7 Mon Sep 17 00:00:00 2001 From: mcgratta Date: Thu, 30 Jul 2026 15:39:12 -0400 Subject: [PATCH 4/9] FDS Validation: More edits to Sandia_Fireballs --- Utilities/Python/FDS_validation_dataplot_inputs.csv | 10 ++++++++++ Utilities/Python/FDS_validation_scatterplot_inputs.csv | 1 + .../FDS_Input_Files/ethane_fireball.fds | 2 ++ .../FDS_Input_Files/ethylene_fireball.fds | 2 ++ .../FDS_Input_Files/isopentane_fireball.fds | 2 ++ 5 files changed, 17 insertions(+) diff --git a/Utilities/Python/FDS_validation_dataplot_inputs.csv b/Utilities/Python/FDS_validation_dataplot_inputs.csv index e2b0e2d095f..6334742407e 100644 --- a/Utilities/Python/FDS_validation_dataplot_inputs.csv +++ b/Utilities/Python/FDS_validation_dataplot_inputs.csv @@ -1996,6 +1996,16 @@ d,Waterloo Methanol,Submodules/macfp-db/Liquid_Pool_Fires/NIST_Pool_Fires/Experi f,Waterloo Methanol,Submodules/macfp-db/Liquid_Pool_Fires/NIST_Pool_Fires/Experimental_Data/Methanol_30_cm_TC_z=61_cm_Sung_2024.csv,1,2,r_cm,TG_RMS_K,blank,blank,-10000,10000,,-10000,10000,-10000,10000,0,Waterloo_Methanol/Waterloo_Methanol_Prescribed_1cm_line.csv,2,3,r,Trms60,FDS (Trms60; 1.0 cm),r-,-1000,10000,,-1000,10000,-10000,10000,0,$(\overline{T'T'})^{1/2}$; 60 cm above burner,Radius (cm),Temperature (K),-5,20,1,0,500,1,no,0.05 0.90,SouthWest,,1,Waterloo_Methanol/Waterloo_Methanol_Prescribed_1cm_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Waterloo_Methanol/Waterloo_Methanol_RMS_Temperature_60_cm,0,max,0,Waterloo Methanol,b^,b,LaTeX f,Waterloo Methanol,Submodules/macfp-db/Liquid_Pool_Fires/NIST_Pool_Fires/Experimental_Data/Methanol_30_cm_TC_z=61_cm_Sung_2024.csv,1,2,r_cm,TG_RMS_K,blank,blank,-10000,10000,,-10000,10000,-10000,10000,0,Waterloo_Methanol/Waterloo_Methanol_Prescribed_2cm_line.csv,2,3,r,Trms60,FDS (Trms60; 2.0 cm),g-,-1000,10000,,-1000,10000,-10000,10000,0,$(\overline{T'T'})^{1/2}$; 60 cm above burner,Radius (cm),Temperature (K),-5,20,1,0,500,1,no,0.05 0.90,SouthWest,,1,Waterloo_Methanol/Waterloo_Methanol_Prescribed_2cm_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Waterloo_Methanol/Waterloo_Methanol_RMS_Temperature_60_cm,0,max,0,Waterloo Methanol,b^,b,LaTeX s,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +s,Fireball Diameter,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +s,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +d,Sandia Fireballs,Sandia_Fireballs/ethane_fireball_flame.csv,1,2,Time,D_S|D_E,Exp (South)|Exp (East),bo|ro,0,10000,,0,10000,-10000,10000,0,Sandia_Fireballs/ethane_fireball_cat_devc.csv,2,3,Time,D_S_max|D_E_max,FDS (South)|FDS (East),b-|r-,0,10000,,0,10000,-10000,10000,0,Ethane,Time (s),Diameter (m),0,20,1,0,100,1,no,0.05 0.90,NorthEast,,1,Sandia_Fireballs/ethane_fireball_cat_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Sandia_Fireballs/ethane_diameter,Fireball Diameter,max,0,Sandia Fireballs,r<,c,TeX +d,Sandia Fireballs,Sandia_Fireballs/ethylene_fireball_flame.csv,1,2,Time,D_S|D_E,Exp (South)|Exp (East),bo|ro,0,10000,,0,10000,-10000,10000,0,Sandia_Fireballs/ethylene_fireball_cat_devc.csv,2,3,Time,D_S_max|D_E_max,FDS (South)|FDS (East),b-|r-,0,10000,,0,10000,-10000,10000,0,Ethylene,Time (s),Diameter (m),0,20,1,0,100,1,no,0.05 0.90,NorthEast,,1,Sandia_Fireballs/ethylene_fireball_cat_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Sandia_Fireballs/ethylene_diameter,Fireball Diameter,max,0,Sandia Fireballs,r<,c,TeX +d,Sandia Fireballs,Sandia_Fireballs/isopentane_fireball_flame.csv,1,2,Time,D_S|D_E,Exp (South)|Exp (East),bo|ro,0,10000,,0,10000,-10000,10000,0,Sandia_Fireballs/isopentane_fireball_cat_devc.csv,2,3,Time,D_S_max|D_E_max,FDS (South)|FDS (East),b-|r-,0,10000,,0,10000,-10000,10000,0,Isopentane,Time (s),Diameter (m),0,20,1,0,100,1,no,0.05 0.90,NorthEast,,1,Sandia_Fireballs/isopentane_fireball_cat_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Sandia_Fireballs/isopentane_diameter,Fireball Diameter,max,0,Sandia Fireballs,r<,c,TeX +s,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +d,Shell LNG Fireballs,Shell_LNG_Fireballs/Exp_2_flame.csv,1,2,Time,D,Exp (D),k-,0,10000,,0,10000,-10000,10000,0,Shell_LNG_Fireballs/Exp_2_devc.csv,2,3,Time,D_max,FDS (D_max),k--,0,10000,,0,10000,-10000,10000,0,Fireball Diameter; Exp 2,Time (s),Diameter (m),0,10,1,0,100,1,no,0.05 0.90,NorthEast,,1,Shell_LNG_Fireballs/Exp_2_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Shell_LNG_Fireballs/Exp_2_diam,Fireball Diameter,max,0,Shell LNG Fireballs,bv,b,TeX +d,Shell LNG Fireballs,Shell_LNG_Fireballs/Exp_3_flame.csv,1,2,Time,D,Exp (D),k-,0,10000,,0,10000,-10000,10000,0,Shell_LNG_Fireballs/Exp_3_devc.csv,2,3,Time,D_max,FDS (D_max),k--,0,10000,,0,10000,-10000,10000,0,Fireball Diameter; Exp 3,Time (s),Diameter (m),0,10,1,0,100,1,no,0.05 0.90,NorthEast,,1,Shell_LNG_Fireballs/Exp_3_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Shell_LNG_Fireballs/Exp_3_diam,Fireball Diameter,max,0,Shell LNG Fireballs,bv,b,TeX +d,Shell LNG Fireballs,Shell_LNG_Fireballs/Exp_4_flame.csv,1,2,Time,D,Exp (D),k-,0,10000,,0,10000,-10000,10000,0,Shell_LNG_Fireballs/Exp_4_devc.csv,2,3,Time,D_max,FDS (D_max),k--,0,10000,,0,10000,-10000,10000,0,Fireball Diameter; Exp 4,Time (s),Diameter (m),0,10,1,0,100,1,no,0.05 0.90,NorthEast,,1,Shell_LNG_Fireballs/Exp_4_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Shell_LNG_Fireballs/Exp_4_diam,Fireball Diameter,max,0,Shell LNG Fireballs,bv,b,TeX +s,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, s,Flame Height,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, s,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, d,BGC/GRI LNG Fires,BGC_GRI_LNG_Fires/Croce_01_HF.csv,1,2,Time,L_F,Exp,k--,0,10000,,-10000,10000,-10000,10000,0,BGC_GRI_LNG_Fires/Croce_01_devc.csv,2,3,Time,L_F,FDS,k-,0,10000,,-10000,10000,-10000,10000,0,Test 1,Time (s),Height (m),0,100,1,0,10,1,no,0.05 0.90,NorthEast,,1,BGC_GRI_LNG_Fires/Croce_01_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/BGC_GRI_LNG_Fires/Croce_01_Flame_Height,Flame Height,end,0,BGC/GRI LNG Fires,m+,m,TeX diff --git a/Utilities/Python/FDS_validation_scatterplot_inputs.csv b/Utilities/Python/FDS_validation_scatterplot_inputs.csv index bd654b7ea96..b9aa71cd9bd 100644 --- a/Utilities/Python/FDS_validation_scatterplot_inputs.csv +++ b/Utilities/Python/FDS_validation_scatterplot_inputs.csv @@ -40,3 +40,4 @@ Rate of Spread,Measured Rate of Spread (m/s),Predicted Rate of Spread (m/s),0.00 Condensation,Measured Heat Flux (kW/m²),Predicted Heat Flux (kW/m²),0,12,0.03 0.96,EastOutside,1.5,12,yes,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Scatterplots/FDS_Condensation Aerosol Deposition,Measured Mass (mg),Predicted Mass (mg),0,0.15,0.03 0.96,EastOutside,1.3,12,yes,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Scatterplots/FDS_Aerosol_Deposition Evaporation Rate,Measured Rate (dD²/dt),Predicted Rate (dD²/dt),1.00E-09,1.00E-07,0.03 0.95,EastOutside,1.3,-1,yes,loglog,FDS_Validation_Guide/SCRIPT_FIGURES/Scatterplots/FDS_Evaporation_Rate +Fireball Diameter,Measured Diameter (m),Predicted Diameter (m),10,100,0.03 0.95,EastOutside,1.5,-1,yes,loglog,FDS_Validation_Guide/SCRIPT_FIGURES/Scatterplots/FDS_Fireball_Diameter diff --git a/Validation/Sandia_Fireballs/FDS_Input_Files/ethane_fireball.fds b/Validation/Sandia_Fireballs/FDS_Input_Files/ethane_fireball.fds index 3bfced8932e..c2b4766992d 100644 --- a/Validation/Sandia_Fireballs/FDS_Input_Files/ethane_fireball.fds +++ b/Validation/Sandia_Fireballs/FDS_Input_Files/ethane_fireball.fds @@ -35,12 +35,14 @@ &CTRL ID='x2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_S-1', PERCENTILE=0.97 / &CTRL ID='D_S', FUNCTION_TYPE='SUBTRACT', INPUT_ID='x2','x1' / &DEVC ID='D_S_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_S', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / +&DEVC ID='D_S_time', QUANTITY='CONTROL VALUE', CTRL_ID='D_S', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX TIME', STATISTICS_START=0, UNITS='s' / &DEVC ID='HRR_E', Y_ID='y', QUANTITY='HRRPUV', XB=30,30,-59.5,99.5,120,120, POINTS=160, DX=80, DY=0.5, DZ=120, SPATIAL_STATISTIC='VOLUME INTEGRAL', TIME_HISTORY=T, OUTPUT=F / &CTRL ID='y1', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.03 / &CTRL ID='y2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.97 / &CTRL ID='D_E', FUNCTION_TYPE='SUBTRACT', INPUT_ID='y2','y1' / &DEVC ID='D_E_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_E', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / +&DEVC ID='D_E_time', QUANTITY='CONTROL VALUE', CTRL_ID='D_E', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX TIME', STATISTICS_START=0, UNITS='s' / &DEVC ID='Height', QUANTITY='HRRPUV', XB=-50,110,-60,100,0,240, SPATIAL_STATISTIC='CENTROID Z' / diff --git a/Validation/Sandia_Fireballs/FDS_Input_Files/ethylene_fireball.fds b/Validation/Sandia_Fireballs/FDS_Input_Files/ethylene_fireball.fds index 50184a19e04..203ce0a40c6 100644 --- a/Validation/Sandia_Fireballs/FDS_Input_Files/ethylene_fireball.fds +++ b/Validation/Sandia_Fireballs/FDS_Input_Files/ethylene_fireball.fds @@ -35,12 +35,14 @@ &CTRL ID='x2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_S-1', PERCENTILE=0.97 / &CTRL ID='D_S', FUNCTION_TYPE='SUBTRACT', INPUT_ID='x2','x1' / &DEVC ID='D_S_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_S', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / +&DEVC ID='D_S_time', QUANTITY='CONTROL VALUE', CTRL_ID='D_S', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX TIME', STATISTICS_START=0, UNITS='s' / &DEVC ID='HRR_E', Y_ID='y', QUANTITY='HRRPUV', XB=30,30,-59.5,99.5,120,120, POINTS=160, DX=80, DY=0.5, DZ=120, SPATIAL_STATISTIC='VOLUME INTEGRAL', TIME_HISTORY=T, OUTPUT=F / &CTRL ID='y1', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.03 / &CTRL ID='y2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.97 / &CTRL ID='D_E', FUNCTION_TYPE='SUBTRACT', INPUT_ID='y2','y1' / &DEVC ID='D_E_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_E', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / +&DEVC ID='D_E_time', QUANTITY='CONTROL VALUE', CTRL_ID='D_E', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX TIME', STATISTICS_START=0, UNITS='s' / &DEVC ID='Height', QUANTITY='HRRPUV', XB=-50,110,-60,100,0,240, SPATIAL_STATISTIC='CENTROID Z' / diff --git a/Validation/Sandia_Fireballs/FDS_Input_Files/isopentane_fireball.fds b/Validation/Sandia_Fireballs/FDS_Input_Files/isopentane_fireball.fds index 4bba338905c..f7db84fb88f 100644 --- a/Validation/Sandia_Fireballs/FDS_Input_Files/isopentane_fireball.fds +++ b/Validation/Sandia_Fireballs/FDS_Input_Files/isopentane_fireball.fds @@ -35,12 +35,14 @@ &CTRL ID='x2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_S-1', PERCENTILE=0.97 / &CTRL ID='D_S', FUNCTION_TYPE='SUBTRACT', INPUT_ID='x2','x1' / &DEVC ID='D_S_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_S', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / +&DEVC ID='D_S_time', QUANTITY='CONTROL VALUE', CTRL_ID='D_S', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX TIME', STATISTICS_START=0, UNITS='s' / &DEVC ID='HRR_E', Y_ID='y', QUANTITY='HRRPUV', XB=30,30,-59.5,99.5,120,120, POINTS=160, DX=80, DY=0.5, DZ=120, SPATIAL_STATISTIC='VOLUME INTEGRAL', TIME_HISTORY=T, OUTPUT=F / &CTRL ID='y1', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.03 / &CTRL ID='y2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.97 / &CTRL ID='D_E', FUNCTION_TYPE='SUBTRACT', INPUT_ID='y2','y1' / &DEVC ID='D_E_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_E', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / +&DEVC ID='D_E_time', QUANTITY='CONTROL VALUE', CTRL_ID='D_E', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX TIME', STATISTICS_START=0, UNITS='s' / &DEVC ID='Height', QUANTITY='HRRPUV', XB=-50,110,-60,100,0,240, SPATIAL_STATISTIC='CENTROID Z' / From 440100aa59c9097ba270b4e9b4a1e81e4273f82e Mon Sep 17 00:00:00 2001 From: mcgratta Date: Thu, 30 Jul 2026 16:29:04 -0400 Subject: [PATCH 5/9] FDS Validation: Fix index --- Utilities/Python/scripts/Sandia_Fireballs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Utilities/Python/scripts/Sandia_Fireballs.py b/Utilities/Python/scripts/Sandia_Fireballs.py index bfa872b7282..a2fd9bdc87d 100644 --- a/Utilities/Python/scripts/Sandia_Fireballs.py +++ b/Utilities/Python/scripts/Sandia_Fireballs.py @@ -41,7 +41,7 @@ # Read second CSV file, skip first two rows, and extract the max value into array M df2 = pd.read_csv(outdir + M_file[i], skiprows=2) - M = df2.iloc[:, 4:].max().values + M = df2.iloc[:, 6:].max().values # Remove NaN values by creating a mask for valid (non-NaN) values in both arrays # Ensure both arrays have the same length by taking the minimum length From 448e06afb4847d342abbef178c5179d5ec12438e Mon Sep 17 00:00:00 2001 From: mcgratta Date: Fri, 31 Jul 2026 09:46:30 -0400 Subject: [PATCH 6/9] FDS Validation Guide: Fix reference --- Manuals/FDS_Validation_Guide/Plume_Chapter.tex | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Manuals/FDS_Validation_Guide/Plume_Chapter.tex b/Manuals/FDS_Validation_Guide/Plume_Chapter.tex index 8e5d83555af..e75ed328b89 100644 --- a/Manuals/FDS_Validation_Guide/Plume_Chapter.tex +++ b/Manuals/FDS_Validation_Guide/Plume_Chapter.tex @@ -1174,6 +1174,22 @@ \section{Flame Tilt} \end{figure} +\clearpage + +\section{Fireball Diameter} +\label{Fireball Diameter} + +A fireball is caused by a sudden, violent rupture of a container containing volatile liquids or gases, typically under high pressure. Figure~\ref{Fireball_Diameter_Scatterplot} summarizes comparisons of the measured and predicted maximum horizontal fireball diameter of several sets of experiments. + +\begin{figure}[!h] +\begin{center} +\includegraphics[height=4.in]{SCRIPT_FIGURES/Scatterplots/FDS_Fireball_Diameter} +\end{center} +\caption[Summary of fireball diameter predictions] +{Summary of measured and predicted maximum fireball diameter.} +\label{Fireball_Diameter_Scatterplot} +\end{figure} + \clearpage From 6bed6d011492ab54740f7352ad5632f8701d8057 Mon Sep 17 00:00:00 2001 From: Jason Floyd Date: Sat, 1 Aug 2026 09:46:29 -0400 Subject: [PATCH 7/9] FDS Source: Add SPATIAL_STATISTIC of VOLUME. --- Manuals/FDS_User_Guide/FDS_User_Guide.tex | 6 ++++++ Source/dump.f90 | 20 +++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/Manuals/FDS_User_Guide/FDS_User_Guide.tex b/Manuals/FDS_User_Guide/FDS_User_Guide.tex index 41de1120cf1..1cd66121b1a 100644 --- a/Manuals/FDS_User_Guide/FDS_User_Guide.tex +++ b/Manuals/FDS_User_Guide/FDS_User_Guide.tex @@ -9915,6 +9915,12 @@ \subsubsection{Area Integral} \ee where $dA$ depends on the coordinates you specify for \ct{XB}. Note that this statistic is only appropriate for gas phase quantities, in particular those whose units involve \unit{\per\meter^2}. For example, the quantity \ct{'MASS FLUX X'} along with \ct{SPEC_ID='my gas'} is an appropriate output quantity if you want to know the mass flux of the gas species that you have named \ct{'my gas'} through an area normal to the $x$ direction. Note also that you must specify an area to sum over via the coordinate parameters, \ct{XB}, which can extend into multiple meshes. +\subsubsection{Volume} + +This feature is usually used in conjunction with \ct{SPATIAL_STATISTIC='VOLUME INTEGRAL'} above (use two separate \ct{DEVC} lines, each with the same \ct{QUANTITY}). When performing precise mass and energy balances, it is useful to know exactly the volume of gas present in the region of interest. Using \ct{SPATIAL_STATISTIC='VOLUME'} produces the discrete analog of +\be \int \; \d V \ee +where $dV$ depends on the coordinates you specify for \ct{XB}. + \subsubsection{Area} This feature is usually used in conjunction with \ct{SPATIAL_STATISTIC='AREA INTEGRAL'} above (use two separate \ct{DEVC} lines, each with the same \ct{QUANTITY}). When performing precise mass and energy balances, it is useful to know exactly the area of \ct{VENT} or \ct{SURF} of interest. Note that this may differ slightly from what is specified in the input file due to grid snapping for Cartesian geometries or due to the approximations used to represent curvilinear geometries. Using \ct{SPATIAL_STATISTIC='AREA'} produces the discrete analog of diff --git a/Source/dump.f90 b/Source/dump.f90 index e3f6c5c5433..aaf6864192b 100644 --- a/Source/dump.f90 +++ b/Source/dump.f90 @@ -6914,15 +6914,27 @@ SUBROUTINE UPDATE_DEVICES_1(T,DT,NM) SUBROUTINE SELECT_SPATIAL_STATISTIC(OPT_LP_INDEX,OPT_CUT_FACE_INDEX) INTEGER, OPTIONAL :: OPT_LP_INDEX,OPT_CUT_FACE_INDEX -REAL(EB) :: PWT,AREA +REAL(EB) :: PWT,AREA,R1,R2,VOLUME INTEGER :: ICF,JCF,NFACE PWT = 1._EB IF (PRESENT(OPT_LP_INDEX)) PWT = LAGRANGIAN_PARTICLE(OPT_LP_INDEX)%PWT AREA = B1%AREA -IF (TWO_D) AREA = AREA/DY(BC%JJG) -IF (CYLINDRICAL) AREA = AREA*2._EB*PI +IF (TWO_D) THEN + AREA = AREA/DY(BC%JJG) + VOLUME = DX(BC%IIG)*DZ(BC%KKG) +ELSEIF(CYLINDRICAL) THEN + R1 = R(BC%IIG-1) + R2 = R(BC%IIG) + AREA = AREA*2._EB*PI + VOLUME = PI*(R2**2-R1**2)*DZ(BC%KKG) +ELSE + VOLUME = DX(BC%IIG)*DY(BC%JJG)*DZ(BC%KKG) + IF (CC_IBM) THEN + IF (CCVAR(I,J,K,CC_IDCF) > 0) VOLUME = VOLUME * CUT_CELL(CCVAR(I,J,K,CC_IDCC))%ALPHA_CC + ENDIF +ENDIF IF (PRESENT(OPT_CUT_FACE_INDEX)) THEN ICF = OPT_CUT_FACE_INDEX @@ -6962,6 +6974,8 @@ SUBROUTINE SELECT_SPATIAL_STATISTIC(OPT_LP_INDEX,OPT_CUT_FACE_INDEX) SDV%VALUE_1 = SDV%VALUE_1 + AREA*PWT CASE('SUM') SDV%VALUE_1 = SDV%VALUE_1 + VALUE + CASE('VOLUME') + SDV%VALUE_1 = SDV%VALUE_1 + VOLUME END SELECT ENDIF From 96c84350c19952ab24a25132222f659ad71966d2 Mon Sep 17 00:00:00 2001 From: Jason Floyd Date: Sun, 2 Aug 2026 06:20:09 -0400 Subject: [PATCH 8/9] FDS Source: Fix bug in PR 16463 --- Source/dump.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/dump.f90 b/Source/dump.f90 index aaf6864192b..36b1998f1b5 100644 --- a/Source/dump.f90 +++ b/Source/dump.f90 @@ -6932,7 +6932,7 @@ SUBROUTINE SELECT_SPATIAL_STATISTIC(OPT_LP_INDEX,OPT_CUT_FACE_INDEX) ELSE VOLUME = DX(BC%IIG)*DY(BC%JJG)*DZ(BC%KKG) IF (CC_IBM) THEN - IF (CCVAR(I,J,K,CC_IDCF) > 0) VOLUME = VOLUME * CUT_CELL(CCVAR(I,J,K,CC_IDCC))%ALPHA_CC + IF (CCVAR(BC%IIG,BC%JJG,BC%KKG,CC_IDCF) > 0) VOLUME = VOLUME * CUT_CELL(CCVAR(BC%IIG,BC%JJG,BC%KKG,CC_IDCC))%ALPHA_CC ENDIF ENDIF From 45e651514dbca6cbe08b5a3638833727b724019f Mon Sep 17 00:00:00 2001 From: mcgratta Date: Sun, 2 Aug 2026 12:35:15 -0400 Subject: [PATCH 9/9] FDS Validation: Edits to Sandia_Fireballs, Utiskul --- .../FDS_Validation_Guide/Species_Chapter.tex | 65 +++++++++++++++++++ .../Python/FDS_validation_dataplot_inputs.csv | 8 +-- .../FDS_Input_Files/ethane_fireball.fds | 25 ------- .../FDS_Input_Files/ethylene_fireball.fds | 25 ------- .../FDS_Input_Files/fireball_devices.txt | 49 ++++++++++++++ .../FDS_Input_Files/isopentane_fireball.fds | 25 ------- .../FDS_Input_Files/hu_1p.fds | 15 +++-- .../FDS_Input_Files/hu_2p.fds | 17 +++-- .../FDS_Input_Files/hu_3p.fds | 15 +++-- .../FDS_Input_Files/hu_4p.fds | 15 +++-- Validation/Utiskul_Compartment/Run_All.sh | 13 ++++ 11 files changed, 172 insertions(+), 100 deletions(-) create mode 100755 Validation/Utiskul_Compartment/Run_All.sh diff --git a/Manuals/FDS_Validation_Guide/Species_Chapter.tex b/Manuals/FDS_Validation_Guide/Species_Chapter.tex index 8fea318b7c7..34f466a8dfd 100644 --- a/Manuals/FDS_Validation_Guide/Species_Chapter.tex +++ b/Manuals/FDS_Validation_Guide/Species_Chapter.tex @@ -1869,8 +1869,73 @@ \subsection{NIST Pool Fires} \label{NIST_Pool_Fires_Propane_50kW} \end{figure} + \clearpage +\subsection{Utiskul Compartment} + +\begin{figure}[p] +\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r} +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_HGL_Temp_Test_1} & +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Jet_Temp_Test_1} \\ +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_1_Pressure} & +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_1_Heat_Flux} \\ +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_1_O2} & +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_1_CO2} \\ +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_1_CO} & +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_1_MLR} +\end{tabular*} +\caption[Summary of Utiskul Compartment, Test 1]{Summary of Utiskul Compartment, Test 1.} +\label{Utiskul_1} +\end{figure} + +\begin{figure}[p] +\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r} +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_HGL_Temp_Test_2} & +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Jet_Temp_Test_2} \\ +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_2_Pressure} & +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_2_Heat_Flux} \\ +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_2_O2} & +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_2_CO2} \\ +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_2_CO} & +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_2_MLR} +\end{tabular*} +\caption[Summary of Utiskul Compartment, Test 2]{Summary of Utiskul Compartment, Test 2.} +\label{Utiskul_2} +\end{figure} + +\begin{figure}[p] +\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r} +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_HGL_Temp_Test_3} & +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Jet_Temp_Test_3} \\ +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_3_Pressure} & +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_3_Heat_Flux} \\ +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_3_O2} & +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_3_CO2} \\ +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_3_CO} & +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_3_MLR} +\end{tabular*} +\caption[Summary of Utiskul Compartment, Test 3]{Summary of Utiskul Compartment, Test 3.} +\label{Utiskul_3} +\end{figure} + +\begin{figure}[p] +\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r} +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_HGL_Temp_Test_4} & +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Jet_Temp_Test_4} \\ +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_4_Pressure} & +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_4_Heat_Flux} \\ +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_4_O2} & +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_4_CO2} \\ +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_4_CO} & +\includegraphics[height=2.15in]{SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_4_MLR} +\end{tabular*} +\caption[Summary of Utiskul Compartment, Test 4]{Summary of Utiskul Compartment, Test 4.} +\label{Utiskul_4} +\end{figure} + + +\clearpage \subsection{Summary, Products of Incomplete Combustion} \label{Carbon Monoxide Concentration} diff --git a/Utilities/Python/FDS_validation_dataplot_inputs.csv b/Utilities/Python/FDS_validation_dataplot_inputs.csv index 6334742407e..923d7a5e9d0 100644 --- a/Utilities/Python/FDS_validation_dataplot_inputs.csv +++ b/Utilities/Python/FDS_validation_dataplot_inputs.csv @@ -7998,10 +7998,10 @@ d,UMD SBI,Submodules/macfp-db/Fire_Growth/UMD_SBI/Experimental_Data/HRR_1Hz_7Tes f,UMD SBI,Submodules/macfp-db/Fire_Growth/UMD_SBI/Experimental_Data/HRR_1Hz_7TestAverage.csv,1,3,Time,HRR,blank,blank,0,10000,,170,190,-10000,10000,0,UMD_SBI/UMD_SBI_2_cm_devc.csv,2,3,Time,HRR,FDS (2 cm),k-,0,10000,,170,190,-10000,10000,0,UMD SBI Heat Release Rate,Time (s),Heat Release Rate (kW),0,200,1,0,400,1,no,0.05 0.90,SouthEast,,1,UMD_SBI/UMD_SBI_2_cm_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/UMD_SBI/HRR,Heat Release Rate,max,0,UMD SBI,ro,g,TeX f,UMD SBI,Submodules/macfp-db/Fire_Growth/UMD_SBI/Experimental_Data/HRR_1Hz_7TestAverage.csv,1,3,Time,HRR,blank,blank,0,10000,,170,190,-10000,10000,0,UMD_SBI/UMD_SBI_1_cm_devc.csv,2,3,Time,HRR,FDS (1 cm),k-.,0,10000,,170,190,-10000,10000,0,UMD SBI Heat Release Rate,Time (s),Heat Release Rate (kW),0,200,1,0,400,1,no,0.05 0.90,SouthEast,,1,UMD_SBI/UMD_SBI_1_cm_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/UMD_SBI/HRR,Heat Release Rate,max,0,UMD SBI,ro,g,TeX s,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -d,Utiskul Compartment,Utiskul_Compartment/case1.csv,1,3,Time,Total Burning Rate,Exp (Total Burning Rate),k-,0,10000,,0,10000,-10000,10000,0,Utiskul_Compartment/hu_1p_hrr.csv,2,3,Time,MLR_FUEL,FDS (MLR_FUEL),k--,0,10000,,0,10000,-10000,10000,0,Mass Loss Rate; Test 1,Time (s),Burning Rate (kg/s),0,400,1,0,0.0003,1,no,0.05 0.90,Southeast,,1,Utiskul_Compartment/hu_1p_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_1_MLR,0,max,0,Utiskul Compartment,ko,k,TeX -d,Utiskul Compartment,Utiskul_Compartment/case2.csv,1,3,Time,Total Burning Rate,Exp (Total Burning Rate),k-,0,10000,,0,10000,-10000,10000,0,Utiskul_Compartment/hu_2p_hrr.csv,2,3,Time,MLR_FUEL,FDS (MLR_FUEL),k--,0,10000,,0,10000,-10000,10000,0,Mass Loss Rate; Test 2,Time (s),Burning Rate (kg/s),0,400,1,0,0.001,1,no,0.05 0.90,Southeast,,1,Utiskul_Compartment/hu_2p_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_2_MLR,0,max,0,Utiskul Compartment,ko,k,TeX -d,Utiskul Compartment,Utiskul_Compartment/case3.csv,1,3,Time,Total Burning Rate,Exp (Total Burning Rate),k-,0,10000,,0,10000,-10000,10000,0,Utiskul_Compartment/hu_3p_hrr.csv,2,3,Time,MLR_FUEL,FDS (MLR_FUEL),k--,0,10000,,0,10000,-10000,10000,0,Mass Loss Rate; Test 3,Time (s),Burning Rate (kg/s),0,400,1,0,0.0003,1,no,0.05 0.90,Southeast,,1,Utiskul_Compartment/hu_3p_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_3_MLR,0,max,0,Utiskul Compartment,ko,k,TeX -d,Utiskul Compartment,Utiskul_Compartment/case4.csv,1,3,Time,Total Burning Rate,Exp (Total Burning Rate),k-,0,10000,,0,10000,-10000,10000,0,Utiskul_Compartment/hu_4p_hrr.csv,2,3,Time,MLR_FUEL,FDS (MLR_FUEL),k--,0,10000,,0,10000,-10000,10000,0,Mass Loss Rate; Test 4,Time (s),Burning Rate (kg/s),0,100,1,0,0.0002,1,no,0.05 0.90,Southeast,,1,Utiskul_Compartment/hu_4p_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_4_MLR,0,max,0,Utiskul Compartment,ko,k,TeX +d,Utiskul Compartment,Utiskul_Compartment/case1.csv,1,3,Time,Total Burning Rate,Exp (Total Burning Rate),k-,0,10000,,0,10000,-10000,10000,0,Utiskul_Compartment/hu_1p_hrr.csv,2,3,Time,MLR_N-HEPTANE,FDS (MLR_N-HEPTANE),k--,0,10000,,0,10000,-10000,10000,0,Mass Loss Rate; Test 1,Time (s),Burning Rate (kg/s),0,400,1,0,0.0003,1,no,0.05 0.90,Southeast,,1,Utiskul_Compartment/hu_1p_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_1_MLR,0,max,0,Utiskul Compartment,ko,k,TeX +d,Utiskul Compartment,Utiskul_Compartment/case2.csv,1,3,Time,Total Burning Rate,Exp (Total Burning Rate),k-,0,10000,,0,10000,-10000,10000,0,Utiskul_Compartment/hu_2p_hrr.csv,2,3,Time,MLR_N-HEPTANE,FDS (MLR_N-HEPTANE),k--,0,10000,,0,10000,-10000,10000,0,Mass Loss Rate; Test 2,Time (s),Burning Rate (kg/s),0,400,1,0,0.001,1,no,0.05 0.90,Southeast,,1,Utiskul_Compartment/hu_2p_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_2_MLR,0,max,0,Utiskul Compartment,ko,k,TeX +d,Utiskul Compartment,Utiskul_Compartment/case3.csv,1,3,Time,Total Burning Rate,Exp (Total Burning Rate),k-,0,10000,,0,10000,-10000,10000,0,Utiskul_Compartment/hu_3p_hrr.csv,2,3,Time,MLR_N-HEPTANE,FDS (MLR_N-HEPTANE),k--,0,10000,,0,10000,-10000,10000,0,Mass Loss Rate; Test 3,Time (s),Burning Rate (kg/s),0,400,1,0,0.0003,1,no,0.05 0.90,Southeast,,1,Utiskul_Compartment/hu_3p_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_3_MLR,0,max,0,Utiskul Compartment,ko,k,TeX +d,Utiskul Compartment,Utiskul_Compartment/case4.csv,1,3,Time,Total Burning Rate,Exp (Total Burning Rate),k-,0,10000,,0,10000,-10000,10000,0,Utiskul_Compartment/hu_4p_hrr.csv,2,3,Time,MLR_N-HEPTANE,FDS (MLR_N-HEPTANE),k--,0,10000,,0,10000,-10000,10000,0,Mass Loss Rate; Test 4,Time (s),Burning Rate (kg/s),0,100,1,0,0.0002,1,no,0.05 0.90,Southeast,,1,Utiskul_Compartment/hu_4p_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/Utiskul_Compartment/Utiskul_Compartment_Test_4_MLR,0,max,0,Utiskul Compartment,ko,k,TeX s,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, d,USFS/Catchpole,USFS_Catchpole/EX72.csv,1,3,Time,Distance,Exp,k-,0,10000,,0,10000,-10000,10000,0,USFS_Catchpole/EX72_cat_devc.csv,2,3,Time,x,FDS,k--,0,10000,,0,10000,4,6,0,EX72,Time (s),Distance (m),0,130,1,0,8,1,no,0.05 0.90,SouthEast,,1,USFS_Catchpole/EX72_cat_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/USFS_Catchpole/EX72,Rate of Spread,slope,0,USFS/Catchpole (Regular Excelsior),b^,b,TeX d,USFS/Catchpole,USFS_Catchpole/EX73.csv,1,3,Time,Distance,Exp,k-,0,10000,,0,10000,-10000,10000,0,USFS_Catchpole/EX73_cat_devc.csv,2,3,Time,x,FDS,k--,0,10000,,0,10000,4,6,0,EX73,Time (s),Distance (m),0,103,1,0,8,1,no,0.05 0.90,SouthEast,,1,USFS_Catchpole/EX73_cat_git.txt,linear,FDS_Validation_Guide/SCRIPT_FIGURES/USFS_Catchpole/EX73,Rate of Spread,slope,0,USFS/Catchpole (Regular Excelsior),b^,b,TeX diff --git a/Validation/Sandia_Fireballs/FDS_Input_Files/ethane_fireball.fds b/Validation/Sandia_Fireballs/FDS_Input_Files/ethane_fireball.fds index c2b4766992d..33e70a5de0c 100644 --- a/Validation/Sandia_Fireballs/FDS_Input_Files/ethane_fireball.fds +++ b/Validation/Sandia_Fireballs/FDS_Input_Files/ethane_fireball.fds @@ -30,31 +30,6 @@ &RAMP ID='fuel', T= 1.21, F=1.0 / &RAMP ID='fuel', T= 1.22, F=0.0 / -&DEVC ID='HRR_S', X_ID='x', QUANTITY='HRRPUV', XB=-49.5,109.5,20,20,120,120, POINTS=160, DX=0.5, DY=80, DZ=120, SPATIAL_STATISTIC='VOLUME INTEGRAL', TIME_HISTORY=T, OUTPUT=F / -&CTRL ID='x1', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_S-1', PERCENTILE=0.03 / -&CTRL ID='x2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_S-1', PERCENTILE=0.97 / -&CTRL ID='D_S', FUNCTION_TYPE='SUBTRACT', INPUT_ID='x2','x1' / -&DEVC ID='D_S_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_S', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / -&DEVC ID='D_S_time', QUANTITY='CONTROL VALUE', CTRL_ID='D_S', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX TIME', STATISTICS_START=0, UNITS='s' / - -&DEVC ID='HRR_E', Y_ID='y', QUANTITY='HRRPUV', XB=30,30,-59.5,99.5,120,120, POINTS=160, DX=80, DY=0.5, DZ=120, SPATIAL_STATISTIC='VOLUME INTEGRAL', TIME_HISTORY=T, OUTPUT=F / -&CTRL ID='y1', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.03 / -&CTRL ID='y2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.97 / -&CTRL ID='D_E', FUNCTION_TYPE='SUBTRACT', INPUT_ID='y2','y1' / -&DEVC ID='D_E_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_E', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / -&DEVC ID='D_E_time', QUANTITY='CONTROL VALUE', CTRL_ID='D_E', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX TIME', STATISTICS_START=0, UNITS='s' / - -&DEVC ID='Height', QUANTITY='HRRPUV', XB=-50,110,-60,100,0,240, SPATIAL_STATISTIC='CENTROID Z' / - -&SLCF PBY=0.1, QUANTITY='TEMPERATURE', CELL_CENTERED=T / -&SLCF PBY=0.1, QUANTITY='VELOCITY', VECTOR=T / -&SLCF PBY=0.1, QUANTITY='INTEGRATED INTENSITY', CELL_CENTERED=T / -&SLCF PBZ=0.1, QUANTITY='INTEGRATED INTENSITY', CELL_CENTERED=T / -&SLCF PBY=0.1, QUANTITY='HRRPUV', CELL_CENTERED=T / -&SLCF PBY=0.1, QUANTITY='VOLUME FRACTION', SPEC_ID='ETHANE', CELL_CENTERED=T / - -&BNDF QUANTITY='RADIATIVE HEAT FLUX' / - &CATF OTHER_FILES='fireball_devices.txt' / &TAIL / diff --git a/Validation/Sandia_Fireballs/FDS_Input_Files/ethylene_fireball.fds b/Validation/Sandia_Fireballs/FDS_Input_Files/ethylene_fireball.fds index 203ce0a40c6..d353765616c 100644 --- a/Validation/Sandia_Fireballs/FDS_Input_Files/ethylene_fireball.fds +++ b/Validation/Sandia_Fireballs/FDS_Input_Files/ethylene_fireball.fds @@ -30,31 +30,6 @@ &RAMP ID='fuel', T= 1.21, F=1.0 / &RAMP ID='fuel', T= 1.22, F=0.0 / -&DEVC ID='HRR_S', X_ID='x', QUANTITY='HRRPUV', XB=-49.5,109.5,20,20,120,120, POINTS=160, DX=0.5, DY=80, DZ=120, SPATIAL_STATISTIC='VOLUME INTEGRAL', TIME_HISTORY=T, OUTPUT=F / -&CTRL ID='x1', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_S-1', PERCENTILE=0.03 / -&CTRL ID='x2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_S-1', PERCENTILE=0.97 / -&CTRL ID='D_S', FUNCTION_TYPE='SUBTRACT', INPUT_ID='x2','x1' / -&DEVC ID='D_S_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_S', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / -&DEVC ID='D_S_time', QUANTITY='CONTROL VALUE', CTRL_ID='D_S', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX TIME', STATISTICS_START=0, UNITS='s' / - -&DEVC ID='HRR_E', Y_ID='y', QUANTITY='HRRPUV', XB=30,30,-59.5,99.5,120,120, POINTS=160, DX=80, DY=0.5, DZ=120, SPATIAL_STATISTIC='VOLUME INTEGRAL', TIME_HISTORY=T, OUTPUT=F / -&CTRL ID='y1', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.03 / -&CTRL ID='y2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.97 / -&CTRL ID='D_E', FUNCTION_TYPE='SUBTRACT', INPUT_ID='y2','y1' / -&DEVC ID='D_E_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_E', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / -&DEVC ID='D_E_time', QUANTITY='CONTROL VALUE', CTRL_ID='D_E', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX TIME', STATISTICS_START=0, UNITS='s' / - -&DEVC ID='Height', QUANTITY='HRRPUV', XB=-50,110,-60,100,0,240, SPATIAL_STATISTIC='CENTROID Z' / - -&SLCF PBY=0.1, QUANTITY='TEMPERATURE', CELL_CENTERED=T / -&SLCF PBY=0.1, QUANTITY='VELOCITY', VECTOR=T / -&SLCF PBY=0.1, QUANTITY='INTEGRATED INTENSITY', CELL_CENTERED=T / -&SLCF PBZ=0.1, QUANTITY='INTEGRATED INTENSITY', CELL_CENTERED=T / -&SLCF PBY=0.1, QUANTITY='HRRPUV', CELL_CENTERED=T / -&SLCF PBY=0.1, QUANTITY='VOLUME FRACTION', SPEC_ID='ETHYLENE', CELL_CENTERED=T / - -&BNDF QUANTITY='RADIATIVE HEAT FLUX' / - &CATF OTHER_FILES='fireball_devices.txt' / &TAIL / diff --git a/Validation/Sandia_Fireballs/FDS_Input_Files/fireball_devices.txt b/Validation/Sandia_Fireballs/FDS_Input_Files/fireball_devices.txt index 4ead2e89df9..6f847cd2be4 100644 --- a/Validation/Sandia_Fireballs/FDS_Input_Files/fireball_devices.txt +++ b/Validation/Sandia_Fireballs/FDS_Input_Files/fireball_devices.txt @@ -1,4 +1,44 @@ +! Device/Control logic to determine max fireball diameter when viewed from the south + +&DEVC ID='HRR_S', X_ID='x', QUANTITY='HRRPUV', XB=-49.5,109.5,20,20,120,120, POINTS=160, DX=0.5, DY=80, DZ=120, SPATIAL_STATISTIC='VOLUME INTEGRAL', TIME_HISTORY=T, OUTPUT=F, QUANTITY_RANGE(1)=500/ +&CTRL ID='x1', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_S-1', PERCENTILE=0.03 / +&CTRL ID='x2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_S-1', PERCENTILE=0.97 / +&CTRL ID='D_S', FUNCTION_TYPE='SUBTRACT', INPUT_ID='x2','x1' / +&DEVC ID='D_S_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_S', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / +&DEVC ID='D_S_time', QUANTITY='CONTROL VALUE', CTRL_ID='D_S', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX TIME', STATISTICS_START=0, UNITS='s' / + +! Device/Control logic to determine max fireball diameter when viewed from the east + +&DEVC ID='HRR_E', Y_ID='y', QUANTITY='HRRPUV', XB=30,30,-59.5,99.5,120,120, POINTS=160, DX=80, DY=0.5, DZ=120, SPATIAL_STATISTIC='VOLUME INTEGRAL', TIME_HISTORY=T, OUTPUT=F, QUANTITY_RANGE(1)=500/ +&CTRL ID='y1', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.03 / +&CTRL ID='y2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.97 / +&CTRL ID='D_E', FUNCTION_TYPE='SUBTRACT', INPUT_ID='y2','y1' / +&DEVC ID='D_E_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_E', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / +&DEVC ID='D_E_time', QUANTITY='CONTROL VALUE', CTRL_ID='D_E', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX TIME', STATISTICS_START=0, UNITS='s' / + +! Device/Control logic to determine height of the fireball when the max diameters are achieved + +&DEVC ID='TIME',QUANTITY='TIME', OUTPUT=F,XYZ=0,0,0/ +&CTRL ID='DD',FUNCTION_TYPE='PID',PROPORTIONAL_GAIN=0,INTEGRAL_GAIN=0,DIFFERENTIAL_GAIN=1,INPUT_ID='D_S'/ +&CTRL ID='DE',FUNCTION_TYPE='PID',PROPORTIONAL_GAIN=0,INTEGRAL_GAIN=0,DIFFERENTIAL_GAIN=1,INPUT_ID='D_E'/ +&CTRL ID='FAC1',FUNCTION_TYPE='CUSTOM',RAMP_ID='FAC1_R',INPUT_ID='TIME'/ +&CTRL ID='FAC2',FUNCTION_TYPE='CUSTOM',RAMP_ID='FAC2_R',INPUT_ID='TIME'/ +&RAMP ID='FAC1_R',T=1.999,F=1/ +&RAMP ID='FAC1_R',T=2.000,F=0/ +&RAMP ID='FAC2_R',T=1.999,F=0/ +&RAMP ID='FAC2_R',T=2.000,F=1/ +&CTRL ID='TERM2D',FUNCTION_TYPE='MULTIPLY',INPUT_ID='DD','FAC2'/ +&CTRL ID='TERM2E',FUNCTION_TYPE='MULTIPLY',INPUT_ID='DE','FAC2'/ +&CTRL ID='OUT DD',FUNCTION_TYPE='SUM',INPUT_ID='FAC1','TERM2D'/ +&CTRL ID='OUT DE',FUNCTION_TYPE='SUM',INPUT_ID='FAC1','TERM2E'/ +&DEVC ID='SUM DD',QUANTITY='CONTROL VALUE',CTRL_ID='OUT DD',UNITS='m/s',SMOOTHING_TIME=0.2,SETPOINT=-0.001,TRIP_DIRECTION=-1, OUTPUT=F/ +&DEVC ID='SUM DE',QUANTITY='CONTROL VALUE',CTRL_ID='OUT DE',UNITS='m/s',SMOOTHING_TIME=0.2,SETPOINT=-0.001,TRIP_DIRECTION=-1, OUTPUT=F/ +&CTRL ID='BOTH FREEZE',FUNCTION_TYPE='ALL',INPUT_ID='SUM DD','SUM DE'/ +&DEVC ID='Height', QUANTITY='HRRPUV', XB=-50,110,-60,100,0,240, SPATIAL_STATISTIC='CENTROID Z',NO_UPDATE_CTRL_ID='BOTH FREEZE'/ + +! Radiometers + &DEVC ID='R1', XYZ=-24.6,94.1,4.5, QUANTITY='RADIATIVE HEAT FLUX GAS', ORIENTATION=0.253,-0.967,1.000 / &DEVC ID='R2', XYZ=-24.8,91.0,4.3, QUANTITY='RADIATIVE HEAT FLUX GAS', ORIENTATION=0.263,-0.965,1.000 / &DEVC ID='R3', XYZ=-25.1,88.1,4.2, QUANTITY='RADIATIVE HEAT FLUX GAS', ORIENTATION=0.274,-0.962,1.000 / @@ -39,3 +79,12 @@ &DEVC ID='R38', XYZ= -2.8,47.1,2.2, QUANTITY='RADIATIVE HEAT FLUX GAS', ORIENTATION=0.059,-0.998,1.000 / &DEVC ID='R39', XYZ= 0.0,47.0,2.3, QUANTITY='RADIATIVE HEAT FLUX GAS', ORIENTATION=0.000,-1.000,1.000 / &DEVC ID='R40', XYZ= 0.3,50.1,2.6, QUANTITY='RADIATIVE HEAT FLUX GAS', ORIENTATION=-0.006,-1.000,1.000 / + +&SLCF PBY=0.1, QUANTITY='TEMPERATURE', CELL_CENTERED=T / +&SLCF PBY=0.1, QUANTITY='VELOCITY', VECTOR=T / +&SLCF PBY=0.1, QUANTITY='INTEGRATED INTENSITY', CELL_CENTERED=T / +&SLCF PBZ=0.1, QUANTITY='INTEGRATED INTENSITY', CELL_CENTERED=T / +&SLCF PBY=0.1, QUANTITY='HRRPUV', CELL_CENTERED=T / + +&BNDF QUANTITY='RADIATIVE HEAT FLUX' / + diff --git a/Validation/Sandia_Fireballs/FDS_Input_Files/isopentane_fireball.fds b/Validation/Sandia_Fireballs/FDS_Input_Files/isopentane_fireball.fds index f7db84fb88f..8ff4083252f 100644 --- a/Validation/Sandia_Fireballs/FDS_Input_Files/isopentane_fireball.fds +++ b/Validation/Sandia_Fireballs/FDS_Input_Files/isopentane_fireball.fds @@ -30,31 +30,6 @@ &RAMP ID='fuel', T= 1.21, F=1.0 / &RAMP ID='fuel', T= 1.22, F=0.0 / -&DEVC ID='HRR_S', X_ID='x', QUANTITY='HRRPUV', XB=-49.5,109.5,20,20,120,120, POINTS=160, DX=0.5, DY=80, DZ=120, SPATIAL_STATISTIC='VOLUME INTEGRAL', TIME_HISTORY=T, OUTPUT=F / -&CTRL ID='x1', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_S-1', PERCENTILE=0.03 / -&CTRL ID='x2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_S-1', PERCENTILE=0.97 / -&CTRL ID='D_S', FUNCTION_TYPE='SUBTRACT', INPUT_ID='x2','x1' / -&DEVC ID='D_S_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_S', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / -&DEVC ID='D_S_time', QUANTITY='CONTROL VALUE', CTRL_ID='D_S', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX TIME', STATISTICS_START=0, UNITS='s' / - -&DEVC ID='HRR_E', Y_ID='y', QUANTITY='HRRPUV', XB=30,30,-59.5,99.5,120,120, POINTS=160, DX=80, DY=0.5, DZ=120, SPATIAL_STATISTIC='VOLUME INTEGRAL', TIME_HISTORY=T, OUTPUT=F / -&CTRL ID='y1', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.03 / -&CTRL ID='y2', FUNCTION_TYPE='PERCENTILE', INPUT_ID='HRR_E-1', PERCENTILE=0.97 / -&CTRL ID='D_E', FUNCTION_TYPE='SUBTRACT', INPUT_ID='y2','y1' / -&DEVC ID='D_E_max', QUANTITY='CONTROL VALUE', CTRL_ID='D_E', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX', STATISTICS_START=0, UNITS='m' / -&DEVC ID='D_E_time', QUANTITY='CONTROL VALUE', CTRL_ID='D_E', XYZ=0,0,0, TEMPORAL_STATISTIC='MAX TIME', STATISTICS_START=0, UNITS='s' / - -&DEVC ID='Height', QUANTITY='HRRPUV', XB=-50,110,-60,100,0,240, SPATIAL_STATISTIC='CENTROID Z' / - -&SLCF PBY=0.1, QUANTITY='TEMPERATURE', CELL_CENTERED=T / -&SLCF PBY=0.1, QUANTITY='VELOCITY', VECTOR=T / -&SLCF PBY=0.1, QUANTITY='INTEGRATED INTENSITY', CELL_CENTERED=T / -&SLCF PBZ=0.1, QUANTITY='INTEGRATED INTENSITY', CELL_CENTERED=T / -&SLCF PBY=0.1, QUANTITY='HRRPUV', CELL_CENTERED=T / -&SLCF PBY=0.1, QUANTITY='VOLUME FRACTION', SPEC_ID='N-PENTANE', CELL_CENTERED=T / - -&BNDF QUANTITY='RADIATIVE HEAT FLUX' / - &CATF OTHER_FILES='fireball_devices.txt' / &TAIL / diff --git a/Validation/Utiskul_Compartment/FDS_Input_Files/hu_1p.fds b/Validation/Utiskul_Compartment/FDS_Input_Files/hu_1p.fds index 1abc3ec75a9..03ad744c715 100644 --- a/Validation/Utiskul_Compartment/FDS_Input_Files/hu_1p.fds +++ b/Validation/Utiskul_Compartment/FDS_Input_Files/hu_1p.fds @@ -1,17 +1,17 @@ &HEAD CHID='hu_1p',TITLE='Hu et al. IAFSS (2005) compartment fire Case 1 prescribed mass loss rate'/ -&MESH IJK=40,40,40, XB=-0.2,0.2,-0.2,0.2,0.0,0.4/ +&MESH IJK=60,40,40, XB=-0.2,0.4,-0.2,0.2,0.0,0.4/ &TIME T_END=350./ &DUMP DT_DEVC=5., DT_HRR=5. / -&COMB SUPPRESSION=.FALSE. / - &REAC FUEL = 'N-HEPTANE', N_SIMPLE_CHEMISTRY_REACTIONS=2 / -&VENT XB=0.2,0.2,-0.2,0.2,0.37,0.4, SURF_ID='OPEN' / -&VENT XB=0.2,0.2,-0.2,0.2,0.0,0.03, SURF_ID='OPEN' / +&VENT XB=0.40,0.40,-0.20,0.20,0.00,0.4, SURF_ID='OPEN' / +&OBST XB=0.20,0.22,-0.20,0.20,0.00,0.4 / +&HOLE XB=0.19,0.23,-0.20,0.20,0.37,0.4 / +&HOLE XB=0.19,0.23,-0.20,0.20,0.0,0.03 / &VENT XB=-0.0475,0.0475,-0.0475,0.0475,0.00,0.00, XYZ=0,0,0, RADIUS=0.0475, SPREAD_RATE=1000., SURF_ID='FIRE', COLOR='RED'/ @@ -42,6 +42,11 @@ &RAMP ID='k_fiber',T=900.,F=0.25 / &SLCF PBY=0., QUANTITY='TEMPERATURE', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='VOLUME FRACTION', SPEC_ID='N-HEPTANE', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='VOLUME FRACTION', SPEC_ID='OXYGEN', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='VOLUME FRACTION', SPEC_ID='CARBON DIOXIDE', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='VOLUME FRACTION', SPEC_ID='CARBON MONOXIDE', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='HRRPUV', CELL_CENTERED=.TRUE./ &SLCF PBY=0., QUANTITY='VELOCITY', VECTOR=.TRUE./ &DEVC XB=0.20,0.20,-0.2,0.2,0.37,0.4, QUANTITY='MASS FLUX X', SPATIAL_STATISTIC='AREA INTEGRAL', ID='M1'/ diff --git a/Validation/Utiskul_Compartment/FDS_Input_Files/hu_2p.fds b/Validation/Utiskul_Compartment/FDS_Input_Files/hu_2p.fds index cb2d01a6bce..6bc14387372 100644 --- a/Validation/Utiskul_Compartment/FDS_Input_Files/hu_2p.fds +++ b/Validation/Utiskul_Compartment/FDS_Input_Files/hu_2p.fds @@ -1,17 +1,17 @@ &HEAD CHID='hu_2p',TITLE='Hu et al. IAFSS (2005) compartment fire Case 2 prescribed mass loss rate'/ -&MESH IJK=40,40,40, XB=-.2,0.2,-0.2,0.2,0.0,0.4 / +&MESH IJK=60,40,40, XB=-.2,0.4,-0.2,0.2,0.0,0.4 / -&TIME T_END=250./ +&TIME T_END=300./ &DUMP DT_DEVC=5., DT_HRR=5. / -&COMB SUPPRESSION=.FALSE. / - &REAC FUEL = 'N-HEPTANE', N_SIMPLE_CHEMISTRY_REACTIONS=2 / -&VENT XB=0.20,0.20,-0.2,0.2,0.39,0.4, SURF_ID='OPEN' / -&VENT XB=0.20,0.20,-0.2,0.2,0.0,0.01, SURF_ID='OPEN' / +&VENT XB=0.40,0.40,-0.20,0.20,0.00,0.4, SURF_ID='OPEN' / +&OBST XB=0.20,0.22,-0.20,0.20,0.00,0.4 / +&HOLE XB=0.19,0.23,-0.20,0.20,0.39,0.4 / +&HOLE XB=0.19,0.23,-0.20,0.20,0.0,0.01 / &VENT XB=-0.095,0.095,-0.095,0.095,0.00,0.00, XYZ=0,0,0, RADIUS=0.095, SPREAD_RATE=1000., SURF_ID='FIRE', COLOR='RED'/ @@ -43,6 +43,11 @@ &RAMP ID='k_fiber',T=900.,F=0.25 / &SLCF PBY=0., QUANTITY='TEMPERATURE', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='VOLUME FRACTION', SPEC_ID='N-HEPTANE', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='VOLUME FRACTION', SPEC_ID='OXYGEN', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='VOLUME FRACTION', SPEC_ID='CARBON DIOXIDE', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='VOLUME FRACTION', SPEC_ID='CARBON MONOXIDE', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='HRRPUV', CELL_CENTERED=.TRUE./ &SLCF PBY=0., QUANTITY='VELOCITY', VECTOR=.TRUE./ &DEVC XB=0.20,0.20,-0.2,0.2,0.39,0.4, QUANTITY='MASS FLUX X', SPATIAL_STATISTIC='AREA INTEGRAL', ID='M1'/ diff --git a/Validation/Utiskul_Compartment/FDS_Input_Files/hu_3p.fds b/Validation/Utiskul_Compartment/FDS_Input_Files/hu_3p.fds index d9a0d9a86f6..1d75798c08a 100644 --- a/Validation/Utiskul_Compartment/FDS_Input_Files/hu_3p.fds +++ b/Validation/Utiskul_Compartment/FDS_Input_Files/hu_3p.fds @@ -1,17 +1,17 @@ &HEAD CHID='hu_3p',TITLE='Hu et al. IAFSS (2005) compartment fire Case 3 prescribed mass loss rate'/ -&MESH IJK=40,40,40, XB=-.2,0.2,-0.2,0.2,0.0,0.4/ +&MESH IJK=60,40,40, XB=-.2,0.4,-0.2,0.2,0.0,0.4/ &TIME T_END=350./ &DUMP DT_DEVC=5., DT_HRR=5. / -&COMB SUPPRESSION=.FALSE. / - &REAC FUEL = 'N-HEPTANE', N_SIMPLE_CHEMISTRY_REACTIONS=2 / -&VENT XB=0.20,0.20,-0.05,0.05,0.37,0.4, SURF_ID='OPEN' / -&VENT XB=0.20,0.20,-0.05,0.05,0.0,0.03, SURF_ID='OPEN' / +&VENT XB=0.40,0.40,-0.20,0.20,0.00,0.4, SURF_ID='OPEN' / +&OBST XB=0.20,0.22,-0.20,0.20,0.00,0.4 / +&HOLE XB=0.19,0.23,-0.05,0.05,0.37,0.4 / +&HOLE XB=0.19,0.23,-0.05,0.05,0.0,0.03 / &VENT XB=-0.0475,0.0475,-0.0475,0.0475,0.00,0.00, XYZ=0,0,0, RADIUS=0.0475, SPREAD_RATE=1000., SURF_ID='FIRE', COLOR='RED'/ @@ -43,6 +43,11 @@ &RAMP ID='k_fiber',T=900.,F=0.25 / &SLCF PBY=0., QUANTITY='TEMPERATURE', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='VOLUME FRACTION', SPEC_ID='N-HEPTANE', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='VOLUME FRACTION', SPEC_ID='OXYGEN', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='VOLUME FRACTION', SPEC_ID='CARBON DIOXIDE', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='VOLUME FRACTION', SPEC_ID='CARBON MONOXIDE', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='HRRPUV', CELL_CENTERED=.TRUE./ &SLCF PBY=0., QUANTITY='VELOCITY', VECTOR=.TRUE./ &DEVC XB=0.20,0.20,-0.05,0.05,0.37,0.4, QUANTITY='MASS FLUX X', SPATIAL_STATISTIC='AREA INTEGRAL', ID='M1'/ diff --git a/Validation/Utiskul_Compartment/FDS_Input_Files/hu_4p.fds b/Validation/Utiskul_Compartment/FDS_Input_Files/hu_4p.fds index 903193c76ee..54090fb04bc 100644 --- a/Validation/Utiskul_Compartment/FDS_Input_Files/hu_4p.fds +++ b/Validation/Utiskul_Compartment/FDS_Input_Files/hu_4p.fds @@ -1,17 +1,17 @@ &HEAD CHID='hu_4p',TITLE='Hu et al. IAFSS (2005) compartment fire Case 4 prescribed mass loss rate'/ -&MESH IJK=40,40,40, XB=-.2,0.2,-0.2,0.2,0.0,0.4/ +&MESH IJK=60,40,40, XB=-.2,0.4,-0.2,0.2,0.0,0.4/ &TIME T_END=80./ &DUMP DT_DEVC=5., DT_HRR=5. / -&COMB SUPPRESSION=.FALSE. / - &REAC FUEL = 'N-HEPTANE', N_SIMPLE_CHEMISTRY_REACTIONS=2 / -&VENT XB=0.20,0.20,-0.01,0.01,0.39,0.4, SURF_ID='OPEN' / -&VENT XB=0.20,0.20,-0.01,0.01,0.0,0.01, SURF_ID='OPEN' / +&VENT XB=0.40,0.40,-0.20,0.20,0.00,0.4, SURF_ID='OPEN' / +&OBST XB=0.20,0.22,-0.20,0.20,0.00,0.4 / +&HOLE XB=0.19,0.23,-0.01,0.01,0.39,0.4 / +&HOLE XB=0.19,0.23,-0.01,0.01,0.0,0.01 / &VENT XB=-0.0475,0.0475,-0.0475,0.0475,0.00,0.00, XYZ=0,0,0, RADIUS=0.0475, SPREAD_RATE=1000., SURF_ID='FIRE', COLOR='RED'/ @@ -45,6 +45,11 @@ &RAMP ID='k_fiber',T=900.,F=0.25 / &SLCF PBY=0., QUANTITY='TEMPERATURE', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='VOLUME FRACTION', SPEC_ID='N-HEPTANE', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='VOLUME FRACTION', SPEC_ID='OXYGEN', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='VOLUME FRACTION', SPEC_ID='CARBON DIOXIDE', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='VOLUME FRACTION', SPEC_ID='CARBON MONOXIDE', CELL_CENTERED=.TRUE./ +&SLCF PBY=0., QUANTITY='HRRPUV', CELL_CENTERED=.TRUE./ &SLCF PBY=0., QUANTITY='VELOCITY', VECTOR=.TRUE./ &DEVC XB=0.20,0.20,-0.01,0.01,0.39,0.4, QUANTITY='MASS FLUX X', SPATIAL_STATISTIC='AREA INTEGRAL', ID='M1'/ diff --git a/Validation/Utiskul_Compartment/Run_All.sh b/Validation/Utiskul_Compartment/Run_All.sh new file mode 100755 index 00000000000..93f27ccc35a --- /dev/null +++ b/Validation/Utiskul_Compartment/Run_All.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# This script runs a set of Validation Cases on a Linux machine with a batch queuing system. +# See the file Validation/Common_Run_All.sh for more information. +export SVNROOT=`pwd`/../.. +source $SVNROOT/Validation/Common_Run_All.sh + +$QFDS $DEBUG $QUEUE -p 1 -o 8 -d $INDIR hu_1p.fds +$QFDS $DEBUG $QUEUE -p 1 -o 8 -d $INDIR hu_2p.fds +$QFDS $DEBUG $QUEUE -p 1 -o 8 -d $INDIR hu_3p.fds +$QFDS $DEBUG $QUEUE -p 1 -o 8 -d $INDIR hu_4p.fds + +echo FDS cases submitted