-
Notifications
You must be signed in to change notification settings - Fork 472
Adjust low flow warning for w2a coil in cycling fan mode #11485
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
base: develop
Are you sure you want to change the base?
Changes from 1 commit
ed5a7fa
e0be50a
dcb96e7
cca85cb
9ec1457
0a5be8c
e8f0d32
1ced44d
dfd83ab
db02101
8639482
0590663
550577d
ad69260
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -911,7 +911,7 @@ namespace WaterToAirHeatPumpSimple { | |
| int const HPNum, // Current HPNum under simulation | ||
| Real64 const SensLoad, // Control zone sensible load[W] | ||
| Real64 const LatentLoad, // Control zone latent load[W] | ||
| [[maybe_unused]] HVAC::FanOp const fanOp, // fan operating mode | ||
| HVAC::FanOp const fanOp, // fan operating mode | ||
| [[maybe_unused]] Real64 const OnOffAirFlowRatio, // ratio of compressor on flow to average flow over time step | ||
| bool const FirstHVACIteration // Iteration flag | ||
| ) | ||
|
|
@@ -1107,12 +1107,24 @@ namespace WaterToAirHeatPumpSimple { | |
| state.dataLoopNodes->Node(AirInletNode).Temp, | ||
| state.dataLoopNodes->Node(AirInletNode).HumRat, | ||
| RoutineName); | ||
| if (simpleWatertoAirHP.AirMassFlowRate < 0.25 * RatedAirMassFlowRate) { | ||
| ShowRecurringWarningErrorAtEnd(state, | ||
| "Actual air mass flow rate is smaller than 25% of water-to-air heat pump coil rated air flow rate.", | ||
| state.dataWaterToAirHeatPumpSimple->AirflowErrPointer, | ||
| simpleWatertoAirHP.AirMassFlowRate, | ||
| simpleWatertoAirHP.AirMassFlowRate); | ||
| if (fanOp != HVAC::FanOp::Cycling) { | ||
| if (simpleWatertoAirHP.AirMassFlowRate < 0.25 * RatedAirMassFlowRate) { | ||
| ShowRecurringWarningErrorAtEnd(state, | ||
| "Actual air mass flow rate is smaller than 25% of water-to-air heat pump coil rated air flow rate.", | ||
| state.dataWaterToAirHeatPumpSimple->AirflowErrPointer, | ||
| simpleWatertoAirHP.AirMassFlowRate, | ||
| simpleWatertoAirHP.AirMassFlowRate); | ||
| } | ||
| } else { | ||
| if ((simpleWatertoAirHP.AirMassFlowRate / simpleWatertoAirHP.PartLoadRatio) < 0.25 * RatedAirMassFlowRate) { | ||
| if (state.dataWaterToAirHeatPumpSimple->LowFlowFlag) { | ||
| ShowWarningError(state, | ||
| EnergyPlus::format("{}: Actual air mass flow rate is smaller than 25% of water-to-air heat pump coil ({}) rated air flow rate.", | ||
| RoutineName, | ||
| simpleWatertoAirHP.Name)); | ||
| state.dataWaterToAirHeatPumpSimple->LowFlowFlag = false; | ||
| } | ||
| } | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is the same thing that is done in the calc function so this is correct. void CalcHPCooling(Heating)Simple:
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @joseph-robertson I see the recurring removed from the err file, but where is the 1-time warning? In this diff, shouldn't there be a new warning that wasn't there before ? ASHRAE901_ApartmentHighRise_STD2019_Denver
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Also, this should be a SimpleWatertoAirHPConditions struct variable so each coil can report the warning.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @rraustad I think previously the recurring warning was being thrown on this testfile for coils in cycling fan mode. With the new
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Duh, your right.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. After the divide by zero fix in dfd83ab, the testfile DOAToWaterToAirHPInlet_MultispeedFan.idf does throw the 1-time warning.
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What is the node air flow rate when that warning is hit? If it's 0 then that warning should not be reported. Even if the flow rate is > 0 the coil will be off. Why report a warning for a time step when the coil is off? Eventually the coil will be on and that check will throw if necessary. For cycling fan if PLR = 0 then the coil will be off and the fan will be off. A parent can still call the coil with PLR = 0 when there is actually a load and the result will be capacity = 0. A parent will call the coil model with PLR = 0 and PLR = 1 to test whether either of these can meet the load. For continuous fan and PLR = 0 there will be a non-zero capacity because of fan heat and also if OA is provided and that result could meet the load so the parent will not turn on the coil. The check should be testing for if the coil is on, which also protects the divide by 0 but that's a different thing.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I will make this change. (I do see that the node air flow rate > 0 when PLR = 0.) Since we'll now have no testfiles throwing this warning, I'll see if I can add a unit test for demonstrating it. |
||
| } | ||
| simpleWatertoAirHP.WaterFlowMode = true; | ||
| } else { // heat pump is off | ||
|
|
||


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.
Is there a way we could alternatively issue this warning once, upstream, using parent airflow rate and rated coil airflow rate? See #8980 (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.
I think leaving this check in the coil object is better than creating code in 3 parent objects. You could just add a
simpleWatertoAirHP.OneTimeFlagaround these checks and that should be sufficient. The parent could do this, after sizing, and comparing with coil design flow, but the same 1-time technique would still be used.