ZoneHVAC:HybridUnitaryHVAC - Check for ventilation setting before defaulting to standby#11642
Conversation
…g instead of defaulting to standby
|
The regressions show higher electricity use and ventilation, but also a lot more timesteps where sensible load was met. The changes include finding settings that can meet partial cooling loads or at least meet ventilation requirements without going into standby. So, these results were expected since the system selected more appropriate settings. |
|
|
||
| if (Mvent > 0) { | ||
| if (VentilationRequested && Mvent > 0) { | ||
| PLVentRatio = MinOA_Msa / Mvent; |
There was a problem hiding this comment.
-
is this redundant?, 2) is Mvent > 0 possible if StepIns.MinimumOA = 0? and 3) does it hurt to calculate PLVentRatio each time step?
if (StepIns.MinimumOA > 0) { VentilationRequested = true; }
There was a problem hiding this comment.
I don't think it will be common, but yes, Mvent > 0 is possible when StepIns.MinimumOA is 0. Checking for VentilationRequested might be a little redundant, but I figured it was better to skip a division when we know the result is 0.
There was a problem hiding this comment.
Nothing else. I think this meets the objective.
mitchute
left a comment
There was a problem hiding this comment.
This is looking on-track. I made one comment that I hope you can confirm.
| PartRuntimeFraction = PLVentRatio; | ||
|
|
||
| if (SensibleRoomORZone > 0) { | ||
| if (CoolingRequested && SensibleRoomORZone > 0) { |
There was a problem hiding this comment.
This seems like a reasonable guard.
| } | ||
|
|
||
| if (SensibleRoomORZone < 0) { | ||
| if (HeatingRequested && SensibleRoomORZone < 0) { |
| Real64 Wma; | ||
| Real64 Hsa; | ||
| Real64 Hma; | ||
| Real64 PreviousMaxiumConditioningOutput = 0; |
There was a problem hiding this comment.
Spelling correction. OK.
| RunFractionTotalFuel = (thisSetting.ElectricalPower * thisSetting.Runtime_Fraction) + | ||
| (thisSetting.SupplyFanElectricPower * thisSetting.Runtime_Fraction); |
There was a problem hiding this comment.
I like that these are tied to the actual settings now.
| RunFractionTotalFuel = thisSetting.WaterConsumptionRate * thisSetting.Runtime_Fraction; | ||
| break; | ||
| } | ||
| thisSetting.Runtime_Fraction = PartRuntimeFraction; // |
There was a problem hiding this comment.
I guess we don't need to assert(false) here since these are the only four valid options?
| } else if (VentilationRequested && !DidWePartlyMeetLoad) { | ||
| // If no load is requested but ventilation is required, find the setting that uses the least supply fan power. | ||
| // Note that settings that meet partial load still take priority, so use logic separate from store_best_attempt. | ||
| Real64 RunFractionSupplyFanElectricPower = thisSetting.SupplyFanElectricPower * thisSetting.Runtime_Fraction; | ||
| if (RunFractionSupplyFanElectricPower < PreviousMaximumSupplyFanElectricPower) { | ||
| PreviousMaximumSupplyFanElectricPower = RunFractionSupplyFanElectricPower; | ||
| OptimalSetting = thisSetting; | ||
| DidWeMeetVentilation = true; | ||
| } | ||
| } |
There was a problem hiding this comment.
I guess the reasoning is that if we're only requiring ventilation, we should minimize the fan power, and not necessarily the specified objective function, which could be fuel or water. Is that correct? I think I can agree with that, if true.
There was a problem hiding this comment.
Correct, that was the reasoning.
| PrimaryModeRuntimeFraction = OptimalSetting.Runtime_Fraction; | ||
| oStandBy.Runtime_Fraction = (1 - PrimaryModeRuntimeFraction); | ||
| if (oStandBy.Runtime_Fraction < 0) { | ||
| oStandBy.Runtime_Fraction = 0; | ||
| } | ||
| CurrentOperatingSettings[1] = oStandBy; | ||
| } |
| 1, !- Mode 4 Maximum Outdoor Air Fraction | ||
| 0.7039, !- Mode 4 Minimum Supply Air Mass Flow Rate Ratio | ||
| 0.957, !- Mode 4 Maximum Supply Air Mass Flow Rate Ratio | ||
| 1, !- Mode 4 Maximum Supply Air Mass Flow Rate Ratio |
There was a problem hiding this comment.
Not sure why the change, but I assume it's fine.
There was a problem hiding this comment.
One of the unit tests was failing to find this mode because the ventilation ratio wasn't high enough. This small change seemed to fix it without breaking anything else and I didn't have to rework that section of the unit test.
Pull request overview
Description of the purpose of this PR
When heating and cooling are not requested but ventilation is still requested, check for a ventilation-only setting instead of just defaulting to standby mode.
When heating is requested, ventilation should not exceed Min OA. When cooling is requested, ventilation may exceed Min OA.
Pull Request Author
Reviewer