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 | :: | EvapFluidCoolerNum |
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 CalcTwoSpeedEvapFluidCooler(EvapFluidCoolerNum)
! SUBROUTINE INFORMATION:
! AUTHOR Chandan Sharma
! DATE WRITTEN May 2009
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! To simulate the operation of a evaporative fluid cooler with a two-speed fan.
! METHODOLOGY EMPLOYED:
! The evaporative fluid cooler is modeled using effectiveness-NTU relationships for
! counterflow heat exchangers based on Merkel's theory.
!
! The subroutine calculates the period of time required to meet a
! leaving water temperature setpoint. It assumes that part-load
! operation represents a linear interpolation of three steady-state regimes
! (high-speed fan operation and low-speed fan operation ).
! Cyclic losses are neglected. The period of time required to meet the
! leaving water temperature setpoint is used to determine the required
! fan power and energy. When the leaving water temperature is at or above the setpoint
! the evaporative fluid cooler fan is turned on,
! .
!
! A RunFlag is passed by the upper level manager to indicate the ON/OFF status,
! or schedule, of the evaporative fluid cooler. If the evaporative fluid cooler is OFF, outlet water
! temperature and flow rate are passed through the model from inlet node to
! outlet node without intervention. Reports are also updated with fan power and fan energy being zero.
!
! When the RunFlag indicates an ON condition for the evaporative fluid cooler, the
! mass flow rate and water temperature are read from the inlet node of the
! evaporative fluid cooler (water-side). The outdoor air wet-bulb temperature is used
! as the entering condition to the evaporative fluid cooler (air-side). If the incoming
! water temperature is above the setpoint, the evaporative fluid cooler fan is turned on
! and parameters for low fan speed are used to again calculate the leaving
! water temperature. If the calculated leaving water temperature is
! below the setpoint, a fan run-time fraction (FanModeFrac) is calculated and
! used to determine fan power. The leaving water temperature setpoint is placed
! on the outlet node. If the calculated leaving water temperature is at or above
! the setpoint, the evaporative fluid cooler fan is turned on 'high speed' and the routine is
! repeated. If the calculated leaving water temperature is below the setpoint,
! a fan run-time fraction is calculated for the second stage fan and fan power
! is calculated as FanModeFrac*HighSpeedFanPower+(1-FanModeFrac)*LowSpeedFanPower.
! If the calculated leaving water temperature is above the leaving water temp.
! setpoint, the calculated leaving water temperature is placed on the outlet
! node and the fan runs at full power (High Speed Fan Power). Water mass flow
! rate is passed from inlet node to outlet node with no intervention.
!
!
! REFERENCES:
! ASHRAE HVAC1KIT: A Toolkit for Primary HVAC System Energy Calculation. 1999.
! Based on TwoSpeedTower by Dan Fisher ,Sept. 1998
! Dec. 2008. BG. added RunFlag logic per original methodology
! USE STATEMENTS:
! USE FluidProperties, ONLY : GetSpecificHeatGlycol
USE DataPlant, ONLY : SingleSetpoint, DualSetpointDeadband
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER :: EvapFluidCoolerNum
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
REAL(r64) :: AirFlowRate
REAL(r64) :: UAdesign ! UA value at design conditions (entered by user) [W/C]
REAL(r64) :: InletWaterTemp
REAL(r64) :: OutletWaterTemp1stStage
REAL(r64) :: OutletWaterTemp2ndStage
REAL(r64) :: FanModeFrac
REAL(r64) :: FanPowerLow
REAL(r64) :: FanPowerHigh
REAL(r64) :: CpWater
REAL(r64) :: TempSetPoint
INTEGER :: LoopNum
INTEGER :: LoopSideNum
!set inlet and outlet nodes
WaterInletNode = SimpleEvapFluidCooler(EvapFluidCoolerNum)%WaterInletNodeNum
WaterOutletNode = SimpleEvapFluidCooler(EvapFluidCoolerNum)%WaterOutletNodeNum
Qactual = 0.0d0
FanPower = 0.0d0
InletWaterTemp = Node(WaterInletNode)%Temp
OutletWaterTemp = InletWaterTemp
OutletWaterTemp1stStage = OutletWaterTemp
OutletWaterTemp2ndStage = OutletWaterTemp
FanModeFrac = 0.0d0
AirFlowRate = 0.0d0
LoopNum = SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum
LoopSideNum = SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopSideNum
SELECT CASE (PlantLoop(LoopNum)%LoopDemandCalcScheme)
CASE (SingleSetPoint)
TempSetPoint = PlantLoop(LoopNum)%LoopSide(LoopSideNum)%TempSetpoint
CASE (DualSetPointDeadBand)
TempSetPoint = PlantLoop(LoopNum)%LoopSide(LoopSideNum)%TempSetpointHi
END SELECT
! MassFlowTol is a parameter to indicate a no flow condition
IF (WaterMassFlowRate .LE. MassFlowTolerance .OR. PlantLoop(LoopNum)%Loopside(LoopSideNum)%FlowLock .EQ. 0) RETURN
IF (InletWaterTemp .GT. TempSetPoint) THEN
! Setpoint was not met ,turn on evaporative fluid cooler 1st stage fan
UAdesign = SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedEvapFluidCoolerUA
AirFlowRate = SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedAirFlowRate
FanPowerLow = SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedFanPower
Call SimSimpleEvapFluidCooler(EvapFluidCoolerNum,WaterMassFlowRate,AirFlowRate,UAdesign,OutletWaterTemp1stStage)
IF(OutletWaterTemp1stStage .LE. TempSetPoint)THEN
! Setpoint was met with pump ON and fan ON 1st stage, calculate fan mode fraction
FanModeFrac = (TempSetPoint-InletWaterTemp)/(OutletWaterTemp1stStage-InletWaterTemp)
FanPower = FanModeFrac * FanPowerLow
OutletWaterTemp = TempSetPoint
Qactual = Qactual * FanModeFrac
ELSE
! Setpoint was not met, turn on evaporative fluid cooler 2nd stage fan
UAdesign = SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedEvapFluidCoolerUA
AirFlowRate = SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedAirFlowRate
FanPowerHigh = SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedFanPower
Call SimSimpleEvapFluidCooler(EvapFluidCoolerNum,WaterMassFlowRate,AirFlowRate,UAdesign,OutletWaterTemp2ndStage)
IF((OutletWaterTemp2ndStage .LE. TempSetPoint).AND. UAdesign .GT. 0.0d0)THEN
! Setpoint was met with pump ON and fan ON 2nd stage, calculate fan mode fraction
FanModeFrac = (TempSetPoint-OutletWaterTemp1stStage)/(OutletWaterTemp2ndStage-OutletWaterTemp1stStage)
FanPower = (FanModeFrac * FanPowerHigh) + (1.d0-FanModeFrac)*FanPowerLow
OutletWaterTemp = TempSetPoint
ELSE
! Setpoint was not met, evaporative fluid cooler ran at full capacity
OutletWaterTemp = OutletWaterTemp2ndStage
FanPower = FanPowerHigh
END IF
END IF
END IF
!Should this be water inlet node num??
CpWater = GetSpecificHeatGlycol(PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidName, &
Node(WaterInletNode)%Temp, &
PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidIndex, &
'CalcTwoSpeedEvapFluidCooler')
Qactual = WaterMassFlowRate * CpWater * (Node(WaterInletNode)%Temp - OutletWaterTemp)
AirFlowRateRatio = AirFlowRate / SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedAirFlowRate
RETURN
END SUBROUTINE CalcTwoSpeedEvapFluidCooler