Skip to content
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

Correct VAV maximum air flow fraction during reheat for heating dominated use cases #10763

Open
wants to merge 5 commits into
base: develop
Choose a base branch
from

Conversation

rraustad
Copy link
Contributor

@rraustad rraustad commented Sep 24, 2024

Pull request overview

NOTE: ENHANCEMENTS MUST FOLLOW A SUBMISSION PROCESS INCLUDING A FEATURE PROPOSAL AND DESIGN DOCUMENT PRIOR TO SUBMITTING CODE

Pull Request Author

Add to this list or remove from it as applicable. This is a simple templated set of guidelines.

  • 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

This will not be exhaustively relevant to every PR.

  • 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 Sep 24, 2024
@rraustad
Copy link
Contributor Author

The defect file results are now:

Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 1.00000
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE2-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 0.79773
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE3-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 1.00000
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE4-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 0.69789
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE5-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 1.00000

@rraustad rraustad changed the title Correct VAV maximum air flow fraction during reheat Correct VAV maximum air flow fraction during reheat for heating dominated use cases Sep 24, 2024
Real64 heatingMaxFlow = (this->DamperHeatingAction == Action::ReverseWithLimits)
? state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlowMax
: state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlow;
MaxAirVolFlowRateDes = max(state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesCoolVolFlow, heatingMaxFlow);
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 ReverseWithLimits uses a different heating air flow rate from the zone design heating air flow rate then that flow rate should be used as the value for the VAV box heating air flow rate.

Copy link
Contributor Author

@rraustad rraustad Sep 24, 2024

Choose a reason for hiding this comment

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

Well, I was expecting DesHeatVolFlowMax to always be less than DesHeatVolFlow. For 5ZoneBoilerOutsideAirReset that's not the case. The diffs show that Zone 5 TU max air flow rate increased, I was only expecting decreases in max air flow rate for heating dominated zones. Zone cooling design air flow is greater than zone heating design air flow, but DesHeatVolFlowMax is larger than both of these.

image

image

// set the zone maximum heating supply air flow rate. This will be used for autosizing VAV terminal unit
// max heating flow rates
zsFinalSizing.DesHeatVolFlowMax = max(zsFinalSizing.DesHeatMaxAirFlow,
                                      zsFinalSizing.DesHeatMaxAirFlow2,
                                      max(zsFinalSizing.DesCoolVolFlow, zsFinalSizing.DesHeatVolFlow) * zsFinalSizing.DesHeatMaxAirFlowFrac);

zsFinalSizing.DesHeatMaxAirFlow2 = zsFinalSizing.DesHeatMaxAirFlowPerArea * floorArea * zoneMult;
                                 = 0.002032 * 182.49 * 1 = 0.37082

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.

So is DesHeatVolFlowMax just an upper limit? or is it the expected heating air flow rate?

Copy link
Contributor Author

@rraustad rraustad Sep 24, 2024

Choose a reason for hiding this comment

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

So, since DesHeatVolFlowMax looks like a limit and not a flow rate, maybe I should change this line and line 3224 to?:

Real64 heatingMaxFlow = (DesHeatVolFlowMax > DesHeatVolFlow) ? state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlow :
    state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlowMax);

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Based on this discussion I changed to treat DesHeatVolFlowMax as an upper limit. This should still correct the issue and result in fewer diffs.

MaxHeatAirVolFlowRateDes = state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlowMax;
} else {
MaxHeatAirVolFlowRateDes = state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlow;
}
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Below at line 3224, ReverseWithLimits uses DesHeatVolFlowMax. That value should also be used here.

3224: MaxAirVolFlowRateDuringReheatDes = state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).DesHeatVolFlowMax;

Copy link
Contributor Author

@rraustad rraustad Sep 25, 2024

Choose a reason for hiding this comment

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

As discussed above, these 2 areas of code, above (2937) and below (3231), were changed to use DesHeatVolFlowMax as a limit.

Copy link

⚠️ Regressions detected on macos-14 for commit 64c36ca

Regression Summary
  • EIO: 83
  • ESO Big Diffs: 77
  • MTR Big Diffs: 68
  • Table Big Diffs: 82
  • Table String Diffs: 76
  • ERR: 15
  • Audit: 2
  • EDD: 1

