-
Notifications
You must be signed in to change notification settings - Fork 58
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
Fixes #1372 by updating VentilationRateProcedure enumerations #1373
Conversation
# Set the minimum zone ventilation efficiency to be 0.6 | ||
|
||
# Use the built-in EnergyPlus method when available | ||
if air_loop_hvac.model.version > OpenStudio::VersionString.new('3.0.0') | ||
air_loop_hvac.thermalZones.sort.each do |zone| | ||
sizing_zone = zone.sizingZone | ||
sizing_zone.setDesignMinimumZoneVentilationEfficiency(0.6) | ||
end | ||
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: the multizone outdoor air calculation method was applied, and a minimum zone ventilation efficiency of 0.6 was specified using the EnergyPlus algorithm.") | ||
|
||
return true | ||
end | ||
|
||
# Use the manual method otherwise | ||
|
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 don't believe that this is a code requirement, we're currently doing that in model_system_outdoor_air_sizing_vrp_method()
in Prototype.SizingSystem.rb
. What's the reason for moving it here and below?
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.
It's not a code requirement, however, the previous approach, which mainly affects ComStock or others using the older prototypes, assumed that historic design practice for the pre-1980 and 1980-2004 templates was simply to not adjust minimum damper positions, which results in higher min OA requirements for those buildings. When the change was made to put the 0.6 minimum limit into model_system_outdoor_air_sizing_vrp_method()
, I didn't notice because ComStock was still using OS 2.9.1, so that code never got called. I think that moving the code into standard-specific methods should result in the previous behavior:
- For pre-1980 and 1980-2004, VAV systems get Standard62.1VentilationRateProcedure with no minimum zone ventilation efficiency. This likely means higher minimum OA for those systems.
- For 2004+
- If using OS =< 3.0.0, minimum damper positions are manually adjusted to achieve a minimum zone ventilation efficiency of 0.6
- If using OS > 3.0.0, minimum damper positions are set to achieve a minimum zone ventilation efficiency of 0.6 using the newly-available EnergyPlus built-in algorithm.
- I have tested these two methods on a small number of buildings and confirmed that the E+ algorithm and the manual method create nearly identical results.
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.
Ok, I see, thanks for the additional information. So when we worked on that section of the code (in #1112 and #776) we missed that the DOE reference building should not be using a minimum efficiency. Knowing that I think that what you're proposing makes sense but I do see that the regression and performance tests failed. Do you mind if I have a look at why we get diffs before this gets merged? Is it urgent, I might not have time to look at it before next week.
if air_loop_hvac.model.version < OpenStudio::VersionString.new('3.3.0') | ||
controller_mv.setSystemOutdoorAirMethod('VentilationRateProcedure') | ||
else | ||
controller_mv.setSystemOutdoorAirMethod('Standard62.1VentilationRateProcedure') |
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 we might want to consider using 62.1VentilationRateProcedureWithLimit
here. That's the intent in ASHRAE 90.1.
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.
Yeah I agree, didn't see this additional enumeration. I will update branch. Also, this is not urgent to merge, take your time and look through the regression tests.
@asparke2 - Sorry for the belated response! The proposed changes have more impacts on the prototypes than I would have thought, I think some changes are necessary. I understand the intent of the changes but I think I should provide some additional details on #776 and #1112 (current approach/intent). First, the ventilation rate procedure come into play at two different levels: sizing and operation ("ventilation optimization").
Issues with the current changes: Proposed approach:
I think this would address the issues I mentioned above, the issue you mentioned in your comment about the pre-1980 and 1980-2004 prototypes, and the original issue (introduction of |
@lymereJ I'm going to test your suggestion, I believe that it will work and if so will implement it on a new branch and close this PR. In testing, I have confirmed an approach that uses more recent EnergyPlus capabilities to autosize minimum damper positions, which would allow us to remove the damper position adjustment code in openstudio-standards. For most models, that approach results in minimum damper positions and OA rates within 1% of the current code. I've documented that approach in a feature request issue here so we don't lose that knowledge: #1391 |
Closing this PR, choosing the simpler approach in PR #1394 instead. |
In OpenStudio 3.3.0/EnergyPlus 9.6, the enumerations in the Sizing:System and Controller:MechanicalVentilation objects changed from VentilationRateProcedure to Standard62.1VentilationRateProcedure. When this change is not handled, the setter methods will not change the value, and the default ZoneSum method will be used. This method significantly underestimates the minimum outdoor air requirements for multizone systems, which in turn impacts energy consumption.
The fix is to modify the code to be version-dependent.