Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
1e4aadb
FDS Source: prevent mixing of SURFACE_OXIDATION_MODEL and OXPYRO model
ericvmueller Sep 30, 2025
35a54b2
Python: better handling of # -> \# substitution
rmcdermo Sep 30, 2025
659821e
Merge pull request #15250 from rmcdermo/master
rmcdermo Sep 30, 2025
3e2abd0
FDS Validation: fix git filenames for SWJTU tunnels
rmcdermo Sep 30, 2025
3270a33
Merge pull request #15251 from rmcdermo/master
rmcdermo Sep 30, 2025
0043d4c
Merge pull request #15252 from ericvmueller/master
ericvmueller Sep 30, 2025
1005857
FDS Validation: Convert flame_height2.m
mcgratta Sep 30, 2025
084756a
Merge pull request #15253 from mcgratta/master
mcgratta Sep 30, 2025
183de98
FDS Validation: New Memorial_Tunnel obstructions
mcgratta Sep 30, 2025
199d374
Merge pull request #15254 from mcgratta/master
mcgratta Sep 30, 2025
f53c152
FDS Validation: fix more SWJTU git names
rmcdermo Sep 30, 2025
059538f
Python: remove # as comment in read_csv
rmcdermo Sep 30, 2025
8304cd1
Merge pull request #15255 from rmcdermo/master
rmcdermo Sep 30, 2025
03aa480
Python: fix irow position of plot for screen comment
rmcdermo Sep 30, 2025
e5ee05b
FDS Validation: fix git filenames for UL_NIJ_Houses
rmcdermo Sep 30, 2025
c32cfb6
Merge pull request #15256 from rmcdermo/master
rmcdermo Sep 30, 2025
6186dd3
FDS Validation: Remove quotes from matlab scripts
mcgratta Oct 1, 2025
88ff627
Merge pull request #15257 from mcgratta/master
mcgratta Oct 1, 2025
8cd34d3
Python: fix latex warnings
rmcdermo Oct 2, 2025
a91e63c
Merge pull request #15261 from rmcdermo/master
rmcdermo Oct 2, 2025
91b6fdb
Python: remove double quotes in preprocessing scripts
rmcdermo Oct 2, 2025
4dae8df
Merge pull request #15262 from rmcdermo/master
rmcdermo Oct 2, 2025
4969357
FDS Validation: fix git filename for Crown_Fires
rmcdermo Oct 2, 2025
8e197e3
Merge pull request #15263 from rmcdermo/master
rmcdermo Oct 2, 2025
55e1986
Python: add shell=True to validation scripts
Oct 2, 2025
cbcec27
Matlab: fix dataplot errors
rmcdermo Oct 2, 2025
32b8849
Merge pull request #15264 from rmcdermo/master
rmcdermo Oct 2, 2025
4543a2c
Matlab: fix more git file errors
rmcdermo Oct 2, 2025
e0d43de
Merge pull request #15265 from rmcdermo/master
rmcdermo Oct 2, 2025
a222207
Python: remove shell and set PYTHONPATH in validation script
Oct 2, 2025
48a83f1
Matlab: fix more git file entries
rmcdermo Oct 2, 2025
ad2eaf2
Merge pull request #15266 from rmcdermo/master
rmcdermo Oct 2, 2025
fd95bdb
Merge branch 'firemodels:master' into master
Oct 2, 2025
558fe2d
Python: migrate from subprocess to runpy
Oct 2, 2025
9812070
Merge pull request #15267 from johodges/master
rmcdermo Oct 2, 2025
bb056d1
Python: use runpy on preprocessing scripts
rmcdermo Oct 2, 2025
96ca245
Merge pull request #15268 from rmcdermo/master
rmcdermo Oct 2, 2025
692cba8
FDS Source: Fix bug related to particles near boundaries
mcgratta Oct 2, 2025
c54f0a1
Merge pull request #15270 from mcgratta/master
mcgratta Oct 2, 2025
dce229b
Merge remote-tracking branch 'firemodels/master' into FireX
cxp484 Oct 3, 2025
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
6 changes: 3 additions & 3 deletions Source/part.f90
Original file line number Diff line number Diff line change
Expand Up @@ -1013,9 +1013,9 @@ SUBROUTINE INSERT_VOLUMETRIC_PARTICLES
! If the INIT volume is outside the current mesh, return

