-
Notifications
You must be signed in to change notification settings - Fork 460
Fix GAHP flow request #11068
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 GAHP flow request #11068
Conversation
|
|
Here are the results for the (GAHP) defect file after updating it to 25.2 and with this branch. Here's the updated file: |
|
ESO diff explanation: |
lymereJ
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code changes walkthrough:
| : this->sourceSideDesignMassFlowRate; | ||
|
|
||
| if (!FirstHVACIteration && this->flowControl == DataPlant::FlowMode::VariableSpeedPump) { | ||
| if (!FirstHVACIteration && this->flowMode == DataPlant::FlowMode::VariableSpeedPump) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use flowMode to be consistent with the enum class name.
| } | ||
| } | ||
|
|
||
| void EIRFuelFiredHeatPump::setOperatingFlowRatesASHP(EnergyPlusData &state, bool FirstHVACIteration, Real64 const currentLoad) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Set the flow rates at the same time as EIRPlantLoopHeatPumps. Move the logic from EIRFuelFiredHeatPump::doPhysics here.
| if (partLoadRatio < this->minPLR) { | ||
| this->fuelRate = 0.0; | ||
| this->powerUsage = 0.0; | ||
| } else { | ||
| this->fuelRate = this->loadSideHeatTransfer / (this->referenceCOP * CRF) * eirModifierFuncPLR * eirModifierFuncTemp * eirDefrost; | ||
| this->fuelRate = this->loadSideHeatTransfer / (this->referenceCOP * CRF) * eirModifierFuncPLR * eirModifierFuncTemp * eirDefrost; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The previous behavior was to zero out the fuel rate when the partLoadRatio was less than the minPLR which triggered instances where the unit was not using any energy.
| bool firstHVAC = true; | ||
| Real64 curLoad = 100; | ||
| bool runFlag = true; | ||
| Real64 constexpr specifiedLoadSetpoint = 45; | ||
| state->dataLoopNodes->Node(thisHeatingPLHP->loadSideNodes.outlet).TempSetPoint = specifiedLoadSetpoint; | ||
| state->dataLoopNodes->Node(thisHeatingPLHP->loadSideNodes.inlet).Temp = 40; | ||
| state->dataLoopNodes->Node(thisHeatingPLHP->sourceSideNodes.inlet).Temp = 30; | ||
| thisHeatingPLHP->simulate(*state, myLoadLocation, firstHVAC, curLoad, runFlag); | ||
| EXPECT_TRUE(thisHeatingPLHP->fuelRate > 0); | ||
| EXPECT_NEAR(5.0, thisHeatingPLHP->loadSideMassFlowRate, 0.001); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Test to check that fuelRate > 0 when partLoadRatio < minPLR.
| { | ||
| bool firstHVAC = false; | ||
| Real64 curLoad = 2000; | ||
| bool runFlag = true; | ||
| Real64 constexpr expectedLoadMassFlowRate = 0.0478; | ||
| Real64 constexpr specifiedLoadSetpoint = 45; | ||
| state->dataLoopNodes->Node(thisHeatingPLHP->loadSideNodes.outlet).TempSetPoint = specifiedLoadSetpoint; | ||
| state->dataLoopNodes->Node(thisHeatingPLHP->loadSideNodes.inlet).Temp = 35; | ||
| state->dataLoopNodes->Node(thisHeatingPLHP->sourceSideNodes.inlet).Temp = 30; | ||
| thisHeatingPLHP->flowMode = DataPlant::FlowMode::LeavingSetpointModulated; | ||
| thisHeatingPLHP->simulate(*state, myLoadLocation, firstHVAC, curLoad, runFlag); | ||
| EXPECT_NEAR(expectedLoadMassFlowRate, thisHeatingPLHP->loadSideMassFlowRate, 0.001); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Test to check the variable flow logic.
# Conflicts: # src/EnergyPlus/PlantLoopHeatPumpEIR.cc
|
| } | ||
| this->powerUsage = this->nominalAuxElecPower * eirAuxElecFuncTemp * eirAuxElecFuncPLR; | ||
| if (this->defrostType == DefrostType::Timed) { | ||
| this->powerUsage += this->defrostResistiveHeaterCap * this->defrostOpTimeFrac * reportingInterval; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is reportingInterval included here? It was included before but looks odd. It seems that defrostOpTimeFrac * reportingInterval = seconds and J/s * s = joules. So powerUsage += joules ??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, that does not seem correct. Should I make the change in this PR? Or, open an issue and fix it in a different one?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think go ahead and make the change here rather than opening a new PR.
|


Pull request overview
Description of the purpose of this PR
Fix gas-fired absorption flow requests.
Pull Request Author
Reviewer