Copy link

⚠️ Regressions detected on macos-14 for commit 1979f09

Regression Summary
  • EIO: 105
  • Table Big Diffs: 105
  • ESO Small Diffs: 11
  • MTR Small Diffs: 11
  • Table String Diffs: 34
  • ESO Big Diffs: 26
  • MTR Big Diffs: 18
  • ERR: 6
  • EDD: 2

@rraustad
Copy link
Contributor Author

rraustad commented Sep 24, 2024

It turns out this does correct a reporting issue (5ZoneAutoDXVAV).

Zone Sizing Information, SPACE1-1, Cooling, 4433.93700, 4433.93700, 0.46734, 0.46734
Zone Sizing Information, SPACE1-1, Heating, 3564.64198, 3564.64198, 0.10362, 0.10362

ReverseWithLimits will operate up to the zone design heating air flow unless that flow exceeds the maximum limit. In the past the maximum limit was used to calculate the maximum reheat fraction. This change only uses the maximum reheat flow rate if it actually limits the design heating air flow rate.

In this case the maximum reheat fraction is 0.10362 m3/s / 0.46734 m3/s = 0.2217229 <- correct answer
The previous code used the maximum reheat fraction of 99.16 m2 * 0.002032 = 0.201493 m3/s / 0.46734 m3/.s = 0.431149

and 0.10362 m3/s / 99.16 m2 = 0.001049778 m3/s/m2 <- correct answer

image

Copy link

⚠️ Regressions detected on macos-14 for commit b275d42

Regression Summary
  • EIO: 105
  • Table Big Diffs: 105
  • ESO Small Diffs: 11
  • MTR Small Diffs: 11
  • Table String Diffs: 34
  • ESO Big Diffs: 26
  • MTR Big Diffs: 18
  • ERR: 6
  • EDD: 2

@rraustad
Copy link
Contributor Author

rraustad commented Sep 24, 2024

Defect file results after latest change to use DesHeatVolFlowMax as a limit, not a flow rate:

Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 1.00000
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE2-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 0.60486
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE3-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 1.00000
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE4-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 0.52735
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE5-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 1.00000

expectedMaxAirVolFractionDuringReheat = state->dataSize->TermUnitFinalZoneSizing(1).DesHeatVolFlowMax / thisSys.MaxAirVolFlowRate;
EXPECT_EQ(expectedZoneMinAirFracDes, thisSys.ZoneMinAirFracDes);
EXPECT_EQ(1.0, thisSys.MaxAirVolFractionDuringReheat);
EXPECT_EQ(expectedMaxAirVolFractionDuringReheat, thisSys.MaxAirVolFractionDuringReheat);
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Added 3 new tests for maximum air flow fraction during reheat to this unit test.

@rraustad rraustad added this to the EnergyPlus 25.1 milestone Sep 25, 2024
@rraustad
Copy link
Contributor Author

I changed the defect file to use Damper Heating Action = Reverse and get expected results regarding the Maximum Flow Fraction during Reheat and the air flow rate used to size the heating coil.

Zone Sizing Information, SPACE1-1, Cooling, 1991.75827, 1991.75827, 0.16753, 0.16753
Zone Sizing Information, SPACE1-1, Heating, 3970.36898, 3970.36898, 0.26058, 0.26058
Zone Sizing Information, SPACE2-1, Cooling, 2110.05356, 2110.05356, 0.17747, 0.17747
Zone Sizing Information, SPACE2-1, Heating, 1635.59910, 1635.59910, 0.10735, 0.10735
Zone Sizing Information, SPACE3-1, Cooling, 1822.43896, 1822.43896, 0.15328, 0.15328
Zone Sizing Information, SPACE3-1, Heating, 3862.85865, 3862.85865, 0.25352, 0.25352
Zone Sizing Information, SPACE4-1, Cooling, 2411.91565, 2411.91565, 0.20286, 0.20286
Zone Sizing Information, SPACE4-1, Heating, 1630.01391, 1630.01391, 0.10698, 0.10698
Zone Sizing Information, SPACE5-1, Cooling, 1144.55309, 1144.55309, 9.62850E-002, 0.13906
Zone Sizing Information, SPACE5-1, Heating, 3259.03012, 3259.03012, 0.21389, 0.21389

Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 1.00000
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Reheat Coil Sizing Air Volume Flow Rate [m3/s], 0.26058
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE2-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 1.00000
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE2-1 VAV REHEAT, Design Size Reheat Coil Sizing Air Volume Flow Rate [m3/s], 0.10735
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE3-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 1.00000
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE3-1 VAV REHEAT, Design Size Reheat Coil Sizing Air Volume Flow Rate [m3/s], 0.25352
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE4-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 1.00000
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE4-1 VAV REHEAT, Design Size Reheat Coil Sizing Air Volume Flow Rate [m3/s], 0.10698
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE5-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 1.00000
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE5-1 VAV REHEAT, Design Size Reheat Coil Sizing Air Volume Flow Rate [m3/s], 0.21389

