SUBROUTINE SetUpSysSizingArrays
! SUBROUTINE INFORMATION:
! AUTHOR Fred Buhl
! DATE WRITTEN February 2001
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Allocate and fill the SysSizing data array.
! METHODOLOGY EMPLOYED:
! Uses data from System Sizing input and the system to zone connection data
! calculated in InitAirLoops and stored in AirToZoneNodeInfo in DataLoopNode..
! REFERENCES:
! na
! USE STATEMENTS:
USE InputProcessor, ONLY : FindItemInList
USE General, ONLY: FindNumberinList
USE Psychrometrics, ONLY:PsyRhoAirFnPbTdbW
USE DataEnvironment, ONLY : OutBaroPress
USE OutputReportPredefined
USE DataHeatBalance, ONLY: Zone
USE DataDefineEquip, ONLY: AirDistUnit, NumAirDistUnits
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
! na
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: AirLoopNum ! primary air system index
INTEGER :: SysSizNum ! system sizing input index
INTEGER :: DesDayEnvrnNum ! design day index
INTEGER :: NumZonesCooled ! number of zones cooled by a system
INTEGER :: NumZonesHeated ! number of zones heated by a system
REAL(r64) :: MinOAFlow ! design minimum outside air flow for a system
INTEGER :: ZonesCooledNum ! loop index over zones cooled by a system
INTEGER :: ZonesHeatedNum ! loop index over zones heated by a system
INTEGER :: CtrlZoneNum ! loop index over all controlled zones
INTEGER :: MatchingCooledZoneNum ! the cooled zone index matching a heated zone in a system
INTEGER :: PrimAirIndex ! index of System Sizing primary air system name in primary air system array
INTEGER :: SysSizIndex ! system sizing do loop index
LOGICAL :: ErrorsFound=.false. ! Set to true if errors in input, fatal at end of routine
REAL(r64) :: ZoneOAFracCooling ! zone OA fraction for cooling design air flow
REAL(r64) :: ZoneOAFracHeating ! zone OA fraction for heating design air flow
REAL(r64) :: Ep = 1.0d0 ! zone primary air fraction
REAL(r64) :: Er = 0.0d0 ! zone secondary recirculation fraction
REAL(r64) :: ZoneSA ! Zone supply air flow rate
REAL(r64), ALLOCATABLE, DIMENSION(:) :: VdzClgByZone !saved value of cooling based ZoneSA which is Vdz used in 62.1 tabular report (also used for zone level Vps)
REAL(r64), ALLOCATABLE, DIMENSION(:) :: VdzHtgByZone !saved value of heating based ZoneSA which is Vdz used in 62.1 tabular report (also used for zone level Vps)
REAL(r64) :: ZonePA ! Zone primary air flow rate
REAL(r64), ALLOCATABLE, DIMENSION(:) :: VpzClgByZone !saved value of cooling based ZonePA which is Vpz used in 62.1 tabular report
REAL(r64), ALLOCATABLE, DIMENSION(:) :: VpzMinClgByZone !saved value of minimum cooling based ZonePA which is VpzClg-min used in 62.1 tabular report
REAL(r64), ALLOCATABLE, DIMENSION(:) :: VpzHtgByZone !saved value of heating based ZonePA which is Vpz used in 62.1 tabular report
REAL(r64), ALLOCATABLE, DIMENSION(:) :: VpzMinHtgByZone !saved value of minimum heating based ZonePA which is VpzHtg-min used in 62.1 tabular report
REAL(r64), ALLOCATABLE, DIMENSION(:) :: VpzClgSumBySys !sum of saved value of cooling based ZonePA which is Vpz-sum used in 62.1 tabular report
REAL(r64), ALLOCATABLE, DIMENSION(:) :: VpzHtgSumBySys !sum of saved value of heating based ZonePA which is Vpz-sum used in 62.1 tabular report
REAL(r64) :: NodeTemp ! node temperature
REAL(r64) :: NodeHumRat ! node humidity ratio
REAL(r64) :: MassFlowRate ! Temporary variable
REAL(r64) :: ClgSupplyAirAdjustFactor ! temporary variable
REAL(r64) :: HtgSupplyAirAdjustFactor ! temporary variable
REAL(r64) :: SysOAUnc ! uncorrected system OA summing up people and area based OA for all zones for VRP
REAL(r64) :: ZoneOAUnc ! uncorrected zone OA summing up people and area based OA for each zone
REAL(r64), ALLOCATABLE, DIMENSION(:) :: VbzByZone !saved value of ZoneOAUnc which is Vbz used in 62.1 tabular report
REAL(r64) :: TotalPeople ! total number of people in each zone
REAL(r64), ALLOCATABLE, DIMENSION(:) :: PzSumBySysCool !saved value of TotalPeople which is Pz-sum used in 62.1 tabular report
REAL(r64), ALLOCATABLE, DIMENSION(:) :: PzSumBySysHeat !saved value of TotalPeople which is Pz-sum used in 62.1 tabular report
REAL(r64) :: PeakPeople ! peak population based on maximum people schedule value
REAL(r64), ALLOCATABLE, DIMENSION(:) :: PsBySysCool !saved value of PeakPeople which is Ps used in 62.1 tabular report
REAL(r64), ALLOCATABLE, DIMENSION(:) :: PsBySysHeat !saved value of PeakPeople which is Ps used in 62.1 tabular report
REAL(r64) :: PopulationDiversity ! ratio of total system co-incident peak population to sum of people for all zones in system
REAL(r64), ALLOCATABLE, DIMENSION(:) :: DBySysCool !saved value of PopulatonDiversity which is D used in 62.1 tabular report
REAL(r64), ALLOCATABLE, DIMENSION(:) :: DBySysHeat !saved value of PopulatonDiversity which is D used in 62.1 tabular report
REAL(r64) :: RpPzSum !Rp times Pz used for computing the system total Rp value for 62.1 tabular report
REAL(r64) :: PzSum !Pz sum for system total Pz for 62.1 tabular report
REAL(r64) :: RaAzSum !Ra time Az used for computing the system tota Ra value for 62.1 tabular report
REAL(r64) :: AzSum !Az sum for system total Az for 62.1 tabular report
REAL(r64) :: VbzSum !Vbz sum for system total Vbz for 62.1 tabular report
REAL(r64) :: VozClgSum !Voz-clg sum for system total Voz-clg for 62.1 tabular report
REAL(r64) :: VozHtgSum !Voz-htg sum for system total Voz-htg for 62.1 tabular report
REAL(r64) :: VdzSum !Vdz-sum for system total Vbz for 62.1 tabular report
REAL(r64) :: VdzHtgSum !heating based Vdz-sum for system total Vbz for 62.1 tabular report
REAL(r64) :: VpzMin !Vpz-min for system total Vbz for 62.1 tabular report
! INTEGER :: ZoneIndex
INTEGER :: iAirDistUnit
! allocate arrays used to store values for standard 62.1 tabular report
IF (.NOT. ALLOCATED(VpzClgByZone)) THEN
ALLOCATE (VdzClgByZone(NumOfZones))
VdzClgByZone = 0.0d0
ALLOCATE (VdzHtgByZone(NumOfZones))
VdzHtgByZone = 0.0d0
ALLOCATE (VpzClgByZone(NumOfZones))
VpzClgByZone = 0.0d0
ALLOCATE (VpzMinClgByZone(NumOfZones))
VpzMinClgByZone = 0.0d0
ALLOCATE (VpzHtgByZone(NumOfZones))
VpzHtgByZone = 0.0d0
ALLOCATE (VpzMinHtgByZone(NumOfZones))
VpzMinHtgByZone = 0.0d0
ALLOCATE (VpzClgSumBySys(NumPrimaryAirSys))
VpzClgSumBySys = 0.0d0
ALLOCATE (VpzHtgSumBySys(NumPrimaryAirSys))
VpzHtgSumBySys = 0.0d0
ALLOCATE (VbzByZone(NumOfZones))
VbzByZone = 0.0d0
ALLOCATE (PzSumBySysCool(NumPrimaryAirSys))
PzSumBySysCool = 0.0d0
ALLOCATE (PzSumBySysHeat(NumPrimaryAirSys))
PzSumBySysHeat = 0.0d0
ALLOCATE (PsBySysCool(NumPrimaryAirSys))
PsBySysCool = 0.0d0
ALLOCATE (PsBySysHeat(NumPrimaryAirSys))
PsBySysHeat = 0.0d0
ALLOCATE (DBySysCool(NumPrimaryAirSys))
DBySysCool = 0.0d0
ALLOCATE (DBySysHeat(NumPrimaryAirSys))
DBySysHeat = 0.0d0
END IF
DO SysSizIndex=1,NumSysSizInput
PrimAirIndex = FindItemInList(SysSizInput(SysSizIndex)%AirPriLoopName,PrimaryAirSystem%Name,NumPrimaryAirSys)
IF (PrimAirIndex == 0) THEN
CALL ShowSevereError ('Sizing:System: '//TRIM(SysSizInput(SysSizIndex)%AirPriLoopName)// &
' references unknown AirLoopHVAC')
ErrorsFound = .TRUE.
ELSE
SysSizInput(SysSizIndex)%AirLoopNum = PrimAirIndex
END IF
END DO
IF (ErrorsFound) THEN
CALL ShowFatalError('Errors found in Sizing:System input')
END IF
ALLOCATE(SysSizing(NumPrimaryAirSys,TotDesDays+TotRunDesPersDays))
ALLOCATE(FinalSysSizing(NumPrimaryAirSys))
ALLOCATE(CalcSysSizing(NumPrimaryAirSys))
DO DesDayEnvrnNum=1,TotDesDays+TotRunDesPersDays
DO AirLoopNum=1,NumPrimaryAirSys
SysSizing(AirLoopNum,DesDayEnvrnNum)%AirPriLoopName = PrimaryAirSystem(AirLoopNum)%Name
SysSizNum = FindItemInList(SysSizing(AirLoopNum,DesDayEnvrnNum)%AirPriLoopName,SysSizInput%AirPriLoopName,NumSysSizInput)
IF (SysSizNum > 0) THEN ! move data from system sizing input
SysSizing(AirLoopNum,DesDayEnvrnNum)%LoadSizeType = SysSizInput(SysSizNum)%LoadSizeType
SysSizing(AirLoopNum,DesDayEnvrnNum)%DesOutAirVolFlow = SysSizInput(SysSizNum)%DesOutAirVolFlow
SysSizing(AirLoopNum,DesDayEnvrnNum)%SysAirMinFlowRat = SysSizInput(SysSizNum)%SysAirMinFlowRat
SysSizing(AirLoopNum,DesDayEnvrnNum)%PreheatTemp = SysSizInput(SysSizNum)%PreheatTemp
SysSizing(AirLoopNum,DesDayEnvrnNum)%PreheatHumRat = SysSizInput(SysSizNum)%PreheatHumRat
SysSizing(AirLoopNum,DesDayEnvrnNum)%PrecoolTemp = SysSizInput(SysSizNum)%PrecoolTemp
SysSizing(AirLoopNum,DesDayEnvrnNum)%PrecoolHumRat = SysSizInput(SysSizNum)%PrecoolHumRat
SysSizing(AirLoopNum,DesDayEnvrnNum)%CoolSupTemp = SysSizInput(SysSizNum)%CoolSupTemp
SysSizing(AirLoopNum,DesDayEnvrnNum)%HeatSupTemp = SysSizInput(SysSizNum)%HeatSupTemp
SysSizing(AirLoopNum,DesDayEnvrnNum)%CoolSupHumRat = SysSizInput(SysSizNum)%CoolSupHumRat
SysSizing(AirLoopNum,DesDayEnvrnNum)%HeatSupHumRat = SysSizInput(SysSizNum)%HeatSupHumRat
SysSizing(AirLoopNum,DesDayEnvrnNum)%SizingOption = SysSizInput(SysSizNum)%SizingOption
SysSizing(AirLoopNum,DesDayEnvrnNum)%CoolOAOption = SysSizInput(SysSizNum)%CoolOAOption
SysSizing(AirLoopNum,DesDayEnvrnNum)%HeatOAOption = SysSizInput(SysSizNum)%HeatOAOption
SysSizing(AirLoopNum,DesDayEnvrnNum)%CoolAirDesMethod = SysSizInput(SysSizNum)%CoolAirDesMethod
SysSizing(AirLoopNum,DesDayEnvrnNum)%HeatAirDesMethod = SysSizInput(SysSizNum)%HeatAirDesMethod
SysSizing(AirLoopNum,DesDayEnvrnNum)%InpDesCoolAirFlow = SysSizInput(SysSizNum)%DesCoolAirFlow
SysSizing(AirLoopNum,DesDayEnvrnNum)%InpDesHeatAirFlow = SysSizInput(SysSizNum)%DesHeatAirFlow
SysSizing(AirLoopNum,DesDayEnvrnNum)%MaxZoneOAFraction = SysSizInput(SysSizNum)%MaxZoneOAFraction
SysSizing(AirLoopNum,DesDayEnvrnNum)%OAAutosized = SysSizInput(SysSizNum)%OAAutosized
ELSE ! Set missing inputs to the first
SysSizing(AirLoopNum,DesDayEnvrnNum)%LoadSizeType = SysSizInput(1)%LoadSizeType
SysSizing(AirLoopNum,DesDayEnvrnNum)%DesOutAirVolFlow = SysSizInput(1)%DesOutAirVolFlow
SysSizing(AirLoopNum,DesDayEnvrnNum)%SysAirMinFlowRat = SysSizInput(1)%SysAirMinFlowRat
SysSizing(AirLoopNum,DesDayEnvrnNum)%PreheatTemp = SysSizInput(1)%PreheatTemp
SysSizing(AirLoopNum,DesDayEnvrnNum)%PreheatHumRat = SysSizInput(1)%PreheatHumRat
SysSizing(AirLoopNum,DesDayEnvrnNum)%PrecoolTemp = SysSizInput(1)%PrecoolTemp
SysSizing(AirLoopNum,DesDayEnvrnNum)%PrecoolHumRat = SysSizInput(1)%PrecoolHumRat
SysSizing(AirLoopNum,DesDayEnvrnNum)%CoolSupTemp = SysSizInput(1)%CoolSupTemp
SysSizing(AirLoopNum,DesDayEnvrnNum)%HeatSupTemp = SysSizInput(1)%HeatSupTemp
SysSizing(AirLoopNum,DesDayEnvrnNum)%CoolSupHumRat = SysSizInput(1)%CoolSupHumRat
SysSizing(AirLoopNum,DesDayEnvrnNum)%HeatSupHumRat = SysSizInput(1)%HeatSupHumRat
SysSizing(AirLoopNum,DesDayEnvrnNum)%SizingOption = SysSizInput(1)%SizingOption
SysSizing(AirLoopNum,DesDayEnvrnNum)%CoolOAOption = SysSizInput(1)%CoolOAOption
SysSizing(AirLoopNum,DesDayEnvrnNum)%HeatOAOption = SysSizInput(1)%HeatOAOption
SysSizing(AirLoopNum,DesDayEnvrnNum)%CoolAirDesMethod = SysSizInput(1)%CoolAirDesMethod
SysSizing(AirLoopNum,DesDayEnvrnNum)%HeatAirDesMethod = SysSizInput(1)%HeatAirDesMethod
SysSizing(AirLoopNum,DesDayEnvrnNum)%InpDesCoolAirFlow = SysSizInput(1)%DesCoolAirFlow
SysSizing(AirLoopNum,DesDayEnvrnNum)%InpDesHeatAirFlow = SysSizInput(1)%DesHeatAirFlow
SysSizing(AirLoopNum,DesDayEnvrnNum)%MaxZoneOAFraction = SysSizInput(1)%MaxZoneOAFraction
SysSizing(AirLoopNum,DesDayEnvrnNum)%OAAutosized = SysSizInput(1)%OAAutosized
END IF
ALLOCATE(SysSizing(AirLoopNum,DesDayEnvrnNum)%HeatFlowSeq(NumOfTimeStepInDay))
ALLOCATE(SysSizing(AirLoopNum,DesDayEnvrnNum)%CoolFlowSeq(NumOfTimeStepInDay))
ALLOCATE(SysSizing(AirLoopNum,DesDayEnvrnNum)%SensCoolCapSeq(NumOfTimeStepInDay))
ALLOCATE(SysSizing(AirLoopNum,DesDayEnvrnNum)%HeatCapSeq(NumOfTimeStepInDay))
ALLOCATE(SysSizing(AirLoopNum,DesDayEnvrnNum)%PreHeatCapSeq(NumOfTimeStepInDay))
ALLOCATE(SysSizing(AirLoopNum,DesDayEnvrnNum)%SysCoolRetTempSeq(NumOfTimeStepInDay))
ALLOCATE(SysSizing(AirLoopNum,DesDayEnvrnNum)%SysCoolRetHumRatSeq(NumOfTimeStepInDay))
ALLOCATE(SysSizing(AirLoopNum,DesDayEnvrnNum)%SysHeatRetTempSeq(NumOfTimeStepInDay))
ALLOCATE(SysSizing(AirLoopNum,DesDayEnvrnNum)%SysHeatRetHumRatSeq(NumOfTimeStepInDay))
ALLOCATE(SysSizing(AirLoopNum,DesDayEnvrnNum)%SysCoolOutTempSeq(NumOfTimeStepInDay))
ALLOCATE(SysSizing(AirLoopNum,DesDayEnvrnNum)%SysCoolOutHumRatSeq(NumOfTimeStepInDay))
ALLOCATE(SysSizing(AirLoopNum,DesDayEnvrnNum)%SysHeatOutTempSeq(NumOfTimeStepInDay))
ALLOCATE(SysSizing(AirLoopNum,DesDayEnvrnNum)%SysHeatOutHumRatSeq(NumOfTimeStepInDay))
SysSizing(AirLoopNum,DesDayEnvrnNum)%HeatFlowSeq = 0.0d0
SysSizing(AirLoopNum,DesDayEnvrnNum)%CoolFlowSeq = 0.0d0
SysSizing(AirLoopNum,DesDayEnvrnNum)%SensCoolCapSeq = 0.0d0
SysSizing(AirLoopNum,DesDayEnvrnNum)%HeatCapSeq = 0.0d0
SysSizing(AirLoopNum,DesDayEnvrnNum)%PreHeatCapSeq = 0.0d0
SysSizing(AirLoopNum,DesDayEnvrnNum)%SysCoolRetTempSeq = 0.0d0
SysSizing(AirLoopNum,DesDayEnvrnNum)%SysCoolRetHumRatSeq = 0.0d0
SysSizing(AirLoopNum,DesDayEnvrnNum)%SysHeatRetTempSeq = 0.0d0
SysSizing(AirLoopNum,DesDayEnvrnNum)%SysHeatRetHumRatSeq = 0.0d0
SysSizing(AirLoopNum,DesDayEnvrnNum)%SysCoolOutTempSeq = 0.0d0
SysSizing(AirLoopNum,DesDayEnvrnNum)%SysCoolOutHumRatSeq = 0.0d0
SysSizing(AirLoopNum,DesDayEnvrnNum)%SysHeatOutTempSeq = 0.0d0
SysSizing(AirLoopNum,DesDayEnvrnNum)%SysHeatOutHumRatSeq = 0.0d0
END DO ! end the primary air system loop
END DO
DO AirLoopNum=1,NumPrimaryAirSys
FinalSysSizing(AirLoopNum)%AirPriLoopName = PrimaryAirSystem(AirLoopNum)%Name
CalcSysSizing(AirLoopNum)%AirPriLoopName = PrimaryAirSystem(AirLoopNum)%Name
SysSizNum = FindItemInList(FinalSysSizing(AirLoopNum)%AirPriLoopName,SysSizInput%AirPriLoopName,NumSysSizInput)
IF (SysSizNum > 0) THEN ! move data from system sizing input
FinalSysSizing(AirLoopNum)%LoadSizeType = SysSizInput(SysSizNum)%LoadSizeType
FinalSysSizing(AirLoopNum)%DesOutAirVolFlow = SysSizInput(SysSizNum)%DesOutAirVolFlow
FinalSysSizing(AirLoopNum)%SysAirMinFlowRat = SysSizInput(SysSizNum)%SysAirMinFlowRat
FinalSysSizing(AirLoopNum)%PreheatTemp = SysSizInput(SysSizNum)%PreheatTemp
FinalSysSizing(AirLoopNum)%PreheatHumRat = SysSizInput(SysSizNum)%PreheatHumRat
FinalSysSizing(AirLoopNum)%PrecoolTemp = SysSizInput(SysSizNum)%PrecoolTemp
FinalSysSizing(AirLoopNum)%PrecoolHumRat = SysSizInput(SysSizNum)%PrecoolHumRat
FinalSysSizing(AirLoopNum)%CoolSupTemp = SysSizInput(SysSizNum)%CoolSupTemp
FinalSysSizing(AirLoopNum)%HeatSupTemp = SysSizInput(SysSizNum)%HeatSupTemp
FinalSysSizing(AirLoopNum)%CoolSupHumRat = SysSizInput(SysSizNum)%CoolSupHumRat
FinalSysSizing(AirLoopNum)%HeatSupHumRat = SysSizInput(SysSizNum)%HeatSupHumRat
FinalSysSizing(AirLoopNum)%SizingOption = SysSizInput(SysSizNum)%SizingOption
FinalSysSizing(AirLoopNum)%CoolOAOption = SysSizInput(SysSizNum)%CoolOAOption
FinalSysSizing(AirLoopNum)%HeatOAOption = SysSizInput(SysSizNum)%HeatOAOption
FinalSysSizing(AirLoopNum)%CoolAirDesMethod = SysSizInput(SysSizNum)%CoolAirDesMethod
FinalSysSizing(AirLoopNum)%HeatAirDesMethod = SysSizInput(SysSizNum)%HeatAirDesMethod
FinalSysSizing(AirLoopNum)%InpDesCoolAirFlow = SysSizInput(SysSizNum)%DesCoolAirFlow
FinalSysSizing(AirLoopNum)%InpDesHeatAirFlow = SysSizInput(SysSizNum)%DesHeatAirFlow
FinalSysSizing(AirLoopNum)%SystemOAMethod = SysSizInput(SysSizNum)%SystemOAMethod
FinalSysSizing(AirLoopNum)%MaxZoneOAFraction = SysSizInput(SysSizNum)%MaxZoneOAFraction
FinalSysSizing(AirLoopNum)%OAAutosized = SysSizInput(SysSizNum)%OAAutosized
CalcSysSizing(AirLoopNum)%LoadSizeType = SysSizInput(SysSizNum)%LoadSizeType
CalcSysSizing(AirLoopNum)%DesOutAirVolFlow = SysSizInput(SysSizNum)%DesOutAirVolFlow
CalcSysSizing(AirLoopNum)%SysAirMinFlowRat = SysSizInput(SysSizNum)%SysAirMinFlowRat
CalcSysSizing(AirLoopNum)%PreheatTemp = SysSizInput(SysSizNum)%PreheatTemp
CalcSysSizing(AirLoopNum)%PreheatHumRat = SysSizInput(SysSizNum)%PreheatHumRat
CalcSysSizing(AirLoopNum)%PrecoolTemp = SysSizInput(SysSizNum)%PrecoolTemp
CalcSysSizing(AirLoopNum)%PrecoolHumRat = SysSizInput(SysSizNum)%PrecoolHumRat
CalcSysSizing(AirLoopNum)%CoolSupTemp = SysSizInput(SysSizNum)%CoolSupTemp
CalcSysSizing(AirLoopNum)%HeatSupTemp = SysSizInput(SysSizNum)%HeatSupTemp
CalcSysSizing(AirLoopNum)%CoolSupHumRat = SysSizInput(SysSizNum)%CoolSupHumRat
CalcSysSizing(AirLoopNum)%HeatSupHumRat = SysSizInput(SysSizNum)%HeatSupHumRat
CalcSysSizing(AirLoopNum)%SizingOption = SysSizInput(SysSizNum)%SizingOption
CalcSysSizing(AirLoopNum)%CoolOAOption = SysSizInput(SysSizNum)%CoolOAOption
CalcSysSizing(AirLoopNum)%HeatOAOption = SysSizInput(SysSizNum)%HeatOAOption
CalcSysSizing(AirLoopNum)%CoolAirDesMethod = SysSizInput(SysSizNum)%CoolAirDesMethod
CalcSysSizing(AirLoopNum)%HeatAirDesMethod = SysSizInput(SysSizNum)%HeatAirDesMethod
CalcSysSizing(AirLoopNum)%InpDesCoolAirFlow = SysSizInput(SysSizNum)%DesCoolAirFlow
CalcSysSizing(AirLoopNum)%InpDesHeatAirFlow = SysSizInput(SysSizNum)%DesHeatAirFlow
CalcSysSizing(AirLoopNum)%SystemOAMethod = SysSizInput(SysSizNum)%SystemOAMethod
CalcSysSizing(AirLoopNum)%MaxZoneOAFraction = SysSizInput(SysSizNum)%MaxZoneOAFraction
CalcSysSizing(AirLoopNum)%OAAutosized = SysSizInput(SysSizNum)%OAAutosized
ELSE ! Set missing inputs to the first
CALL ShowWarningError('SetUpSysSizingArrays: Sizing for System (HVACAirLoop)="'// &
trim(FinalSysSizing(AirLoopNum)%AirPriLoopName)//'" will use Sizing:System specifications listed for System="'// &
trim(SysSizInput(1)%AirPriLoopName)//'".')
FinalSysSizing(AirLoopNum)%LoadSizeType = SysSizInput(1)%LoadSizeType
FinalSysSizing(AirLoopNum)%DesOutAirVolFlow = SysSizInput(1)%DesOutAirVolFlow
FinalSysSizing(AirLoopNum)%SysAirMinFlowRat = SysSizInput(1)%SysAirMinFlowRat
FinalSysSizing(AirLoopNum)%PreheatTemp = SysSizInput(1)%PreheatTemp
FinalSysSizing(AirLoopNum)%PreheatHumRat = SysSizInput(1)%PreheatHumRat
FinalSysSizing(AirLoopNum)%PrecoolTemp = SysSizInput(1)%PrecoolTemp
FinalSysSizing(AirLoopNum)%PrecoolHumRat = SysSizInput(1)%PrecoolHumRat
FinalSysSizing(AirLoopNum)%CoolSupTemp = SysSizInput(1)%CoolSupTemp
FinalSysSizing(AirLoopNum)%HeatSupTemp = SysSizInput(1)%HeatSupTemp
FinalSysSizing(AirLoopNum)%CoolSupHumRat = SysSizInput(1)%CoolSupHumRat
FinalSysSizing(AirLoopNum)%HeatSupHumRat = SysSizInput(1)%HeatSupHumRat
FinalSysSizing(AirLoopNum)%SizingOption = SysSizInput(1)%SizingOption
FinalSysSizing(AirLoopNum)%CoolOAOption = SysSizInput(1)%CoolOAOption
FinalSysSizing(AirLoopNum)%HeatOAOption = SysSizInput(1)%HeatOAOption
FinalSysSizing(AirLoopNum)%CoolAirDesMethod = SysSizInput(1)%CoolAirDesMethod
FinalSysSizing(AirLoopNum)%HeatAirDesMethod = SysSizInput(1)%HeatAirDesMethod
FinalSysSizing(AirLoopNum)%InpDesCoolAirFlow = SysSizInput(1)%DesCoolAirFlow
FinalSysSizing(AirLoopNum)%InpDesHeatAirFlow = SysSizInput(1)%DesHeatAirFlow
FinalSysSizing(AirLoopNum)%SystemOAMethod = SysSizInput(1)%SystemOAMethod
FinalSysSizing(AirLoopNum)%MaxZoneOAFraction = SysSizInput(1)%MaxZoneOAFraction
FinalSysSizing(AirLoopNum)%OAAutosized = SysSizInput(1)%OAAutosized
CalcSysSizing(AirLoopNum)%LoadSizeType = SysSizInput(1)%LoadSizeType
CalcSysSizing(AirLoopNum)%DesOutAirVolFlow = SysSizInput(1)%DesOutAirVolFlow
CalcSysSizing(AirLoopNum)%SysAirMinFlowRat = SysSizInput(1)%SysAirMinFlowRat
CalcSysSizing(AirLoopNum)%PreheatTemp = SysSizInput(1)%PreheatTemp
CalcSysSizing(AirLoopNum)%PreheatHumRat = SysSizInput(1)%PreheatHumRat
CalcSysSizing(AirLoopNum)%PrecoolTemp = SysSizInput(1)%PrecoolTemp
CalcSysSizing(AirLoopNum)%PrecoolHumRat = SysSizInput(1)%PrecoolHumRat
CalcSysSizing(AirLoopNum)%CoolSupTemp = SysSizInput(1)%CoolSupTemp
CalcSysSizing(AirLoopNum)%HeatSupTemp = SysSizInput(1)%HeatSupTemp
CalcSysSizing(AirLoopNum)%CoolSupHumRat = SysSizInput(1)%CoolSupHumRat
CalcSysSizing(AirLoopNum)%HeatSupHumRat = SysSizInput(1)%HeatSupHumRat
CalcSysSizing(AirLoopNum)%SizingOption = SysSizInput(1)%SizingOption
CalcSysSizing(AirLoopNum)%CoolOAOption = SysSizInput(1)%CoolOAOption
CalcSysSizing(AirLoopNum)%HeatOAOption = SysSizInput(1)%HeatOAOption
CalcSysSizing(AirLoopNum)%CoolAirDesMethod = SysSizInput(1)%CoolAirDesMethod
CalcSysSizing(AirLoopNum)%HeatAirDesMethod = SysSizInput(1)%HeatAirDesMethod
CalcSysSizing(AirLoopNum)%InpDesCoolAirFlow = SysSizInput(1)%DesCoolAirFlow
CalcSysSizing(AirLoopNum)%InpDesHeatAirFlow = SysSizInput(1)%DesHeatAirFlow
CalcSysSizing(AirLoopNum)%SystemOAMethod = SysSizInput(1)%SystemOAMethod
CalcSysSizing(AirLoopNum)%MaxZoneOAFraction = SysSizInput(1)%MaxZoneOAFraction
CalcSysSizing(AirLoopNum)%OAAutosized = SysSizInput(1)%OAAutosized
END IF
ALLOCATE(FinalSysSizing(AirLoopNum)%HeatFlowSeq(NumOfTimeStepInDay))
ALLOCATE(FinalSysSizing(AirLoopNum)%CoolFlowSeq(NumOfTimeStepInDay))
ALLOCATE(FinalSysSizing(AirLoopNum)%SensCoolCapSeq(NumOfTimeStepInDay))
ALLOCATE(FinalSysSizing(AirLoopNum)%HeatCapSeq(NumOfTimeStepInDay))
ALLOCATE(FinalSysSizing(AirLoopNum)%PreHeatCapSeq(NumOfTimeStepInDay))
ALLOCATE(FinalSysSizing(AirLoopNum)%SysCoolRetTempSeq(NumOfTimeStepInDay))
ALLOCATE(FinalSysSizing(AirLoopNum)%SysCoolRetHumRatSeq(NumOfTimeStepInDay))
ALLOCATE(FinalSysSizing(AirLoopNum)%SysHeatRetTempSeq(NumOfTimeStepInDay))
ALLOCATE(FinalSysSizing(AirLoopNum)%SysHeatRetHumRatSeq(NumOfTimeStepInDay))
ALLOCATE(FinalSysSizing(AirLoopNum)%SysCoolOutTempSeq(NumOfTimeStepInDay))
ALLOCATE(FinalSysSizing(AirLoopNum)%SysCoolOutHumRatSeq(NumOfTimeStepInDay))
ALLOCATE(FinalSysSizing(AirLoopNum)%SysHeatOutTempSeq(NumOfTimeStepInDay))
ALLOCATE(FinalSysSizing(AirLoopNum)%SysHeatOutHumRatSeq(NumOfTimeStepInDay))
FinalSysSizing(AirLoopNum)%HeatFlowSeq = 0.0d0
FinalSysSizing(AirLoopNum)%CoolFlowSeq = 0.0d0
FinalSysSizing(AirLoopNum)%SensCoolCapSeq = 0.0d0
FinalSysSizing(AirLoopNum)%HeatCapSeq = 0.0d0
FinalSysSizing(AirLoopNum)%PreHeatCapSeq = 0.0d0
FinalSysSizing(AirLoopNum)%SysCoolRetTempSeq = 0.0d0
FinalSysSizing(AirLoopNum)%SysCoolRetHumRatSeq = 0.0d0
FinalSysSizing(AirLoopNum)%SysHeatRetTempSeq = 0.0d0
FinalSysSizing(AirLoopNum)%SysHeatRetHumRatSeq = 0.0d0
FinalSysSizing(AirLoopNum)%SysCoolOutTempSeq = 0.0d0
FinalSysSizing(AirLoopNum)%SysCoolOutHumRatSeq = 0.0d0
FinalSysSizing(AirLoopNum)%SysHeatOutTempSeq = 0.0d0
FinalSysSizing(AirLoopNum)%SysHeatOutHumRatSeq = 0.0d0
ALLOCATE(CalcSysSizing(AirLoopNum)%HeatFlowSeq(NumOfTimeStepInDay))
ALLOCATE(CalcSysSizing(AirLoopNum)%CoolFlowSeq(NumOfTimeStepInDay))
ALLOCATE(CalcSysSizing(AirLoopNum)%SensCoolCapSeq(NumOfTimeStepInDay))
ALLOCATE(CalcSysSizing(AirLoopNum)%HeatCapSeq(NumOfTimeStepInDay))
ALLOCATE(CalcSysSizing(AirLoopNum)%PreHeatCapSeq(NumOfTimeStepInDay))
ALLOCATE(CalcSysSizing(AirLoopNum)%SysCoolRetTempSeq(NumOfTimeStepInDay))
ALLOCATE(CalcSysSizing(AirLoopNum)%SysCoolRetHumRatSeq(NumOfTimeStepInDay))
ALLOCATE(CalcSysSizing(AirLoopNum)%SysHeatRetTempSeq(NumOfTimeStepInDay))
ALLOCATE(CalcSysSizing(AirLoopNum)%SysHeatRetHumRatSeq(NumOfTimeStepInDay))
ALLOCATE(CalcSysSizing(AirLoopNum)%SysCoolOutTempSeq(NumOfTimeStepInDay))
ALLOCATE(CalcSysSizing(AirLoopNum)%SysCoolOutHumRatSeq(NumOfTimeStepInDay))
ALLOCATE(CalcSysSizing(AirLoopNum)%SysHeatOutTempSeq(NumOfTimeStepInDay))
ALLOCATE(CalcSysSizing(AirLoopNum)%SysHeatOutHumRatSeq(NumOfTimeStepInDay))
CalcSysSizing(AirLoopNum)%HeatFlowSeq = 0.0d0
CalcSysSizing(AirLoopNum)%CoolFlowSeq = 0.0d0
CalcSysSizing(AirLoopNum)%SensCoolCapSeq = 0.0d0
CalcSysSizing(AirLoopNum)%HeatCapSeq = 0.0d0
CalcSysSizing(AirLoopNum)%PreHeatCapSeq = 0.0d0
CalcSysSizing(AirLoopNum)%SysCoolRetTempSeq = 0.0d0
CalcSysSizing(AirLoopNum)%SysCoolRetHumRatSeq = 0.0d0
CalcSysSizing(AirLoopNum)%SysHeatRetTempSeq = 0.0d0
CalcSysSizing(AirLoopNum)%SysHeatRetHumRatSeq = 0.0d0
CalcSysSizing(AirLoopNum)%SysCoolOutTempSeq = 0.0d0
CalcSysSizing(AirLoopNum)%SysCoolOutHumRatSeq = 0.0d0
CalcSysSizing(AirLoopNum)%SysHeatOutTempSeq = 0.0d0
CalcSysSizing(AirLoopNum)%SysHeatOutHumRatSeq = 0.0d0
IF (AnyEnergyManagementSystemInModel) THEN
CALL SetupEMSInternalVariable('Intermediate Air System Main Supply Volume Flow Rate', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[m3/s]', &
FinalSysSizing(AirLoopNum)%DesMainVolFlow )
CALL SetupEMSActuator('Sizing:System', FinalSysSizing(AirLoopNum)%AirPriLoopName, 'Main Supply Volume Flow Rate', &
'[m3/s]', FinalSysSizing(AirLoopNum)%EMSOverrideDesMainVolFlowOn, &
FinalSysSizing(AirLoopNum)%EMSValueDesMainVolFlow )
CALL SetupEMSInternalVariable('Intermediate Air System Coincident Peak Cooling Mass Flow Rate', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[kg/s]', &
FinalSysSizing(AirLoopNum)%CoinCoolMassFlow )
CALL SetupEMSActuator('Sizing:System', FinalSysSizing(AirLoopNum)%AirPriLoopName, &
'Main Supply Coincident Peak Cooling Mass Flow Rate', &
'[kg/s]', FinalSysSizing(AirLoopNum)%EMSOverrideCoinCoolMassFlowOn, &
FinalSysSizing(AirLoopNum)%EMSValueCoinCoolMassFlow )
CALL SetupEMSInternalVariable('Intermediate Air System Coincident Peak Heating Mass Flow Rate', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[kg/s]', &
FinalSysSizing(AirLoopNum)%CoinHeatMassFlow )
CALL SetupEMSActuator('Sizing:System', FinalSysSizing(AirLoopNum)%AirPriLoopName, &
'Main Supply Coincident Peak Heating Mass Flow Rate', &
'[kg/s]', FinalSysSizing(AirLoopNum)%EMSOverrideCoinHeatMassFlowOn, &
FinalSysSizing(AirLoopNum)%EMSValueCoinHeatMassFlow )
CALL SetupEMSInternalVariable('Intermediate Air System Noncoincident Peak Cooling Mass Flow Rate', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[kg/s]', &
FinalSysSizing(AirLoopNum)%NonCoinCoolMassFlow )
CALL SetupEMSActuator('Sizing:System', FinalSysSizing(AirLoopNum)%AirPriLoopName, &
'Main Supply Noncoincident Peak Cooling Mass Flow Rate', &
'[kg/s]', FinalSysSizing(AirLoopNum)%EMSOverrideNonCoinCoolMassFlowOn, &
FinalSysSizing(AirLoopNum)%EMSValueNonCoinCoolMassFlow )
CALL SetupEMSInternalVariable('Intermediate Air System Noncoincident Peak Heating Mass Flow Rate', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[kg/s]', &
FinalSysSizing(AirLoopNum)%NonCoinHeatMassFlow )
CALL SetupEMSActuator('Sizing:System', FinalSysSizing(AirLoopNum)%AirPriLoopName, &
'Main Supply Noncoincident Peak Heating Mass Flow Rate', &
'[kg/s]', FinalSysSizing(AirLoopNum)%EMSOverrideNonCoinHeatMassFlowOn, &
FinalSysSizing(AirLoopNum)%EMSValueNonCoinHeatMassFlow )
CALL SetupEMSInternalVariable('Intermediate Air System Heating Volume Flow Rate', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[m3/s]', &
FinalSysSizing(AirLoopNum)%DesHeatVolFlow )
CALL SetupEMSActuator('Sizing:System', FinalSysSizing(AirLoopNum)%AirPriLoopName, &
'Main Heating Volume Flow Rate', &
'[m3/s]', FinalSysSizing(AirLoopNum)%EMSOverrideDesHeatVolFlowOn, &
FinalSysSizing(AirLoopNum)%EMSValueDesHeatVolFlow )
CALL SetupEMSInternalVariable('Intermediate Air System Cooling Volume Flow Rate', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[m3/s]', &
FinalSysSizing(AirLoopNum)%DesCoolVolFlow )
CALL SetupEMSActuator('Sizing:System', FinalSysSizing(AirLoopNum)%AirPriLoopName, &
'Main Cooling Volume Flow Rate', &
'[m3/s]', FinalSysSizing(AirLoopNum)%EMSOverrideDesCoolVolFlowOn, &
FinalSysSizing(AirLoopNum)%EMSValueDesCoolVolFlow )
! internal variables useful for sizing air system component models
CALL SetupEMSInternalVariable('Air System Cooling Design Sensible Capacity', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[W]', &
FinalSysSizing(AirLoopNum)%SensCoolCap )
CALL SetupEMSInternalVariable('Air System Heating Design Sensible Capacity', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[W]', &
FinalSysSizing(AirLoopNum)%HeatCap )
CALL SetupEMSInternalVariable('Air System Preheating Design Sensible Capacity', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[W]', &
FinalSysSizing(AirLoopNum)%PreheatCap )
CALL SetupEMSInternalVariable('Air System Outdoor Air Design Volume Flow Rate', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[m3/s]', &
FinalSysSizing(AirLoopNum)%DesOutAirVolFlow )
CALL SetupEMSInternalVariable('Air System Cooling Design Mixed Air Temperature', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[C]', &
FinalSysSizing(AirLoopNum)%CoolMixTemp )
CALL SetupEMSInternalVariable('Air System Cooling Design Mixed Air Humidity Ratio', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[kgWater/kgDryAir]', &
FinalSysSizing(AirLoopNum)%CoolMixHumRat )
CALL SetupEMSInternalVariable('Air System Cooling Design Return Air Temperature', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[C]', &
FinalSysSizing(AirLoopNum)%CoolRetTemp )
CALL SetupEMSInternalVariable('Air System Cooling Design Return Air Humidity Ratio', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[kgWater/kgDryAir]', &
FinalSysSizing(AirLoopNum)%CoolRetHumRat )
CALL SetupEMSInternalVariable('Air System Cooling Design Outdoor Air Temperature', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[C]', &
FinalSysSizing(AirLoopNum)%CoolOutTemp )
CALL SetupEMSInternalVariable('Air System Cooling Design Outdoor Air Humidity Ratio', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[kgWater/kgDryAir]', &
FinalSysSizing(AirLoopNum)%CoolOutHumRat )
CALL SetupEMSInternalVariable('Air System Heating Design Mixed Air Temperature', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[C]', &
FinalSysSizing(AirLoopNum)%HeatMixTemp )
CALL SetupEMSInternalVariable('Air System Heating Design Mixed Air Humidity Ratio', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[kgWater/kgDryAir]', &
FinalSysSizing(AirLoopNum)%HeatMixHumRat )
CALL SetupEMSInternalVariable('Air System Heating Design Return Air Temperature', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[C]', &
FinalSysSizing(AirLoopNum)%HeatRetTemp )
CALL SetupEMSInternalVariable('Air System Heating Design Return Air Humidity Ratio', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[kgWater/kgDryAir]', &
FinalSysSizing(AirLoopNum)%HeatRetHumRat )
CALL SetupEMSInternalVariable('Air System Heating Design Outdoor Air Temperature', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[C]', &
FinalSysSizing(AirLoopNum)%HeatOutTemp )
CALL SetupEMSInternalVariable('Air System Heating Design Outdoor Air Humidity Ratio', &
FinalSysSizing(AirLoopNum)%AirPriLoopName, '[kgWater/kgDryAir]', &
FinalSysSizing(AirLoopNum)%HeatOutHumRat )
ENDIF
END DO ! end the primary air system loop
! If the system design minimum outside air flow rate is autosized, calculate it from the zone data
DO AirLoopNum=1,NumPrimaryAirSys
MinOAFlow = 0.0d0
SysOAUnc = 0.0d0
PopulationDiversity = 1.0d0
TotalPeople = 0.0d0
PeakPeople = 0.0d0
ClgSupplyAirAdjustFactor = 1.0d0
HtgSupplyAirAdjustFactor = 1.0d0
SysSizNum = FindItemInList(FinalSysSizing(AirLoopNum)%AirPriLoopName,SysSizInput%AirPriLoopName,NumSysSizInput)
IF (SysSizNum == 0) SysSizNum=1 ! use first when none applicable
IF (FinalSysSizing(AirLoopNum)%OAAutosized) THEN
NumZonesCooled = AirToZoneNodeInfo(AirLoopNum)%NumZonesCooled
DO ZonesCooledNum=1,NumZonesCooled
CtrlZoneNum = AirToZoneNodeInfo(AirLoopNum)%CoolCtrlZoneNums(ZonesCooledNum)
TotalPeople = TotalPeople + FinalZoneSizing(CtrlZoneNum)%TotPeopleInZone
PeakPeople = PeakPeople + FinalZoneSizing(CtrlZoneNum)%ZonePeakOccupancy
END DO
IF (TotalPeople > 0.0d0) THEN
PopulationDiversity = PeakPeople / TotalPeople
ELSE
PopulationDiversity = 1.0d0
END IF
!save population for standard 62.1 report
PzSumBySysCool(AirLoopNum) = TotalPeople
PsBySysCool(AirLoopNum) = PeakPeople
DBySysCool(AirLoopNum) = PopulationDiversity
PzSumBySysHeat(AirLoopNum) = TotalPeople
PsBySysHeat(AirLoopNum) = PeakPeople
DBySysHeat(AirLoopNum) = PopulationDiversity
DO ZonesCooledNum=1,NumZonesCooled
CtrlZoneNum = AirToZoneNodeInfo(AirLoopNum)%CoolCtrlZoneNums(ZonesCooledNum)
IF (SysSizNum > 0) THEN
IF (SysSizInput(SysSizNum)%SystemOAMethod == SOAM_ZoneSum) THEN ! ZoneSum Method
MinOAFlow = MinOAFlow + FinalZoneSizing(CtrlZoneNum)%MinOA
ZoneOAFracCooling = 0.0d0
ELSEIF (SysSizInput(SysSizNum)%SystemOAMethod == SOAM_VRP) THEN ! Ventilation Rate Procedure
ZoneOAUnc = PopulationDiversity*FinalZoneSizing(CtrlZoneNum)%TotalOAFromPeople + &
FinalZoneSizing(CtrlZoneNum)%TotalOAFromArea
!save for Standard 62 tabular report
VbzByZone(CtrlZoneNum) = ZoneOAUnc
SysOAUnc = SysOAUnc + ZoneOAUnc
! CR 8872 - check to see if uncorrected OA is calculated to be greater than 0
IF (.NOT. ZoneOAUnc > 0.0d0) THEN
CALL ShowSevereError('Sizing:System - The system outdoor air method is set to VRP in ' // &
TRIM(FinalSysSizing(AirLoopNum)%AirPriLoopName))
CALL ShowContinueError('But zone "'// TRIM(FinalZoneSizing(CtrlZoneNum)%ZoneName) // &
'" associated with system does not have OA flow/person')
CALL ShowContinueError('or flow/area values specified in DesignSpecification:OutdoorAir '// &
'object associated with the zone')
END IF
!Save Std 62.1 cooling ventilation required by zone
FinalZoneSizing(CtrlZoneNum)%VozClgByZone = ZoneOAUnc / FinalZoneSizing(CtrlZoneNum)%ZoneADEffCooling
MinOAFlow = MinOAFlow + FinalZoneSizing(CtrlZoneNum)%VozClgByZone
IF (FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlow > 0.0d0) THEN
IF (FinalZoneSizing(CtrlZoneNum)%ZoneSecondaryRecirculation > 0.0d0 .OR. &
FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlowMin <= 0) THEN
! multi-path system or VAV Minimum not defined
ZoneOAFracCooling = FinalZoneSizing(CtrlZoneNum)%VozClgByZone / FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlow
ELSE
! Single path; Use VAV Minimum as the Vpz in the Zp = Voz / Vpz equations
ZoneOAFracCooling = FinalZoneSizing(CtrlZoneNum)%VozClgByZone / FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlowMin
ENDIF
ELSE
ZoneOAFracCooling = 0.0d0
ENDIF
ELSE ! error
ENDIF
ELSE ! ZoneSum Method
MinOAFlow = MinOAFlow + FinalZoneSizing(CtrlZoneNum)%MinOA
ZoneOAFracCooling = 0.0d0
ENDIF
! Calc maximum zone OA fraction and supply air adjustment factor based on
! user entered max allowed OA fraction - a TRACE feature
IF (FinalSysSizing(AirLoopNum)%MaxZoneOAFraction > 0 .AND. &
ZoneOAFracCooling > FinalSysSizing(AirLoopNum)%MaxZoneOAFraction) THEN
IF (FinalSysSizing(AirLoopNum)%CoolAirDesMethod == FromDDCalc) THEN ! DesignDay Method
ClgSupplyAirAdjustFactor = ZoneOAFracCooling / FinalSysSizing(AirLoopNum)%MaxZoneOAFraction
IF (FinalZoneSizing(CtrlZoneNum)%ZoneSecondaryRecirculation > 0.0d0 .OR. &
FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlowMin <= 0) THEN
!multi-path system or VAV Minimum not defined
FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlow = FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlow * ClgSupplyAirAdjustFactor
ELSE
!Single path; Use VAV Minimum as the Vpz in the Zp = Voz / Vpz equations
FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlowMin = FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlowMin * &
ClgSupplyAirAdjustFactor
!Don't allow the design cooling airflow to be less than the VAV minimum airflow
FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlow = MAX(FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlow, &
FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlowMin)
ENDIF
!Don't allow the design terminal airflow to be less than the design cooling airflow
TermUnitSizing(CtrlZoneNum)%AirVolFlow = MAX(TermUnitSizing(CtrlZoneNum)%AirVolFlow, &
FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlow)
ZoneOAFracCooling = FinalSysSizing(AirLoopNum)%MaxZoneOAFraction
ELSE
ClgSupplyAirAdjustFactor = 1.0D0
ENDIF
ELSE
ClgSupplyAirAdjustFactor = 1.0D0
ENDIF
ZoneSA = 0.0d0
ZonePA = 0.0d0
Ep = 1.0d0
IF (FinalZoneSizing(CtrlZoneNum)%ZoneSecondaryRecirculation > 0.0d0) THEN ! multi-path system
!Vpz: "Primary" supply air from main air handler served by an oa mixer
ZonePA = FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlow
!Vdz: "Discharge" supply air delivered to zone by terminal unit
ZoneSA = MAX(TermUnitSizing(CtrlZoneNum)%AirVolFlow,ZonePA)
! For re-circulation systems, Vpz used to determine Zpz is the design terminal airflow
! Std 62.1-2010, section 6.2.5.1: "Vpz (used to determin Zpz) is the primary airflow rate
! rate to the ventilation zone from the air handler, including outdoor air and recirculated air.
VpzMinClgByZone(CtrlZoneNum) = ZoneSA
ELSE ! single path system
!Vdz: "Discharge" supply air delivered to zone by terminal unit
ZonePA = FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlow
!Vpz: "Primary" supply air from main air handler served by an oa mixer
ZoneSA = FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlow
! Save VpzMin in case this is a single path VAV system.
! Std 62.1-2010, section 6.2.5.1: "For VAV-system design purposes, Vpz is the lowest zone primary
! airflow value expected at the design condition analyzed."
VpzMinClgByZone(CtrlZoneNum) = FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlowMin
! In case for some reason the VAV minimum has not been defined, use the design primary airflow
IF (FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlowMin <= 0) VpzMinClgByZone(CtrlZoneNum) = ZonePA
END IF
!save zone discharge supply airflow
VdzClgByZone(CtrlZoneNum) = ZoneSA
!save Vpz zone primary airflow for standard 62.1 report
VpzClgByZone(CtrlZoneNum) = ZonePA
VpzClgSumBySys(AirLoopNum) = VpzClgSumBySys(AirLoopNum) + ZonePA
! Fraction of required zone ventilation to minimum primary airflow expected at condition analyzed
FinalZoneSizing(CtrlZoneNum)%ZpzClgByZone = 0.0d0
IF (VpzMinClgByZone(CtrlZoneNum) > 0) THEN
FinalZoneSizing(CtrlZoneNum)%ZpzClgByZone = &
MIN(1.0D0, FinalZoneSizing(CtrlZoneNum)%VozClgByZone / VpzMinClgByZone(CtrlZoneNum))
ENDIF
! calc zone primary air fraction
IF (ZoneSA > 0.0d0) Ep = ZonePA / ZoneSA
IF (Ep > 1.0d0) Ep = 1.0d0
FinalZoneSizing(CtrlZoneNum)%ZonePrimaryAirFraction = Ep
FinalZoneSizing(CtrlZoneNum)%ZoneOAFracCooling = ZoneOAFracCooling
END DO
NumZonesHeated = AirToZoneNodeInfo(AirLoopNum)%NumZonesHeated
IF (NumZonesHeated > 0) THEN
DO ZonesHeatedNum=1,NumZonesHeated
CtrlZoneNum = AirToZoneNodeInfo(AirLoopNum)%HeatCtrlZoneNums(ZonesHeatedNum)
MatchingCooledZoneNum = FindNumberinList(CtrlZoneNum,AirToZoneNodeInfo(AirLoopNum)%CoolCtrlZoneNums, &
NumZonesCooled)
IF (MatchingCooledZoneNum == 0) THEN
IF (SysSizNum > 0) THEN
IF (SysSizInput(SysSizNum)%SystemOAMethod == SOAM_ZoneSum) THEN ! ZoneSum Method
MinOAFlow = MinOAFlow + FinalZoneSizing(CtrlZoneNum)%MinOA
ZoneOAFracHeating = 0.0d0
ELSEIF (SysSizInput(SysSizNum)%SystemOAMethod == SOAM_VRP) THEN ! Ventilation Rate Procedure
ZoneOAUnc = PopulationDiversity * FinalZoneSizing(CtrlZoneNum)%TotalOAFromPeople + &
FinalZoneSizing(CtrlZoneNum)%TotalOAFromArea
!save for Standard 62 tabular report
VbzByZone(CtrlZoneNum) = ZoneOAUnc
SysOAUnc = SysOAUnc + ZoneOAUnc
! Save Std 62.1 heating ventilation required by zone
FinalZoneSizing(CtrlZoneNum)%VozHtgByZone = ZoneOAUnc / FinalZoneSizing(CtrlZoneNum)%ZoneADEffHeating
MinOAFlow = MinOAFlow + FinalZoneSizing(CtrlZoneNum)%VozHtgByZone
IF (FinalZoneSizing(CtrlZoneNum)%DesHeatVolFlow > 0.0d0) THEN
IF (FinalZoneSizing(CtrlZoneNum)%ZoneSecondaryRecirculation > 0.0d0) THEN ! multi-path system
! multi-path system
ZoneOAFracHeating = FinalZoneSizing(CtrlZoneNum)%VozHtgByZone / TermUnitSizing(CtrlZoneNum)%AirVolFlow
ELSE
! Single path system
ZoneOAFracHeating = FinalZoneSizing(CtrlZoneNum)%VozHtgByZone / FinalZoneSizing(CtrlZoneNum)%DesHeatVolFlow
ENDIF
ELSE
ZoneOAFracHeating = 0.0d0
ENDIF
ELSE ! would be error
ENDIF
ELSE ! ZoneSum Method
MinOAFlow = MinOAFlow + FinalZoneSizing(CtrlZoneNum)%MinOA
ZoneOAFracHeating = 0.0d0
END IF
ELSE
ZoneOAFracHeating = 0.0d0
END IF
! Calc maximum zone OA fraction and supply air adjustment factor based
! on user entered max allowed OA fraction - a TRACE feature
IF (FinalSysSizing(AirLoopNum)%MaxZoneOAFraction > 0 .AND. &
ZoneOAFracHeating > FinalSysSizing(AirLoopNum)%MaxZoneOAFraction) THEN
IF (FinalSysSizing(AirLoopNum)%CoolAirDesMethod == FromDDCalc) THEN ! DesignDay Method
HtgSupplyAirAdjustFactor = ZoneOAFracHeating / FinalSysSizing(AirLoopNum)%MaxZoneOAFraction
IF (FinalZoneSizing(CtrlZoneNum)%ZoneSecondaryRecirculation > 0.0d0 .OR. &
FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlowMin <= 0) THEN
! multi-path system or VAV Heating airflow max not defined
TermUnitSizing(CtrlZoneNum)%AirVolFlow = TermUnitSizing(CtrlZoneNum)%AirVolFlow * HtgSupplyAirAdjustFactor
ELSE
! Single path; Use VAV Heating airflow max as the Vpz in the Zp = Voz / Vpz equations
FinalZoneSizing(CtrlZoneNum)%DesHeatVolFlow = &
FinalZoneSizing(CtrlZoneNum)%DesHeatVolFlow * HtgSupplyAirAdjustFactor
! Don't allow the design terminal airflow to be less than the design heating airflow
TermUnitSizing(CtrlZoneNum)%AirVolFlow= MAX(TermUnitSizing(CtrlZoneNum)%AirVolFlow, &
FinalZoneSizing(CtrlZoneNum)%DesHeatVolFlow)
ENDIF
ZoneOAFracHeating = FinalSysSizing(AirLoopNum)%MaxZoneOAFraction
ELSE
HtgSupplyAirAdjustFactor = 1.0D0
ENDIF
ELSE
HtgSupplyAirAdjustFactor = 1.0D0
ENDIF
ZoneSA = 0.0d0
ZonePA = 0.0d0
Ep = 1.0d0
IF (FinalZoneSizing(CtrlZoneNum)%ZoneSecondaryRecirculation > 0.0d0) THEN ! multi-path system
!Vpz: "Primary" supply air from main air handler served by an oa mixer
ZonePA = FinalZoneSizing(CtrlZoneNum)%DesHeatVolFlow
!Vdz: "Discharge" supply air delivered to zone by terminal unit
ZoneSA = MAX(TermUnitSizing(CtrlZoneNum)%AirVolFlow, ZonePA)
! For re-circulation systems, Vpz used to determine Zpz is the design terminal airflow
! Std 62.1-2010, section 6.2.5.1: "Vpz (used to determin Zpz) is the primary airflow rate
! rate to the ventilation zone from the air handler, including outdoor air and recirculated air.
VpzMinHtgByZone(CtrlZoneNum) = ZoneSA
ELSE ! single path system
ZonePA = FinalZoneSizing(CtrlZoneNum)%DesHeatVolFlow
ZoneSA = FinalZoneSizing(CtrlZoneNum)%DesHeatVolFlow
! We do not use the cooling VAV min for heating because the VAV-box heating maximum may be larger.
VpzMinHtgByZone(CtrlZoneNum) = ZoneSA
END IF
!save Vdz zone discharge supply airflow for standard 62.1 report
VdzHtgByZone(CtrlZoneNum) = ZoneSA
!save Vpz zone primary airflow for standard 62.1 report
VpzHtgByZone(CtrlZoneNum) = ZonePA
VpzHtgSumBySys(AirLoopNum) = VpzHtgSumBySys(AirLoopNum) + ZonePA
! Fraction of required zone ventilation to minimum primary airflow expected at condition analyzed
FinalZoneSizing(CtrlZoneNum)%ZpzHtgByZone = 0.0d0
IF (VpzMinHtgByZone(CtrlZoneNum) > 0) THEN
FinalZoneSizing(CtrlZoneNum)%ZpzHtgByZone = &
MIN(1.0D0, FinalZoneSizing(CtrlZoneNum)%VozHtgByZone / VpzMinHtgByZone(CtrlZoneNum))
ENDIF
! calc zone primary air fraction
IF (ZoneSA > 0.0d0) Ep = ZonePA / ZoneSA
IF (Ep > 1.0d0) Ep = 1.0d0
FinalZoneSizing(CtrlZoneNum)%ZonePrimaryAirFractionHtg = Ep
FinalZoneSizing(CtrlZoneNum)%ZoneOAFracHeating = ZoneOAFracHeating
END DO
ELSE ! getting heating flow based values for Std 62.1 report for single path systems
ZoneOAFracHeating = 0.0d0
DO ZonesHeatedNum=1,NumZonesCooled
CtrlZoneNum = AirToZoneNodeInfo(AirLoopNum)%CoolCtrlZoneNums(ZonesHeatedNum)
! Voz ventilation airflow required during heating mode
FinalZoneSizing(CtrlZoneNum)%VozHtgByZone = VbzByZone(CtrlZoneNum) / FinalZoneSizing(CtrlZoneNum)%ZoneADEffHeating
IF (FinalZoneSizing(CtrlZoneNum)%DesHeatVolFlow > 0.0d0) THEN
! ZoneOAFracHeating = FinalZoneSizing(CtrlZoneNum)%MinOA / FinalZoneSizing(CtrlZoneNum)%DesHeatVolFlow
IF (FinalZoneSizing(CtrlZoneNum)%ZoneSecondaryRecirculation > 0.0d0) THEN ! multi-path system
! multi-path system
IF (TermUnitSizing(CtrlZoneNum)%AirVolFlow .NE. 0) THEN
ZoneOAFracHeating = FinalZoneSizing(CtrlZoneNum)%VozHtgByZone / TermUnitSizing(CtrlZoneNum)%AirVolFlow
END IF
ELSE
! Single path system
ZoneOAFracHeating = FinalZoneSizing(CtrlZoneNum)%VozHtgByZone / FinalZoneSizing(CtrlZoneNum)%DesHeatVolFlow
ENDIF
ELSE
ZoneOAFracHeating = 0.0d0
ENDIF
! Calc maximum zone OA fraction and supply air adjustment factor based
! on user entered max allowed OA fraction - a TRACE feature
IF (FinalSysSizing(AirLoopNum)%MaxZoneOAFraction > 0 .AND. &
ZoneOAFracHeating > FinalSysSizing(AirLoopNum)%MaxZoneOAFraction) THEN
IF (FinalSysSizing(AirLoopNum)%HeatAirDesMethod == FromDDCalc) THEN ! DesignDay Method
HtgSupplyAirAdjustFactor = ZoneOAFracHeating / FinalSysSizing(AirLoopNum)%MaxZoneOAFraction
IF (FinalZoneSizing(CtrlZoneNum)%ZoneSecondaryRecirculation > 0.0d0 .OR. &
FinalZoneSizing(CtrlZoneNum)%DesCoolVolFlowMin <= 0) THEN
! multi-path system or VAV Heating airflow max not defined
TermUnitSizing(CtrlZoneNum)%AirVolFlow = TermUnitSizing(CtrlZoneNum)%AirVolFlow * HtgSupplyAirAdjustFactor
ELSE
! Single path; Use VAV Heating airflow max as the Vpz in the Zp = Voz / Vpz equations
FinalZoneSizing(CtrlZoneNum)%DesHeatVolFlow = &
FinalZoneSizing(CtrlZoneNum)%DesHeatVolFlow * HtgSupplyAirAdjustFactor
! Don't allow the design terminal airflow to be less than the design heating airflow
TermUnitSizing(CtrlZoneNum)%AirVolFlow= &
MAX(TermUnitSizing(CtrlZoneNum)%AirVolFlow, FinalZoneSizing(CtrlZoneNum)%DesHeatVolFlow)
ENDIF
ZoneOAFracHeating = FinalSysSizing(AirLoopNum)%MaxZoneOAFraction
ENDIF
ENDIF
ZonePA = FinalZoneSizing(CtrlZoneNum)%DesHeatVolFlow
ZoneSA = FinalZoneSizing(CtrlZoneNum)%DesHeatVolFlow
!save Vdz zone discharge airflow for standard 62.1 report
VdzHtgByZone(CtrlZoneNum) = ZoneSA
!save Vpz zone primary airflow for standard 62.1 report
VpzHtgByZone(CtrlZoneNum) = ZonePA
VpzHtgSumBySys(AirLoopNum) = VpzHtgSumBySys(AirLoopNum) + ZonePA
! We do not use the cooling VAV min for heating because the VAV-box heating maximum may be larger.
VpzMinHtgByZone(CtrlZoneNum) = ZoneSA
! Save Std 62.1 heating ventilation required by zone
FinalZoneSizing(CtrlZoneNum)%VozHtgByZone = VbzByZone(CtrlZoneNum) / FinalZoneSizing(CtrlZoneNum)%ZoneADEffHeating
! Fraction of required zone ventilation to minimum primary airflow expected at condition analyzed
FinalZoneSizing(CtrlZoneNum)%ZpzHtgByZone = 0.0d0
IF (VpzMinHtgByZone(CtrlZoneNum) > 0) THEN
FinalZoneSizing(CtrlZoneNum)%ZpzHtgByZone = FinalZoneSizing(CtrlZoneNum)%VozHtgByZone/ VpzMinHtgByZone(CtrlZoneNum)
ENDIF
! calc zone primary air fraction
Ep = 1.0d0
IF (ZoneSA > 0.0d0) Ep = ZonePA / ZoneSA
IF (Ep > 1.0d0) Ep = 1.0d0
FinalZoneSizing(CtrlZoneNum)%ZonePrimaryAirFractionHtg = Ep
FinalZoneSizing(CtrlZoneNum)%ZoneOAFracHeating = ZoneOAFracHeating
END DO
FinalZoneSizing(CtrlZoneNum)%SupplyAirAdjustFactor = MAX(ClgSupplyAirAdjustFactor,HtgSupplyAirAdjustFactor)
CalcZoneSizing(CtrlZoneNum, CurOverallSimDay)%SupplyAirAdjustFactor = FinalZoneSizing(CtrlZoneNum)%SupplyAirAdjustFactor
END IF
FinalSysSizing(AirLoopNum)%SysUncOA = SysOAUnc
CalcSysSizing(AirLoopNum)%SysUncOA = SysOAUnc
FinalSysSizing(AirLoopNum)%DesOutAirVolFlow = MinOAFlow
CalcSysSizing(AirLoopNum)%DesOutAirVolFlow = MinOAFlow
DO DesDayEnvrnNum=1,TotDesDays+TotRunDesPersDays
SysSizing(AirLoopNum,DesDayEnvrnNum)%DesOutAirVolFlow = FinalSysSizing(AirLoopNum)%DesOutAirVolFlow
END DO
END IF
END DO
! write predefined standard 62.1 report data
DO AirLoopNum=1,NumPrimaryAirSys
IF (FinalSysSizing(AirLoopNum)%SystemOAMethod == SOAM_VRP) THEN
NumZonesCooled = AirToZoneNodeInfo(AirLoopNum)%NumZonesCooled
!System Ventilation Requirements for Cooling
CALL PreDefTableEntry(pdchS62svrClSumVpz,FinalSysSizing(AirLoopNum)%AirPriLoopName,VpzClgSumBySys(AirLoopNum),3) !Vpz-sum
CALL PreDefTableEntry(pdchS62svrClPs,FinalSysSizing(AirLoopNum)%AirPriLoopName,PsBySysCool(AirLoopNum)) !Ps
CALL PreDefTableEntry(pdchS62svrClSumPz,FinalSysSizing(AirLoopNum)%AirPriLoopName,PzSumBySysCool(AirLoopNum)) !Pz-sum
CALL PreDefTableEntry(pdchS62svrClD,FinalSysSizing(AirLoopNum)%AirPriLoopName,DBySysCool(AirLoopNum)) !D
CALL PreDefTableEntry(pdchS62svrClVou,FinalSysSizing(AirLoopNum)%AirPriLoopName,FinalSysSizing(AirLoopNum)%SysUncOA,4) !Vou
!System Ventilation Requirements for Heating
CALL PreDefTableEntry(pdchS62svrHtSumVpz,FinalSysSizing(AirLoopNum)%AirPriLoopName,VpzHtgSumBySys(AirLoopNum),3) !Vpz-sum
CALL PreDefTableEntry(pdchS62svrHtPs,FinalSysSizing(AirLoopNum)%AirPriLoopName,PsBySysHeat(AirLoopNum)) !Ps
CALL PreDefTableEntry(pdchS62svrHtSumPz,FinalSysSizing(AirLoopNum)%AirPriLoopName,PzSumBySysHeat(AirLoopNum)) !Pz-sum
CALL PreDefTableEntry(pdchS62svrHtD,FinalSysSizing(AirLoopNum)%AirPriLoopName,DBySysHeat(AirLoopNum)) !D
CALL PreDefTableEntry(pdchS62svrHtVou,FinalSysSizing(AirLoopNum)%AirPriLoopName,FinalSysSizing(AirLoopNum)%SysUncOA,4) !Vou
! clear temporary values for system ventilation parameters report
RpPzSum = 0.0d0
RaAzSum = 0.0d0
AzSum = 0.0d0
VbzSum = 0.0d0
VozClgSum = 0.0d0
VozHtgSum = 0.0d0
VdzSum = 0.0d0
VdzHtgSum = 0.0d0
VpzMin = 0.0d0
DO ZonesCooledNum=1,NumZonesCooled ! loop over cooled zones
CtrlZoneNum = AirToZoneNodeInfo(AirLoopNum)%CoolCtrlZoneNums(ZonesCooledNum)
!Zone Ventilation Parameters
CALL PreDefTableEntry(pdchS62zvpAlN,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
AirToZoneNodeInfo(AirLoopNum)%AirLoopName) !Air loop name
CALL PreDefTableEntry(pdchS62zvpRp,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
FinalZoneSizing(CtrlZoneNum)%DesOAFlowPPer,6) !Rp
CALL PreDefTableEntry(pdchS62zvpPz,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
FinalZoneSizing(CtrlZoneNum)%TotPeopleInZone) !Pz
CALL PreDefTableEntry(pdchS62zvpRa,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
FinalZoneSizing(CtrlZoneNum)%DesOAFlowPerArea,6) !Ra
! ZoneIndex = FinalZoneSizing(CtrlZoneNum)%ActualZoneNum
CALL PreDefTableEntry(pdchS62zvpAz,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
FinalZoneSizing(CtrlZoneNum)%TotalZoneFloorArea) ! Az
CALL PreDefTableEntry(pdchS62zvpVbz,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
VbzByZone(CtrlZoneNum),4) !Vbz
CALL PreDefTableEntry(pdchS62zvpClEz,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
FinalZoneSizing(CtrlZoneNum)%ZoneADEffCooling,3) !Ez-clg
IF (FinalZoneSizing(CtrlZoneNum)%ZoneADEffCooling .NE. 0.0d0) THEN
CALL PreDefTableEntry(pdchS62zvpClVoz,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
VbzByZone(CtrlZoneNum)/FinalZoneSizing(CtrlZoneNum)%ZoneADEffCooling,4) !Voz-clg
CALL PreDefTableEntry(pdchS62zcdVozclg,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
VbzByZone(CtrlZoneNum)/FinalZoneSizing(CtrlZoneNum)%ZoneADEffCooling,4) !Voz-clg
CALL PreDefTableEntry(pdchS62zcdZpz,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
FinalZoneSizing(CtrlZoneNum)%ZpzClgByZone,3) !Zpz = Voz/Vpz (see eq 6-5 in 62.1-2010)
VozClgSum = VozClgSum + VbzByZone(CtrlZoneNum)/FinalZoneSizing(CtrlZoneNum)%ZoneADEffCooling
END IF
! accumulate values for system ventilation parameters report
RpPzSum = RpPzSum + FinalZoneSizing(CtrlZoneNum)%DesOAFlowPPer * FinalZoneSizing(CtrlZoneNum)%TotPeopleInZone
RaAzSum = RaAzSum + FinalZoneSizing(CtrlZoneNum)%DesOAFlowPerArea * FinalZoneSizing(CtrlZoneNum)%TotalZoneFloorArea
AzSum = AzSum + FinalZoneSizing(CtrlZoneNum)%TotalZoneFloorArea
VbzSum = VbzSum + VbzByZone(CtrlZoneNum)
!Zone Ventilation Calculations for Cooling Design
CALL PreDefTableEntry(pdchS62zcdVpz,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
VpzClgByZone(CtrlZoneNum),3) !Vpz LS:
VpzMin = VpzMin + VpzMinClgByZone(CtrlZoneNum)
CALL PreDefTableEntry(pdchS62zcdVdz,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
VdzClgByZone(CtrlZoneNum),4) !Vdz
CALL PreDefTableEntry(pdchS62zcdVpzmin,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
VpzMinClgByZone(CtrlZoneNum),4) !Vpz-min
VdzSum = VdzSum + VdzClgByZone(CtrlZoneNum)
!box type
DO iAirDistUnit = 1, NumAirDistUnits
IF (AirDistUnit(iAirDistUnit)%ZoneEqNum .EQ. CtrlZoneNum) THEN
CALL PreDefTableEntry(pdchS62zcdBox,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
AirDistUnit(iAirDistUnit)%EquipType(1)) !use first type of equipment listed
EXIT !if it has been found no more searching is needed
END IF
END DO
END DO
NumZonesHeated = AirToZoneNodeInfo(AirLoopNum)%NumZonesHeated
CALL PreDefTableEntry(pdchS62scdVpzmin,FinalSysSizing(AirLoopNum)%AirPriLoopName,VpzMin,4) !Vpz-min
VpzMin = 0.0d0
IF (NumZonesHeated > 0) THEN
DO ZonesHeatedNum=1,NumZonesHeated ! loop over the heated zones
CtrlZoneNum = AirToZoneNodeInfo(AirLoopNum)%HeatCtrlZoneNums(ZonesHeatedNum)
!Zone Ventilation Calculations for Heating Design
CALL PreDefTableEntry(pdchS62zhdVpz,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
VpzHtgByZone(CtrlZoneNum),3) !Vpz
VpzMin = VpzMin + VpzMinHtgByZone(CtrlZoneNum)
CALL PreDefTableEntry(pdchS62zhdVdz,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
VdzHtgByZone(CtrlZoneNum),4) !Vdz
CALL PreDefTableEntry(pdchS62zhdVpzmin,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
VpzMinHtgByZone(CtrlZoneNum),4) !Vpz-min
VdzHtgSum = VdzHtgSum + VdzHtgByZone(CtrlZoneNum)
!box type
DO iAirDistUnit = 1, NumAirDistUnits
IF (AirDistUnit(iAirDistUnit)%ZoneEqNum .EQ. CtrlZoneNum) THEN
CALL PreDefTableEntry(pdchS62zhdBox,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
AirDistUnit(iAirDistUnit)%EquipType(1)) !use first type of equipment listed
EXIT !if it has been found no more searching is needed
END IF
END DO
!Zone Ventilation Parameters
CALL PreDefTableEntry(pdchS62zvpHtEz,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
FinalZoneSizing(CtrlZoneNum)%ZoneADEffHeating,3) !Ez-htg
IF (FinalZoneSizing(CtrlZoneNum)%ZoneADEffHeating .NE. 0.0d0) THEN
CALL PreDefTableEntry(pdchS62zvpHtVoz,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
VbzByZone(CtrlZoneNum)/FinalZoneSizing(CtrlZoneNum)%ZoneADEffHeating,4) !Voz-htg
CALL PreDefTableEntry(pdchS62zhdVozhtg,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
VbzByZone(CtrlZoneNum)/FinalZoneSizing(CtrlZoneNum)%ZoneADEffHeating,4) !Voz-htg
CALL PreDefTableEntry(pdchS62zhdZpz,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
FinalZoneSizing(CtrlZoneNum)%ZpzHtgByZone,3) !Zpz = Voz/Vpz (see eq 6-5 in 62.1-2010)
VozHtgSum = VozHtgSum + VbzByZone(CtrlZoneNum)/FinalZoneSizing(CtrlZoneNum)%ZoneADEffHeating
END IF
END DO
ELSE
DO ZonesHeatedNum=1,NumZonesCooled ! loop over the cooled zones if no centrally heated zones
CtrlZoneNum = AirToZoneNodeInfo(AirLoopNum)%CoolCtrlZoneNums(ZonesHeatedNum)
!Zone Ventilation Calculations for Heating Design
CALL PreDefTableEntry(pdchS62zhdVpz,FinalZoneSizing(CtrlZoneNum)%ZoneName,VpzHtgByZone(CtrlZoneNum),3) !Vpz
VpzMin = VpzMin + VpzMinHtgByZone(CtrlZoneNum)
CALL PreDefTableEntry(pdchS62zhdVdz,FinalZoneSizing(CtrlZoneNum)%ZoneName,VdzHtgByZone(CtrlZoneNum),3) !Vdz
CALL PreDefTableEntry(pdchS62zhdVpzmin,FinalZoneSizing(CtrlZoneNum)%ZoneName,VpzMinHtgByZone(CtrlZoneNum),3) !Vpz-min
VdzHtgSum = VdzHtgSum + VdzHtgByZone(CtrlZoneNum)
!box type
DO iAirDistUnit = 1, NumAirDistUnits
IF (AirDistUnit(iAirDistUnit)%ZoneEqNum .EQ. CtrlZoneNum) THEN
!use first type of equipment listed
CALL PreDefTableEntry(pdchS62zhdBox,FinalZoneSizing(CtrlZoneNum)%ZoneName,AirDistUnit(iAirDistUnit)%EquipType(1))
EXIT !if it has been found no more searching is needed
END IF
END DO
!Zone Ventilation Parameters
CALL PreDefTableEntry(pdchS62zvpHtEz,FinalZoneSizing(CtrlZoneNum)%ZoneName, &
FinalZoneSizing(CtrlZoneNum)%ZoneADEffHeating,3) !Ez-htg
IF (FinalZoneSizing(CtrlZoneNum)%ZoneADEffHeating .NE. 0.0d0) THEN
CALL PreDefTableEntry(pdchS62zvpHtVoz,FinalZoneSizing(CtrlZoneNum)%ZoneName, & !Voz-htg
VbzByZone(CtrlZoneNum)/FinalZoneSizing(CtrlZoneNum)%ZoneADEffHeating,4)
CALL PreDefTableEntry(pdchS62zhdVozhtg,FinalZoneSizing(CtrlZoneNum)%ZoneName, & !Voz-htg
VbzByZone(CtrlZoneNum)/FinalZoneSizing(CtrlZoneNum)%ZoneADEffHeating,4)
IF (VpzHtgByZone(CtrlZoneNum) .NE. 0.0d0) THEN
CALL PreDefTableEntry(pdchS62zhdZpz,FinalZoneSizing(CtrlZoneNum)%ZoneName, & !Zpz = Voz/Vpz (see eq 6-5 in 62.1-2010)
(VbzByZone(CtrlZoneNum)/FinalZoneSizing(CtrlZoneNum)%ZoneADEffHeating)/VpzHtgByZone(CtrlZoneNum),3)
END IF
VozHtgSum = VozHtgSum + VbzByZone(CtrlZoneNum)/FinalZoneSizing(CtrlZoneNum)%ZoneADEffHeating
END IF
END DO
END IF
CALL PreDefTableEntry(pdchS62shdVpzmin,FinalSysSizing(AirLoopNum)%AirPriLoopName,VpzMin) !Vpz-min
!System Ventilation Parameters
IF (PzSumBySysCool(AirLoopNum) .NE. 0.0d0) THEN
CALL PreDefTableEntry(pdchS62svpRp,FinalSysSizing(AirLoopNum)%AirPriLoopName,RpPzSum/PzSumBySysCool(AirLoopNum),6)
END IF
CALL PreDefTableEntry(pdchS62svpPz,FinalSysSizing(AirLoopNum)%AirPriLoopName,PzSumBySysCool(AirLoopNum))
IF (AzSum .NE. 0.0d0) THEN
CALL PreDefTableEntry(pdchS62svpRa,FinalSysSizing(AirLoopNum)%AirPriLoopName,RaAzSum/AzSum,6)
END IF
CALL PreDefTableEntry(pdchS62svpAz,FinalSysSizing(AirLoopNum)%AirPriLoopName,AzSum)
CALL PreDefTableEntry(pdchS62svpVbz,FinalSysSizing(AirLoopNum)%AirPriLoopName,VbzSum,4)
CALL PreDefTableEntry(pdchS62svpClVoz,FinalSysSizing(AirLoopNum)%AirPriLoopName,VozClgSum,4) !Voz-clg
CALL PreDefTableEntry(pdchS62svpHtVoz,FinalSysSizing(AirLoopNum)%AirPriLoopName,VozHtgSum,4) !Voz-htg
!System Ventilation Calculations for Cooling Design
CALL PreDefTableEntry(pdchS62scdVpz,FinalSysSizing(AirLoopNum)%AirPriLoopName,VpzClgSumBySys(AirLoopNum)) !Vpz-sum
CALL PreDefTableEntry(pdchS62scdVdz,FinalSysSizing(AirLoopNum)%AirPriLoopName,VdzSum) !Vdz-sum
CALL PreDefTableEntry(pdchS62scdVozclg,FinalSysSizing(AirLoopNum)%AirPriLoopName,VozClgSum,4) !Voz-clg
!System Ventilation Calculations for Heating Design
CALL PreDefTableEntry(pdchS62shdVpz,FinalSysSizing(AirLoopNum)%AirPriLoopName,VpzHtgSumBySys(AirLoopNum)) !Vpz-sum
CALL PreDefTableEntry(pdchS62shdVdz,FinalSysSizing(AirLoopNum)%AirPriLoopName,VdzHtgSum) !Vdz-sum
CALL PreDefTableEntry(pdchS62shdVozhtg,FinalSysSizing(AirLoopNum)%AirPriLoopName,VozHtgSum,4) !Voz-htg
END IF
END DO
RETURN
END SUBROUTINE SetUpSysSizingArrays