IF (IN%SHAPE/='RING' .AND. IN%SHAPE/='LINE') THEN
IF ((IN_X1-XF)>-50._EB*TWO_EPSILON_EB .OR. (IN_X2-XS)<50._EB*TWO_EPSILON_EB .OR. &
(IN_Y1-YF)>-50._EB*TWO_EPSILON_EB .OR. (IN_Y2-YS)<50._EB*TWO_EPSILON_EB .OR. &
(IN_Z1-ZF)>-50._EB*TWO_EPSILON_EB .OR. (IN_Z2-ZS)<50._EB*TWO_EPSILON_EB) RETURN
IF ((IN_X1-XF)>50._EB*TWO_EPSILON_EB .OR. (IN_X2-XS)<-50._EB*TWO_EPSILON_EB .OR. &
(IN_Y1-YF)>50._EB*TWO_EPSILON_EB .OR. (IN_Y2-YS)<-50._EB*TWO_EPSILON_EB .OR. &
(IN_Z1-ZF)>50._EB*TWO_EPSILON_EB .OR. (IN_Z2-ZS)<-50._EB*TWO_EPSILON_EB) RETURN
ELSEIF (IN%SHAPE=='RING') THEN
IF (RING_MESH_INTERSECTION_ARC(NM,IN%X0,IN%Y0,IN%RADIUS)<TWO_EPSILON_EB) RETURN
ELSE
Expand Down
4 changes: 2 additions & 2 deletions Source/read.f90
Original file line number Diff line number Diff line change
Expand Up @@ -6545,7 +6545,7 @@ SUBROUTINE PROC_PART

DO NN=1,SF%N_MATL
ML => MATERIAL(NN)
IF ( ANY(ML%N_O2>0._EB) ) OXPYRO_MODEL = .TRUE.
IF ( ANY(ML%N_O2>0._EB) .AND. (ML%PYROLYSIS_MODEL /= PYROLYSIS_SURFACE_OXIDATION) ) OXPYRO_MODEL = .TRUE.
ENDDO

ENDIF THERMALLY_THICK_IF
Expand Down Expand Up @@ -9956,7 +9956,7 @@ SUBROUTINE PROC_WALL
ML => MATERIAL(SF%LAYER_CHILD_INDEX(NL,N))
IF (ANY(ML%NU_RESIDUE>0._EB)) CAN_SWELL = .TRUE.
IF (ML%ALLOW_SWELLING) DENSITY_MIN = MIN(DENSITY_MIN,ML%RHO_S)
IF ( ANY(ML%N_O2>0._EB) ) OXPYRO_MODEL = .TRUE.
IF ( ANY(ML%N_O2>0._EB) .AND. (ML%PYROLYSIS_MODEL /= PYROLYSIS_SURFACE_OXIDATION) ) OXPYRO_MODEL = .TRUE.
ENDDO

IF (DENSITY_MIN>TWO_EPSILON_EB .AND. CAN_SWELL) SF%SWELL_RATIO(NL) = MAX(1._EB,SF%LAYER_DENSITY(NL)/DENSITY_MIN)
Expand Down
176 changes: 88 additions & 88 deletions Utilities/Matlab/FDS_validation_dataplot_inputs.csv

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion Utilities/Matlab/FDS_validation_script.m
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,6 @@
backward_facing_step
sandia_helium_plume
sandia_methane_fire
flame_height2
purdue_flames
NIST_NRC_Parallel_Panels
Memorial_Tunnel
Expand Down
2 changes: 1 addition & 1 deletion Utilities/Matlab/scripts/FM_Burner.m
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
HRR = importdata([outdir,'FM_15cm_Burner_',fuel_name{i_fuel},'_',res_name{fds_resolution},'_hrr.csv'],',',2);

Time_FDS = DEV.data(:,find(strcmp(DEV.colheaders,'Time')));
XO2_FDS = DEV.data(:,find(strcmp(DEV.colheaders,'"XO2"')));
XO2_FDS = DEV.data(:,find(strcmp(DEV.colheaders,'XO2')));
Qdot_FDS = HRR.data(:,find(strcmp(HRR.colheaders,'HRR')));
Qrad_FDS = HRR.data(:,find(strcmp(HRR.colheaders,'Q_RADI')));
ntp = length(Time_FDS);
Expand Down
153 changes: 0 additions & 153 deletions Utilities/Matlab/scripts/flame_height2.m

