Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer | :: | EvapCoolNum |
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 CalcDryIndirectEvapCooler(EvapCoolNum)
! SUBROUTINE INFORMATION:
! AUTHOR Richard J. Liesen
! DATE WRITTEN October 2000
! MODIFIED BG Feb. 2007 secondary air inlet node
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine needs a description.
! METHODOLOGY EMPLOYED:
! Needs description, as appropriate.
! REFERENCES:
! na
! USE STATEMENTS:
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
Integer :: EvapCoolNum
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
!REAL(r64) Variables
REAL(r64) :: PadDepth ! EvapCooler Pad Depth in Meters as input by the User
REAL(r64) :: SatEff ! Saturation Efficiency of the CelDek Pad
REAL(r64) :: AirVel ! The Calculated Air Velocity through the Pad
REAL(r64) :: TDBSec ! Secondary leaving dry bulb
REAL(r64) :: TWBSec ! Secondary Leaving Wet Bulb
REAL(r64) :: HumRatSec ! Secondary leaving Humidity Ratio
REAL(r64) :: EffHX ! Effectiveness of Secondary Heat Exchanger
REAL(r64) :: QHX ! Q Across Sec HX
REAL(r64) :: RhoWater
REAL(r64) :: RhoAir ! Density of the primary side air
REAL(r64) :: CpAir ! Cp of the primary side air
REAL(r64) :: CFMAir
REAL(r64) :: CFMSec
! If the Evaporative Cooler is operating there should be some mass flow rate
! Also the evap cooler has to be scheduled to be available
IF((EvapCond(EvapCoolNum)%InletMassFlowRate .GT. 0.0d0) .and. &
(GetCurrentScheduleValue(EvapCond(EvapCoolNum)%SchedPtr) .gt. 0.0d0)) THEN
PadDepth = EvapCond(EvapCoolNum)%IndirectPadDepth
!******************************************************************************
! THIS SUBROUTINE WILL CACULATE THE TEMPERATURE OF THE LEAVING AIR DRY BULB
! FOR A DIRECT EVAPORATIVE AIR COOLER SUPPLIED WITH CFMAIR,DIRPAD,TEWB,TEDB,
! AND PB (ATM. PRESS.) FOR AIR DENSITY CALCULATIONS.
!******************************************************************************
AirVel=EvapCond(EvapCoolNum)%IndirectVolFlowRate/EvapCond(EvapCoolNum)%IndirectPadArea
!******************************************************************************
! SAT EFF IS FOR DIFFERENT THICKNESS CELDEK PAD (CURVE FIT FROM DATA)
!******************************************************************************
SatEff=0.792714d0+0.958569d0*PadDepth - 0.25193d0*AirVel &
- 1.03215d0*PadDepth**2 + 2.62659d-2*AirVel**2 + 0.914869d0*PadDepth*AirVel &
- 1.48241d0*AirVel*PadDepth**2 - 1.89919d-2*AirVel**3*PadDepth &
+ 1.13137d0*PadDepth**3*AirVel + 3.27622d-2*AirVel**3*PadDepth**2 &
- 0.145384d0*PadDepth**3*AirVel**2
IF(SatEff.GE.1.0d0) SatEff=1.0d0
EvapCond(EvapCoolNum)%SatEff = SatEff
!***************************************************************************
! TEMP LEAVING DRY BULB IS CALCULATED FROM SATURATION EFFICIENCY AS THE
! DRY BULB TEMP APPROACHES THE WET BULB TEMP ACROSS THE PAD BEFORE THE HX.
!***************************************************************************
!***** FIRST CHECK IF THIS TEWB IS A FEASIBLE POINT ON PSYCH CHART**********
! BG Feb 2007 mods for oa node (eg. height-dependent outside air model)
TWBSec = PsyTwbFnTdbWPb(EvapCond(EvapCoolNum)%SecInletTemp &
,EvapCond(EvapCoolNum)%SecInletHumRat &
,EvapCond(EvapCoolNum)%SecInletPressure ) ! OutWetBulbTemp
TDBSec = EvapCond(EvapCoolNum)%SecInletTemp-((EvapCond(EvapCoolNum)%SecInletTemp-TWBSec)*SatEff)
HumratSec = PsyWFnTdbTwbPb(TDBSec,TWBSec,EvapCond(EvapCoolNum)%SecInletPressure)
!***************************************************************************
! CALCULATE THE TLDB FROM HX EQUATIONS GIVEN AN EFFICIENCY
!***************************************************************************
EffHX = EvapCond(EvapCoolNum)%IndirectHXEffectiveness
CpAir = PsyCpAirFnWTdb(EvapCond(EvapCoolNum)%InletHumRat,EvapCond(EvapCoolNum)%InletTemp)
RhoAir = PsyRhoAirFnPbTdbW(OutBaroPress,EvapCond(EvapCoolNum)%InletTemp,EvapCond(EvapCoolNum)%InletHumRat)
CFMAir = EvapCond(EvapCoolNum)%VolFlowRate !Volume Flow Rate Primary Side
CFMSec = EvapCond(EvapCoolNum)%IndirectVolFlowRate !Volume Flolw Rate Secondary Side
QHX=EFFHX*MIN(CFMSEC,CFMAIR)*RhoAir*CpAir*(EvapCond(EvapCoolNum)%InletTemp-TDBSec)
EvapCond(EvapCoolNum)%OutletTemp=EvapCond(EvapCoolNum)%InletTemp-QHX/(RhoAir*CFMAIR*CpAir)
! This is a rough approximation of the Total Indirect Stage Efficiency for the Dry stage which
! is a 2 step process the first being teh pad efficiency and then the HX Effectiveness. I think that
! this would mainly be used for evap sizing purposes.
EvapCond(EvapCoolNum)%StageEff = SatEff * EFFHX
!***************************************************************************
! CALCULATE THE WET BULB TEMP in the primary system air USING PSYCH ROUTINES
! There is a constant humidity ratio across the primary side but a reduction in the dry bulb temp
EvapCond(EvapCoolNum)%OuletWetBulbTemp=PsyTwbFnTdbWPb(EvapCond(EvapCoolNum)%OutletTemp, &
EvapCond(EvapCoolNum)%InletHumRat,OutBaroPress)
!***************************************************************************
! TEMP LEAVING DRY BULB IS CALCULATED FROM SATURATION EFFICIENCY AS THE
! DRY BULB TEMP APPROACHES THE WET BULB TEMP. WET BULB TEMP IS CONSTANT
! ACROSS A DIRECT EVAPORATION COOLER.
EvapCond(EvapCoolNum)%OutletHumRat = EvapCond(EvapCoolNum)%InletHumRat
EvapCond(EvapCoolNum)%OutletEnthalpy = PsyHFnTdbW(EvapCond(EvapCoolNum)%OutletTemp, &
EvapCond(EvapCoolNum)%OutletHumRat)
!***************************************************************************
! POWER OF THE SECONDARY AIR FAN
IF (EvapCond(EvapCoolNum)%IndirectFanEff > 0.0D0) THEN
EvapCond(EvapCoolNum)%EvapCoolerPower=EvapCond(EvapCoolNum)%EvapCoolerPower + &
EvapCond(EvapCoolNum)%IndirectFanDeltaPress* &
EvapCond(EvapCoolNum)%IndirectVolFlowRate/ &
EvapCond(EvapCoolNum)%IndirectFanEff
ENDIF
! ENERGY CONSUMED BY THE RECIRCULATING PUMP
! ENERGY CONSUMED BY THE RECIRCULATING PUMP
!Add the pump energy to the total Evap Cooler energy comsumption
EvapCond(EvapCoolNum)%EvapCoolerPower = EvapCond(EvapCoolNum)%EvapCoolerPower + &
EvapCond(EvapCoolNum)%IndirectRecircPumpPower
!******************
! WATER CONSUMPTION IN LITERS OF WATER FOR DIRECT
! H2O [m3/sec] = Delta W[KgH2O/Kg air]*Mass Flow Air[Kg air]
! /RhoWater [kg H2O/m3 H2O]
!******************
RhoWater = RhoH2O(TDBSec)
RhoAir = ( PsyRhoAirFnPbTdbW(EvapCond(EvapCoolNum)%SecInletPressure &
, EvapCond(EvapCoolNum)%SecInletTemp &
, EvapCond(EvapCoolNum)%SecInletHumRat ) &
+ PsyRhoAirFnPbTdbW(EvapCond(EvapCoolNum)%SecInletPressure &
, TDBSec &
, HumratSec ) ) / 2.0d0
EvapCond(EvapCoolNum)%EvapWaterConsumpRate = &
(HumratSec - EvapCond(EvapCoolNum)%SecInletHumRat) * &
EvapCond(EvapCoolNum)%IndirectVolFlowRate*RhoAir/RhoWater
! A numerical check to keep from having very tiny negative water consumption values being reported
If(EvapCond(EvapCoolNum)%EvapWaterConsumpRate < 0.0d0) EvapCond(EvapCoolNum)%EvapWaterConsumpRate = 0.0d0
Else
! The evap cooler is not running and does not change conditions from inlet to outlet
EvapCond(EvapCoolNum)%OutletTemp = EvapCond(EvapCoolNum)%InletTemp
EvapCond(EvapCoolNum)%OuletWetBulbTemp = EvapCond(EvapCoolNum)%InletWetBulbTemp
EvapCond(EvapCoolNum)%OutletHumRat = EvapCond(EvapCoolNum)%InletHumRat
EvapCond(EvapCoolNum)%OutletEnthalpy = EvapCond(EvapCoolNum)%InletEnthalpy
EvapCond(EvapCoolNum)%EvapCoolerEnergy = 0.0d0
EvapCond(EvapCoolNum)%EvapWaterConsumpRate = 0.0d0
End IF
! all of the mass flowrates are not changed across the evap cooler
EvapCond(EvapCoolNum)%OutletMassFlowRate = EvapCond(EvapCoolNum)%InletMassFlowRate
EvapCond(EvapCoolNum)%OutletMassFlowRateMaxAvail = EvapCond(EvapCoolNum)%InletMassFlowRateMaxAvail
EvapCond(EvapCoolNum)%OutletMassFlowRateMinAvail = EvapCond(EvapCoolNum)%InletMassFlowRateMinAvail
! the pressure is not changed across the evap cooler
EvapCond(EvapCoolNum)%OutletPressure = EvapCond(EvapCoolNum)%InletPressure
RETURN
END SUBROUTINE CalcDryIndirectEvapCooler