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) | :: | RadSysNum | |||
integer, | intent(in) | :: | SystemType |
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 ReportLowTempRadiantSystem(RadSysNum,SystemType)
! SUBROUTINE INFORMATION:
! AUTHOR Rick Strand
! DATE WRITTEN November 2000
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine simply produces output for the low temperature radiant system.
! METHODOLOGY EMPLOYED:
! Standard EnergyPlus methodology.
! REFERENCES:
! na
! USE STATEMENTS:
USE DataGlobals, ONLY : SecInHour
USE DataHeatBalance, ONLY : Zone
USE DataHVACGlobals, ONLY : TimeStepSys
USE DataLoopNode, ONLY : Node
USE DataSurfaces, ONLY : Surface
USE FluidProperties, ONLY : GetSpecificHeatGlycol
USE DataPlant, ONLY : PlantLoop
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER, INTENT(IN) :: RadSysNum ! Index for the low temperature radiant system under consideration within the derived types
INTEGER, INTENT(IN) :: SystemType ! Type of radiant system: hydronic, constant flow, or electric
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
REAL(r64) :: CpFluid ! Specific heat of the fluid in the radiant system
INTEGER :: RadSurfNum ! DO loop counter for radiant surfaces in the system
INTEGER :: SurfNum ! Surface number (index) in Surface derived type
REAL(r64) :: TotalRadSysPower ! Total source/sink power for the radiant system (sum of all surfaces of the system)
REAL(r64) :: ZoneMult ! Total zone multiplier to apply to the system level variables
! FLOW:
TotalRadSysPower = 0.0d0
ZoneMult = 1.0d0
SELECT CASE (SystemType)
CASE (HydronicSystem)
DO RadSurfNum = 1, HydrRadSys(RadSysNum)%NumOfSurfaces
SurfNum = HydrRadSys(RadSysNum)%SurfacePtr(RadSurfNum)
TotalRadSysPower = TotalRadSysPower + QRadSysSource(SurfNum)
END DO
ZoneMult = REAL(Zone(HydrRadSys(RadSysNum)%ZonePtr)%Multiplier * &
Zone(HydrRadSys(RadSysNum)%ZonePtr)%ListMultiplier,r64)
TotalRadSysPower = ZoneMult * TotalRadSysPower
HydrRadSys(RadSysNum)%HeatPower = 0.0d0
HydrRadSys(RadSysNum)%CoolPower = 0.0d0
SELECT CASE (OperatingMode)
CASE (HeatingMode)
HydrRadSys(RadSysNum)%WaterInletTemp = Node(HydrRadSys(RadSysNum)%HotWaterInNode)%Temp
HydrRadSys(RadSysNum)%WaterOutletTemp = Node(HydrRadSys(RadSysNum)%HotWaterOutNode)%Temp
HydrRadSys(RadSysNum)%WaterMassFlowRate = Node(HydrRadSys(RadSysNum)%HotWaterInNode)%MassFlowRate
HydrRadSys(RadSysNum)%HeatPower = TotalRadSysPower
CASE (CoolingMode)
HydrRadSys(RadSysNum)%WaterInletTemp = Node(HydrRadSys(RadSysNum)%ColdWaterInNode)%Temp
HydrRadSys(RadSysNum)%WaterOutletTemp = Node(HydrRadSys(RadSysNum)%ColdWaterOutNode)%Temp
HydrRadSys(RadSysNum)%WaterMassFlowRate = Node(HydrRadSys(RadSysNum)%ColdWaterInNode)%MassFlowRate
HydrRadSys(RadSysNum)%CoolPower = -TotalRadSysPower
CASE DEFAULT ! Not Operating: Leave temperatures at previous values
HydrRadSys(RadSysNum)%WaterMassFlowRate = 0.0d0
HydrRadSys(RadSysNum)%WaterOutletTemp = HydrRadSys(RadSysNum)%WaterInletTemp
END SELECT
HydrRadSys(RadSysNum)%HeatEnergy = HydrRadSys(RadSysNum)%HeatPower*TimeStepSys*SecInHour
HydrRadSys(RadSysNum)%CoolEnergy = HydrRadSys(RadSysNum)%CoolPower*TimeStepSys*SecInHour
IF (HydrRadSys(RadSysNum)%CondCausedShutDown) THEN
HydrRadSys(RadSysNum)%CondCausedTimeOff = TimeStepSys*SecInHour
ELSE
HydrRadSys(RadSysNum)%CondCausedTimeOff = 0.0d0
END IF
CASE (ConstantFlowSystem)
DO RadSurfNum = 1, CFloRadSys(RadSysNum)%NumOfSurfaces
SurfNum = CFloRadSys(RadSysNum)%SurfacePtr(RadSurfNum)
TotalRadSysPower = TotalRadSysPower + QRadSysSource(SurfNum)
END DO
ZoneMult = REAL(Zone(CFloRadSys(RadSysNum)%ZonePtr)%Multiplier * &
Zone(CFloRadSys(RadSysNum)%ZonePtr)%ListMultiplier,r64)
TotalRadSysPower = ZoneMult * TotalRadSysPower
CFloRadSys(RadSysNum)%HeatPower = 0.0d0
CFloRadSys(RadSysNum)%CoolPower = 0.0d0
SELECT CASE (OperatingMode)
! Note that temperatures have already been set as part of the simulation
! step. So, they do not need to be calculated here except for the pump
! inlet temperature which was not calculated elsewhere. If the system is
! not operating, leave the temperatures with their previous values but
! zero out the flow and power quantities (should have already been done
! in another routine, but just in case...).
CASE (HeatingMode)
CpFluid = GetSpecificHeatGlycol(PlantLoop(CFloRadSys(RadSysNum)%HWLoopNum)%FluidName,&
Node(CFloRadSys(RadSysNum)%HotWaterInNode)%Temp, &
PlantLoop(CFloRadSys(RadSysNum)%HWLoopNum)%FluidIndex,&
'ReportLowTempRadiantSystem')
CFloRadSys(RadSysNum)%HeatPower = TotalRadSysPower
IF (CFloRadSys(RadSysNum)%PumpMassFlowRate > 0.D0) THEN
CFloRadSys(RadSysNum)%PumpInletTemp = CFloRadSys(RadSysNum)%WaterInletTemp &
-( CFloRadSys(RadSysNum)%PumpHeattoFluid &
/(CFloRadSys(RadSysNum)%PumpMassFlowRate*CpFluid) )
ELSE
CFloRadSys(RadSysNum)%PumpInletTemp = CFloRadSys(RadSysNum)%WaterInletTemp
ENDIF
CASE (CoolingMode)
CpFluid = GetSpecificHeatGlycol(PlantLoop(CFloRadSys(RadSysNum)%CWLoopNum)%FluidName, &
Node(CFloRadSys(RadSysNum)%ColdWaterInNode)%Temp, &
PlantLoop(CFloRadSys(RadSysNum)%CWLoopNum)%FluidIndex,&
'ReportLowTempRadiantSystem')
CFloRadSys(RadSysNum)%CoolPower = -TotalRadSysPower
CFloRadSys(RadSysNum)%PumpInletTemp = CFloRadSys(RadSysNum)%WaterInletTemp &
-( CFloRadSys(RadSysNum)%PumpHeattoFluid &
/(CFloRadSys(RadSysNum)%PumpMassFlowRate*CpFluid) )
CASE DEFAULT ! Not Operating
CFloRadSys(RadSysNum)%WaterOutletTemp = CFloRadSys(RadSysNum)%WaterInletTemp
CFloRadSys(RadSysNum)%PumpInletTemp = CFloRadSys(RadSysNum)%WaterInletTemp
CFloRadSys(RadSysNum)%WaterMassFlowRate = 0.0d0
CFloRadSys(RadSysNum)%WaterInjectionRate = 0.0d0
CFloRadSys(RadSysNum)%WaterRecircRate = 0.0d0
CFloRadSys(RadSysNum)%HeatPower = 0.0d0
CFloRadSys(RadSysNum)%CoolPower = 0.0d0
CFloRadSys(RadSysNum)%PumpPower = 0.0d0
CFloRadSys(RadSysNum)%PumpMassFlowRate = 0.0d0
CFloRadSys(RadSysNum)%PumpHeattoFluid = 0.0d0
END SELECT
CFloRadSys(RadSysNum)%HeatEnergy = CFloRadSys(RadSysNum)%HeatPower*TimeStepSys*SecInHour
CFloRadSys(RadSysNum)%CoolEnergy = CFloRadSys(RadSysNum)%CoolPower*TimeStepSys*SecInHour
CFloRadSys(RadSysNum)%PumpEnergy = CFloRadSys(RadSysNum)%PumpPower*TimeStepSys*SecInHour
CFloRadSys(RadSysNum)%PumpHeattoFluidEnergy = CFloRadSys(RadSysNum)%PumpHeattoFluid*TimeStepSys*SecInHour
IF (CFloRadSys(RadSysNum)%CondCausedShutDown) THEN
CFloRadSys(RadSysNum)%CondCausedTimeOff = TimeStepSys*SecInHour
ELSE
CFloRadSys(RadSysNum)%CondCausedTimeOff = 0.0d0
END IF
CASE (ElectricSystem)
DO RadSurfNum = 1, ElecRadSys(RadSysNum)%NumOfSurfaces
SurfNum = ElecRadSys(RadSysNum)%SurfacePtr(RadSurfNum)
TotalRadSysPower = TotalRadSysPower + QRadSysSource(SurfNum)
END DO
ZoneMult = REAL(Zone(ElecRadSys(RadSysNum)%ZonePtr)%Multiplier * &
Zone(ElecRadSys(RadSysNum)%ZonePtr)%ListMultiplier,r64)
TotalRadSysPower = ZoneMult * TotalRadSysPower
ElecRadSys(RadSysNum)%ElecPower = TotalRadSysPower
ElecRadSys(RadSysNum)%ElecEnergy = ElecRadSys(RadSysNum)%ElecPower*TimeStepSys*SecInHour
ElecRadSys(RadSysNum)%HeatPower = ElecRadSys(RadSysNum)%ElecPower
ElecRadSys(RadSysNum)%HeatEnergy = ElecRadSys(RadSysNum)%ElecEnergy
END SELECT
RETURN
END SUBROUTINE ReportLowTempRadiantSystem