@mjwitte
Copy link
Contributor

mjwitte commented Oct 22, 2024

Testing 5ZoneAirCooled-ReverseWithLimits, here are some eio diffs, this branch on the left, develop on the right.
Space1-1 Design Size Maximum Air Flow Rate [m3/s] has gone down with this branch. Shouldn't it be 0.26058, same as the reheat coil sizing air flow rate?

image

@rraustad
Copy link
Contributor Author

I'll run that file. The reheat coil air flow should be the same as the maximum heating air flow. I don't see that in your results for 5ZoneAirCooled-ReverseWithLimits.

@rraustad
Copy link
Contributor Author

I see that Space1-1 TU does seem like it sized correctly. It's heating dominated and was limited so came out to 0.20149 m3/s with a max reheat flow fraction of 1.0. TermUnitFinalZoneSizing(1).DesHeatVolFlowMax = 0.20149. That looks correct. I'll check why the reheat coil used the zone heating flow rate for sizing.

Zone Sizing Information, SPACE1-1, Cooling, 1991.75827, 1991.75827, 0.16753, 0.16753
Zone Sizing Information, SPACE1-1, Heating, 3970.36898, 3970.36898, 0.26058, 0.26058

Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Maximum Air Flow Rate [m3/s], 0.20149
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 1.00000
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Reheat Coil Sizing Air Volume Flow Rate [m3/s], 0.26058

OK, the TU was using the wrong data for sizing the reheat coil.

TermUnitSizing(state.dataSize->CurTermUnitSizingNum).AirVolFlow =
    max(state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).NonAirSysDesHeatVolFlow,
        this->MaxAirVolFlowRate * this->ZoneTurndownMinAirFrac);

The IDD says the max fraction during reheat should only be used for water coils. But if a different heating coil is used and the reverse with limits does limit max heating flow rate then it should apply to all coil types? Should I correct the IDD note or is there something I'm missing with this input field?

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

The coil now uses the correct reheat air flow rate:

Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Reheat Coil Sizing Air Volume Flow Rate [m3/s], 0.20149

And the reheat coil has changed size accordingly to meet the load. Before this fix:

Component Sizing Information, Coil:Heating:Water, SPACE1-1 ZONE COIL, Design Size Rated Capacity [W], 5675.83915
Component Sizing Information, Coil:Heating:Water, SPACE1-1 ZONE COIL, Design Size Maximum Water Flow Rate [m3/s], 1.25401E-004
Component Sizing Information, Coil:Heating:Water, SPACE1-1 ZONE COIL, Design Size U-Factor Times Area Value [W/K], 116.78914

After this fix:

Component Sizing Information, Coil:Heating:Water, SPACE1-1 ZONE COIL, Design Size Rated Capacity [W], 5289.12296
Component Sizing Information, Coil:Heating:Water, SPACE1-1 ZONE COIL, Design Size Maximum Water Flow Rate [m3/s], 1.16857E-004
Component Sizing Information, Coil:Heating:Water, SPACE1-1 ZONE COIL, Design Size U-Factor Times Area Value [W/K], 112.93883

Copy link

⚠️ Regressions detected on macos-14 for commit 0a47f08

Regression Summary
  • EIO: 108
  • ESO Big Diffs: 71
  • MTR Big Diffs: 69
  • Table Big Diffs: 108
  • Table String Diffs: 95
  • MTR Small Diffs: 12
  • ESO Small Diffs: 25
  • ERR: 18
  • Audit: 4
  • EDD: 2

