NatLabRockies / NatLabRockies/OpenStudio

SizingSystem::autosizedDesignOutdoorAirFlowRate is grabbing the wrong quantity

Open
#5,442 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

component - HVAC component - Standards
Dominant language
C++
Stars
646
Forks
237
Avg merge
3d 11h
Merged PRs (30d)
10

Description

Issue overview

https://bigladdersoftware.com/epx/docs/25-1/input-output-reference/group-design-objects.html#field-design-outdoor-air-flow-rate

Emphasis mine:

Field: Design Outdoor Air Flow Rate
The design outdoor air flow rate in cubic meters per second. Generally this should be the minimum outdoor air flow. It is used for both heating and cooling design calculations. The assumption for cooling is that any outdoor air economizer will be closed. If Autosize is input the outdoor air flow rate will be taken from the sum of the zone outdoor air flow rates or calculated based on the System Outdoor Air Method selection (field below).

https://github.com/NREL/EnergyPlus/blob/e9810eeb1d3dd0730c6b4a96180cba2795b54bb6/src/EnergyPlus/SimAirServingZones.cc#L5047

Current Behavior

https://github.com/NREL/OpenStudio/blob/86d7e215a145557e4e029732628f5e3281898d35/src/model/SizingSystem.cpp#L698-L715

Introduced via: https://github.com/NREL/OpenStudio/commit/b5c88482a4086ac478ff31446bdb3b405b8220ec#diff-9c95323b728a72caef4fb966c1c15a511e0b7155b84ff961e2a984a806e855e5R678

Expected Behavior

I'm pretty sure it should instead grab the controller OA autosizedMinimumOutdoorAirFlowRate and not the autosizedMaximumOutdoorAirFlowRate

Steps to Reproduce

Given a VAV_Reheat (Sys7) serving multiple (54) zones, the sum of the DSOA flow rates is 113 m3/s.
After running a sizing run:

[23] pry(#<ACM179dASHRAE9012007>)> controller_oa.autosizedMinimumOutdoorAirFlowRate.get
=> 113.14067242054135
[24] pry(#<ACM179dASHRAE9012007>)> controller_oa.autosizedMaximumOutdoorAirFlowRate.get
=> 363.09677246176363
a.airLoopHVACOutdoorAirSystem.get.getControllerOutdoorAir.autosizedMaximumOutdoorAirFlowRate.get == a.sizingSystem.autosizedDesignOutdoorAirFlowRate.get
=> true

https://github.com/NREL/EnergyPlus/blob/e9810eeb1d3dd0730c6b4a96180cba2795b54bb6/src/EnergyPlus/MixedAir.cc#L4776-L4797

I guess AirDuctType::Cooling and AirDuctType::Heating is for the Dual Duct AirLoopHVAC, and mine would be a Main.

controller_oa.autosizedMinimumOutdoorAirFlowRate.get / controller_oa.autosizedMaximumOutdoorAirFlowRate.get
=> 0.31159922368204407

The Constant Minimum Air Flow Fraction of the AirTerminalSingleDuctVAVReheats is around 0.3

https://github.com/NREL/EnergyPlus/blob/e9810eeb1d3dd0730c6b4a96180cba2795b54bb6/src/EnergyPlus/SimAirServingZones.cc#L5970

IIF I'm following correctly, the Maximum Outdoor Air Flow Rate is equal to maximum Flow Rate (which includes flow for OA and conditioning)?

Possible Solution

Details

Environment

Some additional details about your environment for this issue (if relevant):

  • Platform (Operating system, version): all
  • Version of OpenStudio (if using an intermediate build, include SHA): 3.10.0
Context

179D

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in src/model/SizingSystem.cpp around lines 698-715 and compare the sizing system's autosized design outdoor air flow rate with the controller outdoor air getters described in the issue. Run a sizing case like the VAV_Reheat Sys7 reproduction and trace the referenced EnergyPlus outdoor-air calculations. Done means the sizing system uses the intended minimum outdoor air flow rate rather than the maximum.

Written by the indexing model from the issue text.

Assessment

Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.