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.
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 GetInputZoneEvaporativeCoolerUnit
! SUBROUTINE INFORMATION:
! AUTHOR B. Griffith
! DATE WRITTEN July 2013
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! get input for zone evap cooler unit
! METHODOLOGY EMPLOYED:
! <description>
! REFERENCES:
! na
! USE STATEMENTS:
USE Fans, ONLY: GetFanType, GetFanIndex, GetFanVolFlow, GetFanInletNode, GetFanOutletNode, GetFanAvailSchPtr
USE General, ONLY: TrimSigDigits
USE InputProcessor, ONLY: GetNumObjectsFound, GetObjectDefMaxArgs, GetObjectItem, &
FindItemInList, VerifyName
USE NodeInputManager, ONLY: GetOnlySingleNode
USE DataHVACGlobals, ONLY: ZoneComp, FanType_SimpleConstVolume, FanType_SimpleOnOff
USE DataZoneEquipment, ONLY: ZoneEvaporativeCoolerUnit_Num
USE BranchNodeConnections, ONLY: SetUpCompSets
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
! na
! SUBROUTINE PARAMETER DEFINITIONS:
CHARACTER(len=*), PARAMETER :: RoutineName='GetInputZoneEvaporativeCoolerUnit: '
! INTERFACE BLOCK SPECIFICATIONS:
! na
! DERIVED TYPE DEFINITIONS:
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
CHARACTER(len=MaxNameLength) :: CurrentModuleObject ! Object type for getting and error messages
CHARACTER(len=MaxNameLength), &
ALLOCATABLE, DIMENSION(:) :: Alphas ! Alpha items for object
REAL(r64), ALLOCATABLE, DIMENSION(:) :: Numbers ! Numeric items for object
CHARACTER(len=MaxNameLength), ALLOCATABLE, DIMENSION(:) :: cAlphaFields ! Alpha field names
CHARACTER(len=MaxNameLength), ALLOCATABLE, DIMENSION(:) :: cNumericFields ! Numeric field names
LOGICAL, ALLOCATABLE, DIMENSION(:) :: lAlphaBlanks ! Logical array, alpha field input BLANK = .true.
LOGICAL, ALLOCATABLE, DIMENSION(:) :: lNumericBlanks ! Logical array, numeric field input BLANK = .true.
INTEGER :: NumAlphas ! Number of Alphas for each GetObjectItem call
INTEGER :: NumNumbers ! Number of Numbers for each GetObjectItem call
INTEGER :: MaxAlphas ! Maximum number of alpha fields in all objects
INTEGER :: MaxNumbers ! Maximum number of numeric fields in all objects
INTEGER :: NumFields ! Total number of fields in object
INTEGER :: IOStatus ! Used in GetObjectItem
LOGICAL :: ErrorsFound=.FALSE. ! Set to true if errors in input, fatal at end of routine
LOGICAL :: IsNotOK ! Flag to verify name
LOGICAL :: IsBlank ! Flag for blank name
LOGICAL :: ErrFlag
REAL(r64) :: FanVolFlow
INTEGER :: UnitLoop
IF (GetInputEvapComponentsFlag) THEN
CALL GetEvapInput
GetInputEvapComponentsFlag=.false.
End If
MaxNumbers = 0
MaxAlphas = 0
CurrentModuleObject = 'ZoneHVAC:EvaporativeCoolerUnit'
NumZoneEvapUnits = GetNumObjectsFound(CurrentModuleObject)
CALL GetObjectDefMaxArgs(CurrentModuleObject,NumFields,NumAlphas,NumNumbers)
MaxNumbers=MAX(MaxNumbers,NumNumbers)
MaxAlphas=MAX(MaxAlphas,NumAlphas)
ALLOCATE(Alphas(MaxAlphas))
Alphas=' '
ALLOCATE(Numbers(MaxNumbers))
Numbers=0.0d0
ALLOCATE(cAlphaFields(MaxAlphas))
cAlphaFields=' '
ALLOCATE(cNumericFields(MaxNumbers))
cNumericFields=' '
ALLOCATE(lAlphaBlanks(MaxAlphas))
lAlphaBlanks=.TRUE.
ALLOCATE(lNumericBlanks(MaxNumbers))
lNumericBlanks=.TRUE.
IF (NumZoneEvapUnits > 0) THEN
ALLOCATE (CheckZoneEvapUnitName(NumZoneEvapUnits))
CheckZoneEvapUnitName = .TRUE.
ALLOCATE (ZoneEvapUnit(NumZoneEvapUnits))
DO UnitLoop = 1, NumZoneEvapUnits
CALL GetObjectItem(CurrentModuleObject,UnitLoop,Alphas,NumAlphas,Numbers,NumNumbers,IOStatus, &
NumBlank=lNumericBlanks,AlphaBlank=lAlphaBlanks, &
AlphaFieldNames=cAlphaFields,NumericFieldNames=cNumericFields)
IsNotOK=.FALSE.
IsBlank=.FALSE.
CALL VerifyName(Alphas(1),ZoneEvapUnit%Name,UnitLoop-1,IsNotOK,IsBlank,TRIM(CurrentModuleObject)//' Name')
IF (IsNotOK) THEN
ErrorsFound=.TRUE.
IF (IsBlank) Alphas(1)='xxxxx'
ENDIF
ZoneEvapUnit(UnitLoop)%Name = Alphas(1)
IF (lAlphaBlanks(2)) THEN
ZoneEvapUnit(UnitLoop)%AvailSchedIndex = ScheduleAlwaysOn
ELSE
ZoneEvapUnit(UnitLoop)%AvailSchedIndex = GetScheduleIndex(Alphas(2)) ! convert schedule name to pointer (index number)
IF (ZoneEvapUnit(UnitLoop)%AvailSchedIndex .EQ. 0) THEN
CALL ShowSevereError(TRIM(CurrentModuleObject)//'="'//TRIM(ZoneEvapUnit(UnitLoop)%Name)//'" invalid data.')
CALL ShowContinueError('invalid-not found '//TRIM(cAlphaFields(2))//'="'//TRIM(Alphas(2))//'".')
ErrorsFound=.TRUE.
ENDIF
END IF
IF (.NOT. lAlphaBlanks(3)) THEN
ZoneEvapUnit(UnitLoop)%AvailManagerListName = Alphas(3)
ZoneComp(ZoneEvaporativeCoolerUnit_Num)%ZoneCompAvailMgrs(UnitLoop)%AvailManagerListName = Alphas(3)
ENDIF
ZoneEvapUnit(UnitLoop)%OAInletNodeNum = &
GetOnlySingleNode(Alphas(4),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
NodeType_Air,NodeConnectionType_OutsideAir,1,ObjectIsParent)
ZoneEvapUnit(UnitLoop)%UnitOutletNodeNum = &
GetOnlySingleNode(Alphas(5),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
NodeType_Air,NodeConnectionType_Outlet,1,ObjectIsParent)
IF (.NOT. lAlphaBlanks(6)) THEN
ZoneEvapUnit(UnitLoop)%UnitReliefNodeNum = &
GetOnlySingleNode(Alphas(6),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
NodeType_Air,NodeConnectionType_Inlet,1,ObjectIsParent)
ENDIF
ZoneEvapUnit(UnitLoop)%FanObjectClassName = Alphas(7)
ZoneEvapUnit(UnitLoop)%FanName = Alphas(8)
ErrFlag = .FALSE.
CALL GetFanType(ZoneEvapUnit(UnitLoop)%FanName,ZoneEvapUnit(UnitLoop)%FanType_Num,ErrFlag,&
CurrentModuleObject,ZoneEvapUnit(UnitLoop)%Name)
FanVolFlow = 0.d0
IF(ErrFlag)THEN
CALL ShowContinueError('specified in '//TRIM(CurrentModuleObject)//' = '//TRIM(ZoneEvapUnit(UnitLoop)%Name))
ErrorsFound = .TRUE.
ELSE
CALL GetFanIndex(ZoneEvapUnit(UnitLoop)%FanName,ZoneEvapUnit(UnitLoop)%FanIndex,ErrFlag,CurrentModuleObject)
ZoneEvapUnit(UnitLoop)%FanInletNodeNum = &
GetFanInletNode(ZoneEvapUnit(UnitLoop)%FanObjectClassName,ZoneEvapUnit(UnitLoop)%FanName,ErrFlag)
ZoneEvapUnit(UnitLoop)%FanOutletNodeNum = &
GetFanOutletNode(ZoneEvapUnit(UnitLoop)%FanObjectClassName,ZoneEvapUnit(UnitLoop)%FanName,ErrFlag)
CALL GetFanVolFlow(ZoneEvapUnit(UnitLoop)%FanIndex,FanVolFlow)
ZoneEvapUnit(UnitLoop)%ActualFanVolFlowRate = FanVolFlow
! Get the fan's availability schedule
ZoneEvapUnit(UnitLoop)%FanAvailSchedPtr = GetFanAvailSchPtr(ZoneEvapUnit(UnitLoop)%FanObjectClassName, &
ZoneEvapUnit(UnitLoop)%FanName,ErrFlag)
IF (ErrFlag) THEN
CALL ShowContinueError('...specified in '//TRIM(CurrentModuleObject)//' = '//TRIM(ZoneEvapUnit(UnitLoop)%Name))
ErrorsFound=.TRUE.
ENDIF
ENDIF
ZoneEvapUnit(UnitLoop)%DesignAirVolumeFlowRate = Numbers(1)
SELECT CASE (TRIM(Alphas(9)))
CASE ( 'BLOWTHROUGH' )
ZoneEvapUnit(UnitLoop)%FanLocation = BlowThruFan
CASE ( 'DRAWTHROUGH' )
ZoneEvapUnit(UnitLoop)%FanLocation = DrawThruFan
CASE DEFAULT
CALL ShowSevereError(TRIM(CurrentModuleObject)//'="'//TRIM(ZoneEvapUnit(UnitLoop)%Name)//'" invalid data.')
CALL ShowContinueError('invalid choice found '//TRIM(cAlphaFields(9))//'="'//TRIM(Alphas(9))//'".')
ErrorsFound=.TRUE.
END SELECT
SELECT CASE ( TRIM(Alphas(10)) )
CASE ( 'ZONETEMPERATUREDEADBANDONOFFCYCLING' )
ZoneEvapUnit(UnitLoop)%ControlSchemeType = ZoneTemperatureDeadbandOnOffCycling
CASE ( 'ZONECOOLINGLOADONOFFCYCLING' )
ZoneEvapUnit(UnitLoop)%ControlSchemeType = ZoneCoolingLoadOnOffCycling
CASE ( 'ZONECOOLINGLOADVARIABLESPEEDFAN' )
ZoneEvapUnit(UnitLoop)%ControlSchemeType = ZoneCoolingLoadVariableSpeedFan
CASE DEFAULT
CALL ShowSevereError(TRIM(CurrentModuleObject)//'="'//TRIM(ZoneEvapUnit(UnitLoop)%Name)//'" invalid data.')
CALL ShowContinueError('invalid choice found '//TRIM(cAlphaFields(10))//'="'//TRIM(Alphas(10))//'".')
ErrorsFound=.TRUE.
END SELECT
ZoneEvapUnit(UnitLoop)%ThrottlingRange = Numbers(2)
ZoneEvapUnit(UnitLoop)%ThresholdCoolingLoad = Numbers(3)
SELECT CASE (TRIM(Alphas(11)))
CASE ( 'EVAPORATIVECOOLER:DIRECT:CELDEKPAD')
ZoneEvapUnit(UnitLoop)%EvapCooler_1_ObjectClassName = 'EvaporativeCooler:Direct:CelDekPad'
ZoneEvapUnit(UnitLoop)%EvapCooler_1_Type_Num = iEvapCoolerDirectCELDEKPAD
CASE ( 'EVAPORATIVECOOLER:DIRECT:RESEARCHSPECIAL')
ZoneEvapUnit(UnitLoop)%EvapCooler_1_ObjectClassName = 'EvaporativeCooler:Direct:ResearchSpecial'
ZoneEvapUnit(UnitLoop)%EvapCooler_1_Type_Num = iEvapCoolerDirectResearchSpecial
CASE ( 'EVAPORATIVECOOLER:INDIRECT:CELDEKPAD' )
ZoneEvapUnit(UnitLoop)%EvapCooler_1_ObjectClassName = 'EvaporativeCooler:Indirect:CelDekPad'
ZoneEvapUnit(UnitLoop)%EvapCooler_1_Type_Num = iEvapCoolerInDirectCELDEKPAD
CASE ( 'EVAPORATIVECOOLER:INDIRECT:WETCOIL' )
ZoneEvapUnit(UnitLoop)%EvapCooler_1_ObjectClassName = 'EvaporativeCooler:Indirect:WetCoil'
ZoneEvapUnit(UnitLoop)%EvapCooler_1_Type_Num = iEvapCoolerInDirectWETCOIL
CASE ( 'EVAPORATIVECOOLER:INDIRECT:RESEARCHSPECIAL')
ZoneEvapUnit(UnitLoop)%EvapCooler_1_ObjectClassName = 'EvaporativeCooler:Indirect:ResearchSpecial'
ZoneEvapUnit(UnitLoop)%EvapCooler_1_Type_Num = iEvapCoolerInDirectRDDSpecial
CASE DEFAULT
CALL ShowSevereError(TRIM(CurrentModuleObject)//'="'//TRIM(ZoneEvapUnit(UnitLoop)%Name)//'" invalid data.')
CALL ShowContinueError('invalid choice found '//TRIM(cAlphaFields(11))//'="'//TRIM(Alphas(11))//'".')
ErrorsFound=.TRUE.
END SELECT
ZoneEvapUnit(UnitLoop)%EvapCooler_1_Name = Alphas(12)
ZoneEvapUnit(UnitLoop)%EvapCooler_1_Index = FindItemInList(Alphas(12), EvapCond%EvapCoolerName, NumEvapCool)
IF (ZoneEvapUnit(UnitLoop)%EvapCooler_1_Index == 0 ) THEN
CALL ShowSevereError(TRIM(CurrentModuleObject)//'="'//TRIM(ZoneEvapUnit(UnitLoop)%Name)//'" invalid data.')
CALL ShowContinueError('invalid, not found '//TRIM(cAlphaFields(12))//'="'//TRIM(Alphas(12))//'".')
ErrorsFound=.TRUE.
ENDIF
IF (.NOT. lAlphaBlanks(13)) THEN
SELECT CASE (TRIM(Alphas(13)))
CASE ( 'EVAPORATIVECOOLER:DIRECT:CELDEKPAD')
ZoneEvapUnit(UnitLoop)%EvapCooler_2_ObjectClassName = 'EvaporativeCooler:Direct:CelDekPad'
ZoneEvapUnit(UnitLoop)%EvapCooler_2_Type_Num = iEvapCoolerDirectCELDEKPAD
CASE ( 'EVAPORATIVECOOLER:DIRECT:RESEARCHSPECIAL')
ZoneEvapUnit(UnitLoop)%EvapCooler_2_ObjectClassName = 'EvaporativeCooler:Direct:ResearchSpecial'
ZoneEvapUnit(UnitLoop)%EvapCooler_2_Type_Num = iEvapCoolerDirectResearchSpecial
CASE ( 'EVAPORATIVECOOLER:INDIRECT:CELDEKPAD' )
ZoneEvapUnit(UnitLoop)%EvapCooler_2_ObjectClassName = 'EvaporativeCooler:Indirect:CelDekPad'
ZoneEvapUnit(UnitLoop)%EvapCooler_2_Type_Num = iEvapCoolerInDirectCELDEKPAD
CASE ( 'EVAPORATIVECOOLER:INDIRECT:WETCOIL' )
ZoneEvapUnit(UnitLoop)%EvapCooler_2_ObjectClassName = 'EvaporativeCooler:Indirect:WetCoil'
ZoneEvapUnit(UnitLoop)%EvapCooler_2_Type_Num = iEvapCoolerInDirectWETCOIL
CASE ( 'EVAPORATIVECOOLER:INDIRECT:RESEARCHSPECIAL')
ZoneEvapUnit(UnitLoop)%EvapCooler_2_ObjectClassName = 'EvaporativeCooler:Indirect:ResearchSpecial'
ZoneEvapUnit(UnitLoop)%EvapCooler_2_Type_Num = iEvapCoolerInDirectRDDSpecial
CASE DEFAULT
CALL ShowSevereError(TRIM(CurrentModuleObject)//'="'//TRIM(ZoneEvapUnit(UnitLoop)%Name)//'" invalid data.')
CALL ShowContinueError('invalid choice found '//TRIM(cAlphaFields(13))//'="'//TRIM(Alphas(13))//'".')
ErrorsFound=.TRUE.
END SELECT
IF (.NOT. lAlphaBlanks(14)) THEN
ZoneEvapUnit(UnitLoop)%EvapCooler_2_Name = Alphas(14)
ZoneEvapUnit(UnitLoop)%EvapCooler_2_Index = FindItemInList(Alphas(14), EvapCond%EvapCoolerName, NumEvapCool)
IF (ZoneEvapUnit(UnitLoop)%EvapCooler_2_Index == 0 ) THEN
CALL ShowSevereError(TRIM(CurrentModuleObject)//'="'//TRIM(ZoneEvapUnit(UnitLoop)%Name)//'" invalid data.')
CALL ShowContinueError('invalid, not found '//TRIM(cAlphaFields(14))//'="'//TRIM(Alphas(14))//'".')
ErrorsFound=.TRUE.
ENDIF
ELSE
CALL ShowSevereError(TRIM(CurrentModuleObject)//'="'//TRIM(ZoneEvapUnit(UnitLoop)%Name)//'" invalid data.')
CALL ShowContinueError('missing input for '//TRIM(cAlphaFields(14)))
ErrorsFound=.TRUE.
ENDIF
ENDIF
!Add fan to component sets array
CALL SetUpCompSets(CurrentModuleObject, ZoneEvapUnit(UnitLoop)%Name, &
ZoneEvapUnit(UnitLoop)%FanObjectClassName, ZoneEvapUnit(UnitLoop)%FanName, &
NodeID(ZoneEvapUnit(UnitLoop)%FanInletNodeNum), NodeID(ZoneEvapUnit(UnitLoop)%FanOutletNodeNum ) )
!Add first evap cooler to component sets array
CALL SetUpCompSets(CurrentModuleObject, ZoneEvapUnit(UnitLoop)%Name, &
ZoneEvapUnit(UnitLoop)%EvapCooler_1_ObjectClassName, ZoneEvapUnit(UnitLoop)%EvapCooler_1_Name, &
NodeID(EvapCond(ZoneEvapUnit(UnitLoop)%EvapCooler_1_Index)%InletNode), &
NodeID(EvapCond(ZoneEvapUnit(UnitLoop)%EvapCooler_1_Index)%OutletNode ) )
IF (ZoneEvapUnit(UnitLoop)%EvapCooler_2_Index > 0) THEN
!Add second evap cooler to component sets array
CALL SetUpCompSets(CurrentModuleObject, ZoneEvapUnit(UnitLoop)%Name, &
ZoneEvapUnit(UnitLoop)%EvapCooler_2_ObjectClassName, ZoneEvapUnit(UnitLoop)%EvapCooler_2_Name, &
NodeID(EvapCond(ZoneEvapUnit(UnitLoop)%EvapCooler_2_Index)%InletNode), &
NodeID(EvapCond(ZoneEvapUnit(UnitLoop)%EvapCooler_2_Index)%OutletNode ) )
ENDIF
! check that fan type is consistent with control method
IF (ZoneEvapUnit(UnitLoop)%ControlSchemeType == ZoneCoolingLoadVariableSpeedFan) THEN ! must have a VS fan type
IF (ZoneEvapUnit(UnitLoop)%FanType_Num == FanType_SimpleConstVolume) THEN
CALL ShowSevereError(TRIM(CurrentModuleObject)//'="'//TRIM(ZoneEvapUnit(UnitLoop)%Name)//'" invalid data.')
CALL ShowContinueError('Fan:ConstantVolume is not consistent with control method ZoneCoolingLoadVariableSpeedFan.')
CALL ShowContinueError('Change to a variable speed fan object type')
ErrorsFound=.TRUE.
ELSEIF (ZoneEvapUnit(UnitLoop)%FanType_Num == FanType_SimpleOnOff ) THEN
CALL ShowSevereError(TRIM(CurrentModuleObject)//'="'//TRIM(ZoneEvapUnit(UnitLoop)%Name)//'" invalid data.')
CALL ShowContinueError('Fan:OnOff is not consistent with control method ZoneCoolingLoadVariableSpeedFan.')
CALL ShowContinueError('Change to a variable speed fan object type')
ErrorsFound=.TRUE.
ENDIF
ENDIF
ENDDO ! unit loop
ENDIF
!***********************************************************************************
DEALLOCATE(Alphas)
DEALLOCATE(Numbers)
DEALLOCATE(cAlphaFields)
DEALLOCATE(cNumericFields)
DEALLOCATE(lAlphaBlanks)
DEALLOCATE(lNumericBlanks)
IF (ErrorsFound) THEN
CALL ShowFatalError(RoutineName//'Errors found in getting input.')
CALL ShowContinueError('... Preceding condition causes termination.')
END IF
! setup output variables
DO UnitLoop = 1, NumZoneEvapUnits
CALL SetupOutputVariable('Zone Evaporative Cooler Unit Total Cooling Rate [W]', &
ZoneEvapUnit(UnitLoop)%UnitTotalCoolingRate, &
'System','Average', ZoneEvapUnit(UnitLoop)%Name)
CALL SetupOutputVariable('Zone Evaporative Cooler Unit Total Cooling Energy [J]', &
ZoneEvapUnit(UnitLoop)%UnitTotalCoolingEnergy, &
'System','Sum', ZoneEvapUnit(UnitLoop)%Name)
CALL SetupOutputVariable('Zone Evaporative Cooler Unit Sensible Cooling Rate [W]', &
ZoneEvapUnit(UnitLoop)%UnitSensibleCoolingRate, &
'System','Average', ZoneEvapUnit(UnitLoop)%Name)
CALL SetupOutputVariable('Zone Evaporative Cooler Unit Sensible Cooling Energy [J]', &
ZoneEvapUnit(UnitLoop)%UnitSensibleCoolingEnergy, &
'System','Sum', ZoneEvapUnit(UnitLoop)%Name)
CALL SetupOutputVariable('Zone Evaporative Cooler Unit Latent Heating Rate [W]', &
ZoneEvapUnit(UnitLoop)%UnitLatentHeatingRate, &
'System','Average', ZoneEvapUnit(UnitLoop)%Name)
CALL SetupOutputVariable('Zone Evaporative Cooler Unit Latent Heating Energy [J]', &
ZoneEvapUnit(UnitLoop)%UnitLatentHeatingEnergy, &
'System','Sum', ZoneEvapUnit(UnitLoop)%Name)
CALL SetupOutputVariable('Zone Evaporative Cooler Unit Latent Cooling Rate [W]', &
ZoneEvapUnit(UnitLoop)%UnitLatentCoolingRate, &
'System','Average', ZoneEvapUnit(UnitLoop)%Name)
CALL SetupOutputVariable('Zone Evaporative Cooler Unit Latent Cooling Energy [J]', &
ZoneEvapUnit(UnitLoop)%UnitLatentCoolingEnergy, &
'System','Sum', ZoneEvapUnit(UnitLoop)%Name)
CALL SetupOutputVariable('Zone Evaporative Cooler Unit Fan Speed Ratio []', &
ZoneEvapUnit(UnitLoop)%UnitFanSpeedRatio, &
'System','Average', ZoneEvapUnit(UnitLoop)%Name)
CALL SetupOutputVariable('Zone Evaporative Cooler Unit Fan Availability Status []', &
ZoneEvapUnit(UnitLoop)%FanAvailStatus, &
'System','Average', ZoneEvapUnit(UnitLoop)%Name)
ENDDO
RETURN
END SUBROUTINE GetInputZoneEvaporativeCoolerUnit