Skip to content

Commit 7249aef

Browse files
authored
Merge pull request #15320 from drjfloyd/master
FDS Source: Add DRY to HVAC outputs and SLCF
2 parents f373580 + 0424c90 commit 7249aef

File tree

5 files changed

+23
-11
lines changed

5 files changed

+23
-11
lines changed

Manuals/FDS_User_Guide/FDS_User_Guide.tex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11248,6 +11248,7 @@ \subsection{Dry Volume and Mass Fractions}
1124811248
DRY=T /
1124911249
\end{lstlisting}
1125011250

11251+
\ct{DRY} can also be specified on an \ct{SLCF} line that reports the \ct{'MASS FRACTION'} or \ct{'VOLUME FRACTION'} of a species as well as an \ct{HVAC} \ct{DUCT QUANTITY LIST} or \ct{NODE QUANTITY LIST}. For \ct{HVAC} line outputs, \ct{DRY} is an array corresponding to each entry on the \ct{QUANTITY LIST}.
1125111252

1125211253
\subsection{Aerosol and Soot Concentration}
1125311254
\label{info:soot}
@@ -12547,6 +12548,7 @@ \section{\texorpdfstring{{\tt HVAC}}{HVAC} (HVAC System Definition)}
1254712548
\ct{DEVC_ID} & Character & Sections ~\ref{info:HVACduct}, \ref{info:HVACfan}, \ref{info:HVACfilter} & & \\ \hline
1254812549
\ct{DIAMETER} & Real & Section~\ref{info:HVACduct} & m & \\ \hline
1254912550
\ct{DISCHARGE_COEFFICIENT} & Real & Section~\ref{info:Leaks} & & 1. \\ \hline
12551+
\ct{DRY} & Log. Array & Section~\ref{info:dry} & & \\ \hline
1255012552
\ct{DUCT_ID} & Char.~Array & Section~\ref{info:HVACnode} & & \\ \hline
1255112553
\ct{EFFICIENCY} & Real Array & Sections~\ref{info:HVACfilter}, \ref{info:HVACaircoil} & & 1.0 \\ \hline
1255212554
\ct{FAN_ID} & Character & Section~\ref{info:HVACduct} & & \\ \hline
@@ -13421,6 +13423,7 @@ \section{\texorpdfstring{{\tt REAC}}{REAC} (Reaction Parameters)}
1342113423
\ct{CHECK_ATOM_BALANCE} & Logical & Section~\ref{info:REAC_Diagnostics} & & \ct{T} \\ \hline
1342213424
\ct{CO_YIELD} & Real & Section~\ref{info:simple_chemistry} & kg/kg & 0 \\ \hline
1342313425
\ct{CRITICAL_FLAME_TEMPERATURE} & Real & Section~\ref{info:extinction} & $^\circ$C & 1427 \\ \hline
13426+
\ct{DRY} & Logical ray & Section~\ref{info:dry} & & \\ \hline
1342413427
\ct{E} & Real & Section~\ref{info:finite} & J/mol & \\ \hline
1342513428
\ct{E_LOW_PR} & Real & Section~\ref{info:falloff_reactions} & J/mol & \\ \hline
1342613429
\ct{EPUMO2} & Real & Section~\ref{info:heat_of_combustion} & kJ/kg & 13100 \\ \hline
@@ -13480,6 +13483,7 @@ \section{\texorpdfstring{{\tt SLCF}}{SLCF} (Slice File Parameters)}
1348013483
\ct{AGL_SLICE} & Real & Section~\ref{info:complex_terrain} & m & \\ \hline
1348113484
\ct{CELL_CENTERED} & Logical & Section~\ref{info:SLCF} & & \ct{F} \\ \hline
1348213485
\ct{DB} & Character & Section~\ref{info:SLCF} & & \\ \hline
13486+
\ct{DRY} & Logical & Section~\ref{info:dry} & & \\ \hline
1348313487
\ct{ID} & Character & Section~\ref{info:SLCF} & & \\ \hline
1348413488
\ct{MAXIMUM_VALUE} & Real & Reference~\cite{Smokeview_Users_Guide} & & \\ \hline
1348513489
\ct{MESH_NUMBER} & Integer & Section~\ref{info:SLCF} & & \\ \hline

