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 | ||
---|---|---|---|---|---|---|
real(kind=r64), | intent(in) | :: | MyLoad | |||
logical, | intent(in) | :: | RunFlag | |||
integer, | intent(in) | :: | Num |
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 UpdateReformEIRChillerRecords(MyLoad,RunFlag,Num)
! SUBROUTINE INFORMATION:
! AUTHOR: Lixing Gu, FSEC
! DATE WRITTEN: July 2006
! PURPOSE OF THIS SUBROUTINE:
! Reporting
! METHODOLOGY EMPLOYED:
! na
! REFERENCES:
! na
! USE STATEMENTS:
USE DataGlobals, ONLY : SecInHour
USE DataHVACGlobals, ONLY : TimeStepSys
USE PlantUtilities, ONLY : SafeCopyPlantNode
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
REAL(r64),INTENT(IN) :: MyLoad ! Current load [W]
LOGICAL, INTENT(IN) :: RunFlag ! TRUE if chiller operating
INTEGER, INTENT(IN) :: Num ! Chiller number
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: EvapInletNode ! Evaporator inlet node number
INTEGER :: EvapOutletNode ! Evaporator outlet node number
INTEGER :: CondInletNode ! Condenser inlet node number
INTEGER :: CondOutletNode ! Condenser outlet node number
INTEGER :: HeatRecInNode ! Node number for the heat recovery water inlet node
INTEGER :: HeatRecOutNode ! Node number for the heat recovery water outlet node
EvapInletNode = ElecReformEIRChiller(Num)%EvapInletNodeNum
EvapOutletNode = ElecReformEIRChiller(Num)%EvapOutletNodeNum
CondInletNode = ElecReformEIRChiller(Num)%CondInletNodeNum
CondOutletNode = ElecReformEIRChiller(Num)%CondOutletNodeNum
HeatRecInNode = ElecReformEIRChiller(Num)%HeatRecInletNodeNum
HeatRecOutNode = ElecReformEIRChiller(Num)%HeatRecOutletNodeNum
IF (MyLoad >= 0.d0 .OR. .NOT. RunFlag) THEN ! Chiller not running so pass inlet states to outlet states
! Set node temperatures
Node(EvapOutletNode)%Temp = Node(EvapInletNode)%Temp
Node(CondOutletNode)%Temp = Node(CondInletNode)%Temp
ElecReformEIRChillerReport(Num)%ChillerPartLoadRatio = 0.0d0
ElecReformEIRChillerReport(Num)%ChillerCyclingRatio = 0.0d0
ElecReformEIRChillerReport(Num)%ChillerFalseLoadRate = 0.0d0
ElecReformEIRChillerReport(Num)%ChillerFalseLoad = 0.0d0
ElecReformEIRChillerReport(Num)%Power = 0.0d0
ElecReformEIRChillerReport(Num)%QEvap = 0.0d0
ElecReformEIRChillerReport(Num)%QCond = 0.0d0
ElecReformEIRChillerReport(Num)%Energy = 0.0d0
ElecReformEIRChillerReport(Num)%EvapEnergy = 0.0d0
ElecReformEIRChillerReport(Num)%CondEnergy = 0.0d0
ElecReformEIRChillerReport(Num)%EvapInletTemp = Node(EvapInletNode)%Temp
ElecReformEIRChillerReport(Num)%CondInletTemp = Node(CondInletNode)%Temp
ElecReformEIRChillerReport(Num)%CondOutletTemp = Node(CondOutletNode)%Temp
ElecReformEIRChillerReport(Num)%EvapOutletTemp = Node(EvapOutletNode)%Temp
ElecReformEIRChillerReport(Num)%Evapmdot = EvapMassFlowRate ! could still be flow if in series
ElecReformEIRChillerReport(Num)%Condmdot = CondMassFlowRate ! could still be flow if in series
ElecReformEIRChillerReport(Num)%ActualCOP = 0.0d0
IF (ElecReformEIRChiller(Num)%HeatRecActive) THEN
CALL SafeCopyPlantNode(HeatRecInNode, HeatRecOutNode)
ElecReformEIRChillerReport(Num)%QHeatRecovery = 0.0d0
ElecReformEIRChillerReport(Num)%EnergyHeatRecovery = 0.0d0
ElecReformEIRChillerReport(Num)%HeatRecInletTemp = Node(HeatRecInNode)%Temp
ElecReformEIRChillerReport(Num)%HeatRecOutletTemp = Node(HeatRecOutNode)%Temp
ElecReformEIRChillerReport(Num)%HeatRecMassFlow = Node(HeatRecInNode)%MassFlowRate
ElecReformEIRChillerReport(Num)%ChillerCondAvgTemp = AvgCondSinkTemp
END IF
ELSE ! Chiller is running, so pass calculated values
! Set node temperatures
Node(EvapOutletNode)%Temp = EvapOutletTemp
Node(CondOutletNode)%Temp = CondOutletTemp
! Set node flow rates; for these load based models
! assume that sufficient evaporator flow rate is available
ElecReformEIRChillerReport(Num)%ChillerPartLoadRatio = ChillerPartLoadRatio
ElecReformEIRChillerReport(Num)%ChillerCyclingRatio = ChillerCyclingRatio
ElecReformEIRChillerReport(Num)%ChillerFalseLoadRate = ChillerFalseLoadRate
ElecReformEIRChillerReport(Num)%ChillerFalseLoad = ChillerFalseLoadRate*TimeStepSys*SecInHour
ElecReformEIRChillerReport(Num)%Power = Power
ElecReformEIRChillerReport(Num)%QEvap = QEvaporator
ElecReformEIRChillerReport(Num)%QCond = QCondenser
ElecReformEIRChillerReport(Num)%Energy = Power*TimeStepSys*SecInHour
ElecReformEIRChillerReport(Num)%EvapEnergy = QEvaporator*TimeStepSys*SecInHour
ElecReformEIRChillerReport(Num)%CondEnergy = QCondenser*TimeStepSys*SecInHour
ElecReformEIRChillerReport(Num)%EvapInletTemp = Node(EvapInletNode)%Temp
ElecReformEIRChillerReport(Num)%CondInletTemp = Node(CondInletNode)%Temp
ElecReformEIRChillerReport(Num)%CondOutletTemp = Node(CondOutletNode)%Temp
ElecReformEIRChillerReport(Num)%EvapOutletTemp = Node(EvapOutletNode)%Temp
ElecReformEIRChillerReport(Num)%Evapmdot = EvapMassFlowRate
ElecReformEIRChillerReport(Num)%Condmdot = CondMassFlowRate
IF (Power .NE. 0.0d0) THEN
ElecReformEIRChillerReport(Num)%ActualCOP = (QEvaporator+ChillerFalseLoadRate)/Power
ELSE
ElecReformEIRChillerReport(Num)%ActualCOP = 0.0d0
END IF
IF (ElecReformEIRChiller(Num)%HeatRecActive) THEN
CALL SafeCopyPlantNode( HeatRecInNode, HeatRecOutNode)
ElecReformEIRChillerReport(Num)%QHeatRecovery = QHeatRecovered
ElecReformEIRChillerReport(Num)%EnergyHeatRecovery = QHeatRecovered*TimeStepSys*SecInHour
Node(HeatRecOutNode)%Temp = HeatRecOutletTemp
ElecReformEIRChillerReport(Num)%HeatRecInletTemp = Node(HeatRecInNode)%Temp
ElecReformEIRChillerReport(Num)%HeatRecOutletTemp = Node(HeatRecOutNode)%Temp
ElecReformEIRChillerReport(Num)%HeatRecMassFlow = Node(HeatRecInNode)%MassFlowRate
ElecReformEIRChillerReport(Num)%ChillerCondAvgTemp = AvgCondSinkTemp
END IF
END IF
ElecReformEIRChillerReport(Num)%ChillerCapFT = ChillerCapFT
ElecReformEIRChillerReport(Num)%ChillerEIRFT = ChillerEIRFT
ElecReformEIRChillerReport(Num)%ChillerEIRFPLR = ChillerEIRFPLR
RETURN
END SUBROUTINE UpdateReformEIRChillerRecords