SUBROUTINE SizeEvapFluidCooler(EvapFluidCoolerNum)
! SUBROUTINE INFORMATION:
! AUTHOR Chandan Sharma
! DATE WRITTEN May 2009
! MODIFIED Chandan Sharma, April 2010
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine is for sizing evaporative fluid cooler Components for which capacities and flow rates
! have not been specified in the input. This subroutine also calculates evaporative fluid cooler UA if the user
! has specified evaporative fluid cooler performance via the "Standard Design Capacity" method.
! METHODOLOGY EMPLOYED:
! Obtains condenser flow rate from the plant sizing array. If evaporative fluid cooler performance is specified
! via the "Standard Design Capacity" method, the water flow rate is directly proportional to capacity.
! REFERENCES:
! Based on SizeTower by Don Shirey, Sept/Oct 2002; Richard Raustad, Feb 2005
! USE STATEMENTS:
USE DataSizing
USE General, ONLY: SolveRegulaFalsi, RoundSigDigits
USE PlantUtilities, ONLY: RegisterPlantCompDesignFlow
USE ReportSizingManager, ONLY: ReportSizingOutput
USE OutputReportPredefined
USE InputProcessor, ONLY: SameString
USE DataPlant, ONLY: PlantSizesOkayToFinalize
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER, INTENT(IN) :: EvapFluidCoolerNum
! SUBROUTINE PARAMETER DEFINITIONS:
INTEGER, PARAMETER :: MaxIte = 500 ! Maximum number of iterations
REAL(r64), PARAMETER :: Acc = 0.0001d0 ! Accuracy of result
CHARACTER(len=*), PARAMETER :: CalledFrom = 'SizeEvapFluidCooler'
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: PltSizCondNum ! Plant Sizing index for condenser loop
INTEGER :: SolFla ! Flag of solver
REAL(r64) :: DesEvapFluidCoolerLoad ! Design evaporative fluid cooler load [W]
REAL(r64) :: UA0 ! Lower bound for UA [W/C]
REAL(r64) :: UA1 ! Upper bound for UA [W/C]
REAL(r64) :: UA ! Calculated UA value [W/C]
REAL(r64) :: OutWaterTempAtUA0 ! Water outlet temperature at UA0
REAL(r64) :: OutWaterTempAtUA1 ! Water outlet temperature at UA1
REAL(r64) :: DesignEnteringAirWetBulb ! Intermediate variable to check that design exit
! temperature specified in the plant:sizing object
! is higher than the design entering air wet-bulb temp
! when autosize feature is used
REAL(r64), DIMENSION(6) :: Par ! Parameter array need for RegulaFalsi routine
CHARACTER(len=MaxNameLength) :: equipName
REAL(r64) :: Cp ! local specific heat for fluid
REAL(r64) :: rho ! local density for fluid
REAL(r64) :: tmpDesignWaterFlowRate ! local temporary for water volume flow rate
REAL(r64) :: tmpHighSpeedFanPower !local temporary for high speed fan power
REAL(r64) :: tmpHighSpeedAirFlowRate ! local temporary for high speed air flow rate
REAL(r64) :: tmpHighSpeedEvapFluidCoolerUA ! local temporary for high speed cooler UA
DesEvapFluidCoolerLoad = 0.0d0
tmpDesignWaterFlowRate = SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignWaterFlowRate
tmpHighSpeedFanPower = SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedFanPower
tmpHighSpeedAirFlowRate = SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedAirFlowRate
tmpHighSpeedEvapFluidCoolerUA = SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedEvapFluidCoolerUA
PltSizCondNum = PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%PlantSizNum
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignWaterFlowRate == AutoSize .AND. &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%PerformanceInputMethod_Num .NE. PIM_StandardDesignCapacity) THEN
IF (PltSizCondNum > 0) THEN
IF (PlantSizData(PltSizCondNum)%DesVolFlowRate >= SmallWaterVolFlow) THEN
tmpDesignWaterFlowRate = &
PlantSizData(PltSizCondNum)%DesVolFlowRate * SimpleEvapFluidCooler(EvapFluidCoolerNum)%SizFac
IF (PlantSizesOkayToFinalize) SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignWaterFlowRate = &
tmpDesignWaterFlowRate
ELSE
tmpDesignWaterFlowRate = 0.d0
IF (PlantSizesOkayToFinalize) SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignWaterFlowRate = &
tmpDesignWaterFlowRate
ENDIF
IF (PlantSizesOkayToFinalize) CALL ReportSizingOutput(SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType, &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'Design Water Flow Rate [m3/s]', &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignWaterFlowRate)
ELSE
CALL ShowSevereError('Autosizing error for evaporative fluid cooler object = '// &
TRIM(SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name))
CALL ShowFatalError('Autosizing of evaporative fluid cooler condenser flow rate requires a loop Sizing:Plant object.')
ENDIF
! Check when the user specified Condenser/Evaporative Fluid Cooler water design setpoint
! temperature is less than design inlet air wet bulb temperature
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%PerformanceInputMethod_Num == PIM_UFactor) THEN
DesignEnteringAirWetBulb = 25.6d0
ELSE
DesignEnteringAirWetBulb = SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignEnteringAirWetBulbTemp
ENDIF
IF ( PlantSizData(PltSizCondNum)%ExitTemp <= DesignEnteringAirWetBulb) THEN
CALL ShowSevereError('Error when autosizing the UA value for Evaporative Fluid Cooler = '//&
TRIM(SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name)//'.' )
CALL ShowContinueError('Design Loop Exit Temperature ('// &
TRIM(RoundSigDigits(PlantSizData(PltSizCondNum)%ExitTemp,2)) // &
' C) must be greater than design entering air wet-bulb temperature ('// &
TRIM(RoundSigDigits(DesignEnteringAirWetBulb,2)) //&
' C) when autosizing the Evaporative Fluid Cooler UA.')
CALL ShowContinueError('It is recommended that the Design Loop Exit Temperature = Design Entering Air '// &
'Wet-bulb Temp plus the Evaporative Fluid Cooler design approach temperature (e.g., 4 C).')
CALL ShowContinueError('If using HVACTemplate:Plant:ChilledWaterLoop, then check that input field ' // &
'Condenser Water Design Setpoint must be > Design Entering Air Wet-bulb Temp ' // &
'if autosizing the Evaporative Fluid Cooler.')
CALL ShowFatalError('Review and revise design input values as appropriate.')
ENDIF
ENDIF
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%PerformanceInputMethod_Num == PIM_UFactor .and. &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedEvapFluidCoolerUA /= AutoSize) THEN
IF (PltSizCondNum > 0) THEN
rho = GetDensityGlycol(PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidName, &
InitConvTemp, &
PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidIndex,&
'SizeEvapFluidCooler')
Cp = GetSpecificHeatGlycol(PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidName, &
PlantSizData(PltSizCondNum)%ExitTemp, &
PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidIndex, &
'SizeEvapFluidCooler')
DesEvapFluidCoolerLoad = rho * Cp &
* tmpDesignWaterFlowRate * PlantSizData(PltSizCondNum)%DeltaT
SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedStandardDesignCapacity = DesEvapFluidCoolerLoad &
/ SimpleEvapFluidCooler(EvapFluidCoolerNum)%HeatRejectCapNomCapSizingRatio
ELSE
SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedStandardDesignCapacity = 0.0d0
ENDIF
END IF
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%PerformanceInputMethod_Num == PIM_StandardDesignCapacity) THEN
! Design water flow rate is assumed to be 3 gpm per ton (SI equivalent 5.382E-8 m3/s per watt)
tmpDesignWaterFlowRate= &
5.382d-8 * SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedStandardDesignCapacity
SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignWaterFlowRate = tmpDesignWaterFlowRate
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType_Num == EvapFluidCooler_SingleSpeed) THEN
IF (PlantSizesOkayToFinalize) &
CALL ReportSizingOutput(cEvapFluidCooler_SingleSpeed,SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'Design water flow rate based on evaporative fluid cooler Standard Design Capacity [m3/s]', &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignWaterFlowRate)
ELSEIF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType_Num == EvapFluidCooler_TwoSpeed) THEN
IF (PlantSizesOkayToFinalize) &
CALL ReportSizingOutput(cEvapFluidCooler_TwoSpeed,SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'Design water flow rate based on evaporative fluid cooler high-speed Standard Design Capacity [m3/s]', &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignWaterFlowRate)
ENDIF
ENDIF
CALL RegisterPlantCompDesignFlow(SimpleEvapFluidCooler(EvapFluidCoolerNum)%WaterInletNodeNum, tmpDesignWaterFlowRate)
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedFanPower == AutoSize) THEN
! We assume the nominal fan power is 0.0105 times the design load
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%PerformanceInputMethod_Num == PIM_StandardDesignCapacity) THEN
tmpHighSpeedFanPower = 0.0105d0 * SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedStandardDesignCapacity
IF (PlantSizesOkayToFinalize) SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedFanPower = tmpHighSpeedFanPower
ELSEIF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%PerformanceInputMethod_Num == PIM_UserSpecifiedDesignCapacity) THEN
tmpHighSpeedFanPower = 0.0105d0 * SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedUserSpecifiedDesignCapacity
IF (PlantSizesOkayToFinalize) SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedFanPower = tmpHighSpeedFanPower
ELSE
IF (DesEvapFluidCoolerLoad .GT. 0) THEN
tmpHighSpeedFanPower = 0.0105d0 * DesEvapFluidCoolerLoad
IF (PlantSizesOkayToFinalize) SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedFanPower = tmpHighSpeedFanPower
ELSEIF (PltSizCondNum > 0) THEN
IF (PlantSizData(PltSizCondNum)%DesVolFlowRate >= SmallWaterVolFlow) THEN
rho = GetDensityGlycol(PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidName, &
InitConvTemp, &
PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidIndex,&
'SizeEvapFluidCooler')
Cp = GetSpecificHeatGlycol(PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidName, &
PlantSizData(PltSizCondNum)%ExitTemp, &
PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidIndex, &
'SizeEvapFluidCooler')
DesEvapFluidCoolerLoad = rho * Cp * tmpDesignWaterFlowRate * PlantSizData(PltSizCondNum)%DeltaT
tmpHighSpeedFanPower = 0.0105d0 * DesEvapFluidCoolerLoad
IF (PlantSizesOkayToFinalize) SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedFanPower = tmpHighSpeedFanPower
ELSE
tmpHighSpeedFanPower = 0.d0
IF (PlantSizesOkayToFinalize) SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedFanPower = tmpHighSpeedFanPower
ENDIF
ELSE
CALL ShowSevereError('Autosizing of evaporative fluid cooler fan power requires a loop Sizing:Plant object.')
CALL ShowFatalError(' Occurs in evaporative fluid cooler object= '//&
TRIM(SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name))
ENDIF
ENDIF
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType_Num == EvapFluidCooler_SingleSpeed) THEN
IF (PlantSizesOkayToFinalize) CALL ReportSizingOutput(cEvapFluidCooler_SingleSpeed,&
SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'Fan Power at Design Air Flow Rate [W]', SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedFanPower)
ELSEIF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType_Num == EvapFluidCooler_TwoSpeed) THEN
IF (PlantSizesOkayToFinalize) CALL ReportSizingOutput(cEvapFluidCooler_TwoSpeed, &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'Fan Power at High Fan Speed [W]', SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedFanPower)
ENDIF
ENDIF
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedAirFlowRate == AutoSize) THEN
! Plant Sizing Object is not required to AUTOSIZE this field since its simply a multiple of another field.
tmpHighSpeedAirFlowRate = tmpHighSpeedFanPower * 0.5d0 * (101325.d0/StdBaroPress) / 190.d0
IF (PlantSizesOkayToFinalize) SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedAirFlowRate = tmpHighSpeedAirFlowRate
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType_Num == EvapFluidCooler_SingleSpeed) THEN
IF (PlantSizesOkayToFinalize) CALL ReportSizingOutput(cEvapFluidCooler_SingleSpeed,&
SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'Design Air Flow Rate [m3/s]', &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedAirFlowRate)
ELSEIF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType_Num == EvapFluidCooler_TwoSpeed) THEN
IF (PlantSizesOkayToFinalize) CALL ReportSizingOutput(cEvapFluidCooler_TwoSpeed, &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'Air Flow Rate at High Fan Speed [m3/s]', &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedAirFlowRate)
ENDIF
ENDIF
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedEvapFluidCoolerUA == AutoSize .AND. &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%PerformanceInputMethod_Num == PIM_UFactor) THEN
IF (PltSizCondNum > 0) THEN
IF (PlantSizData(PltSizCondNum)%DesVolFlowRate >= SmallWaterVolFlow) THEN
! This conditional statement is to trap when the user specified Condenser/Evaporative Fluid Cooler water design setpoint
! temperature is less than design inlet air wet bulb temperature of 25.6 C
IF ( PlantSizData(PltSizCondNum)%ExitTemp <= 25.6d0 ) THEN
CALL ShowSevereError('Error when autosizing the UA value for Evaporative Fluid Cooler = '//&
TRIM(SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name)//'.')
CALL ShowContinueError('Design Loop Exit Temperature ('// &
TRIM(RoundSigDigits(PlantSizData(PltSizCondNum)%ExitTemp,2)) // &
' C) must be greater than 25.6 C when autosizing the Evaporative Fluid Cooler UA.')
CALL ShowContinueError('The Design Loop Exit Temperature specified in Sizing:Plant object = '// &
TRIM(PlantSizData(PltSizCondNum)%PlantLoopName))
CALL ShowContinueError('It is recommended that the Design Loop Exit Temperature = 25.6 C plus '// &
'the Evaporative Fluid Cooler design approach temperature (e.g., 4 C).')
CALL ShowContinueError('If using HVACTemplate:Plant:ChilledWaterLoop, then check that input field ' // &
'Condenser Water Design Setpoint must be > 25.6 C if autosizing the Evaporative Fluid Cooler.')
CALL ShowFatalError('Review and revise design input values as appropriate.')
ENDIF
rho = GetDensityGlycol(PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidName, &
InitConvTemp, &
PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidIndex,&
'SizeEvapFluidCooler')
Cp = GetSpecificHeatGlycol(PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidName, &
PlantSizData(PltSizCondNum)%ExitTemp, &
PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidIndex, &
'SizeEvapFluidCooler')
DesEvapFluidCoolerLoad = rho * Cp * tmpDesignWaterFlowRate * PlantSizData(PltSizCondNum)%DeltaT
Par(1) = DesEvapFluidCoolerLoad
Par(2) = REAL(EvapFluidCoolerNum,r64)
Par(3) = rho * tmpDesignWaterFlowRate ! Design water mass flow rate
Par(4) = tmpHighSpeedAirFlowRate ! Design air volume flow rate
Par(5) = Cp
UA0 = 0.0001d0 * DesEvapFluidCoolerLoad ! Assume deltaT = 10000K (limit)
UA1 = DesEvapFluidCoolerLoad ! Assume deltaT = 1K
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%WaterTemp = PlantSizData(PltSizCondNum)%ExitTemp + &
PlantSizData(PltSizCondNum)%DeltaT
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirTemp = 35.d0
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirWetBulb = 25.6d0
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirPress = StdBaroPress
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirHumRat = &
PsyWFnTdbTwbPb(SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirTemp, &
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirWetBulb, &
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirPress)
CALL SolveRegulaFalsi(Acc, MaxIte, SolFla, UA, SimpleEvapFluidCoolerUAResidual, UA0, UA1, Par)
IF (SolFla == -1) THEN
CALL ShowWarningError('Iteration limit exceeded in calculating evaporative fluid cooler UA.')
CALL ShowContinueError('Autosizing of fluid cooler UA failed for evaporative fluid cooler = '//&
TRIM(SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name))
CALL ShowContinueError('The final UA value = '//TRIM(RoundSigDigits(UA,2))// &
'W/C, and the simulation continues...')
ELSEIF (SolFla == -2) THEN
CALL SimSimpleEvapFluidCooler(INT(Par(2)),Par(3),Par(4),UA0,OutWaterTempAtUA0)
CALL SimSimpleEvapFluidCooler(INT(Par(2)),Par(3),Par(4),UA1,OutWaterTempAtUA1)
CALL ShowSevereError(CalledFrom//': The combination of design input values did not allow the calculation of a ')
CALL ShowContinueError('reasonable UA value. Review and revise design input values as appropriate. Specifying hard')
CALL ShowContinueError('sizes for some "autosizable" fields while autosizing other "autosizable" fields may be '// &
'contributing to this problem.')
CALL ShowContinueError('This model iterates on UA to find the heat transfer required to provide the design outlet ')
CALL ShowContinueError('water temperature. Initially, the outlet water temperatures at high and low UA values are ')
CALL ShowContinueError('calculated. The Design Exit Water Temperature should be between the outlet water ')
CALL ShowContinueError('temperatures calculated at high and low UA values. If the Design Exit Water Temperature is ')
CALL ShowContinueError('out of this range, the solution will not converge and UA will not be calculated. ')
CALL ShowContinueError('The possible solutions could be to manually input adjusted water and/or air flow rates ')
CALL ShowContinueError('based on the autosized values shown below or to adjust design evaporative fluid cooler ' // &
'air inlet wet-bulb temperature.')
CALL ShowContinueError('Plant:Sizing object inputs also influence these results (e.g. DeltaT and ExitTemp).')
CALL ShowContinueError('Inputs to the evaporative fluid cooler object:')
CALL ShowContinueError('Design Evaporative Fluid Cooler Load [W] = '// &
TRIM(RoundSigDigits(Par(1),2)))
CALL ShowContinueError('Design Evaporative Fluid Cooler Water Volume Flow Rate [m3/s] = '// &
TRIM(RoundSigDigits(SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignWaterFlowRate,6)))
CALL ShowContinueError('Design Evaporative Fluid Cooler Air Volume Flow Rate [m3/s] = '// &
TRIM(RoundSigDigits(Par(4),2)))
CALL ShowContinueError('Design Evaporative Fluid Cooler Air Inlet Wet-bulb Temp [C] = '// &
TRIM(RoundSigDigits(SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirWetBulb,2)))
CALL ShowContinueError('Design Evaporative Fluid Cooler Water Inlet Temp [C] = '// &
TRIM(RoundSigDigits(SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%WaterTemp,2)))
CALL ShowContinueError('Inputs to the plant sizing object:')
CALL ShowContinueError('Design Exit Water Temp [C] = '// &
TRIM(RoundSigDigits(PlantSizData(PltSizCondNum)%ExitTemp,2)))
CALL ShowContinueError('Loop Design Temperature Difference [C] = '// &
TRIM(RoundSigDigits(PlantSizData(PltSizCondNum)%DeltaT,2)))
CALL ShowContinueError('Design Evaporative Fluid Cooler Water Inlet Temp [C] = '// &
TRIM(RoundSigDigits(SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%WaterTemp,2)))
CALL ShowContinueError('Calculated water outlet temperature at low UA [C](UA = '// &
TRIM(RoundSigDigits(UA0,2))//' W/C) = '//TRIM(RoundSigDigits(OutWaterTempAtUA0,2)))
CALL ShowContinueError('Calculated water outlet temperature at high UA [C](UA = '// &
TRIM(RoundSigDigits(UA1,2))//' W/C) = '//TRIM(RoundSigDigits(OutWaterTempAtUA1,2)))
CALL ShowFatalError('Autosizing of Evaporative Fluid Cooler UA failed for Evaporative Fluid Cooler = '// &
TRIM(SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name))
ENDIF
tmpHighSpeedEvapFluidCoolerUA = UA
IF (PlantSizesOkayToFinalize) SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedEvapFluidCoolerUA = &
tmpHighSpeedEvapFluidCoolerUA
SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedStandardDesignCapacity = DesEvapFluidCoolerLoad &
/ SimpleEvapFluidCooler(EvapFluidCoolerNum)%HeatRejectCapNomCapSizingRatio
ELSE
tmpHighSpeedEvapFluidCoolerUA = 0.d0
IF (PlantSizesOkayToFinalize) SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedEvapFluidCoolerUA = &
tmpHighSpeedEvapFluidCoolerUA
ENDIF
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType_Num == EvapFluidCooler_SingleSpeed) THEN
IF (PlantSizesOkayToFinalize) CALL ReportSizingOutput(cEvapFluidCooler_SingleSpeed, &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'U-Factor Times Area Value at Design Air Flow Rate [W/C]', &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedEvapFluidCoolerUA)
ELSEIF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType_Num == EvapFluidCooler_TwoSpeed) THEN
IF (PlantSizesOkayToFinalize) CALL ReportSizingOutput(cEvapFluidCooler_TwoSpeed, &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'U-Factor Times Area Value at High Fan Speed [W/C]', &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedEvapFluidCoolerUA)
ENDIF
ELSE
CALL ShowSevereError('Autosizing error for evaporative fluid cooler object = '// &
TRIM(SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name))
CALL ShowFatalError('Autosizing of evaporative fluid cooler UA requires a loop Sizing:Plant object.')
ENDIF
ENDIF
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%PerformanceInputMethod_Num == PIM_StandardDesignCapacity) THEN
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignWaterFlowRate >= SmallWaterVolFlow) THEN
! Standard Design Capacity doesn't include compressor heat;
! predefined factor was 1.25 W heat rejection per W of delivered cooling, now a user input with 1.25 default
rho = GetDensityGlycol(PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidName, &
InitConvTemp, &
PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidIndex,&
'SizeEvapFluidCooler')
Cp = GetSpecificHeatGlycol(PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidName, &
35.d0, &
PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidIndex, &
'SizeEvapFluidCooler')
DesEvapFluidCoolerLoad = SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedStandardDesignCapacity &
* SimpleEvapFluidCooler(EvapFluidCoolerNum)%HeatRejectCapNomCapSizingRatio
Par(1) = DesEvapFluidCoolerLoad
Par(2) = REAL(EvapFluidCoolerNum,r64)
Par(3) = rho * SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignWaterFlowRate ! Design water mass flow rate
Par(4) = SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedAirFlowRate ! Design air volume flow rate
Par(5) = Cp
UA0 = 0.0001d0 * DesEvapFluidCoolerLoad ! Assume deltaT = 10000K (limit)
UA1 = DesEvapFluidCoolerLoad ! Assume deltaT = 1K
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%WaterTemp = 35.d0 ! 95F design inlet water temperature
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirTemp = 35.d0 ! 95F design inlet air dry-bulb temp
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirWetBulb = 25.6d0 ! 78F design inlet air wet-bulb temp
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirPress = StdBaroPress
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirHumRat = &
PsyWFnTdbTwbPb(SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirTemp, &
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirWetBulb, &
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirPress)
CALL SolveRegulaFalsi(Acc, MaxIte, SolFla, UA, SimpleEvapFluidCoolerUAResidual, UA0, UA1, Par)
IF (SolFla == -1) THEN
CALL ShowWarningError('Iteration limit exceeded in calculating evaporative fluid cooler UA.')
CALL ShowContinueError('Autosizing of fluid cooler UA failed for evaporative fluid cooler = '//&
TRIM(SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name))
CALL ShowContinueError('The final UA value = '//TRIM(RoundSigDigits(UA,2))// &
'W/C, and the simulation continues...')
ELSE IF (SolFla == -2) THEN
CALL ShowSevereError(CalledFrom//': The combination of design input values did not allow the calculation of a ')
CALL ShowContinueError('reasonable UA value. Review and revise design input values as appropriate. ')
CALL ShowFatalError('Autosizing of Evaporative Fluid Cooler UA failed for Evaporative Fluid Cooler = '// &
TRIM(SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name))
ENDIF
SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedEvapFluidCoolerUA = UA
ELSE
SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedEvapFluidCoolerUA = 0.0d0
ENDIF
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType_Num == EvapFluidCooler_SingleSpeed) THEN
IF (PlantSizesOkayToFinalize) CALL ReportSizingOutput(cEvapFluidCooler_SingleSpeed,&
SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'U-Factor Times Area Value at Design Air Flow Rate [W/C]', &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedEvapFluidCoolerUA)
ELSEIF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType_Num == EvapFluidCooler_TwoSpeed) THEN
IF (PlantSizesOkayToFinalize) CALL ReportSizingOutput(cEvapFluidCooler_TwoSpeed, &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'U-Factor Times Area Value at High Fan Speed [W/C]', &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedEvapFluidCoolerUA)
ENDIF
ENDIF
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%PerformanceInputMethod_Num == PIM_UserSpecifiedDesignCapacity) THEN
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignWaterFlowRate >= SmallWaterVolFlow) THEN
rho = GetDensityGlycol(PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidName, &
InitConvTemp, &
PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidIndex,&
'SizeEvapFluidCooler')
Cp = GetSpecificHeatGlycol(PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidName, &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignEnteringWaterTemp, &
PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidIndex, &
'SizeEvapFluidCooler')
DesEvapFluidCoolerLoad = SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedUserSpecifiedDesignCapacity
Par(1) = DesEvapFluidCoolerLoad
Par(2) = REAL(EvapFluidCoolerNum,r64)
Par(3) = rho * tmpDesignWaterFlowRate ! Design water mass flow rate
Par(4) = tmpHighSpeedAirFlowRate ! Design air volume flow rate
Par(5) = Cp
UA0 = 0.0001d0 * DesEvapFluidCoolerLoad ! Assume deltaT = 10000K (limit)
UA1 = DesEvapFluidCoolerLoad ! Assume deltaT = 1K
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%WaterTemp = &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignEnteringWaterTemp
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirTemp = &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignEnteringAirTemp
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirWetBulb = &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignEnteringAirWetBulbTemp
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirPress = StdBaroPress
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirHumRat = &
PsyWFnTdbTwbPb(SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirTemp, &
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirWetBulb, &
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirPress)
CALL SolveRegulaFalsi(Acc, MaxIte, SolFla, UA, SimpleEvapFluidCoolerUAResidual, UA0, UA1, Par)
IF (SolFla == -1) THEN
CALL ShowWarningError('Iteration limit exceeded in calculating evaporative fluid cooler UA.')
CALL ShowContinueError('Autosizing of fluid cooler UA failed for evaporative fluid cooler = '//&
TRIM(SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name))
CALL ShowContinueError('The final UA value = '//TRIM(RoundSigDigits(UA,2))// &
'W/C, and the simulation continues...')
ELSE IF (SolFla == -2) THEN
CALL SimSimpleEvapFluidCooler(INT(Par(2)),Par(3),Par(4),UA0,OutWaterTempAtUA0)
CALL SimSimpleEvapFluidCooler(INT(Par(2)),Par(3),Par(4),UA1,OutWaterTempAtUA1)
CALL ShowSevereError(CalledFrom//': The combination of design input values did not allow the calculation of a ')
CALL ShowContinueError('reasonable UA value. Review and revise design input values as appropriate. Specifying hard')
CALL ShowContinueError('sizes for some "autosizable" fields while autosizing other "autosizable" fields may be '// &
'contributing to this problem.')
CALL ShowContinueError('This model iterates on UA to find the heat transfer required to provide the design outlet ')
CALL ShowContinueError('water temperature. Initially, the outlet water temperatures at high and low UA values are ')
CALL ShowContinueError('calculated. The Design Exit Water Temperature should be between the outlet water ')
CALL ShowContinueError('temperatures calculated at high and low UA values. If the Design Exit Water Temperature is ')
CALL ShowContinueError('out of this range, the solution will not converge and UA will not be calculated. ')
CALL ShowContinueError('The possible solutions could be to manually input adjusted water and/or air flow rates ')
CALL ShowContinueError('based on the autosized values shown below or to adjust design evaporative fluid cooler ' // &
'air inlet wet-bulb temperature.')
CALL ShowContinueError('Plant:Sizing object inputs also influence these results (e.g. DeltaT and ExitTemp).')
CALL ShowContinueError('Inputs to the evaporative fluid cooler object:')
CALL ShowContinueError('Design Evaporative Fluid Cooler Load [W] = '// &
TRIM(RoundSigDigits(Par(1),2)))
CALL ShowContinueError('Design Evaporative Fluid Cooler Water Volume Flow Rate [m3/s] = '// &
TRIM(RoundSigDigits(SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignWaterFlowRate,6)))
CALL ShowContinueError('Design Evaporative Fluid Cooler Air Volume Flow Rate [m3/s] = '// &
TRIM(RoundSigDigits(Par(4),2)))
CALL ShowContinueError('Design Evaporative Fluid Cooler Air Inlet Wet-bulb Temp [C] = '// &
TRIM(RoundSigDigits(SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirWetBulb,2)))
CALL ShowContinueError('Design Evaporative Fluid Cooler Water Inlet Temp [C] = '// &
TRIM(RoundSigDigits(SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%WaterTemp,2)))
CALL ShowContinueError('Inputs to the plant sizing object:')
CALL ShowContinueError('Design Exit Water Temp [C] = '// &
TRIM(RoundSigDigits(PlantSizData(PltSizCondNum)%ExitTemp,2)))
CALL ShowContinueError('Loop Design Temperature Difference [C] = '// &
TRIM(RoundSigDigits(PlantSizData(PltSizCondNum)%DeltaT,2)))
CALL ShowContinueError('Design Evaporative Fluid Cooler Water Inlet Temp [C] = '// &
TRIM(RoundSigDigits(SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%WaterTemp,2)))
CALL ShowContinueError('Calculated water outlet temperature at low UA [C](UA = '// &
TRIM(RoundSigDigits(UA0,2))//' W/C) = '//TRIM(RoundSigDigits(OutWaterTempAtUA0,2)))
CALL ShowContinueError('Calculated water outlet temperature at high UA [C](UA = '// &
TRIM(RoundSigDigits(UA1,2))//' W/C) = '//TRIM(RoundSigDigits(OutWaterTempAtUA1,2)))
CALL ShowFatalError('Autosizing of Evaporative Fluid Cooler UA failed for Evaporative Fluid Cooler = '// &
TRIM(SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name))
ENDIF
SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedEvapFluidCoolerUA = UA
ELSE
SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedEvapFluidCoolerUA = 0.0d0
ENDIF
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType_Num == EvapFluidCooler_SingleSpeed) THEN
IF (PlantSizesOkayToFinalize) CALL ReportSizingOutput(cEvapFluidCooler_SingleSpeed, &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'U-Factor Times Area Value at Design Air Flow Rate [W/C]', &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedEvapFluidCoolerUA)
ELSEIF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType_Num == EvapFluidCooler_TwoSpeed) THEN
IF (PlantSizesOkayToFinalize) CALL ReportSizingOutput(cEvapFluidCooler_TwoSpeed, &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'U-Factor Times Area Value at High Fan Speed [W/C]', &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedEvapFluidCoolerUA)
ENDIF
ENDIF
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedAirFlowRate == AutoSize .AND. PlantSizesOkayToFinalize ) THEN
SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedAirFlowRate = &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedAirFlowRateSizingFactor &
*SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedAirFlowRate
CALL ReportSizingOutput(SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType, &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'Air Flow Rate at Low Fan Speed [m3/s]', SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedAirFlowRate)
ENDIF
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedFanPower == AutoSize .AND. PlantSizesOkayToFinalize ) THEN
SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedFanPower = &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedFanPowerSizingFactor &
*SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedFanPower
CALL ReportSizingOutput(SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType, &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'Fan Power at Low Fan Speed [W]', SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedFanPower)
ENDIF
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedEvapFluidCoolerUA == AutoSize .AND. PlantSizesOkayToFinalize ) THEN
SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedEvapFluidCoolerUA = &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedEvapFluidCoolerUASizingFactor &
*SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedEvapFluidCoolerUA
CALL ReportSizingOutput(SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType, &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'U-Factor Times Area Value at Low Fan Speed [W/C]', &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedEvapFluidCoolerUA)
ENDIF
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%PerformanceInputMethod_Num == PIM_StandardDesignCapacity .AND. &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType_Num == EvapFluidCooler_TwoSpeed) THEN
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignWaterFlowRate >= &
SmallWaterVolFlow.AND.SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedStandardDesignCapacity > 0.0d0) THEN
! Standard design capacity doesn't include compressor heat;
! predefined factor was 1.25 W heat rejection per W of delivered cooling, now user input with default 1.25
rho = GetDensityGlycol(PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidName, &
InitConvTemp, &
PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidIndex,&
'SizeEvapFluidCooler')
Cp = GetSpecificHeatGlycol(PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidName, &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignEnteringWaterTemp, &
PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidIndex, &
'SizeEvapFluidCooler')
DesEvapFluidCoolerLoad = SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedStandardDesignCapacity &
* SimpleEvapFluidCooler(EvapFluidCoolerNum)%HeatRejectCapNomCapSizingRatio
Par(1) = DesEvapFluidCoolerLoad
Par(2) = REAL(EvapFluidCoolerNum,r64)
Par(3) = rho * tmpDesignWaterFlowRate ! Design water mass flow rate
Par(4) = SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedAirFlowRate ! Air volume flow rate at low fan speed
Par(5) = Cp
UA0 = 0.0001d0 * DesEvapFluidCoolerLoad ! Assume deltaT = 10000K (limit)
UA1 = DesEvapFluidCoolerLoad ! Assume deltaT = 1K
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%WaterTemp = 35.d0 ! 95F design inlet water temperature
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirTemp = 35.d0 ! 95F design inlet air dry-bulb temp
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirWetBulb = 25.6d0 ! 78F design inlet air wet-bulb temp
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirPress = StdBaroPress
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirHumRat = &
PsyWFnTdbTwbPb(SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirTemp, &
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirWetBulb, &
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirPress)
CALL SolveRegulaFalsi(Acc, MaxIte, SolFla, UA, SimpleEvapFluidCoolerUAResidual, UA0, UA1, Par)
IF (SolFla == -1) THEN
CALL ShowWarningError('Iteration limit exceeded in calculating evaporative fluid cooler UA.')
CALL ShowContinueError('Autosizing of fluid cooler UA failed for evaporative fluid cooler = '//&
TRIM(SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name))
CALL ShowContinueError('The final UA value = '//TRIM(RoundSigDigits(UA,2))// &
'W/C, and the simulation continues...')
ELSE IF (SolFla == -2) THEN
CALL ShowSevereError(CalledFrom//': The combination of design input values did not allow the calculation of a ')
CALL ShowContinueError('reasonable low-speed UA value. Review and revise design input values as appropriate. ')
CALL ShowFatalError('Autosizing of Evaporative Fluid Cooler UA failed for Evaporative Fluid Cooler = '// &
TRIM(SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name))
ENDIF
SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedEvapFluidCoolerUA = UA
ELSE
SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedEvapFluidCoolerUA = 0.0d0
ENDIF
IF (PlantSizesOkayToFinalize) CALL ReportSizingOutput(SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType, &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'U-Factor Times Area Value at Low Fan Speed [W/C]', &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedEvapFluidCoolerUA)
ENDIF
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%PerformanceInputMethod_Num == PIM_UserSpecifiedDesignCapacity .AND. &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType_Num == EvapFluidCooler_TwoSpeed) THEN
IF (SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignWaterFlowRate >= &
SmallWaterVolFlow.AND.SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedUserSpecifiedDesignCapacity > 0.0d0) THEN
rho = GetDensityGlycol(PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidName, &
InitConvTemp, &
PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidIndex,&
'SizeEvapFluidCooler')
Cp = GetSpecificHeatGlycol(PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidName, &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignEnteringWaterTemp, &
PlantLoop(SimpleEvapFluidCooler(EvapFluidCoolerNum)%LoopNum)%FluidIndex, &
'SizeEvapFluidCooler')
DesEvapFluidCoolerLoad = SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedUserSpecifiedDesignCapacity
Par(1) = DesEvapFluidCoolerLoad
Par(2) = REAL(EvapFluidCoolerNum,r64)
Par(3) = rho * tmpDesignWaterFlowRate ! Design water mass flow rate
Par(4) = SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedAirFlowRate ! Air volume flow rate at low fan speed
Par(5) = Cp
UA0 = 0.0001d0 * DesEvapFluidCoolerLoad ! Assume deltaT = 10000K (limit)
UA1 = DesEvapFluidCoolerLoad ! Assume deltaT = 1K
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%WaterTemp = &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignEnteringWaterTemp
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirTemp = &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignEnteringAirTemp
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirWetBulb = &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%DesignEnteringAirWetBulbTemp
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirPress = StdBaroPress
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirHumRat = &
PsyWFnTdbTwbPb(SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirTemp, &
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirWetBulb, &
SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirPress)
CALL SolveRegulaFalsi(Acc, MaxIte, SolFla, UA, SimpleEvapFluidCoolerUAResidual, UA0, UA1, Par)
IF (SolFla == -1) THEN
CALL ShowSevereError('Iteration limit exceeded in calculating EvaporativeFluidCooler UA')
CALL ShowFatalError('Autosizing of EvaporativeFluidCooler UA failed for EvaporativeFluidCooler '// &
TRIM(SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name))
ELSE IF (SolFla == -2) THEN
CALL SimSimpleEvapFluidCooler(INT(Par(2)),Par(3),Par(4),UA0,OutWaterTempAtUA0)
CALL SimSimpleEvapFluidCooler(INT(Par(2)),Par(3),Par(4),UA1,OutWaterTempAtUA1)
CALL ShowSevereError(CalledFrom//': The combination of design input values did not allow the calculation of a ')
CALL ShowContinueError('reasonable UA value. Review and revise design input values as appropriate. Specifying hard')
CALL ShowContinueError('sizes for some "autosizable" fields while autosizing other "autosizable" fields may be '// &
'contributing to this problem.')
CALL ShowContinueError('This model iterates on UA to find the heat transfer required to provide the design outlet ')
CALL ShowContinueError('water temperature. Initially, the outlet water temperatures at high and low UA values are ')
CALL ShowContinueError('calculated. The Design Exit Water Temperature should be between the outlet water ')
CALL ShowContinueError('temperatures calculated at high and low UA values. If the Design Exit Water Temperature is ')
CALL ShowContinueError('out of this range, the solution will not converge and UA will not be calculated. ')
CALL ShowContinueError('Inputs to the Evaporative Fluid Cooler model are:')
CALL ShowContinueError('Design Evaporative Fluid Cooler Load = '//TRIM(RoundSigDigits(Par(1),2)))
CALL ShowContinueError('Design Evaporative Fluid Cooler Water Volume Flow Rate = '//TRIM(RoundSigDigits(Par(3),2)))
CALL ShowContinueError('Design Evaporative Fluid Cooler Air Volume Flow Rate = '//TRIM(RoundSigDigits(Par(4),2)))
CALL ShowContinueError('Design Evaporative Fluid Cooler Air Inlet Wet-bulb Temp = '// &
TRIM(RoundSigDigits(SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%AirWetBulb,2)))
CALL ShowContinueError('Design Evaporative Fluid Cooler Water Inlet Temp = '// &
TRIM(RoundSigDigits(SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%WaterTemp,2)))
CALL ShowContinueError('Design Exit Water Temp = '// &
TRIM(RoundSigDigits(PlantSizData(PltSizCondNum)%ExitTemp,2)))
CALL ShowContinueError('Design Evaporative Fluid Cooler Water Inlet Temp [C] = '// &
TRIM(RoundSigDigits(SimpleEvapFluidCoolerInlet(EvapFluidCoolerNum)%WaterTemp,2)))
CALL ShowContinueError('Calculated water outlet temperature at low UA('//TRIM(RoundSigDigits(UA0,2))//') = '// &
TRIM(RoundSigDigits(OutWaterTempAtUA0,2)))
CALL ShowContinueError('Calculated water outlet temperature at high UA('//TRIM(RoundSigDigits(UA1,2))//') = '// &
TRIM(RoundSigDigits(OutWaterTempAtUA1,2)))
CALL ShowFatalError('Autosizing of Evaporative Fluid Cooler UA failed for Evaporative Fluid Cooler = '// &
TRIM(SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name))
ENDIF
SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedEvapFluidCoolerUA = UA
ELSE
SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedEvapFluidCoolerUA = 0.0d0
ENDIF
IF (PlantSizesOkayToFinalize) CALL ReportSizingOutput(SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType, &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name, &
'U-Factor Times Area Value at Low Fan Speed [W/C]', &
SimpleEvapFluidCooler(EvapFluidCoolerNum)%LowSpeedEvapFluidCoolerUA)
ENDIF
IF (PlantSizesOkayToFinalize) THEN
!create predefined report
equipName = SimpleEvapFluidCooler(EvapFluidCoolerNum)%Name
CALL PreDefTableEntry(pdchMechType,equipName,SimpleEvapFluidCooler(EvapFluidCoolerNum)%EvapFluidCoolerType)
CALL PreDefTableEntry(pdchMechNomCap,equipName,SimpleEvapFluidCooler(EvapFluidCoolerNum)%HighSpeedStandardDesignCapacity)
ENDIF
RETURN
END SUBROUTINE SizeEvapFluidCooler