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) | :: | CoilNum |
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 SizeHeatingCoil(CoilNum)
! SUBROUTINE INFORMATION:
! AUTHOR Fred Buhl
! DATE WRITTEN January 2002
! MODIFIED August 2013 Daeho Kang, add component sizing table entries
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine is for sizing Heating Coil Components for which nominal cpacities have not been
! specified in the input.
! METHODOLOGY EMPLOYED:
! Obtains heating capacities from the zone or system sizing arrays.
! REFERENCES:
! na
! USE STATEMENTS:
USE DataSizing
USE DataAirSystems, ONLY: PrimaryAirSystem
USE DataAirLoop, ONLY: AirLoopControlInfo
USE OutputReportPredefined
USE ReportSizingManager, ONLY: ReportSizingOutput
USE General, ONLY: TrimSigDigits, RoundSigDigits
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
Integer, Intent(IN) :: CoilNum
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
REAL(r64) :: CoilInTemp
REAL(r64) :: CoilOutTemp
REAL(r64) :: CoilOutHumRat
REAL(r64) :: DesCoilLoad
REAL(r64) :: DesPriVolFlow
REAL(r64) :: DesVolFlow
REAL(r64) :: DesMassFlow
REAL(r64) :: CpAir
REAL(r64) :: OutAirFrac
REAL(r64) :: MinPriFlowFrac
REAL(r64) :: RhoAirStd
REAL(r64) :: CpAirStd
INTEGER :: StageNum
INTEGER :: NumOfStages
LOGICAL :: IsAutosize ! Indicator to autosize for reporting
LOGICAL :: ThisStageAutosize ! Indicator to autosize at each stage for reporting
LOGICAL :: HardSizeNoDesRun ! Indicator to hardsize with no sizing runs for reporting
REAL(r64) :: NominalCapacityDes ! Autosized nominal capacity for reporting
REAL(r64) :: NominalCapacityUser ! Hardsized nominal capacity for reporting
! REAL(r64) :: MSNominalCapacityDes ! Autosized multi stage nominal capacity for reporting
! REAL(r64) :: MSNominalCapacityUser ! Hardsized multi stage nominal capacity for reporting
LOGICAL :: SizingDesRunThisAirSys ! true if a particular air system had a Sizing:System object and system sizing done
LOGICAL :: SizingDesRunThisZone ! true if a particular zone had a Sizing:Zone object and zone sizing was done
CoilInTemp = 0.0d0
CoilOutTemp = 0.0d0
CoilOutHumRat = 0.0d0
DesPriVolFlow = 0.0d0
DesCoilLoad = 0.0d0
DesVolFlow = 0.0d0
DesMassFlow = 0.0d0
CpAir = 0.0d0
OutAirFrac = 0.0d0
MinPriFlowFrac = 0.0d0
CpAirStd = PsyCpAirFnWTdb(0.0d0,20.0d0)
RhoAirStd = StdRhoAir
NominalCapacityDes = 0.0d0
NominalCapacityUser = 0.0d0
! MSNominalCapacityDes = 0.0d0
! MSNominalCapacityUser = 0.0d0
IsAutosize = .FALSE.
ThisStageAutosize = .FALSE.
IF (SysSizingRunDone .OR. ZoneSizingRunDone) THEN
HardSizeNoDesRun = .FALSE.
ELSE
HardSizeNoDesRun = .TRUE.
ENDIF
IF (CurSysNum > 0) THEN
CALL CheckThisAirSystemForSizing(CurSysNum, SizingDesRunThisAirSys )
ELSE
SizingDesRunThisAirSys = .FALSE.
ENDIF
IF (CurZoneEqNum > 0) THEN
CALL CheckThisZoneForSizing(CurZoneEqNum, SizingDesRunThisZone)
ELSE
SizingDesRunThisZone = .FALSE.
ENDIF
IF (HeatingCoil(CoilNum)%NominalCapacity == AutoSize) THEN
IsAutosize = .TRUE.
END IF
IF (CurSysNum > 0) THEN
IF (.NOT. IsAutosize .AND. .NOT. SizingDesRunThisAirSys) THEN ! Simulation continue
HardSizeNoDesRun = .TRUE.
IF (HeatingCoil(CoilNum)%NominalCapacity > 0.0d0) THEN
CALL ReportSizingOutput('Coil:'//TRIM(HeatingCoil(CoilNum)%HeatingCoilType)//':' &
//TRIM(HeatingCoil(CoilNum)%HeatingCoilModel), &
HeatingCoil(CoilNum)%Name, 'User-Specified Nominal Capacity [W]', &
HeatingCoil(CoilNum)%NominalCapacity)
END IF
ELSE ! Autosize or hardsize with sizing data
CALL CheckSysSizing('Coil:'//TRIM(HeatingCoil(CoilNum)%HeatingCoilType)//':'//TRIM(HeatingCoil(CoilNum)%HeatingCoilModel), &
HeatingCoil(CoilNum)%Name)
IF (CurOASysNum > 0) THEN
IF(OASysEqSizing(CurOASysNum)%AirFlow)THEN
DesVolFlow = OASysEqSizing(CurOASysNum)%AirVolFlow
ELSE
DesVolFlow = FinalSysSizing(CurSysNum)%DesOutAirVolFlow
END IF
ELSE
IF(UnitarySysEqSizing(CurSysNum)%AirFlow)THEN
DesVolFlow = UnitarySysEqSizing(CurSysNum)%AirVolFlow
ELSE
SELECT CASE(CurDuctType)
CASE(Main)
DesVolFlow = FinalSysSizing(CurSysNum)%SysAirMinFlowRat*FinalSysSizing(CurSysNum)%DesMainVolFlow
CASE(Cooling)
DesVolFlow = FinalSysSizing(CurSysNum)%SysAirMinFlowRat*FinalSysSizing(CurSysNum)%DesCoolVolFlow
CASE(Heating)
DesVolFlow = FinalSysSizing(CurSysNum)%DesHeatVolFlow
CASE(Other)
DesVolFlow = FinalSysSizing(CurSysNum)%DesMainVolFlow
CASE DEFAULT
DesVolFlow = FinalSysSizing(CurSysNum)%DesMainVolFlow
END SELECT
END IF
END IF
DesMassFlow = RhoAirStd*DesVolFlow
! get the outside air fraction
IF (CurOASysNum > 0) THEN
OutAirFrac = 1.0d0
ELSE IF (FinalSysSizing(CurSysNum)%HeatOAOption == MinOA) THEN
IF (DesVolFlow > 0.0d0) THEN
OutAirFrac = FinalSysSizing(CurSysNum)%DesOutAirVolFlow / DesVolFlow
ELSE
OutAirFrac = 1.0d0
END IF
OutAirFrac = MIN(1.0d0,MAX(0.0d0,OutAirFrac))
ELSE
OutAirFrac = 1.0d0
END IF
! coil inlet temperature
IF (CurOASysNum == 0 .AND. PrimaryAirSystem(CurSysNum)%NumOAHeatCoils > 0) THEN
CoilInTemp = OutAirFrac*FinalSysSizing(CurSysNum)%PreheatTemp + &
(1.0d0-OutAirFrac)*FinalSysSizing(CurSysNum)%HeatRetTemp
ELSE
CoilInTemp = OutAirFrac*FinalSysSizing(CurSysNum)%HeatOutTemp + &
(1.0d0-OutAirFrac)*FinalSysSizing(CurSysNum)%HeatRetTemp
END IF
! coil load
IF (CurOASysNum > 0) THEN
IF(OASysEqSizing(CurOASysNum)%Capacity)THEN
DesCoilLoad = OASysEqSizing(CurOASysNum)%DesHeatingLoad
ELSE
DesCoilLoad = CpAirStd*DesMassFlow*(FinalSysSizing(CurSysNum)%PreheatTemp - CoilInTemp)
END IF
ELSE
IF(UnitarySysEqSizing(CurSysNum)%Capacity)THEN
DesCoilLoad = UnitarySysEqSizing(CurSysNum)%DesHeatingLoad
ELSE
DesCoilLoad = CpAirStd*DesMassFlow*(FinalSysSizing(CurSysNum)%HeatSupTemp - CoilInTemp)
END IF
END IF
IF (AirLoopControlInfo(CurSysNum)%UnitarySys) THEN
IF (CoilIsSuppHeater) THEN
NominalCapacityDes = SuppHeatCap
ELSE
! TRUE for all air loop parent equipment except UnitarySystem where flag is reset to FALSE after simulating
! This method allows downstream heating coils to size individually. Probably should do this for all air loop equipment
! ChangoverBypass model always sets AirLoopControlInfo%UnitarySys to FALSE so heating coil can individually size
IF(AirLoopControlInfo(CurSysNum)%UnitarySysSimulating)THEN
NominalCapacityDes = UnitaryHeatCap
ELSE
IF (DesCoilLoad >= SmallLoad) THEN
NominalCapacityDes = DesCoilLoad
ELSE
NominalCapacityDes = 0.0d0
END IF
END IF
END IF
ELSE
IF (DesCoilLoad >= SmallLoad) THEN
NominalCapacityDes = DesCoilLoad
ELSE
NominalCapacityDes = 0.0d0
END IF
END IF
END IF
ELSE IF (CurZoneEqNum > 0) THEN
IF (.NOT. IsAutosize .AND. .NOT. SizingDesRunThisZone) THEN ! Simulation continue
HardSizeNoDesRun = .TRUE.
IF (HeatingCoil(CoilNum)%NominalCapacity > 0.0d0) THEN
CALL ReportSizingOutput('Coil:'//TRIM(HeatingCoil(CoilNum)%HeatingCoilType)//':' &
//TRIM(HeatingCoil(CoilNum)%HeatingCoilModel), &
HeatingCoil(CoilNum)%Name, 'User-Specified Nominal Capacity [W]', &
HeatingCoil(CoilNum)%NominalCapacity)
END IF
ELSE ! Autosize or hardsize with sizing data
CALL CheckZoneSizing('Coil:'//TRIM(HeatingCoil(CoilNum)%HeatingCoilType)//':'//TRIM(HeatingCoil(CoilNum)%HeatingCoilModel), &
HeatingCoil(CoilNum)%Name)
IF(ZoneEqSizing(CurZoneEqNum)%Capacity)THEN
NominalCapacityDes = ZoneEqSizing(CurZoneEqNum)%DesHeatingLoad
ELSE IF (FinalZoneSizing(CurZoneEqNum)%DesHeatMassFlow >= SmallMassFlow) THEN
IF (TermUnitPIU) THEN
MinPriFlowFrac = TermUnitSizing(CurZoneEqNum)%MinFlowFrac
IF (TermUnitSizing(CurZoneEqNum)%InducesPlenumAir) THEN
CoilInTemp = FinalZoneSizing(CurZoneEqNum)%DesHeatCoilInTempTU * MinPriFlowFrac + &
FinalZoneSizing(CurZoneEqNum)%ZoneRetTempAtHeatPeak * (1.0d0 - MinPriFlowFrac)
ELSE
CoilInTemp = FinalZoneSizing(CurZoneEqNum)%DesHeatCoilInTempTU * MinPriFlowFrac + &
FinalZoneSizing(CurZoneEqNum)%ZoneTempAtHeatPeak * (1.0d0 - MinPriFlowFrac)
END IF
ELSE IF (TermUnitIU) THEN
CoilInTemp = FinalZoneSizing(CurZoneEqNum)%ZoneTempAtHeatPeak
ELSE IF (TermUnitSingDuct) THEN
CoilInTemp = FinalZoneSizing(CurZoneEqNum)%DesHeatCoilInTempTU
ELSE
CoilInTemp = FinalZoneSizing(CurZoneEqNum)%DesHeatCoilInTemp
END IF
IF (TermUnitSingDuct .OR. TermUnitPIU) THEN
CoilOutTemp = FinalZoneSizing(CurZoneEqNum)%HeatDesTemp
CoilOutHumRat = FinalZoneSizing(CurZoneEqNum)%HeatDesHumRat
CpAir = PsyCpAirFnWTdb(CoilOutHumRat, 0.5d0*(CoilInTemp+CoilOutTemp))
DesCoilLoad = CpAir * RhoAirStd * TermUnitSizing(CurZoneEqNum)%AirVolFlow * (CoilOutTemp-CoilInTemp)
ELSE IF (TermUnitIU) THEN
IF (TermUnitSizing(CurZoneEqNum)%InducRat > 0.01d0) THEN
DesPriVolFlow = TermUnitSizing(CurZoneEqNum)%AirVolFlow / TermUnitSizing(CurZoneEqNum)%InducRat
CpAir = PsyCpAirFnWTdb(FinalZoneSizing(CurZoneEqNum)%HeatDesHumRat,FinalZoneSizing(CurZoneEqNum)%HeatDesTemp)
! the design heating coil load is the zone load minus whatever the central system does. Note that
! DesHeatCoilInTempTU is really the primary air inlet temperature for the unit.
DesCoilLoad = FinalZoneSizing(CurZoneEqNum)%DesHeatLoad - CpAir*RhoAirStd*DesPriVolFlow* &
(FinalZoneSizing(CurZoneEqNum)%DesHeatCoilInTempTU - FinalZoneSizing(CurZoneEqNum)%ZoneTempAtHeatPeak)
ELSE
DesCoilLoad = 0.0d0
END IF
ELSE
CoilOutTemp = FinalZoneSizing(CurZoneEqNum)%HeatDesTemp
CoilOutHumRat = FinalZoneSizing(CurZoneEqNum)%HeatDesHumRat
CpAir = PsyCpAirFnWTdb(CoilOutHumRat, 0.5d0*(CoilInTemp+CoilOutTemp))
DesCoilLoad = CpAir * FinalZoneSizing(CurZoneEqNum)%DesHeatMassFlow * (CoilOutTemp-CoilInTemp)
END IF
NominalCapacityDes = MAX(0.0d0,DesCoilLoad)
ELSE
NominalCapacityDes = 0.0d0
END IF
END IF
END IF
IF (.NOT. HardSizeNoDesRun) THEN
IF (IsAutosize) THEN
HeatingCoil(CoilNum)%NominalCapacity = NominalCapacityDes
CALL ReportSizingOutput('Coil:'//TRIM(HeatingCoil(CoilNum)%HeatingCoilType)//':' &
//TRIM(HeatingCoil(CoilNum)%HeatingCoilModel), &
HeatingCoil(CoilNum)%Name, 'Design Size Nominal Capacity [W]', NominalCapacityDes)
ELSE
IF (HeatingCoil(CoilNum)%NominalCapacity > 0.0d0 .AND. NominalCapacityDes > 0.0d0) THEN
NominalCapacityUser = HeatingCoil(CoilNum)%NominalCapacity
CALL ReportSizingOutput('Coil:'//TRIM(HeatingCoil(CoilNum)%HeatingCoilType)//':' &
//TRIM(HeatingCoil(CoilNum)%HeatingCoilModel), &
HeatingCoil(CoilNum)%Name, 'Design Size Nominal Capacity [W]', NominalCapacityDes, &
'User-Specified Nominal Capacity [W]', NominalCapacityUser)
IF (DisplayExtraWarnings) THEN
IF ((ABS(NominalCapacityDes - NominalCapacityUser)/NominalCapacityUser ) > AutoVsHardSizingThreshold) THEN
CALL ShowMessage('SizeHeatingCoil: Potential issue with equipment sizing for ' &
//TRIM(HeatingCoil(CoilNum)%HeatingCoilType)//' '// &
TRIM(HeatingCoil(CoilNum)%HeatingCoilModel)//', '//TRIM(HeatingCoil(CoilNum)%Name))
CALL ShowContinueError('User-Specified Nominal Capacity of '// &
TRIM(RoundSigDigits(NominalCapacityUser,2))// ' [W]')
CALL ShowContinueError('differs from Design Size Nominal Capacity of ' // &
TRIM(RoundSigDigits(NominalCapacityDes,2))// ' [W]')
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
IF (HeatingCoil(CoilNum)%HCoilType_Num .EQ. Coil_HeatingElectric_MultiStage .OR. &
HeatingCoil(CoilNum)%HCoilType_Num .EQ. Coil_HeatingGas_MultiStage ) THEN
IsAutosize = .FALSE.
IF (ANY(HeatingCoil(CoilNum)%MSNominalCapacity == AutoSize)) THEN
IsAutosize = .TRUE.
END IF
IF (IsAutosize) THEN
NumOfStages = HeatingCoil(CoilNum)%NumOfStages
DO StageNum=NumOfStages, 1, -1
IF (HeatingCoil(CoilNum)%MSNominalCapacity(StageNum) == AutoSize) THEN
ThisStageAutosize = .TRUE.
END IF
IF (StageNum .EQ. NumOfStages) THEN
IF (CoilIsSuppHeater) THEN
NominalCapacityDes = SuppHeatCap
ELSE
IF(AirLoopControlInfo(CurSysNum)%UnitarySysSimulating)THEN
NominalCapacityDes = UnitaryHeatCap
ELSE
IF (DesCoilLoad >= SmallLoad) THEN
NominalCapacityDes = DesCoilLoad
ELSE
NominalCapacityDes = 0.0d0
END IF
END IF
END IF
ELSE
NominalCapacityDes = HeatingCoil(CoilNum)%MSNominalCapacity(NumOfStages) * &
StageNum / NumOfStages
ENDIF
IF (ThisStageAutosize) THEN
HeatingCoil(CoilNum)%MSNominalCapacity(StageNum) = NominalCapacityDes
CALL ReportSizingOutput('Coil:'//TRIM(HeatingCoil(CoilNum)%HeatingCoilType)//':' &
//TRIM(HeatingCoil(CoilNum)%HeatingCoilModel), HeatingCoil(CoilNum)%Name, 'Stage ' &
//TRIM(TrimSigDigits(StageNum))//' Design Size Nominal Capacity [W]', NominalCapacityDes)
ELSE
IF (HeatingCoil(CoilNum)%MSNominalCapacity(StageNum) > 0.0d0 .AND. NominalCapacityDes > 0.0d0) THEN
NominalCapacityUser = HeatingCoil(CoilNum)%MSNominalCapacity(StageNum)
CALL ReportSizingOutput('Coil:'//TRIM(HeatingCoil(CoilNum)%HeatingCoilType)//':' &
//TRIM(HeatingCoil(CoilNum)%HeatingCoilModel), HeatingCoil(CoilNum)%Name, 'Stage ' &
//TRIM(TrimSigDigits(StageNum))//' Design Size Nominal Capacity [W]', NominalCapacityDes, &
' User-Specified Nominal Capacity [W]', NominalCapacityUser)
IF (DisplayExtraWarnings) THEN
IF ((ABS(NominalCapacityDes - NominalCapacityUser)/NominalCapacityUser) > AutoVsHardSizingThreshold) THEN
CALL ShowMessage('SizeHeatingCoil: Potential issue with equipment sizing for ' &
//TRIM(HeatingCoil(CoilNum)%HeatingCoilType)//' '// &
TRIM(HeatingCoil(CoilNum)%HeatingCoilModel)//', '//TRIM(HeatingCoil(CoilNum)%Name))
CALL ShowContinueError('User-Specified Nominal Capacity of '// &
TRIM(RoundSigDigits(NominalCapacityUser,2))// ' [W]')
CALL ShowContinueError('differs from Design Size Nominal Capacity of ' // &
TRIM(RoundSigDigits(NominalCapacityDes,2))// ' [W]')
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
ENDIF
END DO
ELSE ! No autosize
NumOfStages = HeatingCoil(CoilNum)%NumOfStages
DO StageNum=NumOfStages, 1, -1
IF (HeatingCoil(CoilNum)%MSNominalCapacity(StageNum) > 0.0d0) THEN
CALL ReportSizingOutput('Coil:'//TRIM(HeatingCoil(CoilNum)%HeatingCoilType)//':' &
//TRIM(HeatingCoil(CoilNum)%HeatingCoilModel), HeatingCoil(CoilNum)%Name, 'Stage ' &
//TRIM(TrimSigDigits(StageNum))//' User-Specified Nominal Capacity [W]', &
HeatingCoil(CoilNum)%MSNominalCapacity(StageNum))
END IF
END DO
ENDIF
! Ensure capacity at lower Stage must be lower or equal to the capacity at higher Stage.
!IF (IsAutosize) THEN
Do StageNum = 1,HeatingCoil(CoilNum)%NumOfStages-1
If (HeatingCoil(CoilNum)%MSNominalCapacity(StageNum) .GT. HeatingCoil(CoilNum)%MSNominalCapacity(StageNum+1)) Then
CALL ShowSevereError('SizeHeatingCoil: '//TRIM(HeatingCoil(CoilNum)%HeatingCoilType)//' '// &
TRIM(HeatingCoil(CoilNum)%Name)//', '// 'Stage '//TRIM(TrimSigDigits(StageNum)) &
//' Nominal Capacity ('//TRIM(RoundSigDigits(HeatingCoil(CoilNum)%MSNominalCapacity(StageNum),2)) &
//' W) must be less than or equal to '//'Stage '//TRIM(TrimSigDigits(StageNum+1)) &
//' Nominal Capacity ('//TRIM(RoundSigDigits(HeatingCoil(CoilNum)%MSNominalCapacity(StageNum+1),2))//' W).')
CALL ShowFatalError('Preceding conditions cause termination.')
End If
End Do
!ENDIF
END IF
!create predefined report entries
SELECT CASE (HeatingCoil(CoilNum)%HCoilType_Num)
CASE (Coil_HeatingElectric)
CALL PreDefTableEntry(pdchHeatCoilType,HeatingCoil(CoilNum)%Name,'Coil:Heating:Electric')
CALL PreDefTableEntry(pdchHeatCoilNomCap,HeatingCoil(CoilNum)%Name,HeatingCoil(CoilNum)%NominalCapacity)
CALL PreDefTableEntry(pdchHeatCoilNomEff,HeatingCoil(CoilNum)%Name,HeatingCoil(CoilNum)%Efficiency)
CASE (Coil_HeatingElectric_MultiStage)
CALL PreDefTableEntry(pdchHeatCoilType,HeatingCoil(CoilNum)%Name,'Coil:Heating:Electric:MultiStage')
CALL PreDefTableEntry(pdchHeatCoilNomCap,HeatingCoil(CoilNum)%Name, &
HeatingCoil(CoilNum)%MSNominalCapacity(HeatingCoil(CoilNum)%NumOfStages))
CALL PreDefTableEntry(pdchHeatCoilNomEff,HeatingCoil(CoilNum)%Name, &
HeatingCoil(CoilNum)%MSEfficiency(HeatingCoil(CoilNum)%NumOfStages))
CASE (Coil_HeatingGas)
CALL PreDefTableEntry(pdchHeatCoilType,HeatingCoil(CoilNum)%Name,'Coil:Heating:Gas')
CALL PreDefTableEntry(pdchHeatCoilNomCap,HeatingCoil(CoilNum)%Name,HeatingCoil(CoilNum)%NominalCapacity)
CALL PreDefTableEntry(pdchHeatCoilNomEff,HeatingCoil(CoilNum)%Name,HeatingCoil(CoilNum)%Efficiency)
CASE (Coil_HeatingGas_MultiStage)
CALL PreDefTableEntry(pdchHeatCoilType,HeatingCoil(CoilNum)%Name,'Coil:Heating:Gas:MultiStage')
CALL PreDefTableEntry(pdchHeatCoilNomCap,HeatingCoil(CoilNum)%Name, &
HeatingCoil(CoilNum)%MSNominalCapacity(HeatingCoil(CoilNum)%NumOfStages))
CALL PreDefTableEntry(pdchHeatCoilNomEff,HeatingCoil(CoilNum)%Name, &
HeatingCoil(CoilNum)%MSEfficiency(HeatingCoil(CoilNum)%NumOfStages))
CASE (Coil_HeatingDesuperheater)
CALL PreDefTableEntry(pdchHeatCoilType,HeatingCoil(CoilNum)%Name,'Coil:Heating:Desuperheater')
CALL PreDefTableEntry(pdchHeatCoilNomCap,HeatingCoil(CoilNum)%Name,HeatingCoil(CoilNum)%NominalCapacity)
CALL PreDefTableEntry(pdchHeatCoilNomEff,HeatingCoil(CoilNum)%Name,HeatingCoil(CoilNum)%Efficiency)
END SELECT
RETURN
END SUBROUTINE SizeHeatingCoil