@rraustad
Copy link
Contributor Author

Checking defect file with other Damper Heating Action control types.

Reverse:

Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Maximum Air Flow Rate [m3/s], 0.26058
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 1.00000
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Reheat Coil Sizing Air Volume Flow Rate [m3/s], 0.26058

Normal: So here I also see that the reheat coil uses what I think is the wrong air flow rate for sizing. TU heating flow rate should not exceed the minimum flow so why is the reheat coil sizing to the max flow?

Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Maximum Air Flow Rate [m3/s], 0.26058
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Constant Minimum Air Flow Fraction, 0.28997
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, User-Specified Constant Minimum Air Flow Fraction, 0.30000
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Minimum Air Flow Rate [m3/s], 7.81739E-002 <-- max heating air flow
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 0.30000
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Reheat Coil Sizing Air Volume Flow Rate [m3/s], 0.26058

@rraustad
Copy link
Contributor Author

rraustad commented Oct 23, 2024

@mjwitte there are a few unit tests to clean up with this last change. If you could comment on the remaining items I could finish this up. I checked the code and do not see any issue with max heating air flow rate when water heating coils are used.

  • Should the IDD be updated to revise the comment for Maximum Flow Fraction During Reheat and Maximum Flow per Zone Floor Area During Reheat to remove "Used only when Reheat Coil Object Type = Coil:Heating:Water". I think so.
  • Shouldn't the heating coil be sizing to the maximum heating air flow rate? Now normal has the same issue as ReverseWithLimits from yesterday. I think this should also change.

I found this in the IO Ref:

For heating coil types other than the hot-water coil, e.g.~electric, steam, and gas, the reverse action works the same as the normal action -- always keeping the air flow at the minimum during heating.

@mjwitte
Copy link
Contributor

mjwitte commented Oct 23, 2024

@mjwitte there are a few unit tests to clean up with this last change. If you could comment on the remaining items I could finish this up. I checked the code and do not see any issue with max heating air flow rate when water heating coils are used.

  • Should the IDD be updated to revise the comment for Maximum Flow Fraction During Reheat and Maximum Flow per Zone Floor Area During Reheat to remove "Used only when Reheat Coil Object Type = Coil:Heating:Water". I think so.

Not sure. Will the code really increase flow for other coil types? The original idea was that a hot water coil is constrained by the water temperature, so once the water valve is fully open, the only way to get more heat is to increase airflow. Other coil types have higher supply temp limits, but I suppose they could operate the same way. Do they in a real system?

  • Shouldn't the heating coil be sizing to the maximum heating air flow rate? Now normal has the same issue as ReverseWithLimits from yesterday. I think this should also change.

It should size to the max flow rate that it will actually see. But if the limit is < the zone design heating flow rate, there should be a warning that the heating capacity won't be sufficient to meet the load. The whole with limits thing is intended for systems where the cooling design flow rate is > heating design flow rate, so there's a limit on the reverse action flow for heating.

When the heating supply flow rate is > cooling, imposing limits doesn't make sense. Maybe there's some discussion of this in the original NFP when limits were added? (If there is one.) It's also possible (likely) that the real system will have baseboard to reduce the amount of heating load required from the reheat coil.

I found this in the IO Ref:

For heating coil types other than the hot-water coil, e.g.~electric, steam, and gas, the reverse action works the same as the normal action -- always keeping the air flow at the minimum during heating.

@rraustad
Copy link
Contributor Author

From what I can tell, the water coil does the top figure and non-water coils operate at the max reheat air flow as in the bottom figure. I think because the other coils can't increase heating output with additional air flow. It would be nice for all coils to act the same, air flow-wise, but for now I think I'll just try to understand this better (i.e., verify this), figure out what text is needed in the doc/IDD, and maybe add a new figure to the IO Ref (e.g., Dual Max for non-water coils).

image

@rraustad
Copy link
Contributor Author

rraustad commented Oct 23, 2024

