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) | :: | ChillNum |
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 UpdateExhaustAbsorberCoolRecords(MyLoad,RunFlag,ChillNum)
! SUBROUTINE INFORMATION:
! AUTHOR Jason Glazer
! DATE WRITTEN March 2001
! PURPOSE OF THIS SUBROUTINE:
! reporting
! METHODOLOGY EMPLOYED: na
! REFERENCES: na
! USE STATEMENTS: na
USE DataHVACGlobals, ONLY : TimeStepSys
IMPLICIT NONE
! SUBROUTINE ARGUMENT DEFINITIONS:
REAL(r64),INTENT(IN) :: MyLoad ! current load
LOGICAL, INTENT(IN) :: RunFlag ! TRUE if Absorber operating
INTEGER, INTENT(IN) :: ChillNum ! Absorber number
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: lChillReturnNodeNum ! Node number on the inlet side of the plant
INTEGER :: lChillSupplyNodeNum ! Node number on the outlet side of the plant
INTEGER :: lCondReturnNodeNum ! Node number on the inlet side of the condenser
INTEGER :: lCondSupplyNodeNum ! Node number on the outlet side of the condenser
! MBadded
INTEGER :: lExhaustAirInletNodeNum ! Node number on the inlet side of the plant
! INTEGER :: lExhaustAirOutletNodeNum ! Node number on the outlet side of the plant
REAL(r64) :: RptConstant
! BEGIN ROUTINE
lChillReturnNodeNum = ExhaustAbsorber(ChillNum)%ChillReturnNodeNum
lChillSupplyNodeNum = ExhaustAbsorber(ChillNum)%ChillSupplyNodeNum
lCondReturnNodeNum = ExhaustAbsorber(ChillNum)%CondReturnNodeNum
lCondSupplyNodeNum = ExhaustAbsorber(ChillNum)%CondSupplyNodeNum
lExhaustAirInletNodeNum = ExhaustAbsorber(ChillNum)%ExhaustAirInletNodeNum
IF (MyLoad==0 .OR. .NOT. RunFlag)THEN
!set node temperatures
Node(lChillSupplyNodeNum)%Temp = Node(lChillReturnNodeNum)%Temp
Node(lCondSupplyNodeNum)%Temp = Node(lCondReturnNodeNum)%Temp
Node(lExhaustAirInletNodeNum)%Temp = Node(lExhaustAirInletNodeNum)%Temp
!set node flow rates
!Update Outlet Conditions so that same as Inlet, so component
!can be bypassed if necessary
!FlowResolver/EnforceSplitterContinuity will determine flow
!received, whether component is running or not.
!
! Node(lChillReturnNodeNum)%MassFlowRate = ExhaustAbsorberReport(ChillNum)%ChillWaterFlowRate
! Node(lChillSupplyNodeNum)%MassFlowRate = ExhaustAbsorberReport(ChillNum)%ChillWaterFlowRate
! Node(lCondReturnNodeNum)%MassFlowRate = ExhaustAbsorberReport(ChillNum)%CondWaterFlowRate
! Node(lCondSupplyNodeNum)%MassFlowRate = ExhaustAbsorberReport(ChillNum)%CondWaterFlowRate
Node(lExhaustAirInletNodeNum)%MassFlowRate = ExhaustAbsorberReport(ChillNum)%ExhaustInFlow
ELSE
!set node temperatures
Node(lChillSupplyNodeNum)%Temp = ExhaustAbsorberReport(ChillNum)%ChillSupplyTemp
Node(lCondSupplyNodeNum)%Temp = ExhaustAbsorberReport(ChillNum)%CondSupplyTemp
!set node flow rates; for these load based models
!assume that the sufficient evaporator flow rate available
! Node(lChillReturnNodeNum)%MassFlowRate = ExhaustAbsorberReport(ChillNum)%ChillWaterFlowRate
! Node(lChillSupplyNodeNum)%MassFlowRate = ExhaustAbsorberReport(ChillNum)%ChillWaterFlowRate
! Node(lCondReturnNodeNum)%MassFlowRate = ExhaustAbsorberReport(ChillNum)%CondWaterFlowRate
! Node(lCondSupplyNodeNum)%MassFlowRate = ExhaustAbsorberReport(ChillNum)%CondWaterFlowRate
Node(lExhaustAirInletNodeNum)%Temp = ExhaustAbsorberReport(ChillNum)%ExhaustInTemp
Node(lExhaustAirInletNodeNum)%MassFlowRate = ExhaustAbsorberReport(ChillNum)%ExhaustInFlow
END IF
! convert power to energy and instantaneous use to use over the time step
RptConstant = TimeStepSys * SecInHour
ExhaustAbsorberReport(ChillNum)%CoolingEnergy = ExhaustAbsorberReport(ChillNum)%CoolingLoad * RptConstant
ExhaustAbsorberReport(ChillNum)%TowerEnergy = ExhaustAbsorberReport(ChillNum)%TowerLoad * RptConstant
ExhaustAbsorberReport(ChillNum)%ThermalEnergy = ExhaustAbsorberReport(ChillNum)%ThermalEnergyUseRate * RptConstant
ExhaustAbsorberReport(ChillNum)%CoolThermalEnergy = ExhaustAbsorberReport(ChillNum)%CoolThermalEnergyUseRate * RptConstant
ExhaustAbsorberReport(ChillNum)%ElectricEnergy = ExhaustAbsorberReport(ChillNum)%ElectricPower * RptConstant
ExhaustAbsorberReport(ChillNum)%CoolElectricEnergy = ExhaustAbsorberReport(ChillNum)%CoolElectricPower * RptConstant
IF (ExhaustAbsorberReport(ChillNum)%CoolThermalEnergyUseRate .NE. 0.0d0) THEN
ExhaustAbsorberReport(ChillNum)%ThermalEnergyCOP = &
ExhaustAbsorberReport(ChillNum)%CoolingLoad/ExhaustAbsorberReport(ChillNum)%CoolThermalEnergyUseRate
ELSE
ExhaustAbsorberReport(ChillNum)%ThermalEnergyCOP = 0.0d0
END IF
! Node(lChillSupplyNodeNum)%MassFlowRateMaxAvail = Node(lChillReturnNodeNum)%MassFlowRateMaxAvail
! Node(lChillSupplyNodeNum)%MassFlowRateMinAvail = Node(lChillReturnNodeNum)%MassFlowRateMinAvail
RETURN
END SUBROUTINE UpdateExhaustAbsorberCoolRecords