This file was deleted.

6 changes: 3 additions & 3 deletions Utilities/Matlab/scripts/umd_line_burner_process.m
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@
HRR = importdata([outdir,fuel_name{i_fuel},'_dx_',res_name{fds_resolution},'_hrr.csv'],',',2);

Time_FDS = DEV.data(:,find(strcmp(DEV.colheaders,'Time')));
XO2_FDS = DEV.data(:,find(strcmp(DEV.colheaders,'"XO2"')));
XO2_FDS = DEV.data(:,find(strcmp(DEV.colheaders,'XO2')));
Qdot_FDS = HRR.data(:,find(strcmp(HRR.colheaders,'HRR')));
Qrad_FDS = HRR.data(:,find(strcmp(HRR.colheaders,'Q_RADI')));
q_R_FDS = 0.5*( DEV.data(:,find(strcmp(DEV.colheaders,'"qrad1"'))) + DEV.data(:,find(strcmp(DEV.colheaders,'"qrad2"'))) );
q_R_FDS = 0.5*( DEV.data(:,find(strcmp(DEV.colheaders,'qrad1'))) + DEV.data(:,find(strcmp(DEV.colheaders,'qrad2'))) );
ntp = length(Time_FDS);
Lf_FDS = DEV.data(:,find(strcmp(DEV.colheaders,'"L_F"')));
Lf_FDS = DEV.data(:,find(strcmp(DEV.colheaders,'L_F')));

Lf_tmp = Lf_FDS;
for n=1:ntp
Expand Down
58 changes: 29 additions & 29 deletions Utilities/Python/FDS_validation_script.py
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
#!$FIREMODELS/fds/.github/fds_python_env/bin/python

import subprocess
import fdsplotlib
import importlib
import runpy
importlib.reload(fdsplotlib) # use for development (while making changes to fdsplotlib.py)

# # Scripts to run prior to dataplot
# Scripts to run prior to dataplot

# print("catchpole_spread_rates..."); subprocess.run(["python","./scripts/catchpole_spread_rates.py"])
# print("NIST_deposition_gauge..."); subprocess.run(["python","./scripts/NIST_deposition_gauge.py"])
# print("flame_height..."); subprocess.run(["python","./scripts/flame_height.py"])
# print("NIST_RSE..."); subprocess.run(["python","./scripts/NIST_RSE.py"])
# print("sippola_aerosol_deposition..."); subprocess.run(["python","./scripts/sippola_aerosol_deposition.py"])
# print("layer_height..."); subprocess.run(["python","./scripts/layer_height.py"])
# print("NIST_NRC_Corner_Effects..."); subprocess.run(["python","./scripts/NIST_NRC_Corner_Effects.py"])
# # print("fm_data_center..."); subprocess.run(["python","./scripts/fm_data_center.py"])
# print("LNG_Dispersion..."); subprocess.run(["python","./scripts/LNG_Dispersion.py"])
# print("LNG_wind_profiles..."); subprocess.run(["python","./scripts/LNG_wind_profiles.py"])
# print("FM_Vertical_Wall_Flames..."); subprocess.run(["python","./scripts/FM_Vertical_Wall_Flames.py"])
# print("umd_line_burner_process..."); subprocess.run(["python","./scripts/umd_line_burner_process.py"])
# # print("Askervein_Hill..."); subprocess.run(["python","./scripts/Askervein_Hill.py"])
# print("UWO_Wind_Tunnel..."); subprocess.run(["python","./scripts/UWO_Wind_Tunnel.py"])
# print("FM_Burner..."); subprocess.run(["python","./scripts/FM_Burner.py"])
# print("Crown_Fires..."); subprocess.run(["python","./scripts/Crown_Fires.py"])
# print("Ranz_Marshall..."); subprocess.run(["python","./scripts/Ranz_Marshall.py"])
# print("Phoenix_LNG_Fires..."); subprocess.run(["python","./scripts/Phoenix_LNG_Fires.py"])
print("catchpole_spread_rates..."); runpy.run_path("./scripts/catchpole_spread_rates.py", run_name="__main__")
print("NIST_deposition_gauge..."); runpy.run_path("./scripts/NIST_deposition_gauge.py", run_name="__main__")
print("flame_height..."); runpy.run_path("./scripts/flame_height.py", run_name="__main__")
print("NIST_RSE..."); runpy.run_path("./scripts/NIST_RSE.py", run_name="__main__")
print("sippola_aerosol_deposition..."); runpy.run_path("./scripts/sippola_aerosol_deposition.py", run_name="__main__")
print("layer_height..."); runpy.run_path("./scripts/layer_height.py", run_name="__main__")
print("NIST_NRC_Corner_Effects..."); runpy.run_path("./scripts/NIST_NRC_Corner_Effects.py", run_name="__main__")
# print("fm_data_center..."); runpy.run_path("./scripts/fm_data_center.py", run_name="__main__")
print("LNG_Dispersion..."); runpy.run_path("./scripts/LNG_Dispersion.py", run_name="__main__")
print("LNG_wind_profiles..."); runpy.run_path("./scripts/LNG_wind_profiles.py", run_name="__main__")
print("FM_Vertical_Wall_Flames..."); runpy.run_path("./scripts/FM_Vertical_Wall_Flames.py", run_name="__main__")
print("umd_line_burner_process..."); runpy.run_path("./scripts/umd_line_burner_process.py", run_name="__main__")
# print("Askervein_Hill..."); runpy.run_path("./scripts/Askervein_Hill.py", run_name="__main__")
print("UWO_Wind_Tunnel..."); runpy.run_path("./scripts/UWO_Wind_Tunnel.py", run_name="__main__")
print("FM_Burner..."); runpy.run_path("./scripts/FM_Burner.py", run_name="__main__")
print("Crown_Fires..."); runpy.run_path("./scripts/Crown_Fires.py", run_name="__main__")
print("Ranz_Marshall..."); runpy.run_path("./scripts/Ranz_Marshall.py", run_name="__main__")
print("Phoenix_LNG_Fires..."); runpy.run_path("./scripts/Phoenix_LNG_Fires.py", run_name="__main__")

