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 GetEvapInput
! SUBROUTINE INFORMATION:
! AUTHOR Richard J. Liesen
! DATE WRITTEN Oct 2000
! MODIFIED BTG, adding in EVAPCOOLER:INDIRECT:RDDSPECIAL
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine is the main routine to call other input routines and Get routines
! METHODOLOGY EMPLOYED:
! Uses the status flags to trigger events.
! REFERENCES:
! na
! USE STATEMENTS:
USE InputProcessor, ONLY: GetNumObjectsFound,GetObjectItem,VerifyName
USE DataIPShortCuts ! Data for field names, blank numerics
USE NodeInputManager, ONLY: GetOnlySingleNode
USE BranchNodeConnections, ONLY: TestCompSet
USE WaterManager, ONLY: SetupTankDemandComponent
USE OutAirNodeManager, ONLY: CheckOutAirNodeNumber
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
! na
! SUBROUTINE PARAMETER DEFINITIONS:
CHARACTER(len=*), PARAMETER :: Blank = ' '
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: EvapCoolNum ! The EvapCooler that you are currently loading input into
INTEGER :: NumDirectEvapCool ! The number of Direct CelDek EvapCooler in this simulation
INTEGER :: NumDryInDirectEvapCool ! The number of dry indirect evap coolers
INTEGER :: NumWetInDirectEvapCool ! The number of wet indirect evap coolers
INTEGER :: NumRDDEvapCool ! the number of special research indirect evap coolers
INTEGER :: NumDirectResearchSpecialEvapCool ! the number of special research direct evap coolers
INTEGER :: IndEvapCoolNum !Do Loop Counter for indirect evap coolers
INTEGER :: DirectEvapCoolNum ! Do loop counter for direct evap cooler
INTEGER :: NumAlphas
INTEGER :: NumNums
INTEGER :: IOSTAT
LOGICAL :: ErrorsFound=.false.
LOGICAL :: IsNotOK ! Flag to verify name
LOGICAL :: IsBlank ! Flag for blank name
! Start getting the input data
NumDirectEvapCool = GetNumObjectsFound('EvaporativeCooler:Direct:CelDekPad')
NumDryInDirectEvapCool = GetNumObjectsFound('EvaporativeCooler:Indirect:CelDekPad')
NumWetInDirectEvapCool = GetNumObjectsFound('EvaporativeCooler:Indirect:WetCoil')
NumRDDEvapCool = GetNumObjectsFound('EvaporativeCooler:Indirect:ResearchSpecial')
NumDirectResearchSpecialEvapCool = GetNumObjectsFound('EvaporativeCooler:Direct:ResearchSpecial')
!Sum up all of the Evap Cooler Types
NumEvapCool = NumDirectEvapCool + NumDryInDirectEvapCool + NumWetInDirectEvapCool + NumRDDEvapCool &
+ NumDirectResearchSpecialEvapCool
IF (NumEvapCool.GT.0) ALLOCATE(EvapCond(NumEvapCool))
ALLOCATE(CheckEquipName(NumEvapCool))
CheckEquipName=.true.
cCurrentModuleObject = 'EvaporativeCooler:Direct:CelDekPad'
DO EvapCoolNum = 1, NumDirectEvapCool
CALL GetObjectItem(cCurrentModuleObject,EvapCoolNum,cAlphaArgs,NumAlphas, &
rNumericArgs,NumNums,IOSTAT, AlphaBlank=lAlphaFieldBlanks, &
AlphaFieldnames=cAlphaFieldNames,NumericFieldNames=cNumericFieldNames)
IsNotOK=.false.
IsBlank=.false.
CALL VerifyName(cAlphaArgs(1),EvapCond%EvapCoolerName,EvapCoolNum-1,IsNotOK,IsBlank,TRIM(cCurrentModuleObject)//' Name')
IF (IsNotOK) THEN
ErrorsFound=.true.
IF (IsBlank) cAlphaArgs(1)='xxxxx'
ENDIF
EvapCond(EvapCoolNum)%EvapCoolerName = Trim(cAlphaArgs(1))
EvapCond(EvapCoolNum)%EvapCoolerType = iEvapCoolerDirectCELDEKPAD
EvapCond(EvapCoolNum)%Schedule = cAlphaArgs(2)
IF (lAlphaFieldBlanks(2)) THEN
EvapCond(EvapCoolNum)%SchedPtr = ScheduleAlwaysOn
ELSE
EvapCond(EvapCoolNum)%SchedPtr = GetScheduleIndex(cAlphaArgs(2))
IF (EvapCond(EvapCoolNum)%SchedPtr == 0) THEN
CALL ShowSevereError('Invalid '//TRIM(cAlphaFieldNames(2))//'='//TRIM(cAlphaArgs(2)))
CALL ShowContinueError('Entered in '//TRIM(cCurrentModuleObject)//'='//TRIM(cAlphaArgs(1)))
ErrorsFound=.true.
ENDIF
ENDIF
EvapCond(EvapCoolNum)%InletNode = &
GetOnlySingleNode(cAlphaArgs(3),ErrorsFound,TRIM(cCurrentModuleObject),cAlphaArgs(1), &
NodeType_Air,NodeConnectionType_Inlet,1,ObjectIsNotParent)
EvapCond(EvapCoolNum)%OutletNode = &
GetOnlySingleNode(cAlphaArgs(4),ErrorsFound,TRIM(cCurrentModuleObject),cAlphaArgs(1), &
NodeType_Air,NodeConnectionType_Outlet,1,ObjectIsNotParent)
CALL TestCompSet(TRIM(cCurrentModuleObject),cAlphaArgs(1),cAlphaArgs(3),cAlphaArgs(4), &
'Evap Air Nodes')
EvapCond(EvapCoolNum)%EvapControlType = TRIM(cAlphaArgs(5))
!input the numerical data
EvapCond(EvapCoolNum)%PadArea = rNumericArgs(1)
EvapCond(EvapCoolNum)%PadDepth = rNumericArgs(2)
EvapCond(EvapCoolNum)%RecircPumpPower = rNumericArgs(3)
CALL SetupOutputVariable('Evaporative Cooler Wet Bulb Effectiveness []',EvapCond(EvapCoolNum)%Sateff, &
'System','Average',EvapCond(EvapCoolNum)%EvapCoolerName)
! A6 ; \Field Name of Water Supply Storage Tank
EvapCond(EvapCoolNum)%EvapWaterSupplyName = cAlphaArgs(6)
IF (lAlphaFieldBlanks(6)) THEN
EvapCond(EvapCoolNum)%EvapWaterSupplyMode = WaterSupplyFromMains
ELSE
EvapCond(EvapCoolNum)%EvapWaterSupplyMode = WaterSupplyFromTank
CALL SetupTankDemandComponent(EvapCond(EvapCoolNum)%EvapCoolerName, TRIM(cCurrentModuleObject), &
EvapCond(EvapCoolNum)%EvapWaterSupplyName, ErrorsFound, EvapCond(EvapCoolNum)%EvapWaterSupTankID, &
EvapCond(EvapCoolNum)%EvapWaterTankDemandARRID )
ENDIF
END DO ! end Number of EvapCooler Loop
!**************************************************************
!This is the start of the Dry Indirect Evap Cooler Loop
cCurrentModuleObject = 'EvaporativeCooler:Indirect:CelDekPad'
DO IndEvapCoolNum = 1, NumDryInDirectEvapCool
EvapCoolNum = NumDirectEvapCool + IndEvapCoolNum
CALL GetObjectItem(cCurrentModuleObject,IndEvapCoolNum,cAlphaArgs,NumAlphas, &
rNumericArgs,NumNums,IOSTAT, AlphaBlank=lAlphaFieldBlanks, &
AlphaFieldnames=cAlphaFieldNames,NumericFieldNames=cNumericFieldNames)
IsNotOK=.false.
IsBlank=.false.
CALL VerifyName(cAlphaArgs(1),EvapCond%EvapCoolerName,EvapCoolNum-1,IsNotOK,IsBlank,TRIM(cCurrentModuleObject)//' Name')
IF (IsNotOK) THEN
ErrorsFound=.true.
IF (IsBlank) cAlphaArgs(1)='xxxxx'
ENDIF
EvapCond(EvapCoolNum)%EvapCoolerName = Trim(cAlphaArgs(1))
EvapCond(EvapCoolNum)%EvapCoolerType = iEvapCoolerInDirectCELDEKPAD !'EvaporativeCooler:Indirect:CelDekPad'
EvapCond(EvapCoolNum)%Schedule = cAlphaArgs(2)
IF (lAlphaFieldBlanks(2)) THEN
EvapCond(EvapCoolNum)%SchedPtr = ScheduleAlwaysOn
ELSE
EvapCond(EvapCoolNum)%SchedPtr = GetScheduleIndex(cAlphaArgs(2))
IF (EvapCond(EvapCoolNum)%SchedPtr == 0) THEN
CALL ShowSevereError('Invalid '//TRIM(cAlphaFieldNames(2))//'='//TRIM(cAlphaArgs(2)))
CALL ShowContinueError('Entered in '//TRIM(cCurrentModuleObject)//'='//TRIM(cAlphaArgs(1)))
ErrorsFound=.true.
ENDIF
ENDIF
EvapCond(EvapCoolNum)%InletNode = &
GetOnlySingleNode(cAlphaArgs(3),ErrorsFound,TRIM(cCurrentModuleObject),cAlphaArgs(1), &
NodeType_Air,NodeConnectionType_Inlet,1,ObjectIsNotParent)
EvapCond(EvapCoolNum)%OutletNode = &
GetOnlySingleNode(cAlphaArgs(4),ErrorsFound,TRIM(cCurrentModuleObject),cAlphaArgs(1), &
NodeType_Air,NodeConnectionType_Outlet,1,ObjectIsNotParent)
CALL TestCompSet(TRIM(cCurrentModuleObject),cAlphaArgs(1),cAlphaArgs(3),cAlphaArgs(4), &
'Evap Air Nodes')
EvapCond(EvapCoolNum)%EvapControlType = TRIM(cAlphaArgs(5))
!input the numerical data
EvapCond(EvapCoolNum)%IndirectPadArea = rNumericArgs(1)
EvapCond(EvapCoolNum)%IndirectPadDepth = rNumericArgs(2)
EvapCond(EvapCoolNum)%IndirectRecircPumpPower = rNumericArgs(3)
EvapCond(EvapCoolNum)%IndirectVolFlowRate = rNumericArgs(4)
EvapCond(EvapCoolNum)%IndirectFanEff = rNumericArgs(5)
EvapCond(EvapCoolNum)%IndirectFanDeltaPress = rNumericArgs(6)
EvapCond(EvapCoolNum)%IndirectHXEffectiveness = rNumericArgs(7)
CALL SetupOutputVariable('Evaporative Cooler Wetbulb Effectiveness []',EvapCond(EvapCoolNum)%Sateff, &
'System','Average',EvapCond(EvapCoolNum)%EvapCoolerName)
CALL SetupOutputVariable('Evaporative Cooler Total Stage Effectiveness []',EvapCond(EvapCoolNum)%StageEff, &
'System','Average',EvapCond(EvapCoolNum)%EvapCoolerName)
! A6 ; \Field Name of Water Supply Storage Tank
EvapCond(EvapCoolNum)%EvapWaterSupplyName = cAlphaArgs(6)
IF ( lAlphaFieldBlanks(6) ) THEN
EvapCond(EvapCoolNum)%EvapWaterSupplyMode = WaterSupplyFromMains
ELSE
EvapCond(EvapCoolNum)%EvapWaterSupplyMode = WaterSupplyFromTank
CALL SetupTankDemandComponent(EvapCond(EvapCoolNum)%EvapCoolerName, TRIM(cCurrentModuleObject), &
EvapCond(EvapCoolNum)%EvapWaterSupplyName, ErrorsFound, EvapCond(EvapCoolNum)%EvapWaterSupTankID, &
EvapCond(EvapCoolNum)%EvapWaterTankDemandARRID )
ENDIF
!A7 ; \field Secondary Outside Air Inlet node.
IF ( lAlphaFieldBlanks(7) ) THEN
EvapCond(EvapCoolNum)%SecondaryInletNode = 0
ELSE
EvapCond(EvapCoolNum)%SecondaryInletNode = &
GetOnlySingleNode(cAlphaArgs(7),ErrorsFound,TRIM(cCurrentModuleObject),cAlphaArgs(1), &
NodeType_Air,NodeConnectionType_OutsideAirReference,1,ObjectIsNotParent)
IF ( .not. CheckOutAirNodeNumber(EvapCond(EvapCoolNum)%SecondaryInletNode)) THEN
CALL ShowSevereError('Invalid '//TRIM(cAlphaFieldNames(7))//'='//TRIM(cAlphaArgs(7)))
CALL ShowContinueError('Entered in '//TRIM(cCurrentModuleObject)//'='//TRIM(cAlphaArgs(1)))
!TODO rename point
CALL ShowContinueError('Node does not appear in an OutdoorAir:NodeList or as an OutdoorAir:Node.')
ErrorsFound=.true.
ENDIF
ENDIF
END DO ! end Number of Dry Indirect EvapCooler Loop
!**************************************************************
!This is the start of the WetIndirect Evap Cooler Loop
cCurrentModuleObject = 'EvaporativeCooler:Indirect:WetCoil'
DO IndEvapCoolNum = 1, NumWetInDirectEvapCool
EvapCoolNum = NumDirectEvapCool + NumDryInDirectEvapCool + IndEvapCoolNum
CALL GetObjectItem(cCurrentModuleObject,IndEvapCoolNum,cAlphaArgs,NumAlphas, &
rNumericArgs,NumNums,IOSTAT, AlphaBlank=lAlphaFieldBlanks, &
AlphaFieldnames=cAlphaFieldNames,NumericFieldNames=cNumericFieldNames)
IsNotOK=.false.
IsBlank=.false.
CALL VerifyName(cAlphaArgs(1),EvapCond%EvapCoolerName,EvapCoolNum-1,IsNotOK,IsBlank,TRIM(cCurrentModuleObject)//' Name')
IF (IsNotOK) THEN
ErrorsFound=.true.
IF (IsBlank) cAlphaArgs(1)='xxxxx'
ENDIF
EvapCond(EvapCoolNum)%EvapCoolerName = Trim(cAlphaArgs(1))
EvapCond(EvapCoolNum)%EvapCoolerType = iEvapCoolerInDirectWETCOIL !'EvaporativeCooler:Indirect:WetCoil'
EvapCond(EvapCoolNum)%Schedule = cAlphaArgs(2)
IF (lAlphaFieldBlanks(2)) THEN
EvapCond(EvapCoolNum)%SchedPtr = ScheduleAlwaysOn
ELSE
EvapCond(EvapCoolNum)%SchedPtr = GetScheduleIndex(cAlphaArgs(2))
IF (EvapCond(EvapCoolNum)%SchedPtr == 0) THEN
CALL ShowSevereError('Invalid '//TRIM(cAlphaFieldNames(2))//'='//TRIM(cAlphaArgs(2)))
CALL ShowContinueError('Entered in '//TRIM(cCurrentModuleObject)//'='//TRIM(cAlphaArgs(1)))
ErrorsFound=.true.
ENDIF
ENDIF
EvapCond(EvapCoolNum)%InletNode = &
GetOnlySingleNode(cAlphaArgs(3),ErrorsFound,TRIM(cCurrentModuleObject),cAlphaArgs(1), &
NodeType_Air,NodeConnectionType_Inlet,1,ObjectIsNotParent)
EvapCond(EvapCoolNum)%OutletNode = &
GetOnlySingleNode(cAlphaArgs(4),ErrorsFound,TRIM(cCurrentModuleObject),cAlphaArgs(1), &
NodeType_Air,NodeConnectionType_Outlet,1,ObjectIsNotParent)
CALL TestCompSet(TRIM(cCurrentModuleObject),cAlphaArgs(1),cAlphaArgs(3),cAlphaArgs(4), &
'Evap Air Nodes')
EvapCond(EvapCoolNum)%EvapControlType = TRIM(cAlphaArgs(5))
!input the numerical data
EvapCond(EvapCoolNum)%WetCoilMaxEfficiency = rNumericArgs(1)
EvapCond(EvapCoolNum)%WetCoilFlowRatio = rNumericArgs(2)
EvapCond(EvapCoolNum)%IndirectRecircPumpPower = rNumericArgs(3)
EvapCond(EvapCoolNum)%IndirectVolFlowRate = rNumericArgs(4)
EvapCond(EvapCoolNum)%IndirectFanEff = rNumericArgs(5)
EvapCond(EvapCoolNum)%IndirectFanDeltaPress = rNumericArgs(6)
CALL SetupOutputVariable('Evaporative Cooler Total Stage Effectiveness []',EvapCond(EvapCoolNum)%StageEff, &
'System','Average',EvapCond(EvapCoolNum)%EvapCoolerName)
! A6 ; \Field Name of Water Supply Storage Tank
EvapCond(EvapCoolNum)%EvapWaterSupplyName = cAlphaArgs(6)
IF (lAlphaFieldBlanks(6)) THEN
EvapCond(EvapCoolNum)%EvapWaterSupplyMode = WaterSupplyFromMains
ELSE
EvapCond(EvapCoolNum)%EvapWaterSupplyMode = WaterSupplyFromTank
CALL SetupTankDemandComponent(EvapCond(EvapCoolNum)%EvapCoolerName, TRIM(cCurrentModuleObject), &
EvapCond(EvapCoolNum)%EvapWaterSupplyName, ErrorsFound, EvapCond(EvapCoolNum)%EvapWaterSupTankID, &
EvapCond(EvapCoolNum)%EvapWaterTankDemandARRID )
ENDIF
! A7 ; \field Secondary Outside Air Inlet node.
IF (lAlphaFieldBlanks(7)) THEN
EvapCond(EvapCoolNum)%SecondaryInletNode = 0
ELSE
EvapCond(EvapCoolNum)%SecondaryInletNode = &
GetOnlySingleNode(cAlphaArgs(7),ErrorsFound,TRIM(cCurrentModuleObject),cAlphaArgs(1), &
NodeType_Air,NodeConnectionType_OutsideAirReference,1,ObjectIsNotParent)
IF ( .not. CheckOutAirNodeNumber(EvapCond(EvapCoolNum)%SecondaryInletNode)) THEN
CALL ShowSevereError('Invalid '//TRIM(cAlphaFieldNames(7))//'='//TRIM(cAlphaArgs(7)))
CALL ShowContinueError('Entered in '//TRIM(cCurrentModuleObject)//'='//TRIM(cAlphaArgs(1)))
!TODO rename point
CALL ShowContinueError('Node does not appear in an OutdoorAir:NodeList or as an OutdoorAir:Node.')
ErrorsFound=.true.
ENDIF
ENDIF
END DO ! end Number of Wet Coil Indirect EvapCooler Loop
!**************************************************************
!This is the start of the Indirect Research Special Evap Cooler
cCurrentModuleObject = 'EvaporativeCooler:Indirect:ResearchSpecial'
DO IndEvapCoolNum = 1, NumRDDEvapCool
EvapCoolNum = NumDirectEvapCool + NumDryInDirectEvapCool + &
NumWetInDirectEvapCool + IndEvapCoolNum
CALL GetObjectItem(cCurrentModuleObject,IndEvapCoolNum,cAlphaArgs,NumAlphas, &
rNumericArgs,NumNums,IOSTAT, AlphaBlank=lAlphaFieldBlanks, &
AlphaFieldnames=cAlphaFieldNames,NumericFieldNames=cNumericFieldNames)
IsNotOK=.false.
IsBlank=.false.
CALL VerifyName(cAlphaArgs(1),EvapCond%EvapCoolerName,EvapCoolNum-1,IsNotOK,IsBlank,TRIM(cCurrentModuleObject)//' Name')
IF (IsNotOK) THEN
ErrorsFound=.true.
IF (IsBlank) cAlphaArgs(1)='xxxxx'
ENDIF
EvapCond(EvapCoolNum)%EvapCoolerName = Trim(cAlphaArgs(1))
EvapCond(EvapCoolNum)%EvapCoolerType = iEvapCoolerInDirectRDDSpecial !'EvaporativeCooler:Indirect:ResearchSpecial'
EvapCond(EvapCoolNum)%Schedule = cAlphaArgs(2)
IF (lAlphaFieldBlanks(2)) THEN
EvapCond(EvapCoolNum)%SchedPtr = ScheduleAlwaysOn
ELSE
EvapCond(EvapCoolNum)%SchedPtr = GetScheduleIndex(cAlphaArgs(2))
IF (EvapCond(EvapCoolNum)%SchedPtr == 0) THEN
CALL ShowSevereError('Invalid '//TRIM(cAlphaFieldNames(2))//'='//TRIM(cAlphaArgs(2)))
CALL ShowContinueError('Entered in '//TRIM(cCurrentModuleObject)//'='//TRIM(cAlphaArgs(1)))
ErrorsFound=.true.
ENDIF
ENDIF
EvapCond(EvapCoolNum)%InletNode = &
GetOnlySingleNode(cAlphaArgs(3),ErrorsFound,TRIM(cCurrentModuleObject),cAlphaArgs(1), &
NodeType_Air,NodeConnectionType_Inlet,1,ObjectIsNotParent)
EvapCond(EvapCoolNum)%OutletNode = &
GetOnlySingleNode(cAlphaArgs(4),ErrorsFound,TRIM(cCurrentModuleObject),cAlphaArgs(1), &
NodeType_Air,NodeConnectionType_Outlet,1,ObjectIsNotParent)
CALL TestCompSet(TRIM(cCurrentModuleObject),cAlphaArgs(1),cAlphaArgs(3),cAlphaArgs(4), &
'Evap Air Nodes')
EvapCond(EvapCoolNum)%EvapControlType = TRIM(cAlphaArgs(5))
! A6 ; \field Secondary Air Inlet Node Name
IF (lAlphaFieldBlanks(6)) THEN
EvapCond(EvapCoolNum)%SecondaryInletNode = 0
ELSE
EvapCond(EvapCoolNum)%SecondaryInletNode = &
GetOnlySingleNode(cAlphaArgs(6),ErrorsFound,TRIM(cCurrentModuleObject),cAlphaArgs(1), &
NodeType_Air,NodeConnectionType_Inlet,2,ObjectIsNotParent)
END IF
EvapCond(EvapCoolNum)%EvapControlNodeNum = &
GetOnlySingleNode(cAlphaArgs(7),ErrorsFound,TRIM(cCurrentModuleObject),cAlphaArgs(1), &
NodeType_Air,NodeConnectionType_Sensor,1,ObjectIsNotParent)
EvapCond(EvapCoolNum)%TertiaryInletNode = &
GetOnlySingleNode(cAlphaArgs(8),ErrorsFound,TRIM(cCurrentModuleObject),cAlphaArgs(1), &
NodeType_Air,NodeConnectionType_Inlet,3,ObjectIsNotParent)
EvapCond(EvapCoolNum)%EvapWaterSupplyName = cAlphaArgs(9)
IF (lAlphaFieldBlanks(9)) THEN
EvapCond(EvapCoolNum)%EvapWaterSupplyMode = WaterSupplyFromMains
ELSE
EvapCond(EvapCoolNum)%EvapWaterSupplyMode = WaterSupplyFromTank
CALL SetupTankDemandComponent(EvapCond(EvapCoolNum)%EvapCoolerName, TRIM(cCurrentModuleObject), &
EvapCond(EvapCoolNum)%EvapWaterSupplyName, ErrorsFound, EvapCond(EvapCoolNum)%EvapWaterSupTankID, &
EvapCond(EvapCoolNum)%EvapWaterTankDemandARRID )
ENDIF
!input the numerical data
EvapCond(EvapCoolNum)%WetCoilMaxEfficiency = rNumericArgs(1)
EvapCond(EvapCoolNum)%WetCoilFlowRatio = rNumericArgs(2)
EvapCond(EvapCoolNum)%IndirectRecircPumpPower = rNumericArgs(3)
EvapCond(EvapCoolNum)%IndirectVolFlowRate = rNumericArgs(4)
EvapCond(EvapCoolNum)%IndirectFanEff = rNumericArgs(5)
EvapCond(EvapCoolNum)%IndirectFanDeltaPress = rNumericArgs(6)
EvapCond(EvapCoolNum)%DPBoundFactor = rNumericArgs(7)
IF (lNumericFieldBlanks(8)) THEN
EvapCond(EvapCoolNum)%DriftFraction = 0.0D0
ELSE
EvapCond(EvapCoolNum)%DriftFraction = rNumericArgs(8)
ENDIF
IF (lNumericFieldBlanks(9)) THEN
EvapCond(EvapCoolNum)%BlowDownRatio = 0.0D0
ELSE
EvapCond(EvapCoolNum)%BlowDownRatio = rNumericArgs(9)
ENDIF
CALL SetupOutputVariable('Evaporative Cooler Total Stage Effectiveness []',EvapCond(EvapCoolNum)%StageEff, &
'System','Average',EvapCond(EvapCoolNum)%EvapCoolerName)
CALL SetupOutputVariable('Evaporative Cooler Part Load Ratio []',EvapCond(EvapCoolNum)%PartLoadFract, &
'System','Average',EvapCond(EvapCoolNum)%EvapCoolerName)
CALL SetupOutputVariable('Evaporative Cooler Dewpoint Bound Status []', EvapCond(EvapCoolNum)%DewPointBoundFlag, &
'System','Average',EvapCond(EvapCoolNum)%EvapCoolerName)
END Do ! end of Indirect Research Special cooler input loop
cCurrentModuleObject = 'EvaporativeCooler:Direct:ResearchSpecial'
Do DirectEvapCoolNum = 1, NumDirectResearchSpecialEvapCool
EvapCoolNum = NumDirectEvapCool + NumDryInDirectEvapCool + &
NumWetInDirectEvapCool + NumRDDEvapCool + DirectEvapCoolNum
CALL GetObjectItem(cCurrentModuleObject,DirectEvapCoolNum,cAlphaArgs,NumAlphas, &
rNumericArgs,NumNums,IOSTAT, AlphaBlank=lAlphaFieldBlanks, NumBlank=lNumericFieldBlanks,&
AlphaFieldnames=cAlphaFieldNames,NumericFieldNames=cNumericFieldNames)
IsNotOK=.false.
IsBlank=.false.
CALL VerifyName(cAlphaArgs(1),EvapCond%EvapCoolerName,EvapCoolNum-1,IsNotOK,IsBlank,TRIM(cCurrentModuleObject)//' Name')
IF (IsNotOK) THEN
ErrorsFound=.TRUE.
IF (IsBlank) cAlphaArgs(1)='xxxxx'
ENDIF
EvapCond(EvapCoolNum)%EvapCoolerName = Trim(cAlphaArgs(1))
EvapCond(EvapCoolNum)%EvapCoolerType = iEvapCoolerDirectResearchSpecial
EvapCond(EvapCoolNum)%Schedule = cAlphaArgs(2)
IF (lAlphaFieldBlanks(2)) THEN
EvapCond(EvapCoolNum)%SchedPtr = ScheduleAlwaysOn
ELSE
EvapCond(EvapCoolNum)%SchedPtr = GetScheduleIndex(cAlphaArgs(2))
IF (EvapCond(EvapCoolNum)%SchedPtr == 0) THEN
CALL ShowSevereError('Invalid '//TRIM(cAlphaFieldNames(2))//'='//TRIM(cAlphaArgs(2)))
CALL ShowContinueError('Entered in '//TRIM(cCurrentModuleObject)//'='//TRIM(cAlphaArgs(1)))
ErrorsFound=.true.
ENDIF
ENDIF
EvapCond(EvapCoolNum)%InletNode = &
GetOnlySingleNode(cAlphaArgs(3),ErrorsFound,TRIM(cCurrentModuleObject),cAlphaArgs(1), &
NodeType_Air,NodeConnectionType_Inlet,1,ObjectIsNotParent)
EvapCond(EvapCoolNum)%OutletNode = &
GetOnlySingleNode(cAlphaArgs(4),ErrorsFound,TRIM(cCurrentModuleObject),cAlphaArgs(1), &
NodeType_Air,NodeConnectionType_Outlet,1,ObjectIsNotParent)
CALL TestCompSet(TRIM(cCurrentModuleObject),cAlphaArgs(1),cAlphaArgs(3),cAlphaArgs(4), &
'Evap Air Nodes')
EvapCond(EvapCoolNum)%EvapControlNodeNum = &
GetOnlySingleNode(cAlphaArgs(5),ErrorsFound,TRIM(cCurrentModuleObject),cAlphaArgs(1), &
NodeType_Air,NodeConnectionType_Sensor,1,ObjectIsNotParent)
EvapCond(EvapCoolNum)%EvapWaterSupplyName = cAlphaArgs(6)
IF (lAlphaFieldBlanks(6)) THEN
EvapCond(EvapCoolNum)%EvapWaterSupplyMode = WaterSupplyFromMains
ELSE
EvapCond(EvapCoolNum)%EvapWaterSupplyMode = WaterSupplyFromTank
CALL SetupTankDemandComponent(EvapCond(EvapCoolNum)%EvapCoolerName, TRIM(cCurrentModuleObject), &
EvapCond(EvapCoolNum)%EvapWaterSupplyName, ErrorsFound, EvapCond(EvapCoolNum)%EvapWaterSupTankID, &
EvapCond(EvapCoolNum)%EvapWaterTankDemandARRID )
ENDIF
EvapCond(EvapCoolNum)%DirectEffectiveness = rNumericArgs(1)
EvapCond(EvapCoolNum)%RecircPumpPower = rNumericArgs(2)
IF (lNumericFieldBlanks(3)) THEN
EvapCond(EvapCoolNum)%DriftFraction = 0.0D0
ELSE
EvapCond(EvapCoolNum)%DriftFraction = rNumericArgs(3)
ENDIF
IF (lNumericFieldBlanks(4)) THEN
EvapCond(EvapCoolNum)%BlowDownRatio = 0.0D0
ELSE
EvapCond(EvapCoolNum)%BlowDownRatio = rNumericArgs(4)
ENDIF
ENDDO
IF (ErrorsFound) THEN
CALL ShowFatalError('Errors found in processing input for evaporative coolers')
ENDIF
DO EvapCoolNum=1,NumEvapCool
! Setup Report variables for the Evap Coolers
CALL SetupOutputVariable('Evaporative Cooler Electric Energy [J]',EvapCond(EvapCoolNum)%EvapCoolerEnergy, &
'System','Sum',EvapCond(EvapCoolNum)%EvapCoolerName, &
ResourceTypeKey='Electric',EndUseKey='Cooling',GroupKey='System')
CALL SetupOutputVariable('Evaporative Cooler Electric Power [W]',EvapCond(EvapCoolNum)%EvapCoolerPower, &
'System','Average',EvapCond(EvapCoolNum)%EvapCoolerName)
! this next report variable is setup differently depending on how the water should be metered here.
IF (EvapCond(EvapCoolNum)%EvapWaterSupplyMode == WaterSupplyFromMains) Then
CALL SetupOutputVariable('Evaporative Cooler Water Volume [m3]',EvapCond(EvapCoolNum)%EvapWaterConsump, &
'System','Sum',EvapCond(EvapCoolNum)%EvapCoolerName, &
ResourceTypeKey='Water',EndUseKey='Cooling',GroupKey='System')
CALL SetupOutputVariable('Evaporative Cooler Mains Water Volume [m3]',EvapCond(EvapCoolNum)%EvapWaterConsump, &
'System','Sum',EvapCond(EvapCoolNum)%EvapCoolerName, &
ResourceTypeKey='MainsWater',EndUseKey='Cooling',GroupKey='System')
ELSEIF (EvapCond(EvapCoolNum)%EvapWaterSupplyMode == WaterSupplyFromTank) THEN
CALL SetupOutputVariable('Evaporative Cooler Storage Tank Water Volume [m3]',EvapCond(EvapCoolNum)%EvapWaterConsump, &
'System','Sum',EvapCond(EvapCoolNum)%EvapCoolerName, &
ResourceTypeKey='Water',EndUseKey='Cooling' , GroupKey='System')
CALL SetupOutputVariable('Evaporative Cooler Starved Water Volume [m3]',EvapCond(EvapCoolNum)%EvapWaterStarvMakup, &
'System','Sum',EvapCond(EvapCoolNum)%EvapCoolerName, &
ResourceTypeKey='Water',EndUseKey='Cooling', GroupKey='System')
CALL SetupOutputVariable('Evaporative Cooler Starved Mains Water Volume [m3]',EvapCond(EvapCoolNum)%EvapWaterStarvMakup, &
'System','Sum',EvapCond(EvapCoolNum)%EvapCoolerName, &
ResourceTypeKey='MainsWater',EndUseKey='Cooling', GroupKey='System')
ENDIF
END DO
RETURN
END SUBROUTINE GetEvapInput