System sizing adjustments for Std 61.2 VRP - fix and refactor#6372
System sizing adjustments for Std 61.2 VRP - fix and refactor#6372
Conversation
Standard 62.1 VRP refactor, autosize Central Heating Maximum System Air Flow Ratio.
…m-Sizing-Adjust-Std-62_1-Refactor
autosize central heating flow ratio, draft contribution from Trane
missed some files on previous commit
mjwitte
left a comment
There was a problem hiding this comment.
@EnergyArchmage Some intial comments/questions.
|
|
||
| SizingManager.cc, new routine ManageSystemVentilationAdjustments() Redo Standard 62.1 VRP calculations using latest information on zone flows and report to tables. Collect all summary table reporting one place with organized code. | ||
|
|
||
| SizingManager.cc, new routine DetermineSystemPopulationDiversity(). New routine to determine Pz sum, Ps, and D for each air system for Standard 62.1 calculations. Temporarily stop with system DoingSizing and do a side calculation that marches through all timesteps for each runperiod and sum up the concurrent max occupants in all the zones by air system. If the input file has no RunPeriod objects, then use the design days. This factors in all the scheduled detail for an accurate calculation of system population diversity, D. Current code uses the schedule max for each people object but that cannot handle the coincident air system total unless all the schedules in the building have maximums at the same time of day. |
There was a problem hiding this comment.
Why rely on the runperiod or design day objects for the diversity calculation? If the occupancy schedules are seasonal, this could result is different sizing for a full annual simulation vs an early run with selected run periods. Seems this should always cycle through an entire year of schedules.
There was a problem hiding this comment.
@EnergyArchmage In ScheduleManager there are functions for ScheduleAnnualFullLoadHours and ScheduleHoursGT1perc which scan through a full year for a given schedule. These just walk through weekdays, and appear to ignore special days - I don't know if that's required here but it could be added. Seems like a similar approach could be used here.
There was a problem hiding this comment.
I mean these walk through the days of the week, including weekends.
|
|
||
| DataSizing.cc/.hh add data variables for Standard 62.1 calculations, move variables buried in SimAirServingZones.cc subroutines and put into DataSizing.cc where the variables persist longer and can be accessed. | ||
|
|
||
| SizingManager.cc, new routine ManageSystemSizingAdjustments() - This routine adjusts system sizing outcomes based on how the zone air terminals finish out their sizing. The zone models are executed to trigger their sizing routines. Then the air terminal units data structures are scanned to sum design flow rates. Every air terminal connected to a particular air loop is summed for: 1) minimum heating flow rate, 2) maximum heating flow rate, 3) maximum flow rate, and 4) store zone level flow information for Standard 62.1 calculations, Vpz, Vpz_min, Vdz, and Vdz_min for both cooling and heating. The summed values are used to "Adjust" the system sizing results. The corrected values are used to autosize the central heating flow ratio, if set to autosize by the user. |
There was a problem hiding this comment.
I haven't looked at the new code yet, so this may become obvious there, but I'm wondering how this timing fits in if Sizing:System specifies sizing based on VentilationRequirement or a hard value for Flow/System? "This routine adjusts system sizing outcomes" - does this mean that the current sequence of zone sizing, system sizing, then call the terminal units is still in place, except for the 62.1 calcs? Then the system sizing is adjusted? What if the 62.1 calcs require that a particular zone have a higher supply flow (min or max) to meet the zone OA requirement? How does this get communicated back to the terminal unit?
| zoneIndex( 0 ), | ||
| zoneNodeIndex( 0 ) | ||
| zoneNodeIndex( 0 ), | ||
| airLoopNum( 0 ) |
There was a problem hiding this comment.
I see I forgot this in #6248. Also forgot to intialize ctrlZoneInNodeIndex here.
src/EnergyPlus/HVACCooledBeam.cc
Outdated
|
|
||
| if ( CoolBeam( CBNum ).AirLoopNum == 0 ) { // fill air loop index | ||
| if ( CoolBeam( CBNum ).CtrlZoneNum > 0 ) { | ||
| DataZoneEquipment::ZoneEquipConfig( CoolBeam( CBNum ).CtrlZoneNum ).InletNodeAirLoopNum( CoolBeam( CBNum ).AirOutNode ); |
There was a problem hiding this comment.
This is not correct (here and in other terminal units). ZoneEquipConfig.InletNodeAirLoopNum is not indexed by true node numbers. It's indexed by the number of inlet nodes in the ZoneEquipConfig. All of the air terminal units should know their ADUNum and the ADUs know their AirLoopNum, so this block shouldn't be necessary. But there may be some timing issues of when the various terminal unit ADUNums get filled and when AirDistUnit.AirLoopNum gets filled.
|
@EnergyArchmage @lgentile it has been 14 days since this pull request was last updated. |
1 similar comment
|
@EnergyArchmage @lgentile it has been 14 days since this pull request was last updated. |
Remove dependence on RunPeriod, access full year of schedules directly and don't call weather manager.
…m-Sizing-Adjust-Std-62_1-Refactor
remove using statements no longer needed
…m-Sizing-Adjust-Std-62_1-Refactor # fixed Conflicts: # src/EnergyPlus/HVACUnitarySystem.cc
…m-Sizing-Adjust-Std-62_1-Refactor
reduce diffs, change is needed for coil report, not this contribution (to get calculated value for zone latent load at peak for coil reporting)
when hard sized, report both user value and calculated/autosized value for central heating air flow ratio.
…m-Sizing-Adjust-Std-62_1-Refactor
…m-Sizing-Adjust-Std-62_1-Refactor
|
This comment provides discussion of integration test warning and failures for this pull request. These are expected and usually widespread for this PR. AUD Diffs in 389 files because of increases in value of numColumnTag= because of added columns to some tabular summary reports. Integration test "Failures" of the following are widespread. AUD diffs
Additional EIO and summary table content is added for all test files with any AirLoopHVAC. The following Component Sizing Information is added for each air loop The Standard 62.1 summary tables have been changed to increase the precision of reported values and extra columns are added to two tables. The Object count summary table shows diffs because number of autosizable fields increases for all files that have Sizing:System objects.
5ZoneAirCooled_VRPSizing comparison of zone VRP related terms.
System level VRP terms for 5ZoneAirCooled_VRPSizing.
Testing also reveals that there is problem with the VAV air terminal sizing in zone SPACE5-1. The minimum VAV flow of 0.066333 m3/s is less than the required outdoor air of 0.102859 m3/s. This causes Zpz to be large but gets limited to 1.0 so that Evz = Xs which is extreme. The test file should be fixed to serve as a better example. The input file does not use the input field called Minimum Zone Ventilation Efficiency in the DesignSpecification:ZoneAirDistribution object, so the the Evz value is not limited and goes very low (would probably be improved example if it did use this minimum at say 0.65). The larger value of Vot increases the size of the outdoor air handler and affects the OA cooling and heating coils by a lot. |
|
5ZoneAirCooled_VRPSizing main coil sizing. Main cooling coil size went way down but OA cooling coil (above) went up. Before: After: |
|
@EnergyArchmage why is the design size inlet air temperature now 11C while before it was 15.5C? Shouldn't it have been 11C before also? This also looks like it was fixed. |
|
@rraustad This one I think is because previously, the system wasn't at 100% OA, so only some of the air was at 11C and it mixed with return air. I still don't understand why this one sizes out to 100% OA. It also has coil sizing warnings now. Oh wait, the main cooling coil is sizing to zero now. Should that be so? |
|
@EnergyArchmage why is cooling flow rate being adjusted upwards? Can't the cooling coil be sized on the cooling load flow rate? |
|
Design size inlet air temp = 11C, design outlet = 12.8C. So in this case it looks like it should size to 0. |
|
The biggest question here is how do we know the 62.1 calculations are correct? There is a lot going on here. One way would be let users have a crack at proving this wrong. I don't know enough about VRP calculations to validate these equations or results. |
|
I think the only way we could know if this is correct now is to identify the limiting zone, the one that sets down zone ventilation efficiency, and manually calculate the OA amount, then see if that amount of OA makes it to the zone before and after this fix. I will attempt this but not sure when I can get this done. |
|
Trying to figure out just how much OA is required for the 5ZoneAirCooled_VRPSizing simulation. I reported occupancy and then calculated OA based on occupancy and floor area. Each zone used 0.00236 m3/s per person and 0.000305 m3/s per m2 of floor area. I also calculated max OA based on max occupancy and floor area. Before these changes, it appears that the required amount of OA was met (as long as VRP uses my calculation method). With these changes there is more OA. 1st figure - compare OA mixing box OA with max OA needed by zones So what would be the reason for increasing min OA amount? @EnergyArchmage comments? |
…ing-Adjust-Std-62_1-Refactor
|
ah lets see, I also spent several hours investigating the file 5ZoneAirCooled_VRPSizing. I did side calcs in this file to check. I had a long comment on this file above, did you see that in number 4. Basically the file should be fixed up by changing inputs, but I did convince myself that the results are correct for the poor input. |
|
My view is that there are terminal sizing problems that are separate from the focus here. The terminals get sized on zone loads and don't always size based on minimum OA per std. 62.1 |
|
Some of that may correct itself with #6327 so we'll revisit these after this goes in which should be soon. |
|
regarding question above: why is cooling flow rate being adjusted upwards? Can't the cooling coil be sized on the cooling load flow rate? FinalSysSizing( AirLoopNum ).DesCoolVolFlow = max( airLoopHeatingMinimumFlowRateSum, FinalSysSizing( AirLoopNum ).DesCoolVolFlow ); The idea is that the cooling air flow rate should be at least as high as the minimum operating flow rate. If the design cooling air flow rate comes out lower than that it needs to be adjusted (increased) because the air handler will never run below that lower limit. We now know more about the air handler operating limits and can use that information to make adjustments. This is in the heating dominant code block so heating design flow rates are dominating the air handler design. This ensures that the cooling coil is able to make setpoint during operation at the minimum damper positions. |
|
In 5zoneAirCooled_VRPSizing, the air handler becomes 100% OA because the inputs for zone 5 are bad, discussed above. |
|
Single stepping this shows 0 OA mass flow rate during the TU calculations (i.e., Sys( SysNum ).NoOAFlowInputFromUser = true;). Further investigation shows that the TU's in 5ZoneAirCooled_VRPSizing do not include the name of the DesignSpecification:OutdoorAir so the TU thinks there is no OA requirement. This is probably why I saw low OA amounts last night. I wonder if/how the html tables would change if this name were included in each TU. |
|
Yes, I found the same thing. I think there should be a follow up issue/PR to fix up the VRP test files. |
|
@EnergyArchmage @rraustad Some of the TU vs OA stuff may get fixed in #6338. I've posted some followup needs in #6481. You can add the VRP idf to that list or make a separate issue. The Std62 sizing changes also slowed down the performance tests by about 10%. Any idea where the extra time would be coming from here? |
|
I would guess the performance hit is from the population diversity side calculation. |





Pull request overview
This PR is a contribution from Trane. Set of code changes involves adding a new method for adjusting air system system sizing by mining data from each of the air terminal units attached to the system. Standard 62.1 system level sizes and table reporting code has been refactored to correct for adjusted system sizes. The central heating air flow ratio can now be autosized.
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.