Skip to content

Commit 8866de7

Browse files
committed
Merge remote-tracking branch 'firemodels/master' into FireX
2 parents 6fbee83 + fab75cb commit 8866de7

File tree

81 files changed

+1315
-970
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+1315
-970
lines changed

Manuals/Bibliography/FDS_general.bib

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1838,7 +1838,7 @@ @TECHREPORT{Farouki:1981
18381838

18391839
@PHDTHESIS{Fernandez:2018,
18401840
author = {Sebastian Ferreyro Fernandez},
1841-
title = {ADVANCED SOOT AND RADIATION MODELS FOR LAMINAR AND TURBULENT FLAMES},
1841+
title = {Advanced Soot And Radiation Models For Laminar And Turbulent Flames},
18421842
year = {2018},
18431843
school = {The Pennsylvania State University}
18441844
}

Manuals/FDS_User_Guide/FDS_User_Guide.tex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2271,7 +2271,7 @@ \subsubsection{Default Convective Heat Transfer Model}
22712271
\end{center}
22722272
\end{table}
22732273

2274-
The length scale, $L$, is specified by \ct{CONVECTION_LENGTH_SCALE} on the \ct{SURF} line. By default, it is 1~m for plates, and the diameter of a sphere or cylinder.
2274+
The length scale, $L$, is specified by \ct{CONVECTION_LENGTH_SCALE} on the \ct{SURF} line. By default, it is 1~m for plates, and the diameter of a sphere or cylinder. The velocity used to compute Re can be output with the solid phase quantity \ct{'TANGENTIAL VELOCITY'}.
22752275

22762276
\subsubsection{Output for Convective Heat Transfer Regime}
22772277
\label{info:convection_regime}
@@ -11741,6 +11741,7 @@ \section{Solid Phase Output Quantities}
1174111741
\ct{SUBSTEPS} & Section~\ref{info:solid_phase_stability} & & B,D \\ \hline
1174211742
\ct{SURFACE DENSITY}$^4$ & Section~\ref{info:material_components} & kg/m$^2$ & B,D \\ \hline
1174311743
\ct{SURFACE DEPOSITION}$^1$ & Section~\ref{info:deposition} & kg/m$^2$ & B,D \\ \hline
11744+
\ct{TANGENTIAL VELOCITY} & Section~\ref{info:convection} & m/s & B,D \\ \hline
1174411745
\ct{TOTAL MASS FLUX WALL}$^1$ & Section~\ref{info:wallflux} & kg/s/m$^2$ & B,D \\ \hline
1174511746
\ct{VELOCITY ERROR} & Section~\ref{info:PRES} & m/s & B,D \\ \hline
1174611747
\ct{VISCOUS STRESS WALL} & Section~\ref{info:distributed_forces} & Pa & B,D \\ \hline

Manuals/FDS_Validation_Guide/SCRIPT_FIGURES/Sandia_Jets/.gitignore renamed to Manuals/FDS_Validation_Guide/SCRIPT_FIGURES/Sandia_Jets_Pools_Fireballs/.gitignore

File renamed without changes.

Source/data.f90

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1752,6 +1752,10 @@ SUBROUTINE DEFINE_OUTPUT_QUANTITIES
17521752
OUTPUT_QUANTITY(-100)%SPEC_ID_REQUIRED = .FALSE.
17531753
OUTPUT_QUANTITY(-100)%BNDF_APPROPRIATE = .TRUE.
17541754

1755+
OUTPUT_QUANTITY(-101)%NAME = 'TANGENTIAL VELOCITY'
1756+
OUTPUT_QUANTITY(-101)%UNITS= 'm/s'
1757+
OUTPUT_QUANTITY(-101)%SHORT_NAME = 'u_tang'
1758+
17551759
END SUBROUTINE DEFINE_OUTPUT_QUANTITIES
17561760

17571761

Source/dump.f90

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10703,6 +10703,9 @@ REAL(EB) FUNCTION SOLID_PHASE_OUTPUT(INDX,Y_INDEX,Z_INDEX,PART_INDEX,OPT_WALL_IN
1070310703
CASE(100) ! CONDENSATION HEAT FLUX
1070410704
SOLID_PHASE_OUTPUT = B1%Q_CONDENSE * 0.001_EB
1070510705

10706+
CASE(101) ! TANGENTIAL VELOCITY
10707+
IF (ASSOCIATED(B1)) SOLID_PHASE_OUTPUT = B1%U_TANG
10708+
1070610709
END SELECT SOLID_PHASE_SELECT
1070710710

1070810711
END FUNCTION SOLID_PHASE_OUTPUT

Source/fire.f90

Lines changed: 56 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,73 +1188,83 @@ SUBROUTINE CALC_AFT_REAC_AND_PROD(ZZ,ZZ_REAC,ZZ_PROD)
11881188

11891189
REAL(EB), INTENT(IN) :: ZZ(N_TRACKED_SPECIES)
11901190
REAL(EB), INTENT(OUT) :: ZZ_REAC(N_TRACKED_SPECIES),ZZ_PROD(N_TRACKED_SPECIES)
1191+
REAL(EB) :: ZZ_EQUIV(N_TRACKED_SPECIES)
11911192
REAL(EB) :: EQUIV, X,Y,Z,A,B,C,D,E, SUM_ZZ
11921193
REAL(EB) :: ZZ_MASS, ZZ_FUEL_O2_MASS
11931194
REAL(EB) :: REAC_MASS, PROD_MASS, FUEL_MASS, O2_MASS, CO2_MASS, H2O_MASS
11941195
INTEGER :: NS
1195-
1196-
CALL CALC_EQUIV_RATIO(ZZ(1:N_TRACKED_SPECIES), EQUIV)
1197-
IF (SIM_MODE /= DNS_MODE .AND. USE_MIXED_ZN_AFT_TMP) THEN
1198-
EQUIV = MAX(1._EB,EQUIV)
1199-
ENDIF
1196+
REAL(EB), PARAMETER:: EQUIV_TOL=1.E-4_EB
12001197

12011198
! Adjust for diluents
12021199
ZZ_FUEL_O2_MASS = 0._EB
12031200
ZZ_MASS = SUM(ZZ(1:N_TRACKED_SPECIES))
1201+
ZZ_EQUIV = 0.0_EB
12041202
ZZ_REAC(1:N_TRACKED_SPECIES) = ZZ(1:N_TRACKED_SPECIES)
12051203
ZZ_PROD(1:N_TRACKED_SPECIES) = ZZ(1:N_TRACKED_SPECIES)
12061204
DO NS=1, N_TRACKED_SPECIES
1207-
IF (SPECIES_MIXTURE(NS)%OXR > TWO_EPSILON_EB) THEN ! FUEL
1205+
IF (SPECIES_MIXTURE(NS)%OXR > TWO_EPSILON_EB .AND. &
1206+
ABS(SPECIES_MIXTURE(NS)%EQUIV - 1.0_EB) > EQUIV_TOL) THEN ! FUEL
12081207
ZZ_REAC(NS) = 0._EB
12091208
ZZ_PROD(NS) = 0._EB
12101209
ZZ_FUEL_O2_MASS = ZZ_FUEL_O2_MASS + ZZ(NS)
1210+
ZZ_EQUIV(NS) = ZZ(NS)
12111211
ENDIF
12121212
ENDDO
12131213
ZZ_REAC(I_O2) = 0._EB
12141214
ZZ_PROD(I_O2) = 0._EB
1215+
ZZ_EQUIV(I_O2) = ZZ(I_O2)
12151216
ZZ_FUEL_O2_MASS = ZZ_FUEL_O2_MASS + ZZ(I_O2)
12161217

1217-
! Based on CxHyOz + aO2 = bCO2 + cH2O + dCxHyOz + eO2
1218-
X=SPECIES_MIXTURE(I_FUEL)%ATOMS(6) !C
1219-
Y=SPECIES_MIXTURE(I_FUEL)%ATOMS(1) !H
1220-
Z=SPECIES_MIXTURE(I_FUEL)%ATOMS(8) !O
1221-
A=0.5_EB*((2._EB*X+0.5_EB*Y)/EQUIV -Z) ! a is a function of equivalence ratio
1222-
IF (ABS(EQUIV - 1.0_EB) < TWO_EPSILON_EB) THEN ! Stoich
1223-
B = X
1224-
C = 0.5_EB*Y
1225-
D = 0._EB ! No fuel
1226-
E = 0._EB ! No O2
1227-
ELSEIF (EQUIV > 1) THEN ! Rich
1228-
D = (2._EB*X+0.5_EB*Y-2._EB*A-Z)/(2._EB*X+0.5_EB*Y-Z)
1229-
B = (1._EB-D)*X
1230-
C = 0.5_EB*(1._EB-D)*Y
1231-
E = 0._EB ! No O2
1232-
ELSE !EQUIV < 1, Lean
1233-
B = X
1234-
C = 0.5_EB*Y
1235-
D = 0._EB ! No fuel
1236-
E = A + 0.5*Z - B - 0.5_EB*C
1237-
ENDIF
1218+
IF (ZZ_FUEL_O2_MASS > TWO_EPSILON_EB) THEN
1219+
SUM_ZZ=SUM(ZZ_EQUIV)
1220+
ZZ_EQUIV = ZZ_EQUIV/(SUM_ZZ + TWO_EPSILON_EB)
1221+
CALL CALC_EQUIV_RATIO(ZZ_EQUIV(1:N_TRACKED_SPECIES), EQUIV)
1222+
IF (SIM_MODE /= DNS_MODE .AND. USE_MIXED_ZN_AFT_TMP) THEN
1223+
EQUIV = MAX(1._EB,EQUIV)
1224+
ENDIF
12381225

1239-
! Setup reactants
1240-
FUEL_MASS = 1._EB*SPECIES_MIXTURE(I_FUEL)%MW
1241-
O2_MASS = A*SPECIES_MIXTURE(I_O2)%MW
1242-
REAC_MASS = FUEL_MASS+O2_MASS
1243-
ZZ_REAC(I_FUEL)=FUEL_MASS/REAC_MASS*ZZ_FUEL_O2_MASS
1244-
ZZ_REAC(I_O2)=O2_MASS/REAC_MASS*ZZ_FUEL_O2_MASS
1245-
SUM_ZZ=SUM(ZZ_REAC)
1246-
ZZ_REAC = ZZ_REAC/SUM_ZZ
1247-
1248-
! Setup products
1249-
CO2_MASS = B*SPECIES_MIXTURE(I_CO2)%MW
1250-
H2O_MASS = C*SPECIES_MIXTURE(I_H2O)%MW
1251-
FUEL_MASS = D*SPECIES_MIXTURE(I_FUEL)%MW
1252-
O2_MASS = E*SPECIES_MIXTURE(I_O2)%MW
1253-
PROD_MASS = CO2_MASS+H2O_MASS+FUEL_MASS+O2_MASS
1254-
ZZ_PROD(I_CO2)=ZZ_PROD(I_CO2)+CO2_MASS/PROD_MASS*ZZ_FUEL_O2_MASS
1255-
ZZ_PROD(I_H2O)=ZZ_PROD(I_H2O)+H2O_MASS/PROD_MASS*ZZ_FUEL_O2_MASS
1256-
ZZ_PROD(I_FUEL)=FUEL_MASS/PROD_MASS*ZZ_FUEL_O2_MASS
1257-
ZZ_PROD(I_O2)=O2_MASS/PROD_MASS*ZZ_FUEL_O2_MASS
1226+
! Based on CxHyOz + aO2 = bCO2 + cH2O + dCxHyOz + eO2
1227+
X=SPECIES_MIXTURE(I_FUEL)%ATOMS(6) !C
1228+
Y=SPECIES_MIXTURE(I_FUEL)%ATOMS(1) !H
1229+
Z=SPECIES_MIXTURE(I_FUEL)%ATOMS(8) !O
1230+
A=0.5_EB*((2._EB*X+0.5_EB*Y)/EQUIV -Z) ! a is a function of equivalence ratio
1231+
IF (ABS(EQUIV - 1.0_EB) < EQUIV_TOL) THEN ! Stoich
1232+
B = X
1233+
C = 0.5_EB*Y
1234+
D = 0._EB ! No fuel
1235+
E = 0._EB ! No O2
1236+
ELSEIF (EQUIV > 1) THEN ! Rich
1237+
D = (2._EB*X+0.5_EB*Y-2._EB*A-Z)/(2._EB*X+0.5_EB*Y-Z)
1238+
B = (1._EB-D)*X
1239+
C = 0.5_EB*(1._EB-D)*Y
1240+
E = 0._EB ! No O2
1241+
ELSE !EQUIV < 1, Lean
1242+
B = X
1243+
C = 0.5_EB*Y
1244+
D = 0._EB ! No fuel
1245+
E = A + 0.5*Z - B - 0.5_EB*C
1246+
ENDIF
1247+
1248+
! Setup reactants
1249+
FUEL_MASS = 1._EB*SPECIES_MIXTURE(I_FUEL)%MW
1250+
O2_MASS = A*SPECIES_MIXTURE(I_O2)%MW
1251+
REAC_MASS = FUEL_MASS+O2_MASS
1252+
ZZ_REAC(I_FUEL)=FUEL_MASS/REAC_MASS*ZZ_FUEL_O2_MASS
1253+
ZZ_REAC(I_O2)=O2_MASS/REAC_MASS*ZZ_FUEL_O2_MASS
1254+
SUM_ZZ=SUM(ZZ_REAC)
1255+
ZZ_REAC = ZZ_REAC/SUM_ZZ
1256+
1257+
! Setup products
1258+
CO2_MASS = B*SPECIES_MIXTURE(I_CO2)%MW
1259+
H2O_MASS = C*SPECIES_MIXTURE(I_H2O)%MW
1260+
FUEL_MASS = D*SPECIES_MIXTURE(I_FUEL)%MW
1261+
O2_MASS = E*SPECIES_MIXTURE(I_O2)%MW
1262+
PROD_MASS = CO2_MASS+H2O_MASS+FUEL_MASS+O2_MASS
1263+
ZZ_PROD(I_CO2)=ZZ_PROD(I_CO2)+CO2_MASS/PROD_MASS*ZZ_FUEL_O2_MASS
1264+
ZZ_PROD(I_H2O)=ZZ_PROD(I_H2O)+H2O_MASS/PROD_MASS*ZZ_FUEL_O2_MASS
1265+
ZZ_PROD(I_FUEL)=FUEL_MASS/PROD_MASS*ZZ_FUEL_O2_MASS
1266+
ZZ_PROD(I_O2)=O2_MASS/PROD_MASS*ZZ_FUEL_O2_MASS
1267+
ENDIF
12581268
SUM_ZZ=SUM(ZZ_PROD)
12591269
ZZ_PROD = ZZ_PROD/SUM_ZZ
12601270

Source/read.f90

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3572,6 +3572,7 @@ SUBROUTINE READ_SPEC
35723572
* ELEMENT(8)%MASS / SPECIES_MIXTURE(N1)%MW
35733573

35743574
SPECIES_MIXTURE(N1)%OXA = SPECIES_MIXTURE(N1)%ATOMS(8) * ELEMENT(8)%MASS / SPECIES_MIXTURE(N1)%MW
3575+
SPECIES_MIXTURE(N1)%EQUIV = SPECIES_MIXTURE(N1)%OXR/(SPECIES_MIXTURE(N1)%OXA+TWO_EPSILON_EB)
35753576
ENDDO
35763577

35773578
!If SOOT_OXIDATION is enabled make sure to save accumulation on the wall and check that it is an AEROSOL species

Source/type.f90

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,7 @@ MODULE TYPES
650650
REAL(EB), ALLOCATABLE, DIMENSION(:) :: R50
651651
REAL(EB) :: OXR !< Required oxygen for complete combustion (gm/gm-species)
652652
REAL(EB) :: OXA !< Available oxygen for combustion (gm/gm-species)
653+
REAL(EB) :: EQUIV !< Species equiv ratio OXR/OXA
653654

654655

655656
END TYPE SPECIES_MIXTURE_TYPE

0 commit comments

Comments
 (0)