The non-water coils do operate at the minimum air flow rate. But the heating coil sizes to the design heating air flow rate.

Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Maximum Air Flow Rate [m3/s], 0.20149
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Constant Minimum Air Flow Fraction, 0.37500
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, User-Specified Constant Minimum Air Flow Fraction, 0.30000
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Minimum Air Flow Rate [m3/s], 6.04479E-002
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Maximum Flow Fraction during Reheat [], 1.00000
Component Sizing Information, AirTerminal:SingleDuct:VAV:Reheat, SPACE1-1 VAV REHEAT, Design Size Maximum Flow per Zone Floor Area during Reheat [m3/s-m2], 2.03200E-003
Component Sizing Information, Coil:Heating:Electric, SPACE1-1 ZONE COIL, Design Size Nominal Capacity [W], 4389.09415

Where the heating coil in this branch is using 0.20149 m3/s for sizing (it was using 0.26058 before I changed it yesterday. In this figure it looks like the heating coil is sized just about right but it doesn't make sense to operate at the minimum air flow rate when Reverse or ReverseWithLimits is selected.

image

Comment on lines -3414 to +3436
TermUnitSizing(state.dataSize->CurTermUnitSizingNum).AirVolFlow =
max(state.dataSize->TermUnitFinalZoneSizing(state.dataSize->CurTermUnitSizingNum).NonAirSysDesHeatVolFlow,
this->MaxAirVolFlowRate * this->ZoneMinAirFracDes * this->ZoneTurndownMinAirFrac);
if (this->SysType_Num == SysType::SingleDuctVAVReheat && this->DamperHeatingAction == Action::ReverseWithLimits) {
TermUnitSizing(state.dataSize->CurTermUnitSizingNum).AirVolFlow =
max(this->MaxAirVolFlowRateDuringReheat, this->MaxAirVolFlowRate * this->ZoneTurndownMinAirFrac);
} else {
Copy link
Contributor

Choose a reason for hiding this comment

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

So, what if MaxAirVolFlowRateDuringReheat > NonAirSysDesHeatVolFlow as it is for Space4-1 in 5ZoneAirCooled-ReverseWithLimits? Will this reheat coil be oversized?

And why is NonAirSysDesHeatVolFlow being used here instead of DesHeatVolFlow?

Copy link
Contributor Author

@rraustad rraustad Oct 24, 2024

Choose a reason for hiding this comment

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

I think I'm landing on falling back on the choices. Normal should size to the minimum flow rate. If that doesn't meet the load then the Reverse or ReverseWithLimits should be used instead. That's what the docs say. And then Reverse and ReverseWithLmits use the corresponding max reheat air flow rate. But that is historically different so I'm stuck with what to do.

Regarding the size choice your right. The coil could be over or undersized. I'm not sure the developer should make that sizing choice (i.e., there's plenty of inputs to get it right). One or more of these choices should meet the load. I've also been thinking about heating coil sizing. Zone heating flow rate is SAT - Tzone. TU heating coil sizing is Tout - Tzone. So at the zone heating flow rate you meet the load and that's why NonAirSysDesHeatVolFlow is used. When using actual air flow Reverse should always meet the load, ReverseWithLimits may not. Normal may not meet the load but that's understood with a typical 0.3 minimum stop selection and depends on heating to cooling flow rate ratio. Where's the choice for the user to oversize the heating coil when it operates at a lower flow rate? There is a disconnect between TU heating air flow and heating capacity. Using NonAirSysDesHeatVolFlow to size the coil should always size the coil to meet the load but it seems odd to use a flow rate that differs from the TU and you create a coil outlet temperature that does not match the design criteria. That's when the coil sizing details don't line up with the TU flow rate for maximum flow rate during reheat but you get the right SAT. Some users notice that and question why. There was a lot of testing of these choices and things weren't lining up which created this issue. I'll look at the coil sizing details to see if the issue of TU heating flow rate versus heating coil sizing air flow shows itself. What do you think about a new input to use either the zone or TU heating flow rate? It could default to zone and not change coil capacity (Use Zone Heating Flow Rate to Size Heating Coil, Yes/No).

Copy link
Contributor

Choose a reason for hiding this comment

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

Regarding the reheat coil sizing, there have been many adjustments in the past to make sure that the coil is not way oversized. The airflow is one thing, but I think it uses the zone heating load in the sizing calcs (plus an offset for entering air temp). But that's just my recollection without looking at the code. So, maybe what you have a this point is ok, for ReverseWithLimits, anyway.

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
6 participants