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) | :: | StandAloneERVNum |
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 SizeStandAloneERV(StandAloneERVNum)
! SUBROUTINE INFORMATION:
! AUTHOR Richard Raustad
! DATE WRITTEN October 2007
! MODIFIED August 2013 Daeho Kang, add component sizing table entries
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine is for sizing Stand Alone ERV Components for which flow rates have not been
! specified in the input.
! METHODOLOGY EMPLOYED:
! Obtains flow rates from the zone or system sizing arrays.
! REFERENCES:
! na
! USE STATEMENTS:
USE DataSizing, ONLY: AutoSize, CurZoneEqNum, FinalZoneSizing, AutoVsHardSizingThreshold
USE DataHeatBalance, ONLY: Zone, People, TotPeople
USE DataZoneEquipment, ONLY: ZoneEquipConfig
USE InputProcessor, ONLY: SameString
USE ScheduleManager, ONLY: GetScheduleMaxValue
USE HeatRecovery, ONLY: SetHeatExchangerData
USE Fans, ONLY: SetFanData
USE MixedAir, ONLY: SetOAControllerData
USE ReportSizingManager, ONLY: ReportSizingOutput
USE General, ONLY: RoundSigDigits
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER, INTENT(IN) :: StandAloneERVNum
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: ZoneNum ! Index to zone object
INTEGER :: ActualZoneNum ! Actual zone node number
CHARACTER(len=MaxNameLength) :: ZoneName ! Name of zone
INTEGER :: PeopleNum ! Index to people object
REAL(r64) :: NumberOfPeople ! Maximum number of people in zone
INTEGER :: PeopleSchPtr ! Pointer to people schedule
REAL(r64) :: MaxPeopleSch ! maximum people schedule value
REAL(r64) :: FloorArea ! Floor area of zone (m2)
LOGICAL :: ErrorsFound ! Used for warning messages
LOGICAL :: IsAutosize ! Indicator to autosize
REAL(r64) :: SupplyAirVolFlowDes ! Autosized supply air flow for reporting
REAL(r64) :: SupplyAirVolFlowUser ! Hardsized supply air flow for reporting
REAL(r64) :: DesignSAFanVolFlowRateDes ! Autosized supply air fan flow for reporting
REAL(r64) :: DesignSAFanVolFlowRateUser ! Hardsized supply air fan flow for reporting
REAL(r64) :: ExhaustAirVolFlowDes ! Autosized exhaust air flow for reporting
REAL(r64) :: ExhaustAirVolFlowUser ! Hardsized exhaust air flow for reporting
REAL(r64) :: DesignEAFanVolFlowRateDes ! Autosized exhaust fan flow for reporting
REAL(r64) :: DesignEAFanVolFlowRateUser ! Hardsized exhaust fan flow for reporting
IsAutosize = .FALSE.
SupplyAirVolFlowDes = 0.0d0
SupplyAirVolFlowUser = 0.0d0
DesignSAFanVolFlowRateDes = 0.0d0
DesignSAFanVolFlowRateUser = 0.0d0
ExhaustAirVolFlowDes = 0.0d0
ExhaustAirVolFlowUser = 0.0d0
DesignEAFanVolFlowRateDes = 0.0d0
DesignEAFanVolFlowRateUser = 0.0d0
IF (StandAloneERV(StandAloneERVNum)%SupplyAirVolFlow == AutoSize) THEN
IsAutosize = .TRUE.
END IF
IF (CurZoneEqNum > 0) THEN
! Sizing objects are not required for stand alone ERV
! CALL CheckZoneSizing('ZoneHVAC:EnergyRecoveryVentilator',StandAloneERV(StandAloneERVNum)%Name)
ZoneName = ZoneEquipConfig(CurZoneEqNum)%ZoneName
ActualZoneNum = ZoneEquipConfig(CurZoneEqNum)%ActualZoneNum
FloorArea = 0.0d0
IF(SameString(ZoneName,Zone(CurZoneEqNum)%Name))THEN
FloorArea = Zone(CurZoneEqNum)%FloorArea
ELSE
DO ZoneNum = 1, NumOfZones
IF(.NOT. SameString(ZoneName,Zone(CurZoneEqNum)%Name))CYCLE
FloorArea = Zone(ZoneNum)%FloorArea
EXIT
END DO
END IF
NumberOfPeople = 0.0d0
MaxPeopleSch = 0.0d0
DO PeopleNum = 1, TotPeople
IF(ActualZoneNum .NE. People(PeopleNum)%ZonePtr)CYCLE
NumberOfPeople = People(PeopleNum)%NumberOfPeople
PeopleSchPtr = People(PeopleNum)%NumberOfPeoplePtr
MaxPeopleSch = GetScheduleMaxValue(PeopleSchPtr)
EXIT
END DO
SupplyAirVolFlowDes = &
FloorArea * StandAloneERV(StandAloneERVNum)%AirVolFlowPerFloorArea + &
MaxPeopleSch * NumberOfPeople * StandAloneERV(StandAloneERVNum)%AirVolFlowPerOccupant
IF (SupplyAirVolFlowDes < SmallAirVolFlow) THEN
SupplyAirVolFlowDes = 0.0d0
END IF
IF (IsAutosize) THEN
StandAloneERV(StandAloneERVNum)%SupplyAirVolFlow = SupplyAirVolFlowDes
CALL ReportSizingOutput('ZoneHVAC:EnergyRecoveryVentilator',StandAloneERV(StandAloneERVNum)%Name, &
'Design Size Supply Air Flow Rate [m3/s]',SupplyAirVolFlowDes)
CALL SetHeatExchangerData(StandAloneERV(StandAloneERVNum)%HeatExchangerIndex,ErrorsFound, &
StandAloneERV(StandAloneERVNum)%HeatExchangerName, &
SupplyAirVolFlowDes)
CALL ReportSizingOutput(cHXTypes(StandAloneERV(StandAloneERVNum)%HeatExchangerTypeNum), &
StandAloneERV(StandAloneERVNum)%HeatExchangerName, &
'Design Size Supply Air Flow Rate [m3/s]',SupplyAirVolFlowDes)
CALL SetFanData(StandAloneERV(StandAloneERVNum)%SupplyAirFanIndex, ErrorsFound, &
StandAloneERV(StandAloneERVNum)%SupplyAirFanName, &
StandAloneERV(StandAloneERVNum)%SupplyAirVolFlow* &
StandAloneERV(StandAloneERVNum)%HighRHOAFlowRatio, &
0.0d0)
StandAloneERV(StandAloneERVNum)%DesignSAFanVolFlowRate = SupplyAirVolFlowDes * &
StandAloneERV(StandAloneERVNum)%HighRHOAFlowRatio
CALL ReportSizingOutput(TRIM(cFanTypes(StandAloneERV(StandAloneERVNum)%SupplyAirFanType_Num)), &
StandAloneERV(StandAloneERVNum)%SupplyAirFanName, &
'Design Size Maximum Supply Air Flow Rate [m3/s]', SupplyAirVolFlowDes * &
StandAloneERV(StandAloneERVNum)%HighRHOAFlowRatio)
! ERV fan type must be Fan:OnOff, min flow rate is assumed 0. Do not report min flow sizing.
! CALL ReportSizingOutput(TRIM(cFanTypes(StandAloneERV(StandAloneERVNum)%SupplyAirFanType_Num)), &
! StandAloneERV(StandAloneERVNum)%SupplyAirFanName, &
! 'Min Flow Rate [m3/s]', 0.0)
IF(StandAloneERV(StandAloneERVNum)%ControllerNameDefined)THEN
CALL SetOAControllerData(StandAloneERV(StandAloneERVNum)%ControllerIndex,ErrorsFound, &
MaxOA=SupplyAirVolFlowDes * StandAloneERV(StandAloneERVNum)%HighRHOAFlowRatio)
! MaxOA is not an input for CONTROLLER:STAND ALONE ERV, do not report sizing
! CALL ReportSizingOutput('ZoneHVAC:EnergyRecoveryVentilator:Controller',StandAloneERV(StandAloneERVNum)%ControllerName,&
! 'maximum outside air flow rate [m3/s]',StandAloneERV(StandAloneERVNum)%SupplyAirVolFlow)
CALL SetOAControllerData(StandAloneERV(StandAloneERVNum)%ControllerIndex,ErrorsFound, MinOA=SupplyAirVolFlowDes)
! MinOA is not an input for CONTROLLER:STAND ALONE ERV, do not report sizing
! CALL ReportSizingOutput('ZoneHVAC:EnergyRecoveryVentilator:Controller',StandAloneERV(StandAloneERVNum)%ControllerName,&
! 'minimum outside air flow rate [m3/s]',StandAloneERV(StandAloneERVNum)%SupplyAirVolFlow)
END IF
ELSE
IF (StandAloneERV(StandAloneERVNum)%SupplyAirVolFlow > 0.0d0 .AND. SupplyAirVolFlowDes > 0.0d0) THEN
SupplyAirVolFlowUser = StandAloneERV(StandAloneERVNum)%SupplyAirVolFlow
IF (StandAloneERV(StandAloneERVNum)%SupplyAirVolFlow > 0.0d0) THEN
CALL ReportSizingOutput('ZoneHVAC:EnergyRecoveryVentilator',StandAloneERV(StandAloneERVNum)%Name, &
'Design Size Supply Air Flow Rate [m3/s]',SupplyAirVolFlowDes, &
'User-Specified Supply Air Flow Rate [m3/s]',SupplyAirVolFlowUser)
IF (DisplayExtraWarnings) THEN
IF ((ABS(SupplyAirVolFlowDes - SupplyAirVolFlowUser)/SupplyAirVolFlowUser) > AutoVsHardSizingThreshold) THEN
CALL ShowMessage('SizeStandAloneERV: Potential issue with equipment sizing for ZoneHVAC:EnergyRecoveryVentilator =' &
//TRIM(StandAloneERV(StandAloneERVNum)%Name))
CALL ShowContinueError('User-Specified Supply Air Flow Rate of '// &
TRIM(RoundSigDigits(SupplyAirVolFlowUser,5))// ' [m3/s]')
CALL ShowContinueError('differs from Design Size Supply Air Flow Rate of ' // &
TRIM(RoundSigDigits(SupplyAirVolFlowDes,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
CALL ReportSizingOutput(cHXTypes(StandAloneERV(StandAloneERVNum)%HeatExchangerTypeNum), &
StandAloneERV(StandAloneERVNum)%HeatExchangerName, &
'Design Size Supply Air Flow Rate [m3/s]',SupplyAirVolFlowDes, &
'User-Specified Supply Air Flow Rate [m3/s]',SupplyAirVolFlowUser)
IF (DisplayExtraWarnings) THEN
IF ((ABS(SupplyAirVolFlowDes - SupplyAirVolFlowUser)/SupplyAirVolFlowUser) > AutoVsHardSizingThreshold) THEN
CALL ShowMessage('SizeStandAloneERV: Potential issue with equipment sizing for ZoneHVAC:EnergyRecoveryVentilator ' &
// TRIM(cHXTypes(StandAloneERV(StandAloneERVNum)%HeatExchangerTypeNum))//' '// &
TRIM(StandAloneERV(StandAloneERVNum)%HeatExchangerName))
CALL ShowContinueError('User-Specified Supply Air Flow Rate of '// &
TRIM(RoundSigDigits(SupplyAirVolFlowUser,5))// ' [m3/s]')
CALL ShowContinueError('differs from Design Size Supply Air Flow Rate of ' // &
TRIM(RoundSigDigits(SupplyAirVolFlowDes,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
CALL ReportSizingOutput(TRIM(cFanTypes(StandAloneERV(StandAloneERVNum)%SupplyAirFanType_Num)), &
StandAloneERV(StandAloneERVNum)%SupplyAirFanName, &
'Design Size Maximum Supply Air Flow Rate [m3/s]', SupplyAirVolFlowDes * &
StandAloneERV(StandAloneERVNum)%HighRHOAFlowRatio, &
'User-Specified Maximum Supply Air Flow Rate [m3/s]', SupplyAirVolFlowUser)
IF (DisplayExtraWarnings) THEN
IF ((ABS(SupplyAirVolFlowDes - SupplyAirVolFlowUser)/SupplyAirVolFlowUser) > AutoVsHardSizingThreshold) THEN
CALL ShowMessage('SizeStandAloneERV: Potential issue with equipment sizing for ZoneHVAC:EnergyRecoveryVentilator ' &
// TRIM(cFanTypes(StandAloneERV(StandAloneERVNum)%SupplyAirFanType_Num))//' '// &
TRIM(StandAloneERV(StandAloneERVNum)%SupplyAirFanName))
CALL ShowContinueError('User-Specified Maximum Supply Air Flow Rate of '// &
TRIM(RoundSigDigits(SupplyAirVolFlowUser,5))// ' [m3/s]')
CALL ShowContinueError('differs from Design Size Maximum Supply Air Flow Rate of ' // &
TRIM(RoundSigDigits(SupplyAirVolFlowDes,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 (StandAloneERV(StandAloneERVNum)%DesignSAFanVolFlowRate == AutoSize) THEN
IsAutosize = .TRUE.
END IF
CALL SetFanData(StandAloneERV(StandAloneERVNum)%SupplyAirFanIndex, ErrorsFound, &
StandAloneERV(StandAloneERVNum)%SupplyAirFanName, &
StandAloneERV(StandAloneERVNum)%SupplyAirVolFlow* &
StandAloneERV(StandAloneERVNum)%HighRHOAFlowRatio, &
0.0d0)
DesignSAFanVolFlowRateDes = StandAloneERV(StandAloneERVNum)%SupplyAirVolFlow * &
StandAloneERV(StandAloneERVNum)%HighRHOAFlowRatio
IF (IsAutosize) THEN
StandAloneERV(StandAloneERVNum)%DesignSAFanVolFlowRate = DesignSAFanVolFlowRateDes
CALL ReportSizingOutput(cFanTypes(StandAloneERV(StandAloneERVNum)%SupplyAirFanType_Num), &
StandAloneERV(StandAloneERVNum)%SupplyAirFanName, &
'Design Size Maximum Supply Air Flow Rate [m3/s]', DesignSAFanVolFlowRateDes)
ELSE
IF (StandAloneERV(StandAloneERVNum)%DesignSAFanVolFlowRate > 0.0d0 .AND. DesignSAFanVolFlowRateDes > 0.0d0) THEN
DesignSAFanVolFlowRateUser = StandAloneERV(StandAloneERVNum)%DesignSAFanVolFlowRate
CALL ReportSizingOutput(cFanTypes(StandAloneERV(StandAloneERVNum)%SupplyAirFanType_Num), &
StandAloneERV(StandAloneERVNum)%SupplyAirFanName, &
'Design Size Maximum Supply Air Flow Rate [m3/s]', DesignSAFanVolFlowRateDes, &
'User-Specified Maximum Supply Air Flow Rate [m3/s]', DesignSAFanVolFlowRateUser)
IF (DisplayExtraWarnings) THEN
IF ((ABS(DesignSAFanVolFlowRateDes - DesignSAFanVolFlowRateUser)/DesignSAFanVolFlowRateUser) &
> AutoVsHardSizingThreshold) THEN
CALL ShowMessage('SizeStandAloneERV: Potential issue with equipment sizing for ZoneHVAC:EnergyRecoveryVentilator '// &
TRIM(cFanTypes(StandAloneERV(StandAloneERVNum)%SupplyAirFanType_Num))//' '// &
TRIM(StandAloneERV(StandAloneERVNum)%SupplyAirFanName))
CALL ShowContinueError('User-Specified Maximum Supply Air Flow Rate of '// &
TRIM(RoundSigDigits(DesignSAFanVolFlowRateUser,5))//' [m3/s]')
CALL ShowContinueError('differs from Design Size Maximum Supply Air Flow Rate of ' // &
TRIM(RoundSigDigits(DesignSAFanVolFlowRateDes,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
IsAutosize = .FALSE.
IF (StandAloneERV(StandAloneERVNum)%ExhaustAirVolFlow == AutoSize) THEN
IsAutosize = .TRUE.
END IF
IF (CurZoneEqNum > 0) THEN
! Sizing objects are not required for stand alone ERV
! CALL CheckZoneSizing('ZoneHVAC:EnergyRecoveryVentilator',StandAloneERV(StandAloneERVNum)%Name)
ZoneName = ZoneEquipConfig(CurZoneEqNum)%ZoneName
ActualZoneNum = ZoneEquipConfig(CurZoneEqNum)%ActualZoneNum
FloorArea = 0.0d0
IF(SameString(ZoneName,Zone(CurZoneEqNum)%Name))THEN
FloorArea = Zone(CurZoneEqNum)%FloorArea
ELSE
DO ZoneNum = 1, NumOfZones
IF(.NOT. SameString(ZoneName,Zone(CurZoneEqNum)%Name))CYCLE
FloorArea = Zone(ZoneNum)%FloorArea
EXIT
END DO
END IF
NumberOfPeople = 0.0d0
MaxPeopleSch = 0.0d0
DO PeopleNum = 1, TotPeople
IF(ActualZoneNum .NE. People(PeopleNum)%ZonePtr)CYCLE
NumberOfPeople = People(PeopleNum)%NumberOfPeople
PeopleSchPtr = People(PeopleNum)%NumberOfPeoplePtr
MaxPeopleSch = GetScheduleMaxValue(PeopleSchPtr)
EXIT
END DO
ExhaustAirVolFlowDes = &
FloorArea * StandAloneERV(StandAloneERVNum)%AirVolFlowPerFloorArea + &
MaxPeopleSch * NumberOfPeople * StandAloneERV(StandAloneERVNum)%AirVolFlowPerOccupant
IF (ExhaustAirVolFlowDes < SmallAirVolFlow) THEN
ExhaustAirVolFlowDes = 0.0d0
END IF
IF (ExhaustAirVolFlowDes > StandAloneERV(StandAloneERVNum)%SupplyAirVolFlow) THEN
ExhaustAirVolFlowDes = StandAloneERV(StandAloneERVNum)%SupplyAirVolFlow
END IF
IF (IsAutosize) THEN
StandAloneERV(StandAloneERVNum)%ExhaustAirVolFlow = ExhaustAirVolFlowDes
StandAloneERV(StandAloneERVNum)%DesignEAFanVolFlowRate = ExhaustAirVolFlowDes * &
StandAloneERV(StandAloneERVNum)%HighRHOAFlowRatio
CALL ReportSizingOutput('ZoneHVAC:EnergyRecoveryVentilator',StandAloneERV(StandAloneERVNum)%Name, &
'Design Size Exhaust Air Flow Rate [m3/s]',ExhaustAirVolFlowDes)
CALL SetHeatExchangerData(StandAloneERV(StandAloneERVNum)%HeatExchangerIndex,ErrorsFound, &
StandAloneERV(StandAloneERVNum)%HeatExchangerName, &
SecondaryAirVolFlow=ExhaustAirVolFlowDes)
CALL ReportSizingOutput(cHXTypes(StandAloneERV(StandAloneERVNum)%HeatExchangerTypeNum), &
StandAloneERV(StandAloneERVNum)%HeatExchangerName, &
'Design Size Exhaust Air Flow Rate [m3/s]',ExhaustAirVolFlowDes)
CALL SetFanData(StandAloneERV(StandAloneERVNum)%ExhaustAirFanIndex, ErrorsFound, &
StandAloneERV(StandAloneERVNum)%ExhaustAirFanName, &
StandAloneERV(StandAloneERVNum)%ExhaustAirVolFlow* &
StandAloneERV(StandAloneERVNum)%HighRHOAFlowRatio, &
0.0d0)
CALL ReportSizingOutput(TRIM(cFanTypes(StandAloneERV(StandAloneERVNum)%ExhaustAirFanType_Num)), &
StandAloneERV(StandAloneERVNum)%ExhaustAirFanName, &
'Design Size Maximum Exhaust Air Flow Rate [m3/s]', ExhaustAirVolFlowDes* &
StandAloneERV(StandAloneERVNum)%HighRHOAFlowRatio)
! ERV fan type must be Fan:OnOff, min flow rate is assumed 0. Do not report min flow sizing.
! CALL ReportSizingOutput(TRIM(cFanTypes(StandAloneERV(StandAloneERVNum)%ExhaustAirFanType_Num)), &
! StandAloneERV(StandAloneERVNum)%ExhaustAirFanName, &
! 'Min Flow Rate [m3/s]', 0.0)
ELSE
IF (StandAloneERV(StandAloneERVNum)%ExhaustAirVolFlow > 0.0d0 .AND. ExhaustAirVolFlowDes > 0.0d0) THEN
ExhaustAirVolFlowUser = StandAloneERV(StandAloneERVNum)%ExhaustAirVolFlow
CALL ReportSizingOutput('ZoneHVAC:EnergyRecoveryVentilator',StandAloneERV(StandAloneERVNum)%Name, &
'Design Size Exhaust Air Flow Rate [m3/s]',ExhaustAirVolFlowDes, &
'User-Specified Exhaust Air Flow Rate [m3/s]',ExhaustAirVolFlowUser)
IF (DisplayExtraWarnings) THEN
IF ((ABS(ExhaustAirVolFlowDes - ExhaustAirVolFlowUser)/ExhaustAirVolFlowUser) > AutoVsHardSizingThreshold) THEN
CALL ShowMessage('SizeStandAloneERV: Potential issue with equipment sizing for ZoneHVAC:EnergyRecoveryVentilator ' &
//TRIM(StandAloneERV(StandAloneERVNum)%Name))
CALL ShowContinueError('User-Specified Exhaust Air Flow Rate of '// &
TRIM(RoundSigDigits(ExhaustAirVolFlowUser,5))// ' [m3/s]')
CALL ShowContinueError('differs from Design Size Exhaust Air Flow Rate of ' // &
TRIM(RoundSigDigits(ExhaustAirVolFlowDes,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
CALL ReportSizingOutput(cHXTypes(StandAloneERV(StandAloneERVNum)%HeatExchangerTypeNum), &
StandAloneERV(StandAloneERVNum)%HeatExchangerName, &
'Design Size Exhaust Air Flow Rate [m3/s]',ExhaustAirVolFlowDes, &
'User-Specified Exhaust Air Flow Rate [m3/s]',ExhaustAirVolFlowUser)
IF (DisplayExtraWarnings) THEN
IF ((ABS(ExhaustAirVolFlowDes - ExhaustAirVolFlowUser)/ExhaustAirVolFlowUser) > AutoVsHardSizingThreshold) THEN
CALL ShowMessage('SizeStandAloneERV: Potential issue with equipment sizing for ZoneHVAC:EnergyRecoveryVentilator '// &
TRIM(cHXTypes(StandAloneERV(StandAloneERVNum)%HeatExchangerTypeNum))//' '// &
TRIM(StandAloneERV(StandAloneERVNum)%HeatExchangerName))
CALL ShowContinueError('User-Specified Exhaust Air Flow Rate of '// &
TRIM(RoundSigDigits(ExhaustAirVolFlowUser,5))// ' [m3/s]')
CALL ShowContinueError('differs from Design Size Exhaust Air Flow Rate of ' // &
TRIM(RoundSigDigits(ExhaustAirVolFlowDes,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
CALL ReportSizingOutput(cFanTypes(StandAloneERV(StandAloneERVNum)%ExhaustAirFanType_Num), &
StandAloneERV(StandAloneERVNum)%ExhaustAirFanName, &
'Design Size Maximum Exhaust Air Flow Rate [m3/s]', ExhaustAirVolFlowDes* &
StandAloneERV(StandAloneERVNum)%HighRHOAFlowRatio, &
'User-Specified Maximum Exhaust Air Flow Rate [m3/s]', ExhaustAirVolFlowUser)
IF (DisplayExtraWarnings) THEN
IF ((ABS(ExhaustAirVolFlowDes - ExhaustAirVolFlowUser)/ExhaustAirVolFlowUser) > AutoVsHardSizingThreshold) THEN
CALL ShowMessage('SizeStandAloneERV: Potential issue with equipment sizing for ZoneHVAC:EnergyRecoveryVentilator '// &
TRIM(cFanTypes(StandAloneERV(StandAloneERVNum)%SupplyAirFanType_Num))//' '// &
TRIM(StandAloneERV(StandAloneERVNum)%ExhaustAirFanName))
CALL ShowContinueError('User-Specified Maximum Exhaust Air Flow Rate of '// &
TRIM(RoundSigDigits(ExhaustAirVolFlowUser,5))// ' [m3/s]')
CALL ShowContinueError('differs from Design Size Maximum Exhaust Air Flow Rate of ' // &
TRIM(RoundSigDigits(ExhaustAirVolFlowDes,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
IsAutosize = .FALSE.
IF (StandAloneERV(StandAloneERVNum)%DesignEAFanVolFlowRate == AutoSize) THEN
IsAutosize = .TRUE.
END IF
CALL SetFanData(StandAloneERV(StandAloneERVNum)%ExhaustAirFanIndex, ErrorsFound, &
StandAloneERV(StandAloneERVNum)%ExhaustAirFanName, &
StandAloneERV(StandAloneERVNum)%ExhaustAirVolFlow* &
StandAloneERV(StandAloneERVNum)%HighRHOAFlowRatio, &
0.0d0)
DesignEAFanVolFlowRateDes = StandAloneERV(StandAloneERVNum)%ExhaustAirVolFlow* &
StandAloneERV(StandAloneERVNum)%HighRHOAFlowRatio
IF (IsAutosize) THEN
StandAloneERV(StandAloneERVNum)%DesignEAFanVolFlowRate = DesignEAFanVolFlowRateDes
CALL ReportSizingOutput(TRIM(cFanTypes(StandAloneERV(StandAloneERVNum)%ExhaustAirFanType_Num)), &
StandAloneERV(StandAloneERVNum)%ExhaustAirFanName, &
'Design Size Maximum Exhaust Air Flow Rate [m3/s]', DesignEAFanVolFlowRateDes)
ELSE
IF (StandAloneERV(StandAloneERVNum)%DesignEAFanVolFlowRate > 0.0d0 .AND. DesignEAFanVolFlowRateDes > 0.0d0) THEN
DesignEAFanVolFlowRateUser = StandAloneERV(StandAloneERVNum)%DesignEAFanVolFlowRate
CALL ReportSizingOutput(TRIM(cFanTypes(StandAloneERV(StandAloneERVNum)%ExhaustAirFanType_Num)), &
StandAloneERV(StandAloneERVNum)%ExhaustAirFanName, &
'Design Size Maximum Exhaust Air Flow Rate [m3/s]', DesignEAFanVolFlowRateDes, &
'User-Specified Maximum Exhaust Air Flow Rate [m3/s]', DesignEAFanVolFlowRateUser)
IF (DisplayExtraWarnings) THEN
IF ((ABS(DesignEAFanVolFlowRateDes - DesignEAFanVolFlowRateUser)/DesignEAFanVolFlowRateUser) &
> AutoVsHardSizingThreshold) THEN
CALL ShowMessage('SizeStandAloneERV: Potential issue with equipment sizing for ZoneHVAC:EnergyRecoveryVentilator '// &
TRIM(cFanTypes(StandAloneERV(StandAloneERVNum)%SupplyAirFanType_Num))//' '// &
TRIM(StandAloneERV(StandAloneERVNum)%SupplyAirFanName))
CALL ShowContinueError('User-Specified Maximum Exhaust Air Flow Rate of '// &
TRIM(RoundSigDigits(DesignEAFanVolFlowRateUser,5))// ' [m3/s]')
CALL ShowContinueError('differs from Design Size Maximum Exhaust Air Flow Rate of ' // &
TRIM(RoundSigDigits(DesignEAFanVolFlowRateDes,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
RETURN
END SUBROUTINE SizeStandAloneERV