Skip to content

Conversation

rraustad
Copy link
Contributor

@rraustad rraustad commented May 22, 2025

Pull request overview

Description of the purpose of this PR

User file failed to size HW coil UA because the Sizing:Zone minimum heating air flow fraction was 0.3 and the zones were heating dominated.

The user file is now failing because of PR 10763, the branch that tried to correct TU air flow rate for all the damper heating options (e.g., ReverseWithLimits). This file uses ReverseWithLimits.
This check is getting hit and the max heating coil air flow rate is less than the zone design air flow rate (the zone is heating dominated).
if (this->DamperHeatingAction == Action::ReverseWithLimits &&
state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlow >
state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlowMax) {
heatingMaxFlow = state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlowMax;
because the inputs show a max heating flow fraction of 0.3:
Sizing:Zone,
0.3, !- Heating Maximum Air Flow Fraction

Zone Sizing Information, BATHROOMS_ZN_1_FLR_2 ZN, Cooling, 5001.75344, 5001.75344, 0.36836, 0.36836
Zone Sizing Information, BATHROOMS_ZN_1_FLR_2 ZN, Heating, 17123.37532, 17123.37532, 0.74495, 0.74495

So at this lower air flow rate the heating coil can't meet the zone heating load during sizing and fails to find a valid UA. Before this code change (PR 10763) the TU heating coil would size for the zone design heating load using the zone design heating air flow rate and would find a valid UA.

So the question is what to do here to fix this? Use the greater of the zone design heating air flow AND the TU max heating air flow rate? just to size the heating coil? I assume this zone was not meeting the zone heating load before (or operating outside design conditions since it's a HW coil) but at least it was able to size, albeit incorrectly (i.e., the heating coil should size using the "TU" design heating air flow rate).

The result of this change is to allow the UA to size with a high UA (i.e., large coil surface area) and proceed with the simulation. An additional warning was added to provide more information for the user to aid in resolution.

Pull Request Author

  • Title of PR should be user-synopsis style (clearly understandable in a standalone changelog context)
  • Label the PR with at least one of: Defect, Refactoring, NewFeature, Performance, and/or DoNoPublish
  • Pull requests that impact EnergyPlus code must also include unit tests to cover enhancement or defect repair
  • Author should provide a "walkthrough" of relevant code changes using a GitHub code review comment process
  • If any diffs are expected, author must demonstrate they are justified using plots and descriptions
  • If changes fix a defect, the fix should be demonstrated in plots and descriptions
  • If any defect files are updated to a more recent version, upload new versions here or on DevSupport
  • If IDD requires transition, transition source, rules, ExpandObjects, and IDFs must be updated, and add IDDChange label
  • If structural output changes, add to output rules file and add OutputChange label
  • If adding/removing any LaTeX docs or figures, update that document's CMakeLists file dependencies

Reviewer

  • Perform a Code Review on GitHub
  • If branch is behind develop, merge develop and build locally to check for side effects of the merge
  • If defect, verify by running develop branch and reproducing defect, then running PR and reproducing fix
  • If feature, test running new feature, try creative ways to break it
  • CI status: all green or justified
  • Check that performance is not impacted (CI Linux results include performance check)
  • Run Unit Test(s) locally
  • Check any new function arguments for performance impacts
  • Verify IDF naming conventions and styles, memos and notes and defaults
  • If new idf included, locally check the err file and other outputs

@rraustad rraustad added the Defect Includes code to repair a defect in EnergyPlus label May 22, 2025
this->dataErrorsFound = true;
} else if (SolFla == -2) {
this->errorType = AutoSizingResultType::ErrorType1;
errorsFound = true;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Failed SolveRoot with a -1 for iterations exceeded or -2 for bad limits are now not an error but instead a diagnostic, with messages and sizing data to aid the user in a resolution,

EXPECT_ENUM_EQ(AutoSizingResultType::NoError, sizer.errorType);
EXPECT_TRUE(sizer.wasAutoSized);
EXPECT_NEAR(3.0, sizedValue, 0.01); // 0.1% of 3000 W capacity
EXPECT_NEAR(3000.0, sizedValue, 0.01); // 100% of 3000 W capacity
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If HW coil UA sizing fails with -2, the maximum UA limit is now used to size the coil. Previously the lower limit was used (because that's what gets returned from SolveRoot when that function fails with -2) and the coil was severely undersized (with associated error and a fatal).

@rraustad
Copy link
Contributor Author

The same warning regarding water coil UA sizing is still reported except that the simulation does not fatal out. There is also a new warning to attempt to provide the user more information to help diagnose the problem. The defect file shows the new warning for the 1st TU without an issue with UA sizing, and also for the 2nd TU that does have an issue with UA sizing.

************* SizeHVACSingleDuct: Potential issue with equipment sizing for AirTerminal:SingleDuct:VAV:Reheat = "BATHROOMS_ZN_1_FLR_1 ZN VAV TERMINAL".
**   ~~~   ** Terminal unit design air flow rate during Reheat of 0.14492 [m3/s]
**   ~~~   ** is less than the zone design heating air flow rate of 0.28983 [m3/s]
**   ~~~   ** For reference the zone design cooling air flow rate is 0.27930 [m3/s]
**   ~~~   ** For reference the zone design minimum cooling air flow rate is 0.16002 [m3/s]
**   ~~~   ** Sizing:Zone Heating Maximum Air Flow Fraction = 0.30000 [m3/s]
**   ~~~   ** Check zone and equipment sizing inputs for proper design
************* SizeHVACSingleDuct: Potential issue with equipment sizing for AirTerminal:SingleDuct:VAV:Reheat = "BATHROOMS_ZN_1_FLR_2 ZN VAV TERMINAL".
**   ~~~   ** Terminal unit design air flow rate during Reheat of 0.21336 [m3/s]
**   ~~~   ** is less than the zone design heating air flow rate of 0.74495 [m3/s]
**   ~~~   ** For reference the zone design cooling air flow rate is 0.36836 [m3/s]
**   ~~~   ** For reference the zone design minimum cooling air flow rate is 0.16002 [m3/s]
**   ~~~   ** Sizing:Zone Heating Maximum Air Flow Fraction = 0.30000 [m3/s]
**   ~~~   ** Check zone and equipment sizing inputs for proper design
** Severe  ** Autosizing of heating coil UA failed for Coil:Heating:Water "BATHROOMS_ZN_1_FLR_2 ZN REHEAT COIL"
**   ~~~   **   Bad starting values for UA
**   ~~~   **   Lower UA estimate = 19.234551 W/m2-K (0.1% of Design Coil Load)
**   ~~~   **   Upper UA estimate = 19234.551467 W/m2-K (100% of Design Coil Load)
**   ~~~   **   Zone "BATHROOMS_ZN_1_FLR_2 ZN" coil sizing conditions (may be different than Sizing inputs):
**   ~~~   **   Coil inlet air temperature     = 12.777 C
**   ~~~   **   Coil inlet air humidity ratio  = 8.000E-003 kgWater/kgDryAir
**   ~~~   **   Coil inlet air mass flow rate  = 0.252925 kg/s
**   ~~~   **   Design Coil Capacity           = 8095.740 W
**   ~~~   **   Design Coil Load               = 19234.551 W
**   ~~~   **   Inadequate water side capacity: in Plant Sizing for this hot water loop
**   ~~~   **   increase design loop exit temperature and/or decrease design loop delta T
**   ~~~   **   Plant Sizing object = HOT WATER LOOP
**   ~~~   **   Plant design loop exit temperature = 82.222 C
**   ~~~   **   Plant design loop delta T          = 11.111 C

Copy link

⚠️ Regressions detected on macos-14 for commit dd51ffe

Regression Summary
  • ERR: 68

@rraustad
Copy link
Contributor Author

Lots of new warnings. I don't know that when the coil UA does size if this warning is helpful. I think I'll add a check for this->DamperHeatingAction == Action::ReverseWithLimits and only print this warning for that case. We can discuss this.

+   ************* SizeHVACSingleDuct: Potential issue with equipment sizing for AirTerminal:SingleDuct:VAV:Reheat = "SPACE5-1 VAV REHEAT".
+   **   ~~~   ** Terminal unit design air flow rate during Reheat of 8.83486E-002 [m3/s]
+   **   ~~~   ** is less than the zone design heating air flow rate of 0.10286 [m3/s]
+   **   ~~~   ** For reference the zone design cooling air flow rate is 0.21750 [m3/s]
+   **   ~~~   ** For reference the zone design minimum cooling air flow rate is 0.13906 [m3/s]
+   **   ~~~   ** Sizing:Zone Heating Maximum Air Flow Fraction = 0.30000 [m3/s]
+   **   ~~~   ** Check zone and equipment sizing inputs for proper design

Copy link

⚠️ Regressions detected on macos-14 for commit 9efb44e

Regression Summary
  • ERR: 17

Copy link

⚠️ Regressions detected on macos-14 for commit 6b52b21

Regression Summary
  • ERR: 17

@nrel-bot-2c
Copy link

@rraustad @Myoldmopar it has been 33 days since this pull request was last updated.

@nrel-bot-2
Copy link

@rraustad @Myoldmopar it has been 44 days since this pull request was last updated.

@mjwitte
Copy link
Contributor

mjwitte commented Sep 8, 2025

Lots of new warnings. I don't know that when the coil UA does size if this warning is helpful. I think I'll add a check for this->DamperHeatingAction == Action::ReverseWithLimits and only print this warning for that case. We can discuss this.

+   ************* SizeHVACSingleDuct: Potential issue with equipment sizing for AirTerminal:SingleDuct:VAV:Reheat = "SPACE5-1 VAV REHEAT".
+   **   ~~~   ** Terminal unit design air flow rate during Reheat of 8.83486E-002 [m3/s]
+   **   ~~~   ** is less than the zone design heating air flow rate of 0.10286 [m3/s]
+   **   ~~~   ** For reference the zone design cooling air flow rate is 0.21750 [m3/s]
+   **   ~~~   ** For reference the zone design minimum cooling air flow rate is 0.13906 [m3/s]
+   **   ~~~   ** Sizing:Zone Heating Maximum Air Flow Fraction = 0.30000 [m3/s]
+   **   ~~~   ** Check zone and equipment sizing inputs for proper design

@rraustad Looking at this warning, I'm not sure I would understand what to do. My first guess is that the izing:Zone Heating Maximum Air Flow Fraction = 0.30000 [m3/s] is too small. But 0.3 * the zone design cooling air flow rate of 0.21750 [m3/s] would be 0.06525 m3/s which is smaller than the reheat air flow rate o 0.0883486 m3/s, hows that?
And BTW, "Sizing:Zone Heating Maximum Air Flow Fraction = 0.30000 [m3/s]" shouldn't be [m3/s] if it's a fraction.

@rraustad
Copy link
Contributor Author

rraustad commented Sep 8, 2025

@mjwitte we did discuss what to do if the TU reheat flow was less than the zone design heating flow rate. If I recall the discussion, that would mean the TU could not meet the heating load so we decided to post a warning. I agree the math doesn't work on this file with this new warning so something else is missing when checking this scenario. I wonder if this TU can meet the peak heating load and this warning isn't really needed? or a follow up to 10763 to see why this is happening? With my new features finished I have more time to investigate.

@rraustad
Copy link
Contributor Author

rraustad commented Sep 16, 2025

For test file 5ZoneVAV-ChilledWaterStorage-Stratified the TUs are set to ReverseWithLimits and the following 2 fields that set those limits are set to autocalculate:

AirTerminal:SingleDuct:VAV:Reheat,
  ReverseWithLimits,       !- Damper Heating Action
  AUTOCALCULATE,           !- Maximum Flow per Zone Floor Area During Reheat {m3/s-m2}
  AUTOCALCULATE;           !- Maximum Flow Fraction During Reheat

The Sizing:Zone objects use DesignDay, set the heating design flow to 0 and leave the heating max flow per zone floor area input blank.

Sizing:Zone,
  DesignDay,               !- Heating Design Air Flow Method
  0.0,                     !- Heating Design Air Flow Rate {m3/s}
  ,                        !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}

The TU shows that the 2 fields following the Damper Heating Action will be used in sizing, but only if a HW coils is used which doesn't make much sense:

A10, \field Damper Heating Action
   \type choice
   \key Normal
   \key Reverse
   \key ReverseWithLimits
   \default ReverseWithLimits
   \note Normal means the damper is fixed at the minimum position in heating mode
   \note Reverse means the damper can open fully during reheat
   \note ReverseWithLimits means the damper will open partially during reheat
   \note as specified in the following 2 fields
N7 , \field Maximum Flow per Zone Floor Area During Reheat
   \type real
   \units m3/s-m2
   \autosizable
   \default autosize
   \note Used only when Reheat Coil Object Type = Coil:Heating:Water and Damper Heating Action = ReverseWithLimits
   \note When autocalculating, the maximum flow per zone is set to 0.002032 m3/s-m2 (0.4 cfm/sqft)
   \note This optional field limits the maximum flow allowed in reheat mode.
   \note At no time will the maximum flow rate calculated here exceed the value of
   \note Maximum Air Flow Rate.
N8 , \field Maximum Flow Fraction During Reheat
   \type real
   \autosizable
   \default autosize
   \note Used only when Reheat Coil Object Type = Coil:Heating:Water and Damper Heating Action = ReverseWithLimits
   \note When autocalculating, the maximum flow fraction is set to the ratio of
   \note 0.002032 m3/s-m2 (0.4 cfm/sqft) multiplied by the zone floor area and the
   \note Maximum Air Flow Rate.
   \note This optional field limits the maximum flow allowed in reheat mode.
   \note At no time will the maximum flow rate calculated here exceed the value of
   \note Maximum Air Flow Rate.

Yet the IDD shows that the heating maximum air flow per zone floor area should only be used with the DesignDayWithLimit choice. So I think there are conflicting inputs being used and it is not clear when these inputs are applicable.

A6, \field Heating Design Air Flow Method
  \type choice
  \key Flow/Zone
  \key DesignDay
  \key DesignDayWithLimit
  \default DesignDay
N13,\field Heating Design Air Flow Rate
  \type real
  \units m3/s
  \minimum 0
  \default 0
  \note This input is used if Heating Design Air Flow Method is Flow/Zone.
  \note This value will be multiplied by the global or zone sizing factor and
  \note by zone multipliers.
N14,\field Heating Maximum Air Flow per Zone Floor Area
  \type real
  \units m3/s-m2
  \minimum 0
  \default .002032
  \note default is .40 cfm/ft2
  \note This field is used to size the heating design flow rate when Heating Design Air Flow Method = Flow/Zone.
  \note This input is used for autosizing components when Heating Design Air Flow Method = DesignDayWithLimit.

This is where this air flow is getting it's value:

image

The updated warning message is:

************* SizeHVACSingleDuct: Potential issue with equipment sizing for AirTerminal:SingleDuct:VAV:Reheat = "ZN_1_FLR_1_SEC_1 VAV BOX COMPONENT".
**   ~~~   ** Terminal unit design air flow rate during Reheat of 0.32901 [m3/s]
**   ~~~   ** is less than the zone design heating air flow rate of 0.78362 [m3/s]
**   ~~~   ** For reference the zone design cooling air flow rate is 0.66455 [m3/s]
**   ~~~   ** For reference the zone design minimum cooling air flow rate is 0.12338 [m3/s]
**   ~~~   ** Sizing:Zone Heating Maximum Air Flow Fraction = 0.30000
**   ~~~   ** Sizing:Zone Heating Maximum Air Flow per Zone Floor Area = 2.03200E-003 [m3/s/m2]
**   ~~~   ** For reference the zone design maximum heating air flow rate is 0.32901 [m3/s]
**   ~~~   ** Verify that the values entered are intended and are consistent with other components.

Copy link

⚠️ Regressions detected on ubuntu-24.04 for commit d77ffb2

Regression Summary
  • ERR: 17

Copy link

⚠️ Regressions detected on macos-14 for commit d77ffb2

Regression Summary
  • ERR: 17

Copy link

⚠️ Regressions detected on ubuntu-24.04 for commit 39266f5

Regression Summary
  • ERR: 17

@rraustad
Copy link
Contributor Author

rraustad commented Sep 16, 2025

Given the HW coil size in TU1 it does appear there is sufficient heating capacity. The zone temperature rises in a reasonable manner during pullup (hour 7 and 8). I don't quite understand why the zone temperature fell below 21 C (between hour 18 and 22) at the end of the winter design day. The HW coil water flow rate is max'd out between hour 7 and 18 which is about what I would expect on a winter design day.

Schedule:Compact,
HTGSETP_SCH,             !- Name
Temperature,             !- Schedule Type Limits Name
Through: 12/31,          !- Field 1
For: Weekdays WinterDesignDay, !- Field 2
Until: 06:00,13.,        !- Field 3
Until: 22:00,21.0,       !- Field 5
Until: 24:00,13.,        !- Field 7
For SummerDesignDay,     !- Field 9
Until: 24:00,13.,        !- Field 10
For: Saturday,           !- Field 12
Until: 06:00,13.,        !- Field 13
Until: 18:00,21.0,       !- Field 15
Until: 24:00,13.,        !- Field 17
For: Sunday Holidays AllOtherDays, !- Field 19
Until: 24:00,13.;        !- Field 20
image

Copy link

⚠️ Regressions detected on macos-14 for commit 39266f5

Regression Summary
  • ERR: 17

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Defect Includes code to repair a defect in EnergyPlus

Projects

None yet

4 participants