Source/dump.f90

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5970,8 +5970,6 @@ SUBROUTINE DUMP_SLCF(T,DT,NM,IFRMT)
59705970

59715971
! Return if there are no slices to process and this is not a Plot3D dump
59725972

5973-
DRY=.FALSE.
5974-
59755973
SELECT CASE(IFRMT)
59765974
CASE(0) ; PLOT3D=.FALSE. ; SLCF3D=.FALSE.
59775975
CASE(1) ; PLOT3D=.TRUE. ; SLCF3D=.FALSE.
@@ -6087,6 +6085,7 @@ SUBROUTINE DUMP_SLCF(T,DT,NM,IFRMT)
60876085
AGL_TERRAIN_SLICE = .FALSE.
60886086
CC_CELL_CENTERED = .FALSE.
60896087
CC_INTERP2FACES = .FALSE.
6088+
DRY = .FALSE.
60906089
ELSE
60916090
SL => SLICE(IQ)
60926091
IND = SL%INDEX
@@ -6104,6 +6103,7 @@ SUBROUTINE DUMP_SLCF(T,DT,NM,IFRMT)
61046103
J2 = SL%J2
61056104
K1 = SL%K1
61066105
K2 = SL%K2
6106+
DRY = SL%DRY
61076107
DEBUG = 0
61086108
IF(SL%DEBUG)DEBUG = 1
61096109
AGL_TERRAIN_SLICE = SL%TERRAIN_SLICE
@@ -6811,7 +6811,7 @@ SUBROUTINE UPDATE_DEVICES_1(T,DT,NM)
68116811

68126812
CASE(300:350) OUTPUT_INDEX_SELECT ! HVAC output
68136813

6814-
SDV%VALUE_1 = HVAC_OUTPUT(DV%QUANTITY_INDEX(1),DV%Y_INDEX,DV%Z_INDEX,DV%DUCT_INDEX,DV%NODE_INDEX,DV%DUCT_CELL_INDEX)
6814+
SDV%VALUE_1 = HVAC_OUTPUT(DV%QUANTITY_INDEX(1),DV%Y_INDEX,DV%Z_INDEX,DV%DUCT_INDEX,DV%NODE_INDEX,DV%DUCT_CELL_INDEX,DV%DRY)
68156815

68166816
CASE(400:454) OUTPUT_INDEX_SELECT ! Particle-specific output
68176817

