From 0e0005b7f9e69d9722b72bc97fce55fa8344e6fa Mon Sep 17 00:00:00 2001 From: "Michael J. Witte" Date: Thu, 17 Oct 2024 13:49:00 -0500 Subject: [PATCH 1/4] Warn if chiller chills when off --- src/EnergyPlus/ChillerElectricEIR.cc | 41 +++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/src/EnergyPlus/ChillerElectricEIR.cc b/src/EnergyPlus/ChillerElectricEIR.cc index 4ffc4585300..23a47a96409 100644 --- a/src/EnergyPlus/ChillerElectricEIR.cc +++ b/src/EnergyPlus/ChillerElectricEIR.cc @@ -2583,7 +2583,24 @@ void ElectricEIRChillerSpecs::update(EnergyPlusData &state, Real64 const MyLoad, Real64 ReportingConstant = state.dataHVACGlobal->TimeStepSysSec; if (MyLoad >= 0 || !RunFlag) { // Chiller not running so pass inlet states to outlet states - // Set node conditions + // if (MyLoad >= 0 || !RunFlag || this->QEvaporator <= 0.0) { // Chiller not running so pass inlet states to outlet states + // if ((MyLoad < 0 && RunFlag) && (this->CondMassFlowRate >= DataBranchAirLoopPlant::MassFlowTolerance || + // this->EvapMassFlowRate >= DataBranchAirLoopPlant::MassFlowTolerance)) { + // if (!state.dataGlobal->WarmupFlag && !state.dataGlobal->DoingHVACSizingSimulations && + // state.dataPlnt->PlantLoop(this->CWPlantLoc.loopNum).LoopSide(this->CWPlantLoc.loopSideNum).FlowLock == DataPlant::FlowLock::Locked) + // { ShowWarningError(state, "Chiller off due to this->QEvaporator <= 0.0 rule"); ShowContinueErrorTimeStamp( + // state, + // format("MyLoad={}, RunFlag={}, this->QEvaporator={}, this->QCondenser={}, this->EvapMassFlowRate={}, + // this->CondMassFlowRate={}", + // MyLoad, + // RunFlag, + // this->QEvaporator, + // this->QCondenser, + // this->EvapMassFlowRate, + // this->CondMassFlowRate)); + // } + // } + // Set node conditions state.dataLoopNodes->Node(this->EvapOutletNodeNum).Temp = state.dataLoopNodes->Node(this->EvapInletNodeNum).Temp; state.dataLoopNodes->Node(this->CondOutletNodeNum).Temp = state.dataLoopNodes->Node(this->CondInletNodeNum).Temp; if (this->CondenserType != DataPlant::CondenserType::WaterCooled) { @@ -2680,6 +2697,28 @@ void ElectricEIRChillerSpecs::update(EnergyPlusData &state, Real64 const MyLoad, this->HeatRecMassFlow = state.dataLoopNodes->Node(this->HeatRecInletNodeNum).MassFlowRate; } } + if (((this->EvapMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance) || + (this->CondMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance)) && + (this->EvapInletTemp != this->EvapOutletTemp)) { + if (!state.dataGlobal->WarmupFlag && !state.dataGlobal->DoingHVACSizingSimulations && + state.dataPlnt->PlantLoop(this->CWPlantLoc.loopNum).LoopSide(this->CWPlantLoc.loopSideNum).FlowLock == DataPlant::FlowLock::Locked) { + ShowWarningError(state, + format("Chiller should be off, evap flow rate={}, but EvapInletTemp={} is != EvapOutletTemp={}", + this->EvapMassFlowRate, + this->EvapInletTemp, + this->EvapOutletTemp)); + ShowContinueErrorTimeStamp(state, + format("MyLoad={}, RunFlag={}, QEvaporator={}, QCondenser={}, EvapMassFlowRate={}, " + "CondMassFlowRate = {}, Power={} ", + MyLoad, + RunFlag, + this->QEvaporator, + this->QCondenser, + this->EvapMassFlowRate, + this->CondMassFlowRate, + this->Power)); + } + } } bool ElectricEIRChillerSpecs::thermosiphonDisabled(EnergyPlusData &state) From e827c6283f1b9507cd2c008ad8717a2c5628cc7d Mon Sep 17 00:00:00 2001 From: "Michael J. Witte" Date: Thu, 17 Oct 2024 14:00:29 -0500 Subject: [PATCH 2/4] Warn if chiller chills when off --- src/EnergyPlus/ChillerElectricEIR.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/EnergyPlus/ChillerElectricEIR.cc b/src/EnergyPlus/ChillerElectricEIR.cc index 23a47a96409..1bdf902b2d2 100644 --- a/src/EnergyPlus/ChillerElectricEIR.cc +++ b/src/EnergyPlus/ChillerElectricEIR.cc @@ -2703,10 +2703,13 @@ void ElectricEIRChillerSpecs::update(EnergyPlusData &state, Real64 const MyLoad, if (!state.dataGlobal->WarmupFlag && !state.dataGlobal->DoingHVACSizingSimulations && state.dataPlnt->PlantLoop(this->CWPlantLoc.loopNum).LoopSide(this->CWPlantLoc.loopSideNum).FlowLock == DataPlant::FlowLock::Locked) { ShowWarningError(state, - format("Chiller should be off, evap flow rate={}, but EvapInletTemp={} is != EvapOutletTemp={}", + format("Chiller should be off, evap flow rate={}, but EvapInletTemp={} is != EvapOutletTemp={}, EvapInletNodeNum.Temp " + "={}, EvapOutletNodeNum).Temp={}", this->EvapMassFlowRate, this->EvapInletTemp, - this->EvapOutletTemp)); + this->EvapOutletTemp, + state.dataLoopNodes->Node(this->EvapInletNodeNum).Temp, + state.dataLoopNodes->Node(this->EvapOutletNodeNum).Temp)); ShowContinueErrorTimeStamp(state, format("MyLoad={}, RunFlag={}, QEvaporator={}, QCondenser={}, EvapMassFlowRate={}, " "CondMassFlowRate = {}, Power={} ", From 394a2c7a6b39758a4392a8165e08cfce4633eb07 Mon Sep 17 00:00:00 2001 From: "Michael J. Witte" Date: Thu, 17 Oct 2024 16:10:06 -0500 Subject: [PATCH 3/4] Fix chiller off when condenser flow is zero --- src/EnergyPlus/ChillerElectricEIR.cc | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/src/EnergyPlus/ChillerElectricEIR.cc b/src/EnergyPlus/ChillerElectricEIR.cc index 1bdf902b2d2..ff63cdca937 100644 --- a/src/EnergyPlus/ChillerElectricEIR.cc +++ b/src/EnergyPlus/ChillerElectricEIR.cc @@ -1962,6 +1962,8 @@ void ElectricEIRChillerSpecs::calculate(EnergyPlusData &state, Real64 &MyLoad, b state, this->CWPlantLoc, this->CondMassFlowIndex, this->CDPlantLoc, DataPlant::CriteriaType::MassFlowRate, this->CondMassFlowRate); if (this->CondMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance) { + // Shut chiller off if there is no condenser water flow + MyLoad = 0.0; if (this->EvapMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance) { // Use PlantUtilities::SetComponentFlowRate to decide actual flow PlantUtilities::SetComponentFlowRate( @@ -2583,23 +2585,6 @@ void ElectricEIRChillerSpecs::update(EnergyPlusData &state, Real64 const MyLoad, Real64 ReportingConstant = state.dataHVACGlobal->TimeStepSysSec; if (MyLoad >= 0 || !RunFlag) { // Chiller not running so pass inlet states to outlet states - // if (MyLoad >= 0 || !RunFlag || this->QEvaporator <= 0.0) { // Chiller not running so pass inlet states to outlet states - // if ((MyLoad < 0 && RunFlag) && (this->CondMassFlowRate >= DataBranchAirLoopPlant::MassFlowTolerance || - // this->EvapMassFlowRate >= DataBranchAirLoopPlant::MassFlowTolerance)) { - // if (!state.dataGlobal->WarmupFlag && !state.dataGlobal->DoingHVACSizingSimulations && - // state.dataPlnt->PlantLoop(this->CWPlantLoc.loopNum).LoopSide(this->CWPlantLoc.loopSideNum).FlowLock == DataPlant::FlowLock::Locked) - // { ShowWarningError(state, "Chiller off due to this->QEvaporator <= 0.0 rule"); ShowContinueErrorTimeStamp( - // state, - // format("MyLoad={}, RunFlag={}, this->QEvaporator={}, this->QCondenser={}, this->EvapMassFlowRate={}, - // this->CondMassFlowRate={}", - // MyLoad, - // RunFlag, - // this->QEvaporator, - // this->QCondenser, - // this->EvapMassFlowRate, - // this->CondMassFlowRate)); - // } - // } // Set node conditions state.dataLoopNodes->Node(this->EvapOutletNodeNum).Temp = state.dataLoopNodes->Node(this->EvapInletNodeNum).Temp; state.dataLoopNodes->Node(this->CondOutletNodeNum).Temp = state.dataLoopNodes->Node(this->CondInletNodeNum).Temp; From 172283ac3b6fb18abb847a7fb9a2f47e041faf6c Mon Sep 17 00:00:00 2001 From: "Michael J. Witte" Date: Fri, 18 Oct 2024 14:16:39 -0500 Subject: [PATCH 4/4] Revert Warn if chiller chills when off --- src/EnergyPlus/ChillerElectricEIR.cc | 27 +-------------------------- 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/src/EnergyPlus/ChillerElectricEIR.cc b/src/EnergyPlus/ChillerElectricEIR.cc index ff63cdca937..405aa4fc57b 100644 --- a/src/EnergyPlus/ChillerElectricEIR.cc +++ b/src/EnergyPlus/ChillerElectricEIR.cc @@ -2585,7 +2585,7 @@ void ElectricEIRChillerSpecs::update(EnergyPlusData &state, Real64 const MyLoad, Real64 ReportingConstant = state.dataHVACGlobal->TimeStepSysSec; if (MyLoad >= 0 || !RunFlag) { // Chiller not running so pass inlet states to outlet states - // Set node conditions + // Set node conditions state.dataLoopNodes->Node(this->EvapOutletNodeNum).Temp = state.dataLoopNodes->Node(this->EvapInletNodeNum).Temp; state.dataLoopNodes->Node(this->CondOutletNodeNum).Temp = state.dataLoopNodes->Node(this->CondInletNodeNum).Temp; if (this->CondenserType != DataPlant::CondenserType::WaterCooled) { @@ -2682,31 +2682,6 @@ void ElectricEIRChillerSpecs::update(EnergyPlusData &state, Real64 const MyLoad, this->HeatRecMassFlow = state.dataLoopNodes->Node(this->HeatRecInletNodeNum).MassFlowRate; } } - if (((this->EvapMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance) || - (this->CondMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance)) && - (this->EvapInletTemp != this->EvapOutletTemp)) { - if (!state.dataGlobal->WarmupFlag && !state.dataGlobal->DoingHVACSizingSimulations && - state.dataPlnt->PlantLoop(this->CWPlantLoc.loopNum).LoopSide(this->CWPlantLoc.loopSideNum).FlowLock == DataPlant::FlowLock::Locked) { - ShowWarningError(state, - format("Chiller should be off, evap flow rate={}, but EvapInletTemp={} is != EvapOutletTemp={}, EvapInletNodeNum.Temp " - "={}, EvapOutletNodeNum).Temp={}", - this->EvapMassFlowRate, - this->EvapInletTemp, - this->EvapOutletTemp, - state.dataLoopNodes->Node(this->EvapInletNodeNum).Temp, - state.dataLoopNodes->Node(this->EvapOutletNodeNum).Temp)); - ShowContinueErrorTimeStamp(state, - format("MyLoad={}, RunFlag={}, QEvaporator={}, QCondenser={}, EvapMassFlowRate={}, " - "CondMassFlowRate = {}, Power={} ", - MyLoad, - RunFlag, - this->QEvaporator, - this->QCondenser, - this->EvapMassFlowRate, - this->CondMassFlowRate, - this->Power)); - } - } } bool ElectricEIRChillerSpecs::thermosiphonDisabled(EnergyPlusData &state)