From 2c45a28edd5afbf3b5c0755c703f41c76c4a6ef9 Mon Sep 17 00:00:00 2001 From: Jason Floyd Date: Mon, 9 Mar 2026 15:00:29 -0400 Subject: [PATCH 1/6] FDS Docs: Fix spelling error --- Manuals/Bibliography/authors.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Manuals/Bibliography/authors.tex b/Manuals/Bibliography/authors.tex index 1d4baa892c9..7ad5b8fb913 100644 --- a/Manuals/Bibliography/authors.tex +++ b/Manuals/Bibliography/authors.tex @@ -61,7 +61,7 @@ \chapter{About the Developers} \item[Simo Hostikka] is an associate professor of fire safety engineering at Aalto University School of Engineering, since January 2014. Before joining Aalto, he worked as a Principal Scientist and Team Leader at VTT Technical Research Centre of Finland. He received a master of science (technology) degree in 1997 and a doctorate in 2008 from the Department of Engineering Physics and Mathematics of the Helsinki University of Technology. He is the principal developer of the radiation and solid phase sub-models within FDS. -\item[Jason Floyd] is a Principle Research Engineer at the UL Research Institutes' Fire Safety Research Institute in Columbia, Maryland. He received a B.S. (1993), M.S (1995), and a Ph.D. (2000) from the Nuclear Engineering Program of the University of Maryland. After graduating, he was awarded a National Research Council Post-Doctoral Fellowship at the Building and Fire Research Laboratory of NIST. He is a principal developer of the combustion, control logic, aerosol, droplet evaporation, and HVAC sub-models within FDS. +\item[Jason Floyd] is a Principal Research Engineer at the UL Research Institutes' Fire Safety Research Institute in Columbia, Maryland. He received a B.S. (1993), M.S (1995), and a Ph.D. (2000) from the Nuclear Engineering Program of the University of Maryland. After graduating, he was awarded a National Research Council Post-Doctoral Fellowship at the Building and Fire Research Laboratory of NIST. He is a principal developer of the combustion, control logic, aerosol, droplet evaporation, and HVAC sub-models within FDS. \item[Randall McDermott] joined the Fire Research Division at NIST in 2008. He received a B.S.~from the University of Tulsa in Chemical Engineering in 1994 and a Ph.D.~from the University of Utah in 2005. His research interests include subgrid-scale models and numerical methods for large-eddy simulation, turbulent combustion, immersed boundary methods, and Lagrangian particle methods. From 61bd9cc6317ea4f47f46de3d52268e858f0ca8b0 Mon Sep 17 00:00:00 2001 From: mcgratta Date: Mon, 9 Mar 2026 15:22:22 -0400 Subject: [PATCH 2/6] FDS Source: Add PRIVATE attribute to some modules --- Source/chem.f90 | 3 ++- Source/ctrl.f90 | 3 +++ Source/hvac.f90 | 3 ++- Source/init.f90 | 1 - Source/main.f90 | 4 ++++ Source/pois.f90 | 8 +++----- Source/prop.f90 | 4 +++- Source/radi.f90 | 1 + Source/rcal.f90 | 3 ++- Source/read.f90 | 1 - Source/soot.f90 | 4 ++-- 11 files changed, 22 insertions(+), 13 deletions(-) diff --git a/Source/chem.f90 b/Source/chem.f90 index d7d2cc2d327..2cf2f37c52c 100644 --- a/Source/chem.f90 +++ b/Source/chem.f90 @@ -18,6 +18,7 @@ MODULE CVODE_INTERFACE USE FSUNDIALS_CORE_MOD IMPLICIT NONE +PRIVATE TYPE :: USERDATA REAL(EB) :: ZETA0 ! initial unmixed fraction @@ -29,7 +30,7 @@ MODULE CVODE_INTERFACE LOGICAL :: DEBUG=.FALSE. REAL(EB), PARAMETER :: MIN_CHEM_TMP=200._EB -REAL(EB) :: CUR_CFD_TIME +REAL(EB), PUBLIC :: CUR_CFD_TIME PUBLIC CVODE_SERIAL diff --git a/Source/ctrl.f90 b/Source/ctrl.f90 index 1c35864927b..4d7d648a0d9 100644 --- a/Source/ctrl.f90 +++ b/Source/ctrl.f90 @@ -8,6 +8,9 @@ MODULE CONTROL_FUNCTIONS USE DEVICE_VARIABLES IMPLICIT NONE (TYPE,EXTERNAL) +PRIVATE + +PUBLIC UPDATE_CONTROLS,EVALUATE_CONTROL CONTAINS diff --git a/Source/hvac.f90 b/Source/hvac.f90 index 9cd4bb7eaae..6bf7ba5b545 100644 --- a/Source/hvac.f90 +++ b/Source/hvac.f90 @@ -5069,8 +5069,9 @@ END SUBROUTINE HVAC_UPDATE_QFAN !> \brief Define the index and other properties of output quantities SUBROUTINE GET_QUANTITY_INDEX(SMOKEVIEW_LABEL,SMOKEVIEW_BAR_LABEL,OUTPUT_INDEX,Y_INDEX,Z_INDEX,UNITS,QUANTITY,SPEC_ID) + USE MISC_FUNCTIONS, ONLY: GET_SPEC_OR_SMIX_INDEX -USE OUTPUT_DATA +USE OUTPUT_DATA, ONLY: OUTPUT_QUANTITY CHARACTER(*), INTENT(INOUT) :: QUANTITY CHARACTER(*), INTENT(OUT) :: SMOKEVIEW_LABEL,SMOKEVIEW_BAR_LABEL,UNITS CHARACTER(*), INTENT(IN) :: SPEC_ID diff --git a/Source/init.f90 b/Source/init.f90 index f53548cbd9e..46912a85a91 100644 --- a/Source/init.f90 +++ b/Source/init.f90 @@ -11,7 +11,6 @@ MODULE INIT USE DEVICE_VARIABLES IMPLICIT NONE (TYPE,EXTERNAL) - PRIVATE PUBLIC INITIALIZE_WALL_ARRAY,INITIALIZE_ATMOSPHERE,INITIALIZE_MESH_VARIABLES_1,INITIALIZE_MESH_VARIABLES_2,& diff --git a/Source/main.f90 b/Source/main.f90 index 0836cd4fa4c..b848925a628 100644 --- a/Source/main.f90 +++ b/Source/main.f90 @@ -1073,6 +1073,7 @@ END SUBROUTINE CHECK_MPI SUBROUTINE MPI_INITIALIZATION_CHORES(TASK_NUMBER) +USE CONTROL_VARIABLES, ONLY: N_CTRL INTEGER, INTENT(IN) :: TASK_NUMBER TYPE (MPI_REQUEST), ALLOCATABLE, DIMENSION(:) :: REQ0,REQ0DUM TYPE (MPI_GROUP) :: GROUP_WORLD,SUBGROUP @@ -3794,6 +3795,7 @@ END SUBROUTINE DUMP_TIMERS SUBROUTINE WRITE_STRINGS +USE CONTROL_VARIABLES, ONLY: CONTROL INTEGER :: N,NOM,N_STRINGS_DUM CHARACTER(:), ALLOCATABLE :: STRING_BUF CHARACTER(MESH_STRING_LENGTH), ALLOCATABLE, DIMENSION(:) :: STRING_DUM @@ -4213,6 +4215,7 @@ END SUBROUTINE EXCHANGE_GLOBAL_OUTPUTS SUBROUTINE DUMP_GLOBAL_OUTPUTS +USE CONTROL_VARIABLES, ONLY: N_CTRL,CONTROL REAL(EB) :: TNOW TYPE(DEVICE_TYPE), POINTER :: DV @@ -4394,6 +4397,7 @@ END SUBROUTINE EXCHANGE_HVAC_SOLUTION SUBROUTINE EXCHANGE_EXTERNAL +USE CONTROL_VARIABLES, ONLY: N_CTRL REAL(EB) :: TNOW TNOW = CURRENT_TIME() diff --git a/Source/pois.f90 b/Source/pois.f90 index 8de04679949..9f435f60f5d 100644 --- a/Source/pois.f90 +++ b/Source/pois.f90 @@ -1,13 +1,11 @@ -MODULE POIS - -! CODE CONVERTED USING TO_F90 BY ALAN MILLER -! DATE: 2006-01-18 TIME: 13:48:46 +!> \brief Fast-Fourier transfer (FFT) Poisson pressure solver, Crayfishpak -! POISSON SOLVER ROUTINES +MODULE POIS USE PRECISION_PARAMETERS IMPLICIT NONE (TYPE,EXTERNAL) PRIVATE + REAL(EB) SCALE INTEGER :: KAPPA,NMAX,IKPWR LOGICAL :: TPOSE,NOCOPY,OUTARY diff --git a/Source/prop.f90 b/Source/prop.f90 index 0b6fd4d28e7..bd71beb0994 100644 --- a/Source/prop.f90 +++ b/Source/prop.f90 @@ -1,6 +1,7 @@ !>brief Predefined gas and liquid thermophysical properties MODULE THERMO_PROPS + USE PRECISION_PARAMETERS IMPLICIT NONE @@ -7596,6 +7597,7 @@ END SUBROUTINE DEFINE_THERMO_PROPS END MODULE THERMO_PROPS + MODULE QREF_DATA USE PRECISION_PARAMETERS IMPLICIT NONE @@ -8930,4 +8932,4 @@ SUBROUTINE DEFINE_QREF_ARRAYS END SUBROUTINE DEFINE_QREF_ARRAYS END MODULE QREF_DATA - \ No newline at end of file + diff --git a/Source/radi.f90 b/Source/radi.f90 index dd0bbfb31ca..093fe41cbb9 100644 --- a/Source/radi.f90 +++ b/Source/radi.f90 @@ -2749,6 +2749,7 @@ MODULE RAD USE MESH_POINTERS USE MESH_VARIABLES USE RADCONS +USE RADCAL_VAR IMPLICIT NONE (TYPE,EXTERNAL) PRIVATE diff --git a/Source/rcal.f90 b/Source/rcal.f90 index fb9d9924526..e6f085aa3a7 100644 --- a/Source/rcal.f90 +++ b/Source/rcal.f90 @@ -191,8 +191,9 @@ MODULE RADCAL_CALC USE RADCAL_VAR IMPLICIT NONE (TYPE,EXTERNAL) +PRIVATE -PUBLIC INIT_RADCAL,RCALLOC,RCDEALLOC,PLANCK,SUB_RADCAL +PUBLIC INIT_RADCAL,RCALLOC,RCDEALLOC,RCDEALLOC2,PLANCK,SUB_RADCAL CONTAINS diff --git a/Source/read.f90 b/Source/read.f90 index 331dfd1743e..4144f103acb 100644 --- a/Source/read.f90 +++ b/Source/read.f90 @@ -16868,7 +16868,6 @@ END SUBROUTINE GET_PROPERTY_INDEX SUBROUTINE READ_CSVF -USE OUTPUT_DATA CHARACTER(FORMULA_LENGTH) :: SPECFILE,SPECFILE_BASE,SPECFILE_NM,TMPFILE,TMPFILE_BASE,TMPFILE_NM,UVWFILE,UVWFILE_BASE,UVWFILE_NM INTEGER :: N_CSVF,NM,STRLEN NAMELIST /CSVF/ SPECFILE,TMPFILE,UVWFILE diff --git a/Source/soot.f90 b/Source/soot.f90 index cf87102abe0..769f76a7e4c 100644 --- a/Source/soot.f90 +++ b/Source/soot.f90 @@ -5,8 +5,9 @@ MODULE SOOT_ROUTINES USE GLOBAL_CONSTANTS, ONLY: N_PARTICLE_BINS, MIN_PARTICLE_DIAMETER, MAX_PARTICLE_DIAMETER, K_BOLTZMANN, & N_TRACKED_SPECIES, GRAV, AGGLOMERATION_SMIX_INDEX, AGGLOMERATION_SPEC_INDEX, N_AGGLOMERATION_SPECIES IMPLICIT NONE (TYPE,EXTERNAL) +PRIVATE -PUBLIC CALC_AGGLOMERATION, INITIALIZE_AGGLOMERATION,SETTLING_VELOCITY,PARTICLE_RADIUS, SOOT_SURFACE_OXIDATION +PUBLIC CALC_AGGLOMERATION,INITIALIZE_AGGLOMERATION,SETTLING_VELOCITY,PARTICLE_RADIUS,SOOT_SURFACE_OXIDATION,DROPLET_SCRUBBING REAL(EB) :: MIN_AGGLOMERATION=1.E-4_EB REAL(EB), ALLOCATABLE, DIMENSION(:) :: BIN_S @@ -17,7 +18,6 @@ MODULE SOOT_ROUTINES TYPE(WALL_TYPE), POINTER :: WC TYPE(CFACE_TYPE), POINTER :: CFA TYPE(BOUNDARY_PROP1_TYPE), POINTER :: B1 -TYPE(BOUNDARY_PROP2_TYPE), POINTER :: B2 TYPE(BOUNDARY_COORD_TYPE), POINTER :: BC CONTAINS From 4ca61a542309f22a161c040896a503609c8e4b0d Mon Sep 17 00:00:00 2001 From: mcgratta Date: Tue, 10 Mar 2026 15:52:56 -0400 Subject: [PATCH 3/6] FDS Source: Clean up USE statements, add PRIVATE to modules --- Source/ccib.f90 | 3 +- Source/fire.f90 | 7 +-- Source/geom.f90 | 3 +- Source/hvac.f90 | 152 +++++++++++++++++++++++++++++++++++------------- Source/main.f90 | 4 +- Source/turb.f90 | 2 +- 6 files changed, 119 insertions(+), 52 deletions(-) diff --git a/Source/ccib.f90 b/Source/ccib.f90 index a28a83b38a8..be466134231 100644 --- a/Source/ccib.f90 +++ b/Source/ccib.f90 @@ -15,6 +15,7 @@ MODULE CC_SCALARS USE MATH_FUNCTIONS, ONLY: GET_SCALAR_FACE_VALUE IMPLICIT NONE (TYPE,EXTERNAL) +PRIVATE ! Debug Flags: LOGICAL, PARAMETER :: DEBUG_CC_INTERPOLATION=.FALSE. ! IBM interpolation and forcing scheme. @@ -96,8 +97,6 @@ MODULE CC_SCALARS ! Baroclininc torque linking variables. REAL(EB), SAVE, ALLOCATABLE, DIMENSION(:) :: F_LINK,A_LINK -PRIVATE - PUBLIC :: ADD_CUTCELL_D_PBAR_DT, ADD_LINKEDCELL_D_PBAR_DT,ADD_CUTCELL_PSUM,ADD_LINKEDCELL_PSUM,& ADD_INPLACE_NNZ_H_WHLDOM,CALL_FOR_GLMAT,CALL_FROM_GLMAT_SETUP,& CCCOMPUTE_RADIATION,CC_DIVERGENCE_PART_1,CC_VEL_FACE_TO_SOLID_NODE,CC_BAROCLINIC_CORRECTION,& diff --git a/Source/fire.f90 b/Source/fire.f90 index bac4f1bc540..9e8477fa49a 100644 --- a/Source/fire.f90 +++ b/Source/fire.f90 @@ -12,18 +12,14 @@ MODULE FIRE #endif IMPLICIT NONE (TYPE,EXTERNAL) - - PRIVATE REAL(EB), ALLOCATABLE, DIMENSION(:) :: DZ_F0 REAL(EB) :: RRTMP0,MOLPCM3,T_CHEM_ODE, T_CHEM_COMM - - LOGICAL :: COMBUSTION_INIT=.FALSE. -!INTEGER :: I0,J0,K0, NM0 ! Variables needed for chemistry load distribution + REAL(EB), ALLOCATABLE, DIMENSION(:,:) :: REALS_TO_SEND_ARRAY, REALS_TO_RECV_ARRAY, RESULTS_TO_SEND_ARRAY, & RESULTS_TO_RECV_ARRAY INTEGER, ALLOCATABLE, DIMENSION(:) :: NCELLS_TO_SEND_ARRAY, NCELLS_TO_RECV_ARRAY, SEND_DISPS, REVC_DISPS, & @@ -32,7 +28,6 @@ MODULE FIRE INTEGER :: NVAR_TO_SEND INTEGER :: NVAR_TO_RECEIVE - PUBLIC COMBUSTION_LOAD_BALANCED,COMBUSTION_BC,CONDENSATION_EVAPORATION,GET_FLAME_TEMPERATURE CONTAINS diff --git a/Source/geom.f90 b/Source/geom.f90 index 66c7c892454..ef5b7996546 100644 --- a/Source/geom.f90 +++ b/Source/geom.f90 @@ -15,6 +15,8 @@ MODULE COMPLEX_GEOMETRY #endif /* WITH_MKL */ IMPLICIT NONE (TYPE,EXTERNAL) +PRIVATE + CHARACTER(2*MESSAGE_LENGTH) :: MESSAGE !! --------------------------------------------------------------------------------- @@ -311,7 +313,6 @@ MODULE COMPLEX_GEOMETRY ! End Variable declaration for CC_IBM. ! --------------------------------------------------------------------------------- -PRIVATE PUBLIC :: BLOCK_CC_SOLID_EXTWALLCELLS,GEOFCT,CALL_FOR_GLMAT,CALL_FROM_GLMAT_SETUP,CCGUARD,CC_MATVEC_DEFINED,GEOMEPS,& DELTA_INT,DELTA_VERT,DEBUG_SET_CUTCELLS,DEBUG_WAIT,DIST_THRES,& GET_CARTCELL_CUTCELLS_TIME_INDEX,GET_CFACE_INDEX,GETU,& diff --git a/Source/hvac.f90 b/Source/hvac.f90 index 6bf7ba5b545..62fbc016af3 100644 --- a/Source/hvac.f90 +++ b/Source/hvac.f90 @@ -7,7 +7,6 @@ MODULE HVAC_ROUTINES USE PRECISION_PARAMETERS -USE GLOBAL_CONSTANTS USE MESH_POINTERS USE DEVICE_VARIABLES USE CONTROL_VARIABLES @@ -15,7 +14,6 @@ MODULE HVAC_ROUTINES USE MEMORY_FUNCTIONS, ONLY: ChkMemErr IMPLICIT NONE (TYPE,EXTERNAL) - PRIVATE REAL(EB) :: DT_HV !< Size of subtimestep used in HVAC solver @@ -74,6 +72,10 @@ MODULE HVAC_ROUTINES SUBROUTINE READ_HVAC USE MISC_FUNCTIONS, ONLY: SEARCH_CONTROLLER,GET_RAMP_INDEX +USE GLOBAL_CONSTANTS, ONLY: LU_INPUT,INPUT_FILE_LINE_NUMBER,STOP_STATUS,SETUP_STOP,HVAC_DEBUG,N_DUCTS,N_DUCTNODES,& + N_FILTERS,N_FANS,N_AIRCOILS,N_ZONE,N_SURF,HVAC_SOLVE,DUCT_NE,DUCT_DR,DUCTNODE_NE,DUCTNODE_DR,& + RHOA,TMPA,N_TRACKED_SPECIES,T_BEGIN,TANH_RAMP,TSQR_RAMP,HVAC_MASS_TRANSPORT,XS_MIN,YS_MIN,ZS_MIN,& + TMPM,NODE_Z_MIN,NODE_Z_MAX,T_USED,TAU_DEFAULT,HVAC_SOLVE,N_FANS,N_AIRCOILS INTEGER , PARAMETER :: MAX_DUCTS = 20 !< Maximum number of ducts connected to a node INTEGER :: IOS !< Used for returning the status of a READ statement INTEGER :: IZERO !< Used for returning the status of an ALLOCATE statement @@ -831,6 +833,9 @@ END SUBROUTINE READ_HVAC SUBROUTINE PROC_HVAC USE PHYSICAL_FUNCTIONS, ONLY: GET_ENTHALPY +USE GLOBAL_CONSTANTS, ONLY: N_TRACKED_SPECIES,N_DUCTNODES,N_DUCTS,HVAC_SOLVE,N_FANS,N_AIRCOILS,N_LAGRANGIAN_CLASSES,RSUM0,& + TMPA,RHOA,P_INF,NMESHES,PROCESS,MY_RANK,HVAC_SURF_INDEX,HVAC_BOUNDARY,PYROLYSIS_NONE,N_MPI_PROCESSES,& + STOP_STATUS,N_FILTERS,T_USED USE MPI_F08 INTEGER :: N,ND,ND2,NM,NN,NF,NV,IERR,NG,FI(3) REAL(EB) :: TNOW !< Current CPU time (s) used in computing length of time spent in HVAC routines. @@ -1221,7 +1226,10 @@ END SUBROUTINE PROC_HVAC !< \brief Finds all connected ducts and nodes and hence number of ductruns + SUBROUTINE CONNECTION_CHECK + +USE GLOBAL_CONSTANTS, ONLY: N_DUCTNODES,N_CONNECTIVITY_INDICES,N_DUCTS INTEGER :: NN,NN3,ND LOGICAL :: NODE_CHECKED(N_DUCTNODES),NODE_CONNECTED(N_DUCTNODES) TYPE(DUCT_TYPE), POINTER :: DU @@ -1298,8 +1306,11 @@ END SUBROUTINE CONNECTION_CHECK !> \brief Initializes duct node properties for non-leakage ducts SUBROUTINE INIT_DUCT_NODE + USE PHYSICAL_FUNCTIONS, ONLY: GET_ENTHALPY USE MATH_FUNCTIONS, ONLY: EVALUATE_RAMP +USE GLOBAL_CONSTANTS, ONLY: N_TRACKED_SPECIES,N_DUCTNODES,STRATIFICATION,TMPA,I_RAMP_TMP0_Z,I_RAMP_P0_Z,RSUM0,P_INF,RHOA,N_INIT,& + T_USED REAL(EB) :: ZZ_GET(1:N_TRACKED_SPECIES) !< Species mass fraction array. REAL(EB) :: VF(1:N_TRACKED_SPECIES) !< Species volunme fraction array. REAL(EB) :: TNOW !< Current CPU time (s) used in computing length of time spent in HVAC routines. @@ -1368,6 +1379,9 @@ END SUBROUTINE INIT_DUCT_NODE !> \param FIRST_PASS Flag for the first call to the HVAC solver during a timestep, i.e. the first pressure iteration. SUBROUTINE HVAC_CALC(T,DT,FIRST_PASS) + +USE GLOBAL_CONSTANTS, ONLY: N_ZONE,N_DUCTS,CORRECTOR,OLD,NEW,N_DUCTNODES,HVAC_MASS_TRANSPORT,PREVIOUS,GUESS,HVAC_QFAN,P_INF,& + N_NETWORKS,N_AIRCOILS,T_USED INTEGER :: NNE,NN,ND REAL(EB), INTENT(IN) :: T,DT REAL(EB) :: TNOW !< Current CPU time (s) used in computing length of time spent in HVAC routines. @@ -1527,7 +1541,9 @@ END SUBROUTINE HVAC_CALC !> \param NNE Index indicating which HVAC network is being solved SUBROUTINE MATRIX_SOLVE(NNE) -USE MATH_FUNCTIONS,ONLY : GAUSSJ + +USE MATH_FUNCTIONS, ONLY: GAUSSJ +USE GLOBAL_CONSTANTS, ONLY: NEW INTEGER :: NNE,IERR,ND,NN REAL(EB), ALLOCATABLE, DIMENSION(:,:) :: LHS_GAUSSJ REAL(EB), ALLOCATABLE, DIMENSION(:) :: RHS_GAUSSJ @@ -1568,6 +1584,7 @@ END SUBROUTINE MATRIX_SOLVE SUBROUTINE HVAC_UPDATE(NNE,DT) USE PHYSICAL_FUNCTIONS, ONLY : GET_SPECIFIC_GAS_CONSTANT,GET_ENTHALPY,GET_TEMPERATURE +USE GLOBAL_CONSTANTS, ONLY: N_DUCTS,N_DUCTNODES,N_DUCTRUNS,N_TRACKED_SPECIES,HVAC_MASS_TRANSPORT,I_MAX_TEMP,CPBAR_Z,P_INF,NEW REAL(EB),INTENT(IN) :: DT INTEGER, INTENT(IN) :: NNE REAL(EB) :: CPTSUM,DU_DX,ETOT,MFLOW,MSUM,MTOT,TGUESS,VFLOW,ZZ_GET(1:N_TRACKED_SPECIES),& @@ -1902,7 +1919,7 @@ END SUBROUTINE HVAC_UPDATE !> \param NETWORK_INDEX Index indicating which HVAC network is being solved SUBROUTINE RHSNODE(NETWORK_INDEX) -USE GLOBAL_CONSTANTS +USE GLOBAL_CONSTANTS, ONLY: DUCTNODE_NE INTEGER, INTENT(IN)::NETWORK_INDEX INTEGER :: NN,ND, ARRAYLOC TYPE(NETWORK_TYPE), POINTER::NE @@ -1929,7 +1946,8 @@ END SUBROUTINE RHSNODE !> \param NETWORK_INDEX Index indicating which HVAC network is being solved SUBROUTINE LHSNODE(NETWORK_INDEX) -USE GLOBAL_CONSTANTS + +USE GLOBAL_CONSTANTS, ONLY: DUCTNODE_NE,DUCT_NE INTEGER, INTENT(IN)::NETWORK_INDEX INTEGER :: NN,ND, ARRAYLOC1,ARRAYLOC2 TYPE(NETWORK_TYPE), POINTER::NE @@ -1955,7 +1973,7 @@ END SUBROUTINE LHSNODE SUBROUTINE DPSTARCALC -USE GLOBAL_CONSTANTS +USE GLOBAL_CONSTANTS, ONLY: N_ZONE,PSUM,CONNECTED_ZONES,OLD,NEW INTEGER :: NN,IPZ,IOPZ TYPE(DUCT_TYPE), POINTER::DU TYPE(DUCTNODE_TYPE), POINTER::DN @@ -2001,7 +2019,7 @@ END SUBROUTINE DPSTARCALC SUBROUTINE RHSDUCT(NETWORK_INDEX) -USE GLOBAL_CONSTANTS +USE GLOBAL_CONSTANTS, ONLY: DUCT_NE,HVAC_LOCAL_PRESSURE,OLD,GAMMA,N_ZONE,STRATIFICATION,GVEC,PREVIOUS,GUESS INTEGER, INTENT(IN)::NETWORK_INDEX INTEGER :: ND, ARRAYLOC,IPZ REAL(EB) :: HEAD !< DUCT pressure head (Pa) @@ -2066,13 +2084,14 @@ END SUBROUTINE RHSDUCT !> \param NETWORK_INDEX Index indicating which HVAC network is being solved SUBROUTINE LHSDUCT(NETWORK_INDEX) -USE GLOBAL_CONSTANTS -INTEGER, INTENT(IN)::NETWORK_INDEX + +USE GLOBAL_CONSTANTS, ONLY: DUCT_NE,PREVIOUS,GUESS,DUCTNODE_NE,HVAC_LOCAL_PRESSURE,GAMMA +INTEGER, INTENT(IN) :: NETWORK_INDEX INTEGER :: NN,ND, ARRAYLOC1,ARRAYLOC2 -TYPE(NETWORK_TYPE), POINTER::NE -TYPE(DUCT_TYPE), POINTER::DU,DU2 -TYPE(DUCTNODE_TYPE), POINTER::DN,DN2 -TYPE(P_ZONE_TYPE), POINTER::PZ +TYPE(NETWORK_TYPE), POINTER :: NE +TYPE(DUCT_TYPE), POINTER :: DU,DU2 +TYPE(DUCTNODE_TYPE), POINTER :: DN,DN2 +TYPE(P_ZONE_TYPE), POINTER :: PZ NE => NETWORK(NETWORK_INDEX) @@ -2159,7 +2178,9 @@ END SUBROUTINE LHSDUCT !> \param ND Index indicating duct where fan is located SUBROUTINE UPDATE_FAN(T,ND) -USE MATH_FUNCTIONS, ONLY : EVALUATE_RAMP + +USE MATH_FUNCTIONS, ONLY: EVALUATE_RAMP +USE GLOBAL_CONSTANTS, ONLY: PREVIOUS,OLD,NEW INTEGER :: FAN_ITER,DR_INDEX,DR_NF,DR_DU INTEGER, INTENT(IN) :: ND REAL(EB), INTENT(IN) :: T @@ -2274,6 +2295,7 @@ SUBROUTINE HVAC_BC_IN(NM) USE PHYSICAL_FUNCTIONS, ONLY: GET_ENTHALPY USE COMPLEX_GEOMETRY, ONLY: CC_FGSC, CC_SOLID +USE GLOBAL_CONSTANTS, ONLY: N_TRACKED_SPECIES,PREDICTOR,NULL_BOUNDARY,T_USED INTEGER, INTENT(IN) :: NM INTEGER :: II,JJ,KK,IW,IOR,IZ1,IZ2,ICF INTEGER, POINTER :: NODE_INDEX,VENT_INDEX @@ -2344,6 +2366,8 @@ SUBROUTINE HVAC_BC_IN(NM) SUBROUTINE INITIALIZE_HVAC +USE GLOBAL_CONSTANTS, ONLY: CC_IBM,HVAC_LOCAL_PRESSURE,P_INF,N_DUCTS + IF (CELL(CELL_INDEX(BC%IIG,BC%JJG,BC%KKG))%SOLID) RETURN IF (CC_IBM .AND. WALL_FLAG .AND. VENT_INDEX > 0) THEN IF (FCVAR(BC%IIG,BC%JJG,BC%KKG,CC_FGSC,ABS(VENTS(VENT_INDEX)%IOR)) == CC_SOLID) RETURN @@ -2351,7 +2375,6 @@ SUBROUTINE INITIALIZE_HVAC ZONE_LEAK_IF: IF (ALL(SF%LEAK_PATH < 0)) THEN - IF (WALL_FLAG) THEN IF (VENT_INDEX == 0) RETURN IF (VENTS(VENT_INDEX)%NODE_INDEX < 0) RETURN @@ -2510,12 +2533,14 @@ END SUBROUTINE INITIALIZE_HVAC END SUBROUTINE HVAC_BC_IN + !> \brief Determines what ducts are "fixed"; i.e. they have been given fixed volume or mass flow (including fixed volume fan) -!> !> \param T Current time (s) SUBROUTINE DETERMINE_FIXED_ELEMENTS(T,CHANGE) + USE MATH_FUNCTIONS,ONLY:EVALUATE_RAMP +USE GLOBAL_CONSTANTS, ONLY: N_DUCTS,NEW,N_DUCTNODES INTEGER:: NN,ND, COUNTER REAL(EB), INTENT(IN):: T LOGICAL, INTENT(INOUT) :: CHANGE @@ -2634,6 +2659,8 @@ END SUBROUTINE DETERMINE_FIXED_ELEMENTS !> \param T Current time (s) SUBROUTINE FIND_NETWORKS(CHANGE,T) + +USE GLOBAL_CONSTANTS, ONLY: N_DUCTS,N_DUCTNODES,N_ZONE,CONNECTED_ZONES,N_NETWORKS,DUCT_NE,DUCTNODE_NE INTEGER:: NZ,NN,ND,DUCT_COUNTER(N_DUCTS),NODE_COUNTER(N_DUCTNODES),COUNTER,COUNTER2,ZONE_COUNTER(N_ZONE),& CONNECTED_ZONES2(0:N_ZONE,0:N_ZONE),NETWORK_DCOUNTER(N_DUCTS),NETWORK_NCOUNTER(N_DUCTS),RENUMBER(N_DUCTNODES+N_ZONE) LOGICAL, INTENT(OUT) :: CHANGE @@ -2770,6 +2797,8 @@ END SUBROUTINE FIND_NETWORKS !> \brief For each HVAC network the routine defines which ducts and nodes belowng to which element of the HVAC matrix SUBROUTINE SETUP_SOLUTION_POINTERS + +USE GLOBAL_CONSTANTS, ONLY: N_NETWORKS INTEGER:: NNE,NN,ND,COUNTER TYPE(DUCT_TYPE), POINTER :: DU TYPE(DUCTNODE_TYPE), POINTER :: DN @@ -2802,8 +2831,10 @@ END SUBROUTINE SETUP_SOLUTION_POINTERS !> \param NNE Index indicating which HVAC network is being solved SUBROUTINE UPDATE_LOSS(T,DT,NNE) -USE PHYSICAL_FUNCTIONS,ONLY:GET_VISCOSITY -USE MATH_FUNCTIONS,ONLY:EVALUATE_RAMP + +USE PHYSICAL_FUNCTIONS, ONLY: GET_VISCOSITY +USE MATH_FUNCTIONS, ONLY: EVALUATE_RAMP +USE GLOBAL_CONSTANTS, ONLY: N_TRACKED_SPECIES,PREVIOUS REAL(EB) :: FRICTION_FACTOR,LOSS_SUM,ZZ_GET(1:N_TRACKED_SPECIES),VISCOSITY,AREA,VFLOW INTEGER, INTENT(IN) :: NNE REAL(EB), INTENT(IN) :: T,DT @@ -2955,6 +2986,8 @@ END FUNCTION COMPUTE_FRICTION_FACTOR !> \param NNE Index indicating which HVAC network is being solved SUBROUTINE SET_GUESS(NNE,T) + +USE GLOBAL_CONSTANTS, ONLY: GUESS,PREVIOUS,NEW INTEGER, INTENT(IN) :: NNE REAL(EB), INTENT(IN):: T INTEGER :: ND @@ -2990,6 +3023,7 @@ END SUBROUTINE SET_GUESS SUBROUTINE SET_DONOR(NNE) +USE GLOBAL_CONSTANTS, ONLY: PREVIOUS,NEW INTEGER :: ND,NN INTEGER, INTENT(IN) :: NNE REAL(EB) :: RHOLAST,TMPLAST,FVAL,OMFVAL,ITERFRAC @@ -3049,6 +3083,8 @@ END SUBROUTINE SET_DONOR !> \param NNE Index indicating which HVAC network is being solved SUBROUTINE CONVERGENCE_CHECK(NNE) + +USE GLOBAL_CONSTANTS, ONLY: PREVIOUS,NEW INTEGER, INTENT(IN) :: NNE INTEGER :: NN, ND, COUNT LOGICAL :: CONVERGED @@ -3117,6 +3153,8 @@ SUBROUTINE COLLAPSE_HVAC_BC(T) ! Takes the MPI gathered mesh array of HVAC boundary conditions and updates the DUCTNODE boundary condition values. USE PHYSICAL_FUNCTIONS, ONLY : GET_SPECIFIC_GAS_CONSTANT,GET_ENTHALPY,GET_TEMPERATURE USE MATH_FUNCTIONS, ONLY : EVALUATE_RAMP +USE GLOBAL_CONSTANTS, ONLY: N_TRACKED_SPECIES,N_DUCTNODES,CONNECTED_ZONES,STRATIFICATION,TMPA,I_RAMP_TMP0_Z,I_RAMP_P0_Z,& + RSUM0,RHOA,P_INF,T_BEGIN,HVAC_PRES_RELAX,N_DUCTS,T_USED REAL(EB), INTENT(IN) :: T REAL(EB) :: TNOW !< Current CPU time (s) used in computing length of time spent in HVAC routines. INTEGER:: NN,NS,ND @@ -3235,6 +3273,8 @@ END SUBROUTINE COLLAPSE_HVAC_BC !> \brief Sets current iteration values for duct nodes connected to a vent to the bondary condition value SUBROUTINE SET_INIT_HVAC + +USE GLOBAL_CONSTANTS, ONLY: N_DUCTNODES,N_DUCTS,HVAC_MASS_TRANSPORT_CELL_L,N_TRACKED_SPECIES,RHOA,TMPA,N_ZONE,T_USED REAL(EB) :: TNOW !< Current CPU time (s) used in computing length of time spent in HVAC routines. REAL(EB) :: XYZ1(3), XYZ2(3) INTEGER:: ND,NN,NW,NC @@ -3315,8 +3355,10 @@ END SUBROUTINE SET_INIT_HVAC !> \brief Initializes cell densities, temperatures, specific heats and species for discretized ducts SUBROUTINE SET_INIT_HVAC_MASS_TRANSPORT + USE MATH_FUNCTIONS, ONLY: EVALUATE_RAMP USE PHYSICAL_FUNCTIONS, ONLY: GET_ENTHALPY,GET_SPECIFIC_GAS_CONSTANT +USE GLOBAL_CONSTANTS, ONLY: N_TRACKED_SPECIES,N_DUCTS REAL(EB) :: P1,P2,T1,T2,ZZ1(1:N_TRACKED_SPECIES),ZZ2(1:N_TRACKED_SPECIES),FAC,RSUM INTEGER :: ND,NC REAL(EB) :: ZZ_GET(1:N_TRACKED_SPECIES),HGAS @@ -3360,6 +3402,7 @@ END SUBROUTINE SET_INIT_HVAC_MASS_TRANSPORT SUBROUTINE LEAKAGE_HVAC USE PHYSICAL_FUNCTIONS, ONLY: GET_ENTHALPY +USE GLOBAL_CONSTANTS, ONLY: N_TRACKED_SPECIES,N_ZONE,N_DUCTS,N_DUCTNODES,RHOA,TMPA,RSUM0,T_USED REAL(EB) :: ZZ_GET(1:N_TRACKED_SPECIES),HGAS,TNOW INTEGER :: I_DUCT,I_DUCTNODE,NZ1,NZ2 TYPE (DUCTNODE_TYPE), POINTER:: DN1,DN2 @@ -3443,8 +3486,9 @@ END SUBROUTINE LEAKAGE_HVAC !> \param NODE_INDEX Index of a node containing a filter SUBROUTINE FILTER_UPDATE(DT,NODE_INDEX) -!Updates filter loss and loading solution + USE MATH_FUNCTIONS,ONLY:EVALUATE_RAMP +USE GLOBAL_CONSTANTS, ONLY: PREVIOUS,NEW INTEGER,INTENT(IN)::NODE_INDEX REAL(EB), INTENT(IN) :: DT REAL(EB) :: TOTAL_LOADING @@ -3487,6 +3531,8 @@ END SUBROUTINE FILTER_UPDATE !> \param T Current time (s) SUBROUTINE COIL_UPDATE(T) + +USE GLOBAL_CONSTANTS, ONLY: N_DUCTS,NEW REAL(EB), INTENT(IN) :: T INTEGER :: ND TYPE(DUCT_TYPE),POINTER::DU @@ -3529,8 +3575,10 @@ END SUBROUTINE COIL_UPDATE !> \param AREA_D Duct area (m2) SUBROUTINE CALC_COIL_Q(AC_INDEX,COIL_Q,TSI,VEL_D,TMP_D,ZZ_D,RHO_D,CP_D,AREA_D) -USE MATH_FUNCTIONS, ONLY : EVALUATE_RAMP -USE PHYSICAL_FUNCTIONS, ONLY : GET_SPECIFIC_HEAT, GET_AVERAGE_SPECIFIC_HEAT, GET_ENTHALPY + +USE MATH_FUNCTIONS, ONLY: EVALUATE_RAMP +USE PHYSICAL_FUNCTIONS, ONLY: GET_SPECIFIC_HEAT, GET_AVERAGE_SPECIFIC_HEAT, GET_ENTHALPY +USE GLOBAL_CONSTANTS, ONLY: N_TRACKED_SPECIES,I_MAX_TEMP INTEGER, INTENT(IN) :: AC_INDEX REAL(EB), INTENT(IN) :: TSI,VEL_D,TMP_D,ZZ_D(1:N_TRACKED_SPECIES),RHO_D,CP_D,AREA_D REAL(EB), INTENT(INOUT) :: COIL_Q @@ -3586,6 +3634,7 @@ END SUBROUTINE CALC_COIL_Q SUBROUTINE ADJUST_LEAKAGE_AREA +USE GLOBAL_CONSTANTS, ONLY: N_DUCTS INTEGER :: ND REAL(EB) :: N,DELTA_P,DELTA_P_REF,C_D TYPE(DUCT_TYPE), POINTER :: DU @@ -3613,7 +3662,9 @@ END SUBROUTINE ADJUST_LEAKAGE_AREA !> \param DT Current time step (s) SUBROUTINE UPDATE_HVAC_MASS_TRANSPORT(DT,NR) + USE PHYSICAL_FUNCTIONS,ONLY: GET_TEMPERATURE, GET_ENTHALPY +USE GLOBAL_CONSTANTS, ONLY: N_TRACKED_SPECIES,NEW REAL(EB), INTENT(IN) :: DT INTEGER, INTENT(IN) :: NR INTEGER :: N_SUBSTEPS,ND,NS,NC,MAX_CELLS @@ -3696,6 +3747,8 @@ END SUBROUTINE UPDATE_HVAC_MASS_TRANSPORT !> \brief Checks duct network for minimal loss defintions SUBROUTINE EXAMINE_LOSSES + +USE GLOBAL_CONSTANTS, ONLY: N_DUCTNODES,N_DUCTS INTEGER :: ND, ND2, ND3, NN, F_COUNTER LOGICAL :: CHANGE LOGICAL :: LOSS_D(N_DUCTS,2),LOSS_N(N_DUCTNODES),FIXED_D(N_DUCTS) @@ -4011,6 +4064,8 @@ END SUBROUTINE EXAMINE_LOSSES !> \param T Current simulation time (s) SUBROUTINE HVAC_QFAN_CALC(T) + +USE GLOBAL_CONSTANTS, ONLY: N_DUCTRUNS,GUESS,N_AIRCOILS,PREVIOUS,OLD,NEW REAL(EB), INTENT(IN) :: T INTEGER :: NR,NF TYPE(DUCTRUN_TYPE), POINTER :: DR @@ -4074,6 +4129,8 @@ END SUBROUTINE HVAC_QFAN_CALC !> \param NF Index indicating which ductrun fan is being solved SUBROUTINE SET_GUESS_QFAN(DUCTRUN_INDEX,NF) + +USE GLOBAL_CONSTANTS, ONLY: GUESS,PREVIOUS,NEW INTEGER, INTENT(IN) :: DUCTRUN_INDEX,NF INTEGER :: ND TYPE(DUCTRUN_TYPE), POINTER :: DR @@ -4124,7 +4181,9 @@ END SUBROUTINE QFAN_SIMPLE !> \brief Finds "duct runs"; being ductnodes and ducts directly (via HVAC components) connected to one another SUBROUTINE FIND_DUCTRUNS(CHANGE) -USE PHYSICAL_FUNCTIONS, ONLY : GET_ENTHALPY + +USE PHYSICAL_FUNCTIONS, ONLY: GET_ENTHALPY +USE GLOBAL_CONSTANTS, ONLY: N_DUCTS,N_DUCTNODES,N_TRACKED_SPECIES,N_DUCTRUNS,P_INF,N_DUCTRUNS,HVAC_QFAN,TMPA,RHOA,OLD LOGICAL, INTENT(IN) :: CHANGE INTEGER :: NN,NR,NF,NN3,ND,DUCT_COUNTER(N_DUCTS),NODE_COUNTER(N_DUCTNODES),& DR_DUCTS(N_DUCTS),DR_DUCTNODES(N_DUCTS),DUCTRUN_MAP(N_DUCTS),DR_INDEX @@ -4379,7 +4438,9 @@ END SUBROUTINE FIND_DUCTRUNS !> \param NF Index indicating which HVAC ductrun fan is being solved SUBROUTINE MATRIX_SOLVE_QFAN(DUCTRUN_INDEX,NF) + USE MATH_FUNCTIONS,ONLY : GAUSSJ +USE GLOBAL_CONSTANTS, ONLY: NEW INTEGER,INTENT(IN) :: DUCTRUN_INDEX,NF INTEGER :: IERR REAL(EB), ALLOCATABLE, DIMENSION(:,:) :: LHS_GAUSSJ @@ -4408,12 +4469,12 @@ END SUBROUTINE MATRIX_SOLVE_QFAN !> \param DUCTRUN_INDEX Index indicating which HVAC ductrun is being solved SUBROUTINE RHSNODE_QFAN(DUCTRUN_INDEX) -USE GLOBAL_CONSTANTS -INTEGER, INTENT(IN)::DUCTRUN_INDEX + +INTEGER, INTENT(IN) :: DUCTRUN_INDEX INTEGER :: NN,ND -TYPE(DUCTRUN_TYPE), POINTER::DR -TYPE(DUCT_TYPE), POINTER::DU -TYPE(DUCTNODE_TYPE), POINTER::DN +TYPE(DUCTRUN_TYPE), POINTER :: DR +TYPE(DUCT_TYPE), POINTER :: DU +TYPE(DUCTNODE_TYPE), POINTER :: DN DR => DUCTRUN(DUCTRUN_INDEX) DO NN = 1, DR%N_M_DUCTNODES @@ -4432,12 +4493,12 @@ END SUBROUTINE RHSNODE_QFAN !> \param NF Index indicating which ductrun fan is being solved SUBROUTINE LHSNODE_QFAN(DUCTRUN_INDEX,NF) -USE GLOBAL_CONSTANTS -INTEGER, INTENT(IN)::DUCTRUN_INDEX,NF + +INTEGER, INTENT(IN) :: DUCTRUN_INDEX,NF INTEGER :: NN,ND,ARRAYLOC -TYPE(DUCTRUN_TYPE), POINTER::DR -TYPE(DUCT_TYPE), POINTER::DU -TYPE(DUCTNODE_TYPE), POINTER::DN +TYPE(DUCTRUN_TYPE), POINTER :: DR +TYPE(DUCT_TYPE), POINTER :: DU +TYPE(DUCTNODE_TYPE), POINTER :: DN DR => DUCTRUN(DUCTRUN_INDEX) DO NN = 1, DR%N_M_DUCTNODES @@ -4460,7 +4521,7 @@ END SUBROUTINE LHSNODE_QFAN SUBROUTINE RHSDUCT_QFAN(DUCTRUN_INDEX,NF,T) -USE GLOBAL_CONSTANTS +USE GLOBAL_CONSTANTS, ONLY: HVAC_LOCAL_PRESSURE,OLD,GAMMA,STRATIFICATION,GVEC,PREVIOUS,GUESS INTEGER, INTENT(IN) :: DUCTRUN_INDEX,NF REAL(EB), INTENT(IN) :: T INTEGER :: ND @@ -4518,12 +4579,13 @@ END SUBROUTINE RHSDUCT_QFAN !> \param NF Index indicating which ductrun fan is being solved SUBROUTINE LHSDUCT_QFAN(DUCTRUN_INDEX,NF) -USE GLOBAL_CONSTANTS -INTEGER, INTENT(IN)::DUCTRUN_INDEX,NF + +USE GLOBAL_CONSTANTS, ONLY: PREVIOUS,GUESS,HVAC_LOCAL_PRESSURE,GAMMA +INTEGER, INTENT(IN) :: DUCTRUN_INDEX,NF INTEGER :: ND -TYPE(DUCTRUN_TYPE), POINTER::DR -TYPE(DUCT_TYPE), POINTER::DU -TYPE(DUCTNODE_TYPE), POINTER::DN +TYPE(DUCTRUN_TYPE), POINTER :: DR +TYPE(DUCT_TYPE), POINTER :: DU +TYPE(DUCTNODE_TYPE), POINTER :: DN DR => DUCTRUN(DUCTRUN_INDEX) @@ -4569,6 +4631,8 @@ END FUNCTION FAN_MAX !> \param NF Index indicating which HVAC ductrun fan is being solved SUBROUTINE CONVERGENCE_CHECK_QFAN(DUCTRUN_INDEX,NF) + +USE GLOBAL_CONSTANTS, ONLY: PREVIOUS,NEW INTEGER, INTENT(IN) :: DUCTRUN_INDEX,NF INTEGER :: NN, ND, COUNT REAL(EB) :: MSUM,MTOT,MFLOW,VEL @@ -4622,8 +4686,10 @@ END SUBROUTINE CONVERGENCE_CHECK_QFAN !> \param T Current time (s) SUBROUTINE COIL_UPDATE_QFAN(T,DUCTRUN_INDEX,NF) + USE MATH_FUNCTIONS, ONLY : EVALUATE_RAMP USE PHYSICAL_FUNCTIONS, ONLY : GET_SPECIFIC_HEAT, GET_AVERAGE_SPECIFIC_HEAT, GET_ENTHALPY +USE GLOBAL_CONSTANTS, ONLY: N_TRACKED_SPECIES,OLD,NEW INTEGER, INTENT(IN) :: DUCTRUN_INDEX,NF REAL(EB), INTENT(IN) :: T REAL(EB) :: COIL_ON_TIME,DVEL @@ -4668,8 +4734,10 @@ END SUBROUTINE COIL_UPDATE_QFAN !> \param NF Index indicating which HVAC ductrun dan is being solved SUBROUTINE UPDATE_LOSS_QFAN(T,DUCTRUN_INDEX,NF) -USE PHYSICAL_FUNCTIONS,ONLY:GET_VISCOSITY -USE MATH_FUNCTIONS,ONLY:EVALUATE_RAMP + +USE PHYSICAL_FUNCTIONS, ONLY: GET_VISCOSITY +USE MATH_FUNCTIONS, ONLY: EVALUATE_RAMP +USE GLOBAL_CONSTANTS, ONLY: N_TRACKED_SPECIES,PREVIOUS,OLD,NEW REAL(EB) :: FRICTION_FACTOR,LOSS_SUM,ZZ_GET(1:N_TRACKED_SPECIES),VISCOSITY,VFLOW,AREA,DVEL INTEGER, INTENT(IN) :: DUCTRUN_INDEX,NF REAL(EB), INTENT(IN) :: T @@ -4845,6 +4913,7 @@ END SUBROUTINE UPDATE_LOSS_QFAN SUBROUTINE SET_DONOR_QFAN(DUCTRUN_INDEX,NF) +USE GLOBAL_CONSTANTS, ONLY: NEW INTEGER :: ND,NN INTEGER, INTENT(IN) :: DUCTRUN_INDEX,NF REAL(EB) :: DVEL @@ -4922,7 +4991,8 @@ END SUBROUTINE SET_DONOR_QFAN SUBROUTINE HVAC_UPDATE_QFAN(DUCTRUN_INDEX,NF) -USE PHYSICAL_FUNCTIONS, ONLY : GET_TEMPERATURE,GET_SPECIFIC_GAS_CONSTANT,GET_ENTHALPY +USE PHYSICAL_FUNCTIONS, ONLY: GET_TEMPERATURE,GET_SPECIFIC_GAS_CONSTANT,GET_ENTHALPY +USE GLOBAL_CONSTANTS, ONLY: N_TRACKED_SPECIES,N_DUCTS,N_DUCTNODES,STRATIFICATION,GVEC,P_INF,NEW REAL(EB) :: CPTSUM,ETOT,MTOT,TGUESS,VFLOW,ZZ_GET(1:N_TRACKED_SPECIES),& ZZTOT(1:N_TRACKED_SPECIES),HGAS,RSUM,DVEL INTEGER, INTENT(IN) :: DUCTRUN_INDEX,NF diff --git a/Source/main.f90 b/Source/main.f90 index b848925a628..9858e69691e 100644 --- a/Source/main.f90 +++ b/Source/main.f90 @@ -21,7 +21,9 @@ PROGRAM FDS USE RADCONS, ONLY : DLN USE MISC_FUNCTIONS, ONLY : WRITE_SUMMARY_INFO,VERBOSE_PRINTOUT USE OUTPUT_DATA -USE MEMORY_FUNCTIONS +USE MEMORY_FUNCTIONS, ONLY: EXCHANGE_GEOMETRY_INFO,CHKMEMERR,ALLOCATE_STORAGE,PACK_PARTICLE,& + NULLIFY_PARTICLE,PACK_WALL,REALLOCATE_P_ZONE,REALLOCATE_CELL,REALLOCATE_STORAGE_ARRAYS,& + RE_ALLOCATE_STRINGS,PACK_THIN_WALL USE HVAC_ROUTINES USE COMP_FUNCTIONS, ONLY : CURRENT_TIME,INITIALIZE_OUTPUT_CLOCKS,READ_EXTERNAL_FILE,GET_FILE_NUMBER USE DEVICE_VARIABLES diff --git a/Source/turb.f90 b/Source/turb.f90 index a9450fe7731..c91046d3bab 100644 --- a/Source/turb.f90 +++ b/Source/turb.f90 @@ -7,7 +7,7 @@ MODULE TURBULENCE USE GLOBAL_CONSTANTS USE MESH_POINTERS USE MESH_VARIABLES -USE COMP_FUNCTIONS +USE COMP_FUNCTIONS, ONLY: GET_FILE_NUMBER,SHUTDOWN IMPLICIT NONE (TYPE,EXTERNAL) PRIVATE From 8c06cf323ea9446facf110bf612e2a1a4784ba3e Mon Sep 17 00:00:00 2001 From: mcgratta Date: Tue, 10 Mar 2026 16:18:13 -0400 Subject: [PATCH 4/6] FDS Source: Remove unused variables --- Source/hvac.f90 | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Source/hvac.f90 b/Source/hvac.f90 index 62fbc016af3..8b5ab2819fd 100644 --- a/Source/hvac.f90 +++ b/Source/hvac.f90 @@ -2366,7 +2366,7 @@ SUBROUTINE HVAC_BC_IN(NM) SUBROUTINE INITIALIZE_HVAC -USE GLOBAL_CONSTANTS, ONLY: CC_IBM,HVAC_LOCAL_PRESSURE,P_INF,N_DUCTS +USE GLOBAL_CONSTANTS, ONLY: CC_IBM,HVAC_LOCAL_PRESSURE,P_INF IF (CELL(CELL_INDEX(BC%IIG,BC%JJG,BC%KKG))%SOLID) RETURN IF (CC_IBM .AND. WALL_FLAG .AND. VENT_INDEX > 0) THEN @@ -2768,6 +2768,7 @@ SUBROUTINE FIND_NETWORKS(CHANGE,T) NETWORK_NCOUNTER=0 COUNTER = 0 DO ND = 1, N_DUCTS +write(0,*) ND,N_DUCTS,UBOUND(NETWORK),DUCT_COUNTER(ND) NETWORK(DUCT_COUNTER(ND))%N_DUCTS = NETWORK(DUCT_COUNTER(ND))%N_DUCTS + 1 ENDDO DO NN = 1, N_DUCTNODES @@ -3023,7 +3024,7 @@ END SUBROUTINE SET_GUESS SUBROUTINE SET_DONOR(NNE) -USE GLOBAL_CONSTANTS, ONLY: PREVIOUS,NEW +USE GLOBAL_CONSTANTS, ONLY: PREVIOUS INTEGER :: ND,NN INTEGER, INTENT(IN) :: NNE REAL(EB) :: RHOLAST,TMPLAST,FVAL,OMFVAL,ITERFRAC @@ -3488,7 +3489,7 @@ END SUBROUTINE LEAKAGE_HVAC SUBROUTINE FILTER_UPDATE(DT,NODE_INDEX) USE MATH_FUNCTIONS,ONLY:EVALUATE_RAMP -USE GLOBAL_CONSTANTS, ONLY: PREVIOUS,NEW +USE GLOBAL_CONSTANTS, ONLY: PREVIOUS INTEGER,INTENT(IN)::NODE_INDEX REAL(EB), INTENT(IN) :: DT REAL(EB) :: TOTAL_LOADING From a6396c50be679605699f150da35b96ea085ca596 Mon Sep 17 00:00:00 2001 From: mcgratta Date: Tue, 10 Mar 2026 16:20:02 -0400 Subject: [PATCH 5/6] FDS Source: Remove write statement --- Source/hvac.f90 | 1 - 1 file changed, 1 deletion(-) diff --git a/Source/hvac.f90 b/Source/hvac.f90 index 8b5ab2819fd..0c3bcf332b8 100644 --- a/Source/hvac.f90 +++ b/Source/hvac.f90 @@ -2768,7 +2768,6 @@ SUBROUTINE FIND_NETWORKS(CHANGE,T) NETWORK_NCOUNTER=0 COUNTER = 0 DO ND = 1, N_DUCTS -write(0,*) ND,N_DUCTS,UBOUND(NETWORK),DUCT_COUNTER(ND) NETWORK(DUCT_COUNTER(ND))%N_DUCTS = NETWORK(DUCT_COUNTER(ND))%N_DUCTS + 1 ENDDO DO NN = 1, N_DUCTNODES From 48b8a4731e594d255d535e7d57cf080620d652c7 Mon Sep 17 00:00:00 2001 From: ericvmueller Date: Tue, 10 Mar 2026 17:38:31 -0400 Subject: [PATCH 6/6] FDS Technical Reference Guide: clarify use of back-side natural convection correlation --- Manuals/FDS_Technical_Reference_Guide/Solid_Chapter.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Manuals/FDS_Technical_Reference_Guide/Solid_Chapter.tex b/Manuals/FDS_Technical_Reference_Guide/Solid_Chapter.tex index 36e361033f7..74a5aca2a49 100644 --- a/Manuals/FDS_Technical_Reference_Guide/Solid_Chapter.tex +++ b/Manuals/FDS_Technical_Reference_Guide/Solid_Chapter.tex @@ -121,7 +121,7 @@ \subsubsection{Empirical Natural/Forced Convection Model} 2 + 0.454 \, \hbox{Ra}^{1/4} & \hbox{Sphere} \end{array} \right. \ee -\footnotetext{The heat transfer coefficient for a vertical plate or cylinder is simplified to $h=1.31 \, (\Delta T)^{1/3}$~\cite{Holman:2} in cases where the back side of a solid obstruction is outside the computational domain and the gas temperature is assumed to be ambient. } +\footnotetext{The heat transfer coefficient for a vertical plate or cylinder is simplified to $h=1.31 \, (\Delta T)^{1/3}$~\cite{Holman:2} when the back side of a solid obstruction is outside the computational domain or \ct{BACKING='VOID'}, and the back side gas temperature is assumed to be ambient or is user-specified. } For forced convection, the Nusselt number takes the form: \be \NU_{\rm forced} = C_0 + \left( C_1 \, \RE^n - C_2 \right) \, \PR^m \quad ; \quad \RE = \frac{\rho |\bu| L}{\mu} \quad ; \quad m=1/3