# Dataplot and scatplot options

Expand All @@ -41,15 +41,15 @@
# plot_range=["all"]) # see notes below on plot_range

# Special cases

print("Beyler_Hood..."); subprocess.run(["python","./scripts/Beyler_Hood.py"])
print("BRE_LEMTA_Sprays..."); subprocess.run(["python","./scripts/BRE_LEMTA_Sprays.py"])
print("FM_FPRF_Datacenter..."); subprocess.run(["python","./scripts/FM_FPRF_Datacenter.py"])
print("McCaffrey_Plume..."); subprocess.run(["python","./scripts/McCaffrey_Plume.py"])
print("Sandia_Pools..."); subprocess.run(["python","./scripts/Sandia_Pools.py"])
print("TUS_Facade..."); subprocess.run(["python","./scripts/TUS_Facade_contours.py"])
print("USFS_Deep_Fuel_Beds..."); subprocess.run(["python","./scripts/USFS_Deep_Fuel_Beds.py"])
print("Wu_Bakar_Tunnels..."); subprocess.run(["python","./scripts/Wu_Bakar_Tunnels.py"])
print("Beyler_Hood..."); runpy.run_path("./scripts/Beyler_Hood.py", run_name="__main__")
print("BRE_LEMTA_Sprays..."); runpy.run_path("./scripts/BRE_LEMTA_Sprays.py", run_name="__main__")
print("FM_FPRF_Datacenter..."); runpy.run_path("./scripts/FM_FPRF_Datacenter.py", run_name="__main__")
print("Heskestad_Flame_Height_2..."); runpy.run_path("./scripts/Heskestad_Flame_Height_2.py", run_name="__main__")
print("McCaffrey_Plume..."); runpy.run_path("./scripts/McCaffrey_Plume.py", run_name="__main__")
print("Sandia_Pools..."); runpy.run_path("./scripts/Sandia_Pools.py", run_name="__main__")
print("TUS_Facade..."); runpy.run_path("./scripts/TUS_Facade_contours.py", run_name="__main__")
print("USFS_Deep_Fuel_Beds..."); runpy.run_path("./scripts/USFS_Deep_Fuel_Beds.py", run_name="__main__")
print("Wu_Bakar_Tunnels..."); runpy.run_path("./scripts/Wu_Bakar_Tunnels.py", run_name="__main__")

print("Python validation scripts completed successfully!")

Expand Down
Loading
Loading