Nodes of different colours represent the following:
Solid arrows point from a parent (sub)module to the submodule which is descended from it. Dashed arrows point from a module being used to the module or program unit using it. Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | PTUnitNum |
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed arrows point from an interface to procedures which implement that interface. This could include the module procedures in a generic interface or the implementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed arrows point from an interface to procedures which implement that interface. This could include the module procedures in a generic interface or the implementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
SUBROUTINE SizePTUnit(PTUnitNum)
! SUBROUTINE INFORMATION:
! AUTHOR Richard Raustad
! DATE WRITTEN July 2005
! MODIFIED Bo Shen, ORNL, March 2012, added variable-speed water-source heat pump
! August 2013 Daeho Kang, add component sizing table entries
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine is for sizing packaged terminal heat pump components for which flow rates have not been
! specified in the input.
! METHODOLOGY EMPLOYED:
! Obtains flow rates from the zone sizing arrays. ParentCoolAirFlowSizing and ParentHeatAirFlowSizing
! arrays are used to pass volumetric flow rates to child objects when zone sizing array values are overridden.
! REFERENCES:
! na
! USE STATEMENTS:
USE WaterCoils, ONLY: SetCoilDesFlow
USE ReportSizingManager, ONLY: ReportSizingOutput
USE General, ONLY: RoundSigDigits
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
LOGICAL :: IsAutosize ! Indicator to autosize
REAL(r64) :: MaxCoolAirVolFlowDes ! Autosized cooling air flow for reporting
REAL(r64) :: MaxCoolAirVolFlowUser ! Hardsizedcooling air flow for reporting
REAL(r64) :: MaxHeatAirVolFlowDes ! Autosized heating air flow for reporting
REAL(r64) :: MaxHeatAirVolFlowUser ! Hardsized heating air flow for reporting
REAL(r64) :: MaxNoCoolHeatAirVolFlowDes ! Autosized maximum air flow when unconditioned for reporting
REAL(r64) :: MaxNoCoolHeatAirVolFlowUser ! Hardsized maximum air flow when unconditioned for reporting
REAL(r64) :: CoolOutAirVolFlowDes ! Autosized cooling outdoor air flow for reporting
REAL(r64) :: CoolOutAirVolFlowUser ! Hardsized cooling outdoor air flow for reporting
REAL(r64) :: HeatOutAirVolFlowDes ! Autosized heating outdoor air flow for reporting
REAL(r64) :: HeatOutAirVolFlowUser ! Hardsized heating outdoor air flow for reporting
REAL(r64) :: NoCoolHeatOutAirVolFlowDes ! Autosized outdoor air flow when unconditioned for reporting
REAL(r64) :: NoCoolHeatOutAirVolFlowUser ! Hardsized outdoor air flow when unconditioned for reporting
REAL(r64) :: MaxSATSupHeatDes ! Autosized supply air temperature of supplemental heater for reporting
REAL(r64) :: MaxSATSupHeatUser ! Hardsized supply air temperature of supplemental heater for reporting
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER, INTENT(IN) :: PTUnitNum
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
LOGICAL :: ErrorsFound
LOGICAL :: SizingDesRunThisZone ! true if a particular zone had a Sizing:Zone object and zone sizing was done
ErrorsFound=.false.
IsAutosize = .FALSE.
MaxCoolAirVolFlowDes = 0.0d0
MaxCoolAirVolFlowUser = 0.0d0
MaxHeatAirVolFlowDes = 0.0d0
MaxHeatAirVolFlowUser = 0.0d0
MaxNoCoolHeatAirVolFlowDes = 0.0d0
MaxNoCoolHeatAirVolFlowUser = 0.0d0
CoolOutAirVolFlowDes = 0.0d0
CoolOutAirVolFlowUser = 0.0d0
HeatOutAirVolFlowDes = 0.0d0
HeatOutAirVolFlowUser = 0.0d0
NoCoolHeatOutAirVolFlowDes = 0.0d0
NoCoolHeatOutAirVolFlowUser = 0.0d0
MaxSATSupHeatDes = 0.0d0
MaxSATSupHeatUser = 0.0d0
IF (PTUnit(PTUnitNum)%MaxCoolAirVolFlow == AutoSize) THEN
IsAutosize = .TRUE.
END IF
IF (CurZoneEqNum > 0) THEN
CALL CheckThisZoneForSizing(CurZoneEqNum, SizingDesRunThisZone)
IF (.NOT. IsAutosize .AND. .NOT. SizingDesRunThisZone) THEN ! Simulation continue
IF (PTUnit(PTUnitNum)%MaxCoolAirVolFlow > 0.0d0) THEN
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'User-Specified Supply Air Flow Rate During Cooling Operation [m3/s]', &
PTUnit(PTUnitNum)%MaxCoolAirVolFlow)
END IF
ELSE
CALL CheckZoneSizing(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name)
MaxCoolAirVolFlowDes = MAX(FinalZoneSizing(CurZoneEqNum)%DesCoolVolFlow, &
FinalZoneSizing(CurZoneEqNum)%DesHeatVolFlow)
IF (MaxCoolAirVolFlowDes < SmallAirVolFlow) THEN
MaxCoolAirVolFlowDes = 0.0d0
END IF
IF (IsAutosize) THEN
PTUnit(PTUnitNum)%MaxCoolAirVolFlow = MaxCoolAirVolFlowDes
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'Design Size Supply Air Flow Rate During Cooling Operation [m3/s]', MaxCoolAirVolFlowDes)
ELSE
IF (PTUnit(PTUnitNum)%MaxCoolAirVolFlow > 0.0d0 .AND. MaxCoolAirVolFlowDes > 0.0d0 .AND. SizingDesRunThisZone) THEN
MaxCoolAirVolFlowUser = PTUnit(PTUnitNum)%MaxCoolAirVolFlow
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'Design Size Supply Air Flow Rate During Cooling Operation [m3/s]', MaxCoolAirVolFlowDes, &
'User-Specified Supply Air Flow Rate During Cooling Operation [m3/s]', MaxCoolAirVolFlowUser)
IF (DisplayExtraWarnings) THEN
IF ((ABS(MaxCoolAirVolFlowDes - MaxCoolAirVolFlowUser)/MaxCoolAirVolFlowUser) > AutoVsHardSizingThreshold) THEN
CALL ShowMessage('SizePTUnit: Potential issue with equipment sizing for '&
//TRIM(PTUnit(PTUnitNum)%UnitType)//' '//TRIM(PTUnit(PTUnitNum)%Name))
CALL ShowContinueError('User-Specified Supply Air Flow Rate During Cooling Operation of '// &
TRIM(RoundSigDigits(MaxCoolAirVolFlowUser,5))// ' [m3/s]')
CALL ShowContinueError('differs from Design Size Supply Air Flow Rate During Cooling Operation of ' // &
TRIM(RoundSigDigits(MaxCoolAirVolFlowDes,5))// ' [m3/s]')
CALL ShowContinueError('This may, or may not, indicate mismatched component sizes.')
CALL ShowContinueError('Verify that the value entered is intended and is consistent with other components.')
END IF
ENDIF
END IF
END IF
END IF
END IF
IsAutosize = .FALSE.
IF (PTUnit(PTUnitNum)%MaxHeatAirVolFlow == AutoSize) THEN
IsAutosize = .TRUE.
END IF
IF (CurZoneEqNum > 0) THEN
CALL CheckThisZoneForSizing(CurZoneEqNum, SizingDesRunThisZone)
IF (.NOT. IsAutosize .AND. .NOT. SizingDesRunThisZone) THEN ! Simulation continue
IF (PTUnit(PTUnitNum)%MaxHeatAirVolFlow > 0.0d0) THEN
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'User-Specified Supply Air Flow Rate During Heating Operation [m3/s]', &
PTUnit(PTUnitNum)%MaxHeatAirVolFlow)
END IF
ELSE
CALL CheckZoneSizing(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name)
MaxHeatAirVolFlowDes = MAX(FinalZoneSizing(CurZoneEqNum)%DesCoolVolFlow, &
FinalZoneSizing(CurZoneEqNum)%DesHeatVolFlow)
IF (MaxHeatAirVolFlowDes < SmallAirVolFlow) THEN
MaxHeatAirVolFlowDes = 0.0d0
END IF
IF (IsAutosize) THEN
PTUnit(PTUnitNum)%MaxHeatAirVolFlow = MaxHeatAirVolFlowDes
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'Design Size Supply Air Flow Rate During Heating Operation [m3/s]', MaxHeatAirVolFlowDes)
ELSE
IF (PTUnit(PTUnitNum)%MaxHeatAirVolFlow > 0.0d0 .AND. MaxHeatAirVolFlowDes > 0.0d0 .AND. SizingDesRunThisZone) THEN
MaxHeatAirVolFlowUser = PTUnit(PTUnitNum)%MaxHeatAirVolFlow
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'Design Size Supply Air Flow Rate During Heating Operation [m3/s]', MaxHeatAirVolFlowDes, &
'User-Specified Supply Air Flow Rate During Heating Operation [m3/s]', MaxHeatAirVolFlowUser)
IF (DisplayExtraWarnings) THEN
IF ((ABS(MaxHeatAirVolFlowDes - MaxHeatAirVolFlowUser)/ MaxHeatAirVolFlowUser) > AutoVsHardSizingThreshold) THEN
CALL ShowMessage('SizePTUnit: Potential issue with equipment sizing for ' &
//TRIM(PTUnit(PTUnitNum)%UnitType)//' '//TRIM(PTUnit(PTUnitNum)%Name))
CALL ShowContinueError('User-Specified Supply Air Flow Rate During Heating Operation of '// &
TRIM(RoundSigDigits(MaxHeatAirVolFlowUser,5))// ' [m3/s]')
CALL ShowContinueError('differs from Design Size Supply Air Flow Rate During Heating Operation of ' // &
TRIM(RoundSigDigits(MaxHeatAirVolFlowDes,5))// ' [m3/s]')
CALL ShowContinueError('This may, or may not, indicate mismatched component sizes.')
CALL ShowContinueError('Verify that the value entered is intended and is consistent with other components.')
END IF
ENDIF
END IF
END IF
END IF
END IF
IsAutosize = .FALSE.
IF (PTUnit(PTUnitNum)%MaxNoCoolHeatAirVolFlow == AutoSize) THEN
IsAutosize = .TRUE.
END IF
IF (CurZoneEqNum > 0) THEN
CALL CheckThisZoneForSizing(CurZoneEqNum, SizingDesRunThisZone)
IF (.NOT. IsAutosize .AND. .NOT. SizingDesRunThisZone) THEN ! Simulation continue
IF (PTUnit(PTUnitNum)%MaxNoCoolHeatAirVolFlow > 0.0d0) THEN
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'User-Specified Supply Air Flow Rate When No Cooling or Heating is Needed [m3/s]', &
PTUnit(PTUnitNum)%MaxNoCoolHeatAirVolFlow)
END IF
ELSE
CALL CheckZoneSizing(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name)
MaxNoCoolHeatAirVolFlowDes = MIN(PTUnit(PTUnitNum)%MaxCoolAirVolFlow, &
PTUnit(PTUnitNum)%MaxHeatAirVolFlow)
IF (MaxNoCoolHeatAirVolFlowDes < SmallAirVolFlow) THEN
MaxNoCoolHeatAirVolFlowDes = 0.0d0
END IF
IF (IsAutosize) THEN
PTUnit(PTUnitNum)%MaxNoCoolHeatAirVolFlow = MaxNoCoolHeatAirVolFlowDes
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'Design Size Supply Air Flow Rate When No Cooling or Heating is Needed [m3/s]', &
MaxNoCoolHeatAirVolFlowDes)
ELSE
IF (PTUnit(PTUnitNum)%MaxNoCoolHeatAirVolFlow > 0.0d0 .AND. MaxNoCoolHeatAirVolFlowDes > 0.0d0 &
.AND. SizingDesRunThisZone) THEN
MaxNoCoolHeatAirVolFlowUser = PTUnit(PTUnitNum)%MaxNoCoolHeatAirVolFlow
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'Design Size Supply Air Flow Rate When No Cooling or Heating is Needed [m3/s]', &
MaxNoCoolHeatAirVolFlowDes, &
'User-Specified Supply Air Flow Rate When No Cooling or Heating is Needed [m3/s]', &
MaxNoCoolHeatAirVolFlowUser)
IF (DisplayExtraWarnings) THEN
IF ((ABS(MaxNoCoolHeatAirVolFlowDes - MaxNoCoolHeatAirVolFlowUser)/MaxNoCoolHeatAirVolFlowUser) &
> AutoVsHardSizingThreshold) THEN
CALL ShowMessage('SizePTUnit: Potential issue with equipment sizing for ' &
//TRIM(PTUnit(PTUnitNum)%UnitType)//' '//TRIM(PTUnit(PTUnitNum)%Name))
CALL ShowContinueError('User-Specified Supply Air Flow Rate When No Cooling or Heating is Needed of '// &
TRIM(RoundSigDigits(MaxNoCoolHeatAirVolFlowUser,5))// ' [m3/s]')
CALL ShowContinueError('differs from Design Size Supply Air Flow Rate When No Cooling or Heating is Needed of ' // &
TRIM(RoundSigDigits(MaxNoCoolHeatAirVolFlowDes,5))// ' [m3/s]')
CALL ShowContinueError('This may, or may not, indicate mismatched component sizes.')
CALL ShowContinueError('Verify that the value entered is intended and is consistent with other components.')
END IF
ENDIF
END IF
END IF
END IF
END IF
IsAutosize = .FALSE.
IF (PTUnit(PTUnitNum)%CoolOutAirVolFlow == AutoSize) THEN
IsAutosize = .TRUE.
END IF
IF (CurZoneEqNum > 0) THEN
CALL CheckThisZoneForSizing(CurZoneEqNum, SizingDesRunThisZone)
IF (.NOT. IsAutosize .AND. .NOT. SizingDesRunThisZone) THEN ! Simulation continue
IF (PTUnit(PTUnitNum)%CoolOutAirVolFlow > 0.0d0) THEN
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'User-Specified Outdoor Air Flow Rate During Cooling Operation [m3/s]', &
PTUnit(PTUnitNum)%CoolOutAirVolFlow)
END IF
ELSE
CALL CheckZoneSizing(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name)
CoolOutAirVolFlowDes = MIN(FinalZoneSizing(CurZoneEqNum)%MinOA,PTUnit(PTUnitNum)%MaxCoolAirVolFlow)
IF (CoolOutAirVolFlowDes < SmallAirVolFlow) THEN
CoolOutAirVolFlowDes = 0.0d0
END IF
IF (IsAutosize) THEN
PTUnit(PTUnitNum)%CoolOutAirVolFlow = CoolOutAirVolFlowDes
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'Design Size Outdoor Air Flow Rate During Cooling Operation [m3/s]', &
CoolOutAirVolFlowDes)
ELSE
IF (PTUnit(PTUnitNum)%CoolOutAirVolFlow > 0.0d0 .AND. CoolOutAirVolFlowDes > 0.0d0 .AND. SizingDesRunThisZone) THEN
CoolOutAirVolFlowUser = PTUnit(PTUnitNum)%CoolOutAirVolFlow
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'Design Size Outdoor Air Flow Rate During Cooling Operation [m3/s]', &
CoolOutAirVolFlowDes, &
'User-Specified Outdoor Air Flow Rate During Cooling Operation [m3/s]', &
CoolOutAirVolFlowUser)
IF (DisplayExtraWarnings) THEN
IF ((ABS(CoolOutAirVolFlowDes - CoolOutAirVolFlowUser)/CoolOutAirVolFlowUser) > AutoVsHardSizingThreshold) THEN
CALL ShowMessage('SizePTUnit: Potential issue with equipment sizing for ' &
//TRIM(PTUnit(PTUnitNum)%UnitType)//' '//TRIM(PTUnit(PTUnitNum)%Name))
CALL ShowContinueError('User-Specified Outdoor Air Flow Rate During Cooling Operation of '// &
TRIM(RoundSigDigits(CoolOutAirVolFlowUser,5))// ' [m3/s]')
CALL ShowContinueError('differs from Design Size Outdoor Air Flow Rate During Cooling Operation of ' // &
TRIM(RoundSigDigits(CoolOutAirVolFlowDes,5))// ' [m3/s]')
CALL ShowContinueError('This may, or may not, indicate mismatched component sizes.')
CALL ShowContinueError('Verify that the value entered is intended and is consistent with other components.')
END IF
ENDIF
END IF
END IF
END IF
END IF
IsAutosize = .FALSE.
IF (PTUnit(PTUnitNum)%HeatOutAirVolFlow == AutoSize) THEN
IsAutosize = .TRUE.
END IF
IF (CurZoneEqNum > 0) THEN
CALL CheckThisZoneForSizing(CurZoneEqNum, SizingDesRunThisZone)
IF (.NOT. IsAutosize .AND. .NOT. SizingDesRunThisZone) THEN ! Simulation continue
IF (PTUnit(PTUnitNum)%HeatOutAirVolFlow > 0.0d0) THEN
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'User-Specified Supply Air Flow Rate During Heating Operation [m3/s]', &
PTUnit(PTUnitNum)%HeatOutAirVolFlow)
END IF
ELSE
CALL CheckZoneSizing(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name)
HeatOutAirVolFlowDes = MIN(FinalZoneSizing(CurZoneEqNum)%MinOA,PTUnit(PTUnitNum)%MaxHeatAirVolFlow)
IF (HeatOutAirVolFlowDes < SmallAirVolFlow) THEN
HeatOutAirVolFlowDes = 0.0d0
END IF
IF (IsAutosize) THEN
PTUnit(PTUnitNum)%HeatOutAirVolFlow = HeatOutAirVolFlowDes
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'Design Size Outdoor Air Flow Rate During Heating Operation [m3/s]', &
HeatOutAirVolFlowDes)
ELSE
IF (PTUnit(PTUnitNum)%HeatOutAirVolFlow > 0.0d0 .AND. HeatOutAirVolFlowDes > 0.0d0 .AND. SizingDesRunThisZone) THEN
HeatOutAirVolFlowUser = PTUnit(PTUnitNum)%HeatOutAirVolFlow
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'Design Size Outdoor Air Flow Rate During Heating Operation [m3/s]', &
HeatOutAirVolFlowDes, &
'User-Specified Outdoor Air Flow Rate During Heating Operation [m3/s]', &
HeatOutAirVolFlowUser)
IF (DisplayExtraWarnings) THEN
IF ((ABS(HeatOutAirVolFlowDes - HeatOutAirVolFlowUser)/HeatOutAirVolFlowUser) > AutoVsHardSizingThreshold) THEN
CALL ShowMessage('SizePTUnit: Potential issue with equipment sizing for ' &
//TRIM(PTUnit(PTUnitNum)%UnitType)//' '//TRIM(PTUnit(PTUnitNum)%Name))
CALL ShowContinueError('User-Specified Outdoor Air Flow Rate During Heating Operation of '// &
TRIM(RoundSigDigits(HeatOutAirVolFlowUser,5))// ' [m3/s]')
CALL ShowContinueError('differs from Design Size Outdoor Air Flow Rate During Heating Operation of ' // &
TRIM(RoundSigDigits(HeatOutAirVolFlowDes,5))// ' [m3/s]')
CALL ShowContinueError('This may, or may not, indicate mismatched component sizes.')
CALL ShowContinueError('Verify that the value entered is intended and is consistent with other components.')
END IF
ENDIF
END IF
END IF
END IF
END IF
IsAutosize = .FALSE.
IF (PTUnit(PTUnitNum)%NoCoolHeatOutAirVolFlow == AutoSize) THEN
IsAutosize = .TRUE.
END IF
IF (CurZoneEqNum > 0) THEN
CALL CheckThisZoneForSizing(CurZoneEqNum, SizingDesRunThisZone)
IF (.NOT. IsAutosize .AND. .NOT. SizingDesRunThisZone) THEN ! Simulation continue
IF (PTUnit(PTUnitNum)%NoCoolHeatOutAirVolFlow > 0.0d0) THEN
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'User-Specified Outdoor Air Flow Rate When No Cooling or Heating is Needed [m3/s]', &
PTUnit(PTUnitNum)%NoCoolHeatOutAirVolFlow)
END IF
ELSE
CALL CheckZoneSizing(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name)
NoCoolHeatOutAirVolFlowDes = MIN(FinalZoneSizing(CurZoneEqNum)%MinOA,PTUnit(PTUnitNum)%MaxNoCoolHeatAirVolFlow)
IF (NoCoolHeatOutAirVolFlowDes < SmallAirVolFlow) THEN
NoCoolHeatOutAirVolFlowDes = 0.0d0
END IF
IF (IsAutosize) THEN
PTUnit(PTUnitNum)%NoCoolHeatOutAirVolFlow = NoCoolHeatOutAirVolFlowDes
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'Design Size Outdoor Air Flow Rate When No Cooling or Heating is Needed [m3/s]', &
NoCoolHeatOutAirVolFlowDes)
ELSE
IF (PTUnit(PTUnitNum)%NoCoolHeatOutAirVolFlow > 0.0d0 .AND. NoCoolHeatOutAirVolFlowDes > 0.0d0 &
.AND. SizingDesRunThisZone) THEN
NoCoolHeatOutAirVolFlowUser = PTUnit(PTUnitNum)%NoCoolHeatOutAirVolFlow
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'Design Size Outdoor Air Flow Rate When No Cooling or Heating is Needed [m3/s]', &
NoCoolHeatOutAirVolFlowDes, &
'User-Specified Outdoor Air Flow Rate When No Cooling or Heating is Needed [m3/s]', &
NoCoolHeatOutAirVolFlowUser)
IF (DisplayExtraWarnings) THEN
IF ((ABS(NoCoolHeatOutAirVolFlowDes - NoCoolHeatOutAirVolFlowUser)/NoCoolHeatOutAirVolFlowUser) &
> AutoVsHardSizingThreshold) THEN
CALL ShowMessage('SizePTUnit: Potential issue with equipment sizing for ' &
//TRIM(PTUnit(PTUnitNum)%UnitType)//' '//TRIM(PTUnit(PTUnitNum)%Name))
CALL ShowContinueError('User-Specified Outdoor Air Flow Rate When No Cooling or Heating is Needed of '// &
TRIM(RoundSigDigits(NoCoolHeatOutAirVolFlowUser,5))// ' [m3/s]')
CALL ShowContinueError('differs from Design Size Outdoor Air Flow Rate When No Cooling or Heating is Needed of '// &
TRIM(RoundSigDigits(NoCoolHeatOutAirVolFlowDes,5))// ' [m3/s]')
CALL ShowContinueError('This may, or may not, indicate mismatched component sizes.')
CALL ShowContinueError('Verify that the value entered is intended and is consistent with other components.')
END IF
ENDIF
END IF
END IF
END IF
END IF
IsAutosize = .FALSE.
IF (PTUnit(PTUnitNum)%MaxSATSupHeat == AutoSize) THEN
IsAutosize = .TRUE.
END IF
IF (CurZoneEqNum > 0) THEN
CALL CheckThisZoneForSizing(CurZoneEqNum, SizingDesRunThisZone)
IF (.NOT. IsAutosize .AND. .NOT. SizingDesRunThisZone) THEN ! Simulation continue
IF (PTUnit(PTUnitNum)%MaxSATSupHeat > 0.0d0) THEN
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'User-Specified Maximum Supply Air Temperature from Supplemental Heater [C]', &
PTUnit(PTUnitNum)%MaxSATSupHeat)
END IF
ELSE
CALL CheckZoneSizing(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name)
MaxSATSupHeatDes = FinalZoneSizing(CurZoneEqNum)%HeatDesTemp
IF (IsAutosize) THEN
PTUnit(PTUnitNum)%MaxSATSupHeat = MaxSATSupHeatDes
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'Design Size Maximum Supply Air Temperature from Supplemental Heater [C]', &
MaxSATSupHeatDes)
ELSE
IF (PTUnit(PTUnitNum)%MaxSATSupHeat > 0.0d0 .AND. MaxSATSupHeatDes > 0.0d0 &
.AND. SizingDesRunThisZone) THEN
MaxSATSupHeatUser = PTUnit(PTUnitNum)%MaxSATSupHeat
CALL ReportSizingOutput(PTUnit(PTUnitNum)%UnitType, PTUnit(PTUnitNum)%Name, &
'Design Size Maximum Supply Air Temperature from Supplemental Heater [C]', &
MaxSATSupHeatDes, &
'User-Specified Maximum Supply Air Temperature from Supplemental Heater [C]', &
MaxSATSupHeatUser)
IF (DisplayExtraWarnings) THEN
IF (ABS(MaxSATSupHeatDes - MaxSATSupHeatUser) > (4.0d0*AutoVsHardSizingDeltaTempThreshold)) THEN
CALL ShowMessage('SizePTUnit: Potential issue with equipment sizing for ' &
//TRIM(PTUnit(PTUnitNum)%UnitType)//' '//TRIM(PTUnit(PTUnitNum)%Name))
CALL ShowContinueError('User-Specified Maximum Supply Air Temperature from Supplemental Heater of '// &
TRIM(RoundSigDigits(MaxSATSupHeatUser,2))// ' [C]')
CALL ShowContinueError('differs from Design Size Maximum Supply Air Temperature from Supplemental Heater of ' // &
TRIM(RoundSigDigits(MaxSATSupHeatDes,2))// ' [C]')
CALL ShowContinueError('This may, or may not, indicate mismatched component sizes.')
CALL ShowContinueError('Verify that the value entered is intended and is consistent with other components.')
END IF
ENDIF
END IF
END IF
END IF
END IF
CALL SetCoilDesFlow(PTUnit(PTUnitNum)%ACHeatCoilType,PTUnit(PTUnitNum)%ACHeatCoilName,PTUnit(PTUnitNum)%MaxHeatAirVolFlow,&
ErrorsFound)
IF (CurZoneEqNum > 0) THEN
ZoneEqSizing(CurZoneEqNum)%OAVolFlow = MAX(PTUnit(PTUnitNum)%CoolOutAirVolFlow,PTUnit(PTUnitNum)%HeatOutAirVolFlow)
ZoneEqSizing(CurZoneEqNum)%AirVolFlow = MAX(PTUnit(PTUnitNum)%MaxCoolAirVolFlow,PTUnit(PTUnitNum)%MaxHeatAirVolFlow)
END IF
IF (ErrorsFound) THEN
CALL ShowFatalError('Preceding sizing errors cause program termination')
END IF
RETURN
END SUBROUTINE SizePTUnit