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
Include impact of AirTerminal:SingleDuct:Mixer in ZoneHVAC coil sizing #6788
Include impact of AirTerminal:SingleDuct:Mixer in ZoneHVAC coil sizing #6788
Conversation
@@ -3577,6 +3609,102 @@ namespace ReportSizingManager { | |||
} | |||
} | |||
|
|||
void setHeatingOAFracAndInletTempForZoneEq(Real64 &OutAirFrac, Real64 &CoilInTemp, Real64 &DesMassFlow) |
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.
Anyone want to comment on these new functions? Too busy? Break out OutAirFrac, CoilInTemp and CoilInHumRat to individual functions? If change to individual functions change to Real64 instead of void ? etc.
Interesting. Won't build on the CI but builds at work and home on 64 bit Windows 7 and 8. |
EXPECT_NEAR(WaterCoil(CoilNum).InletAirTemp, -1.99999, 0.0001); // a mixture of zone air (20 C) and 10% OA (-20 C) = 16 C | ||
EXPECT_NEAR(WaterCoil(CoilNum).DesTotWaterCoilLoad, 3908.2603, 0.0001); | ||
EXPECT_NEAR(WaterCoil(CoilNum).UACoil, 94.9905, 0.0001); | ||
EXPECT_NEAR(WaterCoil(CoilNum).OutletAirTemp, 30.2984, 0.0001); // reasonable delta T above inlet air temp |
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.
Made this change just to get it to pass. Have already corrected these so that the results are identical to before.
src/EnergyPlus/FanCoilUnits.cc
Outdated
ZoneEqSizing(CurZoneEqNum).OAVolFlow = FanCoil(FanCoilNum).OutAirVolFlow; | ||
if (FanCoil(FanCoilNum).ATMixerExists) { | ||
SingleDuct::setATMixerSizingProperties(FanCoil(FanCoilNum).ATMixerIndex, ControlledZoneNum, CurZoneEqNum); | ||
} |
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.
This function will be used in each zone equipment type to set up ATMixer inlet conditions.
// CoilInTemp = (1.0 - OutAirFrac) * FinalZoneSizing(CurZoneEqNum).ZoneTempAtHeatPeak + | ||
// OutAirFrac * FinalZoneSizing(CurZoneEqNum).OutTempAtHeatPeak; | ||
// this will change above CoilInTemp equation to use ZoneRetTempAtHeatPeak which accounts for lights to return fraction | ||
CoilInTemp = setHeatCoilInletTempForZoneEqSizing(setOAFracForZoneEqSizing(DesMassFlow)); |
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 coil inlet condition is now a function call which replaces many duplicate code blocks.
src/EnergyPlus/SingleDuct.cc
Outdated
ZoneEqSizing(curZoneEqNum).ATMixerHeatPriHumRat = SysSizInput(sysSizIndex).HeatSupHumRat; | ||
} | ||
} | ||
|
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.
And here is the ATMixer function that sets up inlet conditions the same for all equipment.
coilInTemp = (1.0 - outAirFrac) * DataSizing::FinalZoneSizing(DataSizing::CurZoneEqNum).ZoneRetTempAtCoolPeak + | ||
outAirFrac * DataSizing::ZoneEqSizing(DataSizing::CurZoneEqNum).ATMixerCoolPriDryBulb; | ||
} else if (DataSizing::ZoneEqSizing(DataSizing::CurZoneEqNum).OAVolFlow > 0.0) { // adjust for raw OA mixed inlet temp | ||
coilInTemp = (1.0 - outAirFrac) * DataSizing::FinalZoneSizing(DataSizing::CurZoneEqNum).ZoneTempAtCoolPeak + |
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.
This should probably use ZoneRetTempAtCoolPeak as setHeatCoilInletTempForZoneEqSizing does.
@mjwitte @Myoldmopar @EnergyArchmage this is the method used to update fan coil units to include ATMixer impact on coil sizing. This method will be ported to all other zone equipment types so if there is a comment on chosen method now is the time to comment. |
Here's some results for the DOAToFanCoilInlet example file. Sizing apparently thinks the OA is zero for the fan coil. Sizing also doesn't know there is an ATMixer attached.
So when the ATMixer impact on mixed air conditions is considered, the inlet conditions to the coil are actually lower than is shown in the current develop branch. So coil sizing is now impacted for inlet ATMixers. Basically lower cooling and higher heating coil sizes. |
There are diff's showing in UnitVentilator when I only added the new ATMixer function call to fan coils. This is because I changed the return temp from ZoneTempAtHeatPeak to ZoneRetTempAtHeatPeak to account for lighting heat to return. Not sure if that makes sense now but will think more about it. Reverting this for now to get to minimal, and explainable, diff's before moving on. |
src/EnergyPlus/SingleDuct.cc
Outdated
@@ -6015,6 +6015,26 @@ namespace SingleDuct { | |||
} | |||
} | |||
|
|||
void setATMixerSizingProperties(int const &inletATMixerIndex, int const &controlledZoneNum, int const &curZoneEqNum) | |||
{ | |||
ZoneEqSizing(curZoneEqNum).ATMixerVolFlow = SingleDuct::SysATMixer(inletATMixerIndex).DesignPrimaryAirVolRate; |
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.
Maybe I should move this air vol flow down into if (SizingDesRunThisAirSys) so that all are set or none are set?
Perfect, now only the 7 fan coil example files have diff's. I'll worry about that subtle change to the coil inlet temp calc later. I can now move on and make the simple change to all other zone equipment. Should be easy sailing now. This code snippet should be all that is needed in other zone equipment sizing routines (before any child equipment are called).
|
Just figuring out which zone temp to use for zone equipment. The only difference I see is:
So why would zone equipment ever use return temp to size the coils? Zone equipment draws air from the zone and any heat gain to return should be met by the air loop. And when there is no air loop these are the same value. I am now thinking this was just a mistake during equipment model development and it propagated through to some/all zone equipment models. There is going to be diffs during sizing consolidation, probably for zone equipment that serve the same zone as an air loop, but I wonder if I want to tackle that here or in a different issue. Leaning towards saving this for the existing sizing consolidation issue #6172. |
…irTerminalSingleDuctMixer' of https://github.com/NREL/EnergyPlus into #6712-Zone-Coil-Autosizing-does-not-include-impact-of-AirTerminalSingleDuctMixer
@Myoldmopar @mjwitte this should now be complete. I will review CI diffs and try to post more comparisons. |
Seeing non-DOAS diffs with fan coils I am switching back to ZoneRetTemp on the else to see if that fixes non-DOAS files. Also flipped priority on CoolingCapacitySizing to honor ATMixer over anything else. |
Regarding the new warnings, 7 files now have warnings. Good to exercise the warnings here, but now we need to correct those test files so the warnings go away. In DOAToUnitarySystem, the warnings are happening twice per zone. In OutdoorAirUnit and OutdoorAirUnitwithAirloopHVAC (and maybe others), the desiccant regen coil capacity has changed - it shouldn't. Minor - the warnings seem a bit verbose.
Suggest
|
DOAToPTAC - Current results show the heating coil sensible capacity is now the same as total (that was broken before), but the coil inlet temp is the OA temp? And cooling coil inlet conditions are nearly the same as outdoor also? In the component sizing summary design cooling and heating flow rates for the PTAC 1-1 are both 0.22, and the ATMixer flow rate is 0.0572, so it seems like the coil entering conditions should be closer to zone conditions than outdoor. But the coil sizing details show the heating coil design flow rate at 0.572? Similar questions for other systems. |
Looking at OutdoorAirUnit at the moment. The heating coil is sizing differently because I added the new function call in heating coils thinking it would reduce code. What is happening is that the desiccant heating coil previously sized using DesHeatCoilInTemp and now it sizes using ZoneTempAtHeatPeak, which is of course wrong. The OAUnit sizing function doesn't set ZoneEqSizing::OAVolFlow (it does now). The problem I see here is that zone sizing does not know what type of equipment there is or how many. In this case there is only the OutdoorAirUnit. But what if there were the OAUnit and a PTAC with no OA, then the PTAC would be using -17C to size the heating coil? I've seen this before with the OA unit. My change corrects the heating coil size but there is still this other lurking issue. Now on to other things you noticed.
|
For DOAToPTAC, when capacity is sized, where CoilInTemp is also set and used to calculate capacity, the capacity gets reported but the coil conditions do not. So at the bottom of request sizing where capacity is reported, when it jumps over the setCoilCoolingCapacity, that function sets coil inlet temp as the ATMixer primary air temp. Since there are no coils in the ATMixer, the supply air temp = OA temp. I have fixed this over in #5763 (New Feature - Include fan heat in coil sizing). I've got a lot of kettles on the fire. Maybe a followup issue to make sure these are corrected after all PR's are merged? Or merge in those changes here to get these results correct? |
I've fixed the duplicate warnings and desiccant heating coil sizing issues. Just need to push those changes. |
Would it be better to review and merge the fan heat PR before this to set a new baseline for comparison? |
Good idea. That would fix this last issue when merged into this branch. |
…-Zone-Coil-Autosizing-does-not-include-impact-of-AirTerminalSingleDuctMixer
@rraustad Please resolve the conflict here and merge up today if you can. |
…-Zone-Coil-Autosizing-does-not-include-impact-of-AirTerminalSingleDuctMixer
Need to verify this comment when results are available: DOAToPTAC - Current results show the heating coil sensible capacity is now the same as total (that was broken before), but the coil inlet temp is the OA temp? And cooling coil inlet conditions are nearly the same as outdoor also? In the component sizing summary design cooling and heating flow rates for the PTAC 1-1 are both 0.22, and the ATMixer flow rate is 0.0572, so it seems like the coil entering conditions should be closer to zone conditions than outdoor. But the coil sizing details show the heating coil design flow rate at 0.572? Similar questions for other systems. |
Just to be clear, the "0.572" should be "0.0572" - equal to the OA flow. |
So if PTAC flow = OA flow then coil inlet temp = OA temp. |
Yes, but the question here is that the reported design cooling and heating flow rates for the PTAC 1-1 are both 0.22, so why is it sizing the heating coil for only 0.0572? |
Looking at this now, DOAToPTAC. I see that SPACE1-1 PTAC air flow is sized larger than before. This is a little surprising since I only expect coil entering/exiting conditions (and capacity) to change. So comment here if you wish as I look at what is happening.
|
So it's sizing the heating coil based on the zone heating air flow rate (DesHeatMassFlow). This should probably size using the PTAC flow rate? But it's a fuel heating coil, you've told me many times that this type of coil shouldn't size the same as the DX. Shouldn't fix this here.
|
Bear in mind I could set any of these, HeatingCapacity, DataCoolCap or DataFlowUsedForSizing, But we have decided to size the heating coil based on the zone load when that coil wasn't DX.
|
Regarding the PTAC heating coil sizing, I recall there have been some fixes to this over time. I'm going to move that file to Chicago and see if it can hold setpoint for a year. That checks out OK, very similar loads not met before and after this. However, for zones 4 and 5, the heating coils are signficantly smaller now than current develop. Running a design day zone 5 is ok, but zone 4 is maxing out the heating coil. So, PTAC may still need some work. Here's some zips with results. I haven't looked at the other system types this closely. Reviewing the err diffs.
DOAToFanCoilSupply and DOAToWaterToAirHPSupply
These should get cleaned up, but I'm not going to hold this up for that. You can throw in a separate little PR for that if there aren't any other changes to do here. |
Probably should have some doc changes, too for this to explain the sizing difference for inletside vs supplyside, in the mixer object and in the Sizing:Zone DOAS fields. |
But zone 4 is a supply side mixer, it maxes out the heating coil on the winter design day before this changes as well. Oh, I see, the DOAS inputs in Sizing:Zone don't work for Chicago, because it's an unconditioned DOAS. So, these example files could use a little more tweaking. Merging this. |
But it would still be good to add some notes in the I/O Ref about when an what sizing does with ATMixers now. |
Pull request overview
Zone equipment does not include impacts of DOAS system (i.e., when zone equipment uses AirTerminal:SingleDuct:Mixer) on coil inlet conditions during sizing. This corrects Issue #6712. Cooling coil sizing now includes the impact of the DOAS air stream, either conditioned or unconditioned, on the mixed inlet condition of the zone equipment's cooling coil. This change will typically allow smaller cooling coil sizes.
Zone models included in this update:
Work Checklist
Add to this list or remove from it as applicable. This is a simple templated set of guidelines.
Review Checklist
This will not be exhaustively relevant to every PR.