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 UpdateGasAbsorberCoolRecords(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
! BEGIN ROUTINE
lChillReturnNodeNum = GasAbsorber(ChillNum)%ChillReturnNodeNum
lChillSupplyNodeNum = GasAbsorber(ChillNum)%ChillSupplyNodeNum
lCondReturnNodeNum = GasAbsorber(ChillNum)%CondReturnNodeNum
lCondSupplyNodeNum = GasAbsorber(ChillNum)%CondSupplyNodeNum
IF (MyLoad==0 .OR. .NOT. RunFlag)THEN
!set node temperatures
Node(lChillSupplyNodeNum)%Temp = Node(lChillReturnNodeNum)%Temp
Node(lCondSupplyNodeNum)%Temp = Node(lCondReturnNodeNum)%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 = GasAbsorberReport(ChillNum)%ChillWaterFlowRate
! Node(lChillSupplyNodeNum)%MassFlowRate = GasAbsorberReport(ChillNum)%ChillWaterFlowRate
! Node(lCondReturnNodeNum)%MassFlowRate = GasAbsorberReport(ChillNum)%CondWaterFlowRate
! Node(lCondSupplyNodeNum)%MassFlowRate = GasAbsorberReport(ChillNum)%CondWaterFlowRate
ELSE
!set node temperatures
Node(lChillSupplyNodeNum)%Temp = GasAbsorberReport(ChillNum)%ChillSupplyTemp
Node(lCondSupplyNodeNum)%Temp = GasAbsorberReport(ChillNum)%CondSupplyTemp
!set node flow rates; for these load based models
!assume that the sufficient evaporator flow rate available
! Node(lChillReturnNodeNum)%MassFlowRate = GasAbsorberReport(ChillNum)%ChillWaterFlowRate
! Node(lChillSupplyNodeNum)%MassFlowRate = GasAbsorberReport(ChillNum)%ChillWaterFlowRate
! Node(lCondReturnNodeNum)%MassFlowRate = GasAbsorberReport(ChillNum)%CondWaterFlowRate
! Node(lCondSupplyNodeNum)%MassFlowRate = GasAbsorberReport(ChillNum)%CondWaterFlowRate
END IF
! convert power to energy and instantaneous use to use over the time step
GasAbsorberReport(ChillNum)%CoolingEnergy = GasAbsorberReport(ChillNum)%CoolingLoad * TimeStepSys * SecInHour
GasAbsorberReport(ChillNum)%TowerEnergy = GasAbsorberReport(ChillNum)%TowerLoad * TimeStepSys * SecInHour
GasAbsorberReport(ChillNum)%FuelEnergy = GasAbsorberReport(ChillNum)%FuelUseRate * TimeStepSys * SecInHour
GasAbsorberReport(ChillNum)%CoolFuelEnergy = GasAbsorberReport(ChillNum)%CoolFuelUseRate * TimeStepSys * SecInHour
GasAbsorberReport(ChillNum)%ElectricEnergy = GasAbsorberReport(ChillNum)%ElectricPower * TimeStepSys * SecInHour
GasAbsorberReport(ChillNum)%CoolElectricEnergy = GasAbsorberReport(ChillNum)%CoolElectricPower * TimeStepSys * SecInHour
IF (GasAbsorberReport(ChillNum)%CoolFuelUseRate .NE. 0.0d0) THEN
GasAbsorberReport(ChillNum)%FuelCOP = &
GasAbsorberReport(ChillNum)%CoolingLoad/GasAbsorberReport(ChillNum)%CoolFuelUseRate
ELSE
GasAbsorberReport(ChillNum)%FuelCOP = 0.0d0
END IF
! Node(lChillSupplyNodeNum)%MassFlowRateMaxAvail = Node(lChillReturnNodeNum)%MassFlowRateMaxAvail
! Node(lChillSupplyNodeNum)%MassFlowRateMinAvail = Node(lChillReturnNodeNum)%MassFlowRateMinAvail
RETURN
END SUBROUTINE UpdateGasAbsorberCoolRecords