Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix chiller chilling when it is off #10793

Draft
wants to merge 5 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/EnergyPlus/ChillerAbsorption.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1728,6 +1728,7 @@ void BLASTAbsorberSpecs::calculate(EnergyPlusData &state, Real64 &MyLoad, bool R
this->CondOutletTemp = state.dataLoopNodes->Node(this->CondInletNodeNum).Temp;
this->CondMassFlowRate = 0.0;
this->QCondenser = 0.0;
MyLoad = 0.0;
return;
// V7 plant upgrade, no longer fatal here anymore, set some things and return
}
Expand Down
7 changes: 6 additions & 1 deletion src/EnergyPlus/ChillerElectricASHRAE205.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1337,7 +1337,12 @@ void ASHRAE205ChillerSpecs::calculate(EnergyPlusData &state, Real64 &MyLoad, boo
PlantUtilities::PullCompInterconnectTrigger(
state, this->CWPlantLoc, this->CondMassFlowIndex, this->CDPlantLoc, DataPlant::CriteriaType::MassFlowRate, this->CondMassFlowRate);

if (this->CondMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance) return;
if (this->CondMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance) {
MyLoad = 0.0;
this->Power = standbyPower;
this->AmbientZoneGain = standbyPower;
return;
}
}
Real64 EvapOutletTempSetPoint(0.0); // Evaporator outlet temperature setpoint [C]
switch (state.dataPlnt->PlantLoop(PlantLoopNum).LoopDemandCalcScheme) {
Expand Down
2 changes: 2 additions & 0 deletions src/EnergyPlus/ChillerElectricEIR.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Copy link
Contributor

@rraustad rraustad Oct 19, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This does look like it boils down to this. I looked at PullCompInterconnectTrigger to see what that was trying to accomplish. This code looks like it can be deleted. I'm not asking for that to happen here but it's extra clock cycles. Removed in #10794,

    // Check to make sure we didn't reuse the index in multiple components
    if (CurCriteria.CallingCompLoopNum != plantLoc.loopNum || CurCriteria.CallingCompLoopSideNum != plantLoc.loopSideNum ||
        CurCriteria.CallingCompBranchNum != plantLoc.branchNum || CurCriteria.CallingCompCompNum != plantLoc.compNum) {
        // Diagnostic fatal: component does not properly utilize unique indexing
    }

if (this->EvapMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance) {
// Use PlantUtilities::SetComponentFlowRate to decide actual flow
PlantUtilities::SetComponentFlowRate(
Expand Down
3 changes: 2 additions & 1 deletion src/EnergyPlus/ChillerIndirectAbsorption.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1604,7 +1604,7 @@ void IndirectAbsorberSpecs::sizeChiller(EnergyPlusData &state)
}
}

void IndirectAbsorberSpecs::calculate(EnergyPlusData &state, Real64 const MyLoad, bool const RunFlag)
void IndirectAbsorberSpecs::calculate(EnergyPlusData &state, Real64 MyLoad, bool const RunFlag)
{
// SUBROUTINE INFORMATION:
// AUTHOR R. Raustad (FSEC)
Expand Down Expand Up @@ -1999,6 +1999,7 @@ void IndirectAbsorberSpecs::calculate(EnergyPlusData &state, Real64 const MyLoad
this->CondOutletTemp = CondInletTemp;
this->CondMassFlowRate = 0.0;
this->QCondenser = 0.0;
MyLoad = 0.0;
return;
// V7 plant upgrade, no longer fatal here anymore... set some things and return
}
Expand Down
5 changes: 4 additions & 1 deletion src/EnergyPlus/ChillerReformulatedEIR.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2147,7 +2147,10 @@ void ReformulatedEIRChillerSpecs::calculate(EnergyPlusData &state, Real64 &MyLoa
PlantUtilities::PullCompInterconnectTrigger(
state, this->CWPlantLoc, this->CondMassFlowIndex, this->CDPlantLoc, DataPlant::CriteriaType::MassFlowRate, this->CondMassFlowRate);

if (this->CondMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance) return;
if (this->CondMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance) {
MyLoad = 0.0;
return;
}
}
Real64 FRAC = 1.0;
Real64 EvapOutletTempSetPoint(0.0); // Evaporator outlet temperature setpoint [C]
Expand Down
20 changes: 16 additions & 4 deletions src/EnergyPlus/PlantChillers.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1468,7 +1468,10 @@ namespace PlantChillers {
PlantUtilities::SetComponentFlowRate(state, this->CondMassFlowRate, this->CondInletNodeNum, this->CondOutletNodeNum, this->CDPlantLoc);
PlantUtilities::PullCompInterconnectTrigger(
state, this->CWPlantLoc, this->CondMassFlowIndex, this->CDPlantLoc, DataPlant::CriteriaType::MassFlowRate, this->CondMassFlowRate);
if (this->CondMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance) return;
if (this->CondMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance) {
MyLoad = 0.0;
return;
}
}

// LOAD LOCAL VARIABLES FROM DATA STRUCTURE (for code readability)
Expand Down Expand Up @@ -3593,7 +3596,10 @@ namespace PlantChillers {
PlantUtilities::SetComponentFlowRate(state, this->CondMassFlowRate, this->CondInletNodeNum, this->CondOutletNodeNum, this->CDPlantLoc);
PlantUtilities::PullCompInterconnectTrigger(
state, this->CWPlantLoc, this->CondMassFlowIndex, this->CDPlantLoc, DataPlant::CriteriaType::MassFlowRate, this->CondMassFlowRate);
if (this->CondMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance) return;
if (this->CondMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance) {
MyLoad = 0.0;
return;
}
}

// LOAD LOCAL VARIABLES FROM DATA STRUCTURE (for code readability)
Expand Down Expand Up @@ -5605,7 +5611,10 @@ namespace PlantChillers {
PlantUtilities::PullCompInterconnectTrigger(
state, this->CWPlantLoc, this->CondMassFlowIndex, this->CDPlantLoc, DataPlant::CriteriaType::MassFlowRate, this->CondMassFlowRate);

if (this->CondMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance) return;
if (this->CondMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance) {
MyLoad = 0.0;
return;
}
}

// LOAD LOCAL VARIABLES FROM DATA STRUCTURE (for code readability)
Expand Down Expand Up @@ -7313,7 +7322,10 @@ namespace PlantChillers {
PlantUtilities::PullCompInterconnectTrigger(
state, this->CWPlantLoc, this->CondMassFlowIndex, this->CDPlantLoc, DataPlant::CriteriaType::MassFlowRate, this->CondMassFlowRate);

if (this->CondMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance) return;
if (this->CondMassFlowRate < DataBranchAirLoopPlant::MassFlowTolerance) {
MyLoad = 0.0;
return;
}
}

// If FlowLock is True, the new resolved mdot is used to update Power, QEvap, Qcond, and
Expand Down
Loading