@@ -9544,14 +9544,15 @@ REAL(EB) FUNCTION SOLID_PHASE_OUTPUT(INDX,Y_INDEX,Z_INDEX,PART_INDEX,OPT_WALL_IN
95449544
END FUNCTION SOLID_PHASE_OUTPUT
95459545

95469546

9547-
REAL(EB) FUNCTION HVAC_OUTPUT(IND,Y_INDEX,Z_INDEX,DUCT_INDEX,NODE_INDEX,DUCT_CELL_INDEX)
9547+
REAL(EB) FUNCTION HVAC_OUTPUT(IND,Y_INDEX,Z_INDEX,DUCT_INDEX,NODE_INDEX,DUCT_CELL_INDEX,DRY)
95489548

95499549
! Compute HVAC Output Quantities
95509550

95519551
USE MATH_FUNCTIONS, ONLY: INTERPOLATE1D
95529552
USE PHYSICAL_FUNCTIONS, ONLY: GET_MASS_FRACTION,GET_MOLECULAR_WEIGHT,GET_ENTHALPY,GET_SENSIBLE_ENTHALPY
95539553
INTEGER, INTENT(IN) :: Y_INDEX,Z_INDEX,IND,DUCT_INDEX,NODE_INDEX(2),DUCT_CELL_INDEX
95549554
REAL(EB) :: Y_H2O,ZZ_GET(1:N_TRACKED_SPECIES),MW,Y_SPECIES,RCON,H_DUCT,H_TMPA
9555+
LOGICAL :: DRY
95559556

95569557
Y_H2O = 0._EB
95579558
Y_SPECIES=1.0_EB
@@ -10170,7 +10171,7 @@ SUBROUTINE DUMP_HVAC(T)
1017010171
NODE_INDEX(1)=N
1017110172
DO NN = 1, N_NODE_QUANTITY
1017210173
HQT=>NODE_QUANTITY_ARRAY(NN)
10173-
OUTVAL_N(NN) = REAL(HVAC_OUTPUT(HQT%OUTPUT_INDEX,HQT%Y_INDEX,HQT%Z_INDEX,-1,NODE_INDEX,-1),FB)
10174+
OUTVAL_N(NN) = REAL(HVAC_OUTPUT(HQT%OUTPUT_INDEX,HQT%Y_INDEX,HQT%Z_INDEX,-1,NODE_INDEX,-1,HQT%DRY),FB)
1017410175
ENDDO
1017510176
WRITE(LU_HVAC) OUTVAL_N
1017610177
ENDDO
@@ -10182,14 +10183,14 @@ SUBROUTINE DUMP_HVAC(T)
1018210183
DO NNN=1,DUCT(N)%N_CELLS
1018310184
DO NN = 1, N_DUCT_QUANTITY
1018410185
HQT=>DUCT_QUANTITY_ARRAY(NN)
10185-
OUTVAL_D(NN) = REAL(HVAC_OUTPUT(HVAC_SMV_EQUIVALENCE(HQT%OUTPUT_INDEX),HQT%Y_INDEX,HQT%Z_INDEX,N,NODE_INDEX,NNN),FB)
10186+
OUTVAL_D(NN) = REAL(HVAC_OUTPUT(HVAC_SMV_EQUIVALENCE(HQT%OUTPUT_INDEX),HQT%Y_INDEX,HQT%Z_INDEX,N,NODE_INDEX,NNN,HQT%DRY),FB)
1018610187
ENDDO
1018710188
WRITE(LU_HVAC) OUTVAL_D
1018810189
ENDDO
1018910190
ELSE
1019010191
DO NN = 1, N_DUCT_QUANTITY
1019110192
HQT=>DUCT_QUANTITY_ARRAY(NN)
10192-
OUTVAL_D(NN) = REAL(HVAC_OUTPUT(HQT%OUTPUT_INDEX,HQT%Y_INDEX,HQT%Z_INDEX,N,NODE_INDEX,-1),FB)
10193+
OUTVAL_D(NN) = REAL(HVAC_OUTPUT(HQT%OUTPUT_INDEX,HQT%Y_INDEX,HQT%Z_INDEX,N,NODE_INDEX,-1,HQT%DRY),FB)
1019310194
ENDDO
1019410195
WRITE(LU_HVAC) OUTVAL_D
1019510196
ENDIF

Source/hvac.f90

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ SUBROUTINE READ_HVAC
124124
LOGICAL :: INITIALIZED_HVAC_MASS_TRANSPORT !< Flag indicating DUCTs with N_CELLS>1 have been initiazed.
125125
LOGICAL :: DUCT_QUANTITY_DEFINED=.FALSE. !< Flag indicating a DUCT_QUANTITY list has alreayd been defined
126126
LOGICAL :: NODE_QUANTITY_DEFINED=.FALSE. !< Flag indicating a NODE_QUANTITY list has alreayd been defined
127+
LOGICAL :: DRY(20) !< Flag indicating species output is DRY
127128
CHARACTER(LABEL_LENGTH) :: AIRCOIL_ID !< ID of an AIRCOIL located in a DUCT.
128129
CHARACTER(LABEL_LENGTH) :: CTRL_ID !< Name of a control function controlling a FAN, damper, or AIRCOIL.
129130
CHARACTER(LABEL_LENGTH) :: DEVC_ID !< Name of a device controlling a FAN, damper, or AIRCOIL.
@@ -145,7 +146,7 @@ SUBROUTINE READ_HVAC
145146
TYPE(DUCT_TYPE), POINTER :: DU !< Pointer to a DUCT
146147
TYPE(HVAC_QUANTITY_TYPE), POINTER :: HQT !< Pointer to a DUCT_ or NODE_QUANTITY_ARRAY
147148
NAMELIST /HVAC/ AIRCOIL_ID,AMBIENT,AREA,CLEAN_LOSS,COOLANT_SPECIFIC_HEAT,COOLANT_MASS_FLOW,COOLANT_TEMPERATURE,CTRL_ID,&
148-
DAMPER,DEBUG,DEVC_ID,DIAMETER,DISCHARGE_COEFFICIENT,DUCT_ID,&
149+
DAMPER,DEBUG,DEVC_ID,DIAMETER,DISCHARGE_COEFFICIENT,DRY,DUCT_ID,&
149150
EFFICIENCY,FAN_ID,FILTER_ID,FIXED_Q,GEOM,GEOM2,ID,LEAK_ENTHALPY,LEAK_PRESSURE_EXPONENT,LEAK_REFERENCE_PRESSURE,&
150151
LENGTH,LOADING,LOADING_MULTIPLIER,LOSS,&
151152
MASS_FLOW,MAX_FLOW,MAX_PRESSURE,N_CELLS,NETWORK_ID,NODE_ID,PERIMETER,QUANTITY,QUANTITY_SPEC_ID,&
@@ -719,6 +720,7 @@ SUBROUTINE READ_HVAC
719720
N_DUCT_QUANTITY = N_DUCT_QUANTITY + 1
720721
ENDDO
721722
ALLOCATE (DUCT_QUANTITY_ARRAY(N_DUCT_QUANTITY))
723+
DUCT_QUANTITY_ARRAY(1:N_DUCT_QUANTITY)%DRY = DRY(1:N_DUCT_QUANTITY)
722724
DO N=1, N_DUCT_QUANTITY
723725
HQT => DUCT_QUANTITY_ARRAY(N)
724726
CALL GET_QUANTITY_INDEX(HQT%SMOKEVIEW_LABEL,HQT%SMOKEVIEW_BAR_LABEL,HQT%OUTPUT_INDEX,HQT%Y_INDEX,HQT%Z_INDEX,&
@@ -736,6 +738,7 @@ SUBROUTINE READ_HVAC
736738
N_NODE_QUANTITY = N_NODE_QUANTITY + 1
737739
ENDDO
738740
ALLOCATE (NODE_QUANTITY_ARRAY(N_NODE_QUANTITY))
741+
NODE_QUANTITY_ARRAY(1:N_NODE_QUANTITY)%DRY = DRY(1:N_NODE_QUANTITY)
739742
DO N=1, N_NODE_QUANTITY
740743
HQT => NODE_QUANTITY_ARRAY(N)
741744
CALL GET_QUANTITY_INDEX(HQT%SMOKEVIEW_LABEL,HQT%SMOKEVIEW_BAR_LABEL,HQT%OUTPUT_INDEX,HQT%Y_INDEX,HQT%Z_INDEX,&
@@ -774,6 +777,7 @@ SUBROUTINE SET_HVAC_DEFAULTS
774777
DAMPER = .FALSE.
775778
DEVC_ID = 'null'
776779
DIAMETER = -1._EB
780+
DRY = .FALSE.
777781
DUCT_ID = 'null'
778782
FAN_ID = 'null'
779783
FIXED_Q = -1.E10_EB

Source/read.f90

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15716,12 +15716,12 @@ SUBROUTINE READ_SLCF
1571615716
REAL(EB) :: MAXIMUM_VALUE,MINIMUM_VALUE
1571715717
REAL(EB) :: AGL_SLICE
1571815718
INTEGER :: N,NN,NM,MESH_NUMBER,N_SLCF_O,NITER,ITER,VELO_INDEX,GEOM_INDEX,IOR
15719-
LOGICAL :: VECTOR,CELL_CENTERED,DEBUG,CULL_SLICE
15719+
LOGICAL :: VECTOR,CELL_CENTERED,DEBUG,CULL_SLICE,DRY
1572015720
CHARACTER(LABEL_LENGTH) :: QUANTITY,SPEC_ID,PART_ID,QUANTITY2,PROP_ID,REAC_ID,SLICETYPE
1572115721
REAL(EB), PARAMETER :: TOL=1.E-10_EB
1572215722
REAL(FB) :: RLE_MIN, RLE_MAX
1572315723
TYPE (SLICE_TYPE), POINTER :: SL
15724-
NAMELIST /SLCF/ AGL_SLICE,CELL_CENTERED,DB,FYI,DEBUG,ID,MAXIMUM_VALUE,MESH_NUMBER,&
15724+
NAMELIST /SLCF/ AGL_SLICE,CELL_CENTERED,DB,DRY,FYI,DEBUG,ID,MAXIMUM_VALUE,MESH_NUMBER,&
1572515725
MINIMUM_VALUE,PART_ID,PBX,PBY,PBZ,PROP_ID,QUANTITY,QUANTITY2,REAC_ID,RLE_MIN,RLE_MAX,SLICETYPE,&
1572615726
SPEC_ID,VECTOR,VELO_INDEX,XB
1572715727

@@ -15785,6 +15785,7 @@ SUBROUTINE READ_SLCF
1578515785
VELO_INDEX = 0
1578615786
RLE_MIN = 1.0_FB
1578715787
RLE_MAX = 0.0_FB
15788+
DRY = .FALSE.
1578815789

1578915790
CALL CHECKREAD('SLCF',LU_INPUT,IOS) ; IF (STOP_STATUS==SETUP_STOP) RETURN
1579015791
IF (IOS==1) EXIT SLCF_LOOP
@@ -15894,6 +15895,7 @@ SUBROUTINE READ_SLCF
1589415895
SL=>SLICE(N)
1589515896
SL%SLCF_INDEX=NN
1589615897
SL%ID = ID
15898+
SL%DRY = DRY
1589715899
SL%IOR = IOR
1589815900
SL%SLICETYPE = TRIM(SLICETYPE)
1589915901
SL%GEOM_INDEX = GEOM_INDEX

Source/type.f90

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1564,7 +1564,7 @@ MODULE TYPES
15641564
REAL(FB), DIMENSION(2) :: MINMAX
15651565
REAL(FB) :: RLE_MIN, RLE_MAX
15661566
REAL(EB):: AGL_SLICE
1567-
LOGICAL :: TERRAIN_SLICE=.FALSE.,CELL_CENTERED=.FALSE.,RLE=.FALSE.,DEBUG=.FALSE.,THREE_D=.FALSE.
1567+
LOGICAL :: TERRAIN_SLICE=.FALSE.,CELL_CENTERED=.FALSE.,RLE=.FALSE.,DEBUG=.FALSE.,THREE_D=.FALSE.,DRY=.FALSE.
15681568
CHARACTER(LABEL_LENGTH) :: SLICETYPE='STRUCTURED',SMOKEVIEW_LABEL
15691569
CHARACTER(LABEL_LENGTH) :: SMOKEVIEW_BAR_LABEL,ID='null',MATL_ID='null'
15701570
END TYPE SLICE_TYPE
@@ -2130,6 +2130,7 @@ MODULE TYPES
21302130
CHARACTER(LABEL_LENGTH) :: SMOKEVIEW_LABEL !< Smokeview label for QUANTITY
21312131
CHARACTER(LABEL_LENGTH) :: SMOKEVIEW_BAR_LABEL !< Smokeview colorbar label for QUANTITY
21322132
CHARACTER(LABEL_LENGTH) :: UNITS !< Units for QUANTITY
2133+
LOGICAL :: DRY !< Remove water vapor before computing a mass or volume fraction
21332134
END TYPE HVAC_QUANTITY_TYPE
21342135

21352136

0 commit comments

Comments
 (0)