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 GetHXAssistedCoolingCoilInput
! SUBROUTINE INFORMATION:
! AUTHOR Richard Raustad, FSEC
! DATE WRITTEN Sept 2003
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Obtains input data for this compount object and stores it in data structure
! METHODOLOGY EMPLOYED:
! Uses "Get" routines to read in data.
! REFERENCES:
! USE STATEMENTS:
USE InputProcessor, ONLY: GetNumObjectsFound, GetObjectItem, VerifyName, SameString, GetObjectDefMaxArgs
USE NodeInputManager, ONLY: GetOnlySingleNode
USE DataHeatBalance, ONLY: Zone
USE BranchNodeConnections, ONLY: SetUpCompSets, TestCompSet
USE DXCoils, ONLY: GetDXCoilInletNode=>GetCoilInletNode, GetDXCoilOutletNode=>GetCoilOutletNode, &
GetDXCoilIndex
USE WaterCoils, ONLY: GetWaterCoilInletNode=>GetCoilInletNode, GetWaterCoilOutletNode=>GetCoilOutletNode
USE HeatRecovery, ONLY: GetSupplyInletNode, GetSupplyOutletNode, GetSecondaryInletNode, GetSecondaryOutletNode
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
! na
! SUBROUTINE PARAMETER DEFINITIONS:
CHARACTER(len=*), PARAMETER :: RoutineName = 'GetHXAssistedCoolingCoilInput: ' ! include trailing blank space
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: HXAssistedCoilNum ! Index number of the HXAssistedCoolingCoil for which input data is being read from the idf
INTEGER :: NumAlphas ! Number of alpha inputs
INTEGER :: NumNums ! Number of number inputs
INTEGER :: IOSTAT ! Return status from GetObjectItem call
LOGICAL :: ErrorsFound = .false. ! set TRUE if errors detected in input
LOGICAL :: IsNotOK ! Flag to verify name
LOGICAL :: IsBlank ! Flag for blank name
Integer :: NumHXAssistedDXCoils ! Number of HXAssistedCoolingCoil objects using a DX coil
Integer :: NumHXAssistedWaterCoils ! Number of HXAssistedCoolingCoil objects using a chilled water coil
! LOGICAL :: FanErrFlag ! Error flag for fan operating mode mining call
LOGICAL :: HXErrFlag ! Error flag for HX node numbers mining call
LOGICAL :: CoolingCoilErrFlag ! Error flag for cooling coil node numbers mining call
INTEGER :: SupplyAirInletNode ! supply air inlet node number mined from heat exchanger object (ExchCond structure)
INTEGER :: SupplyAirOutletNode ! supply air outlet node number mined from heat exchanger object (ExchCond structure)
INTEGER :: SecondaryAirInletNode ! secondary air inlet node number mined from heat exchanger object (ExchCond structure)
INTEGER :: SecondaryAirOutletNode ! secondary air outlet node number mined from heat exchanger object (ExchCond structure)
INTEGER :: CoolingCoilInletNodeNum ! outlet node number of cooling coil, used for warning messages
INTEGER :: CoolingCoilOutletNodeNum ! outlet node number of cooling coil, used for warning messages
CHARACTER(len=MaxNameLength) :: CurrentModuleObject ! Object type for getting and error messages
CHARACTER(len=MaxNameLength), ALLOCATABLE, DIMENSION(:) :: AlphArray ! Alpha input items for object
CHARACTER(len=MaxNameLength), ALLOCATABLE, DIMENSION(:) :: cAlphaFields ! Alpha field names
CHARACTER(len=MaxNameLength), ALLOCATABLE, DIMENSION(:) :: cNumericFields ! Numeric field names
REAL(r64), ALLOCATABLE, DIMENSION(:) :: NumArray ! Numeric input items for object
LOGICAL, ALLOCATABLE, DIMENSION(:) :: lAlphaBlanks ! Logical array, alpha field input BLANK = .true.
LOGICAL, ALLOCATABLE, DIMENSION(:) :: lNumericBlanks ! Logical array, numeric field input BLANK = .true.
INTEGER :: MaxNums=0 ! Maximum number of numeric input fields
INTEGER :: MaxAlphas=0 ! Maximum number of alpha input fields
INTEGER :: TotalArgs=0 ! Total number of alpha and numeric arguments (max) for a
NumHXAssistedDXCoils = GetNumObjectsFound('CoilSystem:Cooling:DX:HeatExchangerAssisted')
NumHXAssistedWaterCoils = GetNumObjectsFound('CoilSystem:Cooling:Water:HeatExchangerAssisted')
TotalNumHXAssistedCoils = NumHXAssistedDXCoils + NumHXAssistedWaterCoils
IF (TotalNumHXAssistedCoils.GT.0) THEN
ALLOCATE(HXAssistedCoil(TotalNumHXAssistedCoils))
ALLOCATE(HXAssistedCoilOutletTemp(TotalNumHXAssistedCoils))
ALLOCATE(HXAssistedCoilOutletHumRat(TotalNumHXAssistedCoils))
ALLOCATE(CheckEquipName(TotalNumHXAssistedCoils))
CheckEquipName=.true.
ENDIF
CALL GetObjectDefMaxArgs('CoilSystem:Cooling:DX:HeatExchangerAssisted',TotalArgs,NumAlphas,NumNums)
MaxNums=MAX(MaxNums,NumNums)
MaxAlphas=MAX(MaxAlphas,NumAlphas)
CALL GetObjectDefMaxArgs('CoilSystem:Cooling:Water:HeatExchangerAssisted',TotalArgs,NumAlphas,NumNums)
MaxNums=MAX(MaxNums,NumNums)
MaxAlphas=MAX(MaxAlphas,NumAlphas)
ALLOCATE(AlphArray(MaxAlphas))
AlphArray=' '
ALLOCATE(cAlphaFields(MaxAlphas))
cAlphaFields=' '
ALLOCATE(cNumericFields(MaxNums))
cNumericFields=' '
ALLOCATE(NumArray(MaxNums))
NumArray=0.0d0
ALLOCATE(lAlphaBlanks(MaxAlphas))
lAlphaBlanks=.TRUE.
ALLOCATE(lNumericBlanks(MaxNums))
lNumericBlanks=.TRUE.
! Get the data for the Coil:DX:CoolingHeatExchangerAssisted objects
CurrentModuleObject = 'CoilSystem:Cooling:DX:HeatExchangerAssisted'
DO HXAssistedCoilNum = 1, NumHXAssistedDXCoils
CALL GetObjectItem(CurrentModuleObject,HXAssistedCoilNum,AlphArray,NumAlphas,NumArray,NumNums,IOSTAT, &
NumBlank=lNumericBlanks,AlphaBlank=lAlphaBlanks, &
AlphaFieldNames=cAlphaFields,NumericFieldNames=cNumericFields)
IsNotOK=.false.
IsBlank=.false.
CALL VerifyName(AlphArray(1),HXAssistedCoil%Name, &
HXAssistedCoilNum-1,IsNotOK,IsBlank,TRIM(CurrentModuleObject)//' Name')
IF (IsNotOK) THEN
ErrorsFound=.true.
IF (IsBlank) AlphArray(1)='xxxxx'
ENDIF
HXAssistedCoil(HXAssistedCoilNum)%Name = AlphArray(1)
HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType = AlphArray(2)
HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName = AlphArray(3)
IF(SameString(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType , 'HeatExchanger:AirToAir:SensibleAndLatent')) THEN
HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType_Num = HX_AIRTOAIR_GENERIC
ELSEIF(SameString(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType , 'HeatExchanger:AirToAir:FlatPlate')) THEN
HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType_Num = HX_AIRTOAIR_FLATPLATE
ELSEIF(SameString(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType , 'HeatExchanger:Desiccant:BalancedFlow')) THEN
HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType_Num = HX_DESICCANT_BALANCED
ELSE
CALL ShowWarningError(RoutineName//TRIM(CurrentModuleObject)//'="'//TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
CALL ShowContinueError('Invalid '//trim(cAlphaFields(2))//'="'// &
TRIM(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType)//'"')
ErrorsFound=.true.
END IF
HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType = AlphArray(4)
HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilName = AlphArray(5)
IF(SameString(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType,'Coil:Cooling:DX:SingleSpeed')) THEN
HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType_Num=CoilDX_CoolingSingleSpeed
HXAssistedCoil(HXAssistedCoilNum)%HXAssistedCoilType = TRIM(CurrentModuleObject)
HXAssistedCoil(HXAssistedCoilNum)%HXAssistedCoilType_Num=CoilDX_CoolingHXAssisted
CoolingCoilErrFlag = .FALSE.
CALL GetDXCoilIndex(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilName, &
HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilIndex, &
CoolingCoilErrFlag, HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType)
IF(CoolingCoilErrFlag)THEN
CALL ShowContinueError('...occurs in '//TRIM(CurrentModuleObject)// &
'="'//TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
ErrorsFound=.true.
END IF
ELSE
CALL ShowSevereError(RoutineName//TRIM(CurrentModuleObject)//'="'//TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
CALL ShowContinueError('Invalid '//trim(cAlphaFields(4))//'="'// &
TRIM(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType)//'"')
ErrorsFound=.true.
END IF
HXErrFlag = .FALSE.
SupplyAirInletNode = GetSupplyInletNode(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName, HXErrFlag)
IF(HXErrFlag)THEN
CALL ShowContinueError('...Occurs in '//TRIM(CurrentModuleObject)//'="'// &
TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
END IF
HXErrFlag = .FALSE.
SupplyAirOutletNode = GetSupplyOutletNode(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName, HXErrFlag)
IF(HXErrFlag)THEN
CALL ShowContinueError('...Occurs in '//TRIM(CurrentModuleObject)//'="'// &
TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
END IF
HXErrFlag = .FALSE.
SecondaryAirInletNode = GetSecondaryInletNode(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName, HXErrFlag)
IF(HXErrFlag)THEN
CALL ShowContinueError('...Occurs in '//TRIM(CurrentModuleObject)//'="'// &
TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
END IF
HXErrFlag = .FALSE.
SecondaryAirOutletNode = GetSecondaryOutletNode(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName, HXErrFlag)
IF(HXErrFlag)THEN
CALL ShowContinueError('...Occurs in '//TRIM(CurrentModuleObject)//'="'// &
TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
END IF
IF(SameString(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType,'Coil:Cooling:DX:SingleSpeed')) THEN
! Check node names in heat exchanger and coil objects for consistency
CoolingCoilErrFlag = .FALSE.
CoolingCoilInletNodeNum = &
GetDXCoilInletNode(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType, &
HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilName, CoolingCoilErrFlag)
IF(CoolingCoilErrFlag) THEN
CALL ShowContinueError('...Occurs in '//TRIM(CurrentModuleObject)//'="'// &
TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
ENDIF
IF(SupplyAirOutletNode .NE. CoolingCoilInletNodeNum)THEN
CALL ShowSevereError(RoutineName//TRIM(CurrentModuleObject)//'="'//TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
CALL ShowContinueError('Node names are inconsistent in heat exchanger and cooling coil object.')
CALL ShowContinueError('The supply air outlet node name in heat exchanger = ' &
//TRIM(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType)//'="' &
//TRIM(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName)//'"')
CALL ShowContinueError('must match the cooling coil inlet node name in = ' &
//TRIM(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType)//'="' &
//TRIM(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilName)//'"')
CALL ShowContinueError('Heat exchanger supply air outlet node name="'//TRIM(NodeID(SupplyAirOutletNode))//'"')
CALL ShowContinueError('Cooling coil air inlet node name="' &
//TRIM(NodeID(CoolingCoilInletNodeNum))//'"')
ErrorsFound=.true.
END IF
CoolingCoilErrFlag = .FALSE.
CoolingCoilOutletNodeNum = GetDXCoilOutletNode(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType, &
HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilName, CoolingCoilErrFlag)
IF(CoolingCoilErrFlag) THEN
CALL ShowContinueError('...Occurs in '//TRIM(CurrentModuleObject)//'="'// &
TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
ENDIF
IF(SecondaryAirInletNode .NE. CoolingCoilOutletNodeNum)THEN
CALL ShowSevereError(RoutineName//TRIM(CurrentModuleObject)//'="'//TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
CALL ShowContinueError('Node names are inconsistent in heat exchanger and cooling coil object.')
CALL ShowContinueError('The secondary air inlet node name in heat exchanger =' &
//TRIM(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType)//'="' &
//TRIM(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName)//'"')
CALL ShowContinueError('must match the cooling coil air outlet node name in = ' &
//TRIM(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType)//'="' &
//TRIM(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilName)//'".')
CALL ShowContinueError('Heat exchanger secondary air inlet node name ="'//TRIM(NodeID(SecondaryAirInletNode))//'".')
CALL ShowContinueError('Cooling coil air outlet node name ="' &
//TRIM(NodeID(CoolingCoilOutletNodeNum))//'".')
ErrorsFound=.true.
END IF
END IF
CALL TestCompSet(HXAssistedCoil(HXAssistedCoilNum)%HXAssistedCoilType,HXAssistedCoil(HXAssistedCoilNum)%Name, &
NodeID(SupplyAirInletNode),NodeID(SecondaryAirOutletNode),'Air Nodes')
HXAssistedCoil(HXAssistedCoilNum)%HXAssistedCoilInletNodeNum = &
GetOnlySingleNode(NodeID(SupplyAirInletNode),ErrorsFound, &
TRIM(CurrentModuleObject),HXAssistedCoil(HXAssistedCoilNum)%Name, &
NodeType_Air,NodeConnectionType_Inlet,1,ObjectIsParent)
CoolingCoilInletNodeNum = &
GetOnlySingleNode(NodeID(SupplyAirOutletNode),ErrorsFound, &
TRIM(CurrentModuleObject),HXAssistedCoil(HXAssistedCoilNum)%Name, &
NodeType_Air,NodeConnectionType_Internal,1,ObjectIsParent)
HXAssistedCoil(HXAssistedCoilNum)%HXExhaustAirInletNodeNum = &
GetOnlySingleNode(NodeID(SecondaryAirInletNode),ErrorsFound, &
TRIM(CurrentModuleObject),HXAssistedCoil(HXAssistedCoilNum)%Name, &
NodeType_Air,NodeConnectionType_Internal,1,ObjectIsParent)
HXAssistedCoil(HXAssistedCoilNum)%HXAssistedCoilOutletNodeNum = &
GetOnlySingleNode(NodeID(SecondaryAirOutletNode),ErrorsFound, &
TRIM(CurrentModuleObject),HXAssistedCoil(HXAssistedCoilNum)%Name, &
NodeType_Air,NodeConnectionType_Outlet,1,ObjectIsParent)
! Add cooling coil to component sets array
CALL SetUpCompSets(HXAssistedCoil(HXAssistedCoilNum)%HXAssistedCoilType, HXAssistedCoil(HXAssistedCoilNum)%Name, &
HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType,HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilName, &
NodeID(SupplyAirOutletNode),NodeID(SecondaryAirInletNode), 'Air Nodes')
! Add heat exchanger to component sets array
CALL SetUpCompSets(HXAssistedCoil(HXAssistedCoilNum)%HXAssistedCoilType, HXAssistedCoil(HXAssistedCoilNum)%Name, &
HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType,HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName, &
NodeID(SupplyAirInletNode),NodeID(SupplyAirOutletNode), 'Process Air Nodes')
CALL SetUpCompSets(HXAssistedCoil(HXAssistedCoilNum)%HXAssistedCoilType, HXAssistedCoil(HXAssistedCoilNum)%Name, &
HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType,HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName, &
NodeID(SecondaryAirInletNode),NodeID(SecondaryAirOutletNode), 'Secondary Air Nodes')
END DO ! End of the Coil:DX:CoolingHXAssisted Loop
! Get the data for the Coil:Water:CoolingHeatExchangerAssisted objects
CurrentModuleObject = 'CoilSystem:Cooling:Water:HeatExchangerAssisted'
DO HXAssistedCoilNum = NumHXAssistedDXCoils + 1, NumHXAssistedWaterCoils
CALL GetObjectItem(CurrentModuleObject,HXAssistedCoilNum,AlphArray,NumAlphas,NumArray,NumNums,IOSTAT, &
NumBlank=lNumericBlanks,AlphaBlank=lAlphaBlanks, &
AlphaFieldNames=cAlphaFields,NumericFieldNames=cNumericFields)
IsNotOK=.false.
IsBlank=.false.
CALL VerifyName(AlphArray(1),HXAssistedCoil%Name, &
HXAssistedCoilNum-1,IsNotOK,IsBlank,TRIM(CurrentModuleObject)//' Name')
IF (IsNotOK) THEN
ErrorsFound=.true.
IF (IsBlank) AlphArray(1)='xxxxx'
ENDIF
HXAssistedCoil(HXAssistedCoilNum)%Name = AlphArray(1)
HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType = AlphArray(2)
HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName = AlphArray(3)
IF(SameString(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType,'HeatExchanger:AirToAir:SensibleAndLatent')) THEN
HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType_Num = HX_AIRTOAIR_GENERIC
ELSEIF(SameString(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType,'HeatExchanger:AirToAir:FlatPlate')) THEN
HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType_Num = HX_AIRTOAIR_FLATPLATE
! balanced desiccant HX not allowed with water coils at this time
! ELSEIF(SameString(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType,'HeatExchanger:Desiccant:BalancedFlow')) THEN
! HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType_Num = HX_DESICCANT_BALANCED
ELSE
CALL ShowWarningError(RoutineName//TRIM(CurrentModuleObject)//'="'//TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
CALL ShowContinueError('Invalid '//trim(cAlphaFields(2))//'="'// &
TRIM(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType)//'"')
ErrorsFound=.true.
END IF
HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType = AlphArray(4)
HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilName = AlphArray(5)
HXErrFlag = .FALSE.
SupplyAirInletNode = GetSupplyInletNode(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName, HXErrFlag)
IF(HXErrFlag)THEN
CALL ShowContinueError('...Occurs in '//TRIM(CurrentModuleObject)//'="'// &
TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
END IF
HXErrFlag = .FALSE.
SupplyAirOutletNode = GetSupplyOutletNode(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName, HXErrFlag)
IF(HXErrFlag)THEN
CALL ShowContinueError('...Occurs in '//TRIM(CurrentModuleObject)//'="'// &
TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name))
END IF
HXErrFlag = .FALSE.
SecondaryAirInletNode = GetSecondaryInletNode(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName, HXErrFlag)
IF(HXErrFlag)THEN
CALL ShowContinueError('...Occurs in '//TRIM(CurrentModuleObject)//'="'// &
TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
END IF
HXErrFlag = .FALSE.
SecondaryAirOutletNode = GetSecondaryOutletNode(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName, HXErrFlag)
IF(HXErrFlag)THEN
CALL ShowContinueError('...Occurs in '//TRIM(CurrentModuleObject)//'="'// &
TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
END IF
IF(SameString(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType,'Coil:Cooling:Water') .OR. &
SameString(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType,'Coil:Cooling:Water:DetailedGeometry')) THEN
IF (SameString(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType,'Coil:Cooling:Water:DetailedGeometry')) THEN
HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType_Num = Coil_CoolingWaterDetailed
ELSEIF (SameString(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType,'Coil:Cooling:Water')) THEN
HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType_Num = Coil_CoolingWater
ENDIF
HXAssistedCoil(HXAssistedCoilNum)%HXAssistedCoilType = TRIM(CurrentModuleObject)
HXAssistedCoil(HXAssistedCoilNum)%HXAssistedCoilType_Num = CoilWater_CoolingHXAssisted
! Check node names in heat exchanger and coil objects for consistency
CoolingCoilErrFlag = .FALSE.
CoolingCoilInletNodeNum = GetWaterCoilInletNode(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType, &
HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilName, CoolingCoilErrFlag)
IF(CoolingCoilErrFlag)CALL ShowContinueError('...occurs in '//TRIM(CurrentModuleObject)// &
' "'//TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
IF(SupplyAirOutletNode .NE. CoolingCoilInletNodeNum)THEN
CALL ShowSevereError(RoutineName//TRIM(CurrentModuleObject)//'="'//TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
CALL ShowContinueError('Node names are inconsistent in heat exchanger and cooling coil object.')
CALL ShowContinueError('The supply air outlet node name in heat exchanger = ' &
//TRIM(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType)//'="' &
//TRIM(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName)//'"')
CALL ShowContinueError('must match the cooling coil inlet node name in = ' &
//TRIM(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType)//'="' &
//TRIM(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilName)//'"')
CALL ShowContinueError('Heat exchanger supply air outlet node name ="'//TRIM(NodeID(SupplyAirOutletNode))//'"')
CALL ShowContinueError('Cooling coil air inlet node name = "' &
//TRIM(NodeID(CoolingCoilInletNodeNum))//'"')
ErrorsFound=.true.
END IF
CoolingCoilErrFlag = .FALSE.
CoolingCoilOutletNodeNum = GetWaterCoilOutletNode(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType, &
HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilName, CoolingCoilErrFlag)
IF(CoolingCoilErrFlag)CALL ShowContinueError('...occurs in '//TRIM(CurrentModuleObject)// &
' "'//TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
IF(SecondaryAirInletNode .NE. CoolingCoilOutletNodeNum)THEN
CALL ShowSevereError(RoutineName//TRIM(CurrentModuleObject)//'="'//TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
CALL ShowContinueError('Node names are inconsistent in heat exchanger and cooling coil object.')
CALL ShowContinueError('The secondary air inlet node name in heat exchanger = ' &
//TRIM(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType)//'="' &
//TRIM(HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName)//'"')
CALL ShowContinueError('must match the cooling coil air outlet node name in = ' &
//TRIM(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType)//'="' &
//TRIM(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilName)//'".')
CALL ShowContinueError('Heat exchanger secondary air inlet node name = "'//TRIM(NodeID(SecondaryAirInletNode))//'".')
CALL ShowContinueError('Cooling coil air outlet node name = "' &
//TRIM(NodeID(CoolingCoilOutletNodeNum))//'".')
ErrorsFound=.true.
END IF
ELSE
CALL ShowWarningError(RoutineName//TRIM(CurrentModuleObject)//'="'//TRIM(HXAssistedCoil(HXAssistedCoilNum)%Name)//'"')
CALL ShowContinueError('Invalid '//trim(cAlphaFields(4))//'="'// &
TRIM(HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType)//'"')
ErrorsFound=.true.
END IF
CALL TestCompSet(HXAssistedCoil(HXAssistedCoilNum)%HXAssistedCoilType,HXAssistedCoil(HXAssistedCoilNum)%Name, &
NodeID(SupplyAirInletNode),NodeID(SecondaryAirOutletNode),'Air Nodes')
HXAssistedCoil(HXAssistedCoilNum)%HXAssistedCoilInletNodeNum = &
GetOnlySingleNode(NodeID(SupplyAirInletNode),ErrorsFound, &
TRIM(CurrentModuleObject),HXAssistedCoil(HXAssistedCoilNum)%Name, &
NodeType_Air,NodeConnectionType_Inlet,1,ObjectIsParent)
CoolingCoilInletNodeNum = &
GetOnlySingleNode(NodeID(SupplyAirOutletNode),ErrorsFound, &
TRIM(CurrentModuleObject),HXAssistedCoil(HXAssistedCoilNum)%Name, &
NodeType_Air,NodeConnectionType_Internal,1,ObjectIsParent)
HXAssistedCoil(HXAssistedCoilNum)%HXExhaustAirInletNodeNum = &
GetOnlySingleNode(NodeID(SecondaryAirInletNode),ErrorsFound, &
TRIM(CurrentModuleObject),HXAssistedCoil(HXAssistedCoilNum)%Name, &
NodeType_Air,NodeConnectionType_Internal,1,ObjectIsParent)
HXAssistedCoil(HXAssistedCoilNum)%HXAssistedCoilOutletNodeNum = &
GetOnlySingleNode(NodeID(SecondaryAirOutletNode),ErrorsFound, &
TRIM(CurrentModuleObject),HXAssistedCoil(HXAssistedCoilNum)%Name, &
NodeType_Air,NodeConnectionType_Outlet,1,ObjectIsParent)
! Add cooling coil to component sets array
CALL SetUpCompSets(HXAssistedCoil(HXAssistedCoilNum)%HXAssistedCoilType, HXAssistedCoil(HXAssistedCoilNum)%Name, &
HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilType,HXAssistedCoil(HXAssistedCoilNum)%CoolingCoilName, &
NodeID(SupplyAirOutletNode),NodeID(SecondaryAirInletNode),'Air Nodes')
! Add heat exchanger to component sets array
CALL SetUpCompSets(HXAssistedCoil(HXAssistedCoilNum)%HXAssistedCoilType, HXAssistedCoil(HXAssistedCoilNum)%Name, &
HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType,HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName, &
NodeID(SupplyAirInletNode),NodeID(SupplyAirOutletNode),'Process Air Nodes')
CALL SetUpCompSets(HXAssistedCoil(HXAssistedCoilNum)%HXAssistedCoilType, HXAssistedCoil(HXAssistedCoilNum)%Name, &
HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerType,HXAssistedCoil(HXAssistedCoilNum)%HeatExchangerName, &
NodeID(SecondaryAirInletNode),NodeID(SecondaryAirOutletNode),'Secondary Air Nodes')
END DO !End of the Coil:Water:CoolingHXAssisted Loop
DEALLOCATE(AlphArray)
DEALLOCATE(cAlphaFields)
DEALLOCATE(cNumericFields)
DEALLOCATE(NumArray)
DEALLOCATE(lAlphaBlanks)
DEALLOCATE(lNumericBlanks)
IF (ErrorsFound) THEN
CALL ShowFatalError(RoutineName//'Previous error condition causes termination.')
ENDIF
RETURN
END SUBROUTINE GetHXAssistedCoolingCoilInput