Adjust low flow warning for w2a coil in cycling fan mode#11485
Adjust low flow warning for w2a coil in cycling fan mode#11485joseph-robertson wants to merge 14 commits intodevelopfrom
Conversation
| if ((simpleWatertoAirHP.AirMassFlowRate / simpleWatertoAirHP.PartLoadRatio) < 0.25 * RatedAirMassFlowRate) { | ||
| if (state.dataWaterToAirHeatPumpSimple->LowFlowFlag) { | ||
| ShowWarningError(state, |
There was a problem hiding this comment.
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.
I think leaving this check in the coil object is better than creating code in 3 parent objects. You could just add a simpleWatertoAirHP.OneTimeFlag around 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.
|
|
|
|
|
|
|
|
|
To test that the warning is thrown under certain conditions, I modified the IDF corresponding to OpenStudio-HPXML's 1-speed GSHP sample file by reducing the following fields by a factor of 5:
I do see that the "** Warning ** InitSimpleWatertoAirHP: Actual air mass flow rate is smaller than 25% of water-to-air heat pump coil (GROUND SOURCE HEAT PUMP HTG COIL) rated air flow rate." line shows up in eplusout.err. |
| simpleWatertoAirHP.Name)); | ||
| state.dataWaterToAirHeatPumpSimple->LowFlowFlag = false; | ||
| } | ||
| } |
There was a problem hiding this comment.
This is the same thing that is done in the calc function so this is correct.
void CalcHPCooling(Heating)Simple:
if (fanOp == HVAC::FanOp::Continuous) {
LoadSideFullMassFlowRate = simpleWatertoAirHP.AirMassFlowRate;
} else {
// default to cycling fan, cycling compressor, full load air flow
if (PartLoadRatio > 0.0) {
LoadSideFullMassFlowRate = simpleWatertoAirHP.AirMassFlowRate / PartLoadRatio;
} else {
LoadSideFullMassFlowRate = 0.0;
}
}
|
@joseph-robertson I'm OK with the change but there are integration test failures that need to be looked at. |
|
|
| simpleWAHP.Name)); | ||
| state.dataWaterToAirHeatPumpSimple->LowFlowFlag = false; | ||
| } | ||
| } |
There was a problem hiding this comment.
@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
There was a problem hiding this comment.
Also, this should be a SimpleWatertoAirHPConditions struct variable so each coil can report the warning.
if (state.dataWaterToAirHeatPumpSimple->LowFlowFlag) {
There was a problem hiding this comment.
@rraustad I think previously the recurring warning was being thrown on this testfile for coils in cycling fan mode. With the new / PartLoadRatio, the warning goes away. It's possible there are no testfiles (with coils in continuous fan mode) where we should expect the 1-time warning to be thrown. Perhaps I should look into writing a couple new unit tests for showing that both warning types get thrown under the right conditions; one for coil in continuous fan mode and one for coil in cycling fan mode.
There was a problem hiding this comment.
After the divide by zero fix in dfd83ab, the testfile DOAToWaterToAirHPInlet_MultispeedFan.idf does throw the 1-time warning.
There was a problem hiding this comment.
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.
if (PartLoadRatio > 0.0 && (simpleWAHP.AirMassFlowRate / PartLoadRatio) < 0.25 * RatedAirMassFlowRate)
There was a problem hiding this comment.
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.
|
|
|
|
|
|
|
|
|
|
Pull request overview
simpleWatertoAirHP.AirMassFlowRate / PartLoadRatioto 25% of rated air flow rate (vs justsimpleWatertoAirHP.AirMassFlowRatefor continuous fan). It shouldn't check PLR scaled air flow because cycling fans will only operate on full load airflow.Description of the purpose of this PR
Pull Request Author
Reviewer