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, | intent(in) | :: | EIRChillNum | |||
logical, | intent(in) | :: | FirstIteration |
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 CheckMinMaxCurveBoundaries(EIRChillNum, FirstIteration)
! SUBROUTINE INFORMATION:
! AUTHOR: R Raustad, FSEC
! DATE WRITTEN: August 2006
! PURPOSE OF THIS SUBROUTINE:
! To compare the evaporator/condenser outlet temperatures to curve object min/max values
! METHODOLOGY EMPLOYED:
! na
! REFERENCES:
! na
! USE STATEMENTS:
USE General, ONLY : TrimSigDigits, RoundSigDigits
USE DataGlobals, ONLY : WarmupFlag
USE DataInterfaces, ONLY : ShowWarningError, ShowContinueErrorTimeStamp, ShowRecurringWarningErrorAtEnd, &
ShowContinueError
USE CurveManager, ONLY : CurveValue
USE DataPlant, ONLY : PlantLoop, CompSetPtBasedSchemeType, SingleSetpoint, DualSetpointDeadband
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
INTEGER, INTENT(IN) :: EIRChillNum ! Number of the current electric EIR chiller being simulated
LOGICAL, INTENT(IN) :: FirstIteration ! TRUE when first iteration of timestep
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! DERIVED TYPE DEFINITIONS:
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: EvapOutletNode ! Chiller evaporator outlet node number
REAL(r64) :: EvapOutletTempSetpoint ! Evaporator outlet temperature setpoint [C]
REAL(r64) :: CAPFTXTmin ! Minimum evaporator leaving temperature allowed by CAPFT curve [C]
REAL(r64) :: CAPFTXTmax ! Maximum evaporator leaving temperature allowed by CAPFT curve [C]
REAL(r64) :: CAPFTYTmin ! Minimum condenser leaving temperature allowed by CAPFT curve [C]
REAL(r64) :: CAPFTYTmax ! Maximum condenser leaving temperature allowed by CAPFT curve [C]
REAL(r64) :: EIRFTXTmin ! Minimum evaporator leaving temperature allowed by EIRFT curve [C]
REAL(r64) :: EIRFTXTmax ! Maximum evaporator leaving temperature allowed by EIRFT curve [C]
REAL(r64) :: EIRFTYTmin ! Minimum condenser leaving temperature allowed by EIRFT curve [C]
REAL(r64) :: EIRFTYTmax ! Maximum condenser leaving temperature allowed by EIRFT curve [C]
REAL(r64) :: EIRFPLRTmin ! Minimum condenser leaving temperature allowed by EIRFPLR curve [C]
REAL(r64) :: EIRFPLRTmax ! Maximum condenser leaving temperature allowed by EIRFPLR curve [C]
REAL(r64) :: EIRFPLRPLRmin ! Minimum PLR allowed by EIRFPLR curve
REAL(r64) :: EIRFPLRPLRmax ! Maximum PLR allowed by EIRFPLR curve
INTEGER :: PlantLoopNum ! Plant loop which contains the current chiller
INTEGER :: LoopSideNum ! Plant loop side which contains the current chiller (usually supply side)
INTEGER :: BranchNum
INTEGER :: CompNum
! Do not print out warnings if chiller not operating or FirstIteration/WarmupFlag/FlowLock
PlantLoopNum = ElecReformEIRChiller(EIRChillNum)%CWLoopNum
LoopSideNum = ElecReformEIRChiller(EIRChillNum)%CWLoopSideNum
BranchNum = ElecReformEIRChiller(EIRChillNum)%CWBranchNum
CompNum = ElecReformEIRChiller(EIRChillNum)%CWCompNum
IF (FirstIteration .OR. WarmupFlag .OR. PlantLoop(PlantLoopNum)%Loopside(LoopSideNum)%FlowLock .EQ. 0) RETURN
EvapOutletNode = ElecReformEIRChiller(EIRChillNum)%EvapOutletNodeNum
! Move CAPFT and EIRFT min/max values for evaporator outlet temperature to local variables
CAPFTXTmin = ElecReformEIRChiller(EIRChillNum)%ChillerCAPFTXTempMin
CAPFTXTmax = ElecReformEIRChiller(EIRChillNum)%ChillerCAPFTXTempMax
EIRFTXTmin = ElecReformEIRChiller(EIRChillNum)%ChillerEIRFTXTempMin
EIRFTXTmax = ElecReformEIRChiller(EIRChillNum)%ChillerEIRFTXTempMax
! Check bounds for curves, lump min/max into same check since min/max values are reported in recurring warning messages
IF(EvapOutletTemp .LT. CAPFTXTmin .OR. EvapOutletTemp .GT. CAPFTXTmax) THEN
ElecReformEIRChiller(EIRChillNum)%CAPFTXIter = ElecReformEIRChiller(EIRChillNum)%CAPFTXIter + 1
IF (ElecReformEIRChiller(EIRChillNum)%CAPFTXIter .EQ. 1) THEN
CALL ShowWarningError('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name) // &
'": The evaporator outlet temperature ('//TRIM(TrimSigDigits(EvapOutletTemp,2))//' C) is outside the range of ' &
//'evaporator outlet temperatures (X var) given in Cooling Capacity Function of Temperature biquadratic curve = ' &
//TRIM(ElecReformEIRChiller(EIRChillNum)%CAPFTName))
CALL ShowContinueErrorTimeStamp('The range specified = '//TRIM(TrimSigDigits(CAPFTXTmin,2)) &
//' C to '//TRIM(TrimSigDigits(CAPFTXTmax,2))//' C. ')
CALL ShowRecurringWarningErrorAtEnd('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)// &
'": The evap outlet temp range in Cooling Capacity Function of Temp curve error continues.', &
ElecReformEIRChiller(EIRChillNum)%CAPFTXIterIndex, EvapOutletTemp, EvapOutletTemp)
ELSE
CALL ShowRecurringWarningErrorAtEnd('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)// &
'": The evap outlet temp range in Cooling Capacity Function of Temp curve error continues.', &
ElecReformEIRChiller(EIRChillNum)%CAPFTXIterIndex, EvapOutletTemp, EvapOutletTemp)
END IF
END IF
IF(EvapOutletTemp .LT. EIRFTXTmin .OR. EvapOutletTemp .GT. EIRFTXTmax) THEN
ElecReformEIRChiller(EIRChillNum)%EIRFTXIter = ElecReformEIRChiller(EIRChillNum)%EIRFTXIter + 1
IF (ElecReformEIRChiller(EIRChillNum)%EIRFTXIter .EQ. 1) THEN
CALL ShowWarningError('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name) // &
'": The evaporator outlet temperature ('//TRIM(TrimSigDigits(EvapOutletTemp,2))//' C) is outside the range of ' &
//'evaporator outlet temperatures (X var) given in Electric Input to Cooling Output Ratio Function of ' &
//'Temperature biquadratic curve = '//TRIM(ElecReformEIRChiller(EIRChillNum)%EIRFTName))
CALL ShowContinueErrorTimeStamp('The range specified = '//TRIM(TrimSigDigits(EIRFTXTmin,2)) &
//' C to '//TRIM(TrimSigDigits(EIRFTXTmax,2))//' C. ')
CALL ShowRecurringWarningErrorAtEnd('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)// &
'": The evap outlet temp range in Electric Input to Cooling Output Ratio Function of Temp curve error' &
//' continues.',ElecReformEIRChiller(EIRChillNum)%EIRFTXIterIndex, EvapOutletTemp, EvapOutletTemp)
ELSE
CALL ShowRecurringWarningErrorAtEnd('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)// &
'": The evap outlet temp range in Electric Input to Cooling Output Ratio Function of Temp curve error' &
//' continues.',ElecReformEIRChiller(EIRChillNum)%EIRFTXIterIndex, EvapOutletTemp, EvapOutletTemp)
END IF
END IF
! Move CAPFT, EIRFT, and EIRFPLR min/max condenser outlet temperature values to local variables
CAPFTYTmin = ElecReformEIRChiller(EIRChillNum)%ChillerCAPFTYTempMin
CAPFTYTmax = ElecReformEIRChiller(EIRChillNum)%ChillerCAPFTYTempMax
EIRFTYTmin = ElecReformEIRChiller(EIRChillNum)%ChillerEIRFTYTempMin
EIRFTYTmax = ElecReformEIRChiller(EIRChillNum)%ChillerEIRFTYTempMax
EIRFPLRTmin = ElecReformEIRChiller(EIRChillNum)%ChillerEIRFPLRTempMin
EIRFPLRTmax = ElecReformEIRChiller(EIRChillNum)%ChillerEIRFPLRTempMax
! Move EIRFPLR min/max part-load ratio values to local variables
EIRFPLRPLRmin = ElecReformEIRChiller(EIRChillNum)%ChillerEIRFPLRPLRMin
EIRFPLRPLRmax = ElecReformEIRChiller(EIRChillNum)%ChillerEIRFPLRPLRMax
! Check bounds for curves, lump min/max into same check since min/max values are reported in recurring warning messages
IF(CondOutletTemp .LT. CAPFTYTmin .OR. CondOutletTemp .GT. CAPFTYTmax) THEN
ElecReformEIRChiller(EIRChillNum)%CAPFTYIter = ElecReformEIRChiller(EIRChillNum)%CAPFTYIter + 1
IF (ElecReformEIRChiller(EIRChillNum)%CAPFTYIter .EQ. 1) THEN
CALL ShowWarningError('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name) // &
'": The condenser outlet temperature ('//TRIM(TrimSigDigits(CondOutletTemp,2))//' C) is outside the range of ' &
//'condenser outlet temperatures (Y var) given in Cooling Capacity Function of Temperature biquadratic curve = ' &
//TRIM(ElecReformEIRChiller(EIRChillNum)%CAPFTName))
CALL ShowContinueErrorTimeStamp('The range specified = '//TRIM(TrimSigDigits(CAPFTYTmin,2)) &
//' C to '//TRIM(TrimSigDigits(CAPFTYTmax,2))//' C. ')
CALL ShowRecurringWarningErrorAtEnd('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)// &
'": The cond outlet temp range in Cooling Capacity Function of Temp curve error continues.', &
ElecReformEIRChiller(EIRChillNum)%CAPFTYIterIndex, CondOutletTemp, CondOutletTemp)
ELSE
CALL ShowRecurringWarningErrorAtEnd('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)// &
'": The cond outlet temp range in Cooling Capacity Function of Temp curve error continues.', &
ElecReformEIRChiller(EIRChillNum)%CAPFTYIterIndex, CondOutletTemp, CondOutletTemp)
END IF
END IF
IF(CondOutletTemp .LT. EIRFTYTmin .OR. CondOutletTemp .GT. EIRFTYTmax) THEN
ElecReformEIRChiller(EIRChillNum)%EIRFTYIter = ElecReformEIRChiller(EIRChillNum)%EIRFTYIter + 1
IF (ElecReformEIRChiller(EIRChillNum)%EIRFTYIter .EQ. 1) THEN
CALL ShowWarningError('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name) // &
'": The condenser outlet temperature ('//TRIM(TrimSigDigits(CondOutletTemp,2))//' C) is outside the range of ' &
//'condenser outlet temperatures (Y var) given in Electric Input to Cooling Output Ratio Function of ' &
//'Temperature biquadratic curve = '//TRIM(ElecReformEIRChiller(EIRChillNum)%EIRFTName))
CALL ShowContinueErrorTimeStamp('The range specified = '//TRIM(TrimSigDigits(EIRFTYTmin,2)) &
//' C to '//TRIM(TrimSigDigits(EIRFTYTmax,2))//' C. ')
CALL ShowRecurringWarningErrorAtEnd('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)// &
'": The cond outlet temp range in Electric Input to Cooling Output Ratio as a Function of Temp ' &
//'curve error continues.', ElecReformEIRChiller(EIRChillNum)%EIRFTYIterIndex, CondOutletTemp, CondOutletTemp)
ELSE
CALL ShowRecurringWarningErrorAtEnd('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)// &
'": The cond outlet temp range in Electric Input to Cooling Output Ratio as a Function of Temp ' &
//'curve error continues.', ElecReformEIRChiller(EIRChillNum)%EIRFTYIterIndex, CondOutletTemp, CondOutletTemp)
END IF
END IF
IF(CondOutletTemp .LT. EIRFPLRTmin .OR. CondOutletTemp .GT. EIRFPLRTmax) THEN
ElecReformEIRChiller(EIRChillNum)%EIRFPLRTIter = ElecReformEIRChiller(EIRChillNum)%EIRFPLRTIter + 1
IF (ElecReformEIRChiller(EIRChillNum)%EIRFPLRTIter .EQ. 1) THEN
CALL ShowWarningError('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name) // &
'": The condenser outlet temperature ('//TRIM(TrimSigDigits(CondOutletTemp,2))//' C) is outside the range of ' &
//'condenser outlet temperatures (X var) given in Electric Input to Cooling Output Ratio Function of Part-load Ratio ' &
//'bicubic curve = '//TRIM(ElecReformEIRChiller(EIRChillNum)%EIRFPLRName))
CALL ShowContinueErrorTimeStamp('The range specified = '//TRIM(TrimSigDigits(EIRFPLRTmin,2)) &
//' C to '//TRIM(TrimSigDigits(EIRFPLRTmax,2))//' C. ')
CALL ShowRecurringWarningErrorAtEnd('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)// &
'": The cond outlet temp range in Electric Input to Cooling Output Ratio Function of PLR ' &
//'curve error continues.', ElecReformEIRChiller(EIRChillNum)%EIRFPLRTIterIndex, CondOutletTemp, CondOutletTemp)
ELSE
CALL ShowRecurringWarningErrorAtEnd('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)// &
'": The cond outlet temp range in Electric Input to Cooling Output Ratio Function of PLR ' &
//'curve error continues.', ElecReformEIRChiller(EIRChillNum)%EIRFPLRTIterIndex, CondOutletTemp, CondOutletTemp)
END IF
END IF
IF(ChillerPartLoadRatio .LT. EIRFPLRPLRmin .OR. ChillerPartLoadRatio .GT. EIRFPLRPLRmax) THEN
ElecReformEIRChiller(EIRChillNum)%EIRFPLRPLRIter = ElecReformEIRChiller(EIRChillNum)%EIRFPLRPLRIter + 1
IF (ElecReformEIRChiller(EIRChillNum)%EIRFPLRPLRIter .EQ. 1) THEN
CALL ShowWarningError('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name) // &
'": The part-load ratio ('//TRIM(TrimSigDigits(ChillerPartLoadRatio,3))//') is outside the range of ' &
//'part-load ratios (Y var) given in Electric Input to Cooling Output Ratio Function of Part-load Ratio ' &
//'bicubic curve = '//TRIM(ElecReformEIRChiller(EIRChillNum)%EIRFPLRName))
CALL ShowContinueErrorTimeStamp('The range specified = '//TRIM(TrimSigDigits(EIRFPLRPLRmin,3)) &
//' to '//TRIM(TrimSigDigits(EIRFPLRPLRmax,3))//'. ')
CALL ShowRecurringWarningErrorAtEnd('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)// &
'": The part-load ratio range in Electric Input to Cooling Output Ratio Function of PLRatio curve ' &
//'error continues.', ElecReformEIRChiller(EIRChillNum)%EIRFPLRPLRIterIndex, ChillerPartLoadRatio, ChillerPartLoadRatio)
ELSE
CALL ShowRecurringWarningErrorAtEnd('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)// &
'": The part-load ratio range in Electric Input to Cooling Output Ratio Function of PLRatio curve ' &
//'error continues.', ElecReformEIRChiller(EIRChillNum)%EIRFPLRPLRIterIndex, ChillerPartLoadRatio, ChillerPartLoadRatio)
END IF
END IF
SELECT CASE (PlantLoop(PlantLoopNum)%LoopDemandCalcScheme)
CASE (SingleSetpoint)
IF ((ElecReformEIRChiller(EIRChillNum)%FlowMode == LeavingSetpointModulated) .OR. &
(PlantLoop(PlantLoopNum)%LoopSide(LoopSideNum)%Branch(BranchNum)%Comp(CompNum)%CurOpSchemeType &
== CompSetPtBasedSchemeType) .OR. &
(Node(ElecReformEIRChiller(EIRChillNum)%EvapOutletNodeNum)%TempSetPoint /= SensedNodeFlagValue) ) THEN
! there will be a valid setpoint on outlet
EvapOutletTempSetpoint = Node(EvapOutletNode)%TempSetPoint
ELSE ! use plant loop overall setpoint
EvapOutletTempSetpoint= Node(PlantLoop(PlantLoopNum)%TempSetPointNodeNum)%TempSetPoint
ENDIF
CASE (DualSetpointDeadband)
IF ((ElecReformEIRChiller(EIRChillNum)%FlowMode == LeavingSetpointModulated) .OR. &
(PlantLoop(PlantLoopNum)%LoopSide(LoopSideNum)%Branch(BranchNum)%Comp(CompNum)%CurOpSchemeType &
== CompSetPtBasedSchemeType) .OR. &
(Node(ElecReformEIRChiller(EIRChillNum)%EvapOutletNodeNum)%TempSetPointHi /= SensedNodeFlagValue) ) THEN
! there will be a valid setpoint on outlet
EvapOutletTempSetpoint = Node(EvapOutletNode)%TempSetPointHi
ELSE ! use plant loop overall setpoint
EvapOutletTempSetpoint= Node(PlantLoop(PlantLoopNum)%TempSetPointNodeNum)%TempSetPointHi
ENDIF
END SELECT
ChillerCapFT = CurveValue(ElecReformEIRChiller(EIRChillNum)%ChillerCapFT, &
EvapOutletTempSetpoint,CondOutletTemp)
IF(ChillerCapFT .LT. 0)THEN
IF(ElecReformEIRChiller(EIRChillNum)%ChillerCapFTError .LT. 1 .AND. PlantLoop(PlantLoopNum)%Loopside(LoopSideNum)%FlowLock &
.NE. 0 .AND. .NOT. WarmupFlag)THEN
ElecReformEIRChiller(EIRChillNum)%ChillerCapFTError = ElecReformEIRChiller(EIRChillNum)%ChillerCapFTError + 1
CALL ShowWarningError('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)//'":')
CALL ShowContinueError(' Chiller Capacity as a Function of Temperature curve output is negative ('// &
TRIM(RoundSigDigits(ChillerCapFT,3))//').')
CALL ShowContinueError(' Negative value occurs using an Evaporator Leaving Temp of ' &
//TRIM(RoundSigDigits(EvapOutletTempSetpoint,1))// &
' and a Condenser Leaving Temp of '//TRIM(RoundSigDigits(CondOutletTemp,1))//'.')
CALL ShowContinueErrorTimeStamp(' Resetting curve output to zero and continuing simulation.')
ELSE IF(PlantLoop(PlantLoopNum)%Loopside(LoopSideNum)%FlowLock .NE. 0 .AND. .NOT. WarmupFlag)THEN
ElecReformEIRChiller(EIRChillNum)%ChillerCapFTError = ElecReformEIRChiller(EIRChillNum)%ChillerCapFTError + 1
CALL ShowRecurringWarningErrorAtEnd('CHILLER:ELECTRIC:REFORMULATEDEIR "' &
//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)//'":'//&
' Chiller Capacity as a Function of Temperature curve output is negative warning continues...' &
, ElecReformEIRChiller(EIRChillNum)%ChillerCapFTErrorIndex, ChillerCapFT, ChillerCapFT)
END IF
END IF
ChillerEIRFT = CurveValue(ElecReformEIRChiller(EIRChillNum)%ChillerEIRFT,EvapOutletTemp,CondOutletTemp)
IF(ChillerEIRFT .LT. 0.0d0)THEN
IF(ElecReformEIRChiller(EIRChillNum)%ChillerEIRFTError .LT. 1 .AND. PlantLoop(PlantLoopNum)%Loopside(LoopSideNum)%FlowLock &
.NE. 0 .AND. .NOT. WarmupFlag)THEN
ElecReformEIRChiller(EIRChillNum)%ChillerEIRFTError = ElecReformEIRChiller(EIRChillNum)%ChillerEIRFTError + 1
CALL ShowWarningError('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)//'":')
CALL ShowContinueError(' Reformulated Chiller EIR as a Function of Temperature curve output is negative (' &
//TRIM(RoundSigDigits(ChillerEIRFT,3))//').')
CALL ShowContinueError(' Negative value occurs using an Evaporator Leaving Temp of ' &
//TRIM(RoundSigDigits(EvapOutletTemp,1))// &
' and a Condenser Leaving Temp of '//TRIM(RoundSigDigits(CondOutletTemp,1))//'.')
CALL ShowContinueErrorTimeStamp(' Resetting curve output to zero and continuing simulation.')
ELSE IF (PlantLoop(PlantLoopNum)%Loopside(LoopSideNum)%FlowLock .NE. 0 .AND. .NOT. WarmupFlag) THEN
ElecReformEIRChiller(EIRChillNum)%ChillerEIRFTError = ElecReformEIRChiller(EIRChillNum)%ChillerEIRFTError + 1
CALL ShowRecurringWarningErrorAtEnd('CHILLER:ELECTRIC:REFORMULATEDEIR "' &
//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)//'":'//&
' Chiller EIR as a Function of Temperature curve output is negative warning continues...' &
, ElecReformEIRChiller(EIRChillNum)%ChillerEIRFTErrorIndex, ChillerEIRFT, ChillerEIRFT)
END IF
END IF
ChillerEIRFPLR = CurveValue(ElecReformEIRChiller(EIRChillNum)%ChillerEIRFPLR,CondOutletTemp,ChillerPartLoadRatio)
IF(ChillerEIRFPLR .LT. 0.0d0)THEN
IF(ElecReformEIRChiller(EIRChillNum)%ChillerEIRFPLRError .LT. 1 .AND. PlantLoop(PlantLoopNum)%Loopside(LoopSideNum)%FlowLock &
.NE. 0 .AND. .NOT. WarmupFlag)THEN
ElecReformEIRChiller(EIRChillNum)%ChillerEIRFPLRError = ElecReformEIRChiller(EIRChillNum)%ChillerEIRFPLRError + 1
CALL ShowWarningError('CHILLER:ELECTRIC:REFORMULATEDEIR "'//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)//'":')
CALL ShowContinueError(' Chiller EIR as a function of PLR and condenser water temperature curve output is negative (' &
//TRIM(RoundSigDigits(ChillerEIRFPLR,3))//').')
CALL ShowContinueError(' Negative value occurs using a part-load ratio of '//TRIM(RoundSigDigits(ChillerPartLoadRatio,3))// &
' and a Condenser Leaving Temp of '//TRIM(RoundSigDigits(CondOutletTemp,1))//' C.')
CALL ShowContinueErrorTimeStamp(' Resetting curve output to zero and continuing simulation.')
ELSE IF (PlantLoop(PlantLoopNum)%Loopside(LoopSideNum)%FlowLock .NE. 0 .AND. .NOT. WarmupFlag) THEN
ElecReformEIRChiller(EIRChillNum)%ChillerEIRFPLRError = ElecReformEIRChiller(EIRChillNum)%ChillerEIRFPLRError + 1
CALL ShowRecurringWarningErrorAtEnd('CHILLER:ELECTRIC:REFORMULATEDEIR "' &
//TRIM(ElecReformEIRChiller(EIRChillNum)%Name)//'":'//&
' Chiller EIR as a function of PLR curve output is negative warning continues...' &
, ElecReformEIRChiller(EIRChillNum)%ChillerEIRFPLRErrorIndex, ChillerEIRFPLR, ChillerEIRFPLR)
END IF
END IF
RETURN
END SUBROUTINE CheckMinMaxCurveBoundaries