Skip to content

Fix and clarify VAV minimum flow sizing, especially when VRP calculations adjust the min flow#6140

Merged
Myoldmopar merged 12 commits intodevelopfrom
VRPSizing-6055
Aug 16, 2017
Merged

Fix and clarify VAV minimum flow sizing, especially when VRP calculations adjust the min flow#6140
Myoldmopar merged 12 commits intodevelopfrom
VRPSizing-6055

Conversation

@mjwitte
Copy link
Copy Markdown
Contributor

@mjwitte mjwitte commented May 19, 2017

Pull request overview

Addresses #6055.

  1. When the ventilation rate procedure (VRP) determines that the minimum zone flow rate needs to be increased, the zone maximum flow rate is also increased if it was less than the new minimum.
  2. The Std 62.1 sizing report now shows the updated values.
  3. In the Std 62.1 sizing report, all columns which report volume flow rate now use 4 figures after the decimal (previously some had only 2 or 3 causing equal values to appear different). Removed this change for now to reduce table diffs.
  4. VAV mininimum flow autosizing now always uses FinalZoneSizing( CurZoneEqNum ).DesCoolVolFlowMin to set the minimum flow rate or minimum flow fraction if a sizing run has been done. This variable holds the maximum flow derived from
    a. the design outdoor air flow (including VRP adjustments) and
    b. the Sizing:Zone input fields "Cooling Minimum Air Flow per Zone Floor Area",
    c. "Cooling Minimum Air Flow", and
    d. "Cooling Minimum Air Flow Fraction".
  5. Previously, if Sizing:Zone "Cooling Minimum Air Flow Fraction" was not blank, this fraction would be used to size the VAV minimum flow rate, regardless of all other inputs. This is no longer the case.
  6. Docs and IDD notes have been updated to clarify what values impact the VAV minimum flow autosizing.

Remaining questions

  • Does the same check on minimum ventilation efficiency need to be done for heating? Currently this is only checked for cooling.
  • Need more unit tests and/or test files to look at this for a simple, 3-zone system over a wide range of cases.
  • Need more unit tests and/or test files to check if zones with recirculation are being handled correctly.

Work Checklist

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)
  • At least one of the following appropriate labels must be added to this PR to be consumed into the changelog:
    • Defect: This pull request repairs a github defect issue. The github issue should be referenced in the PR description
    • Refactoring: This pull request includes code changes that don't change the functionality of the program, just perform refactoring
    • NewFeature: This pull request includes code to add a new feature to EnergyPlus
    • Performance: This pull request includes code changes that are directed at improving the runtime performance of EnergyPlus
    • DoNoPublish: This pull request includes changes that shouldn't be included in the changelog

Review Checklist

This will not be exhaustively relevant to every PR.

  • Code style (parentheses padding, variable names)
  • Functional code review (it has to work!)
  • If defect, results of running current develop vs this branch should exhibit the fix
  • CI status: all green or justified
  • Performance: CI Linux results include performance check -- verify this
  • Unit Test(s)
  • C++ checks:
    • Argument types
    • If any virtual classes, ensure virtual destructor included, other things
  • IDD changes:
    • Verify naming conventions and styles, memos and notes and defaults
    • Open windows IDF Editor with modified IDD to check for errors
    • If transition, add rules to spreadsheet
    • If transition, add transition source
    • If transition, update idfs
  • If new idf included, locally check the err file and other outputs
  • Documentation changes in place
  • Changed docs build successfully
  • ExpandObjects changes?
  • If output changes, including tabular output structure, add to output rules file for interfaces

@mjwitte mjwitte added the Defect Includes code to repair a defect in EnergyPlus label May 19, 2017
@nrel-bot-3
Copy link
Copy Markdown

@mjwitte @lgentile it has been 16 days since this pull request was last updated.

@nrel-bot-2
Copy link
Copy Markdown

@mjwitte @lgentile it has been 15 days since this pull request was last updated.

@nrel-bot-3
Copy link
Copy Markdown

@mjwitte @lgentile it has been 14 days since this pull request was last updated.

@mjwitte mjwitte added the IDDChange Code changes impact the IDD file (cannot be merged after IO freeze) label Jul 18, 2017
@mjwitte
Copy link
Copy Markdown
Contributor Author

mjwitte commented Jul 20, 2017

eio/err/table diffs are from terminal units where previously the Design Size Constant Minimum Air Flow Fraction was zero, and now it is not. Not change in results though, because most of these had a hard value for this input.

    **   ~~~   ** User-Specified Minimum Cooling Air Flow Fraction of 1.00000 [m3/s]
-   **   ~~~   ** differs from Design Size Minimum Cooling Air Flow Fraction of 0.00000 [m3/s]
+   **   ~~~   ** differs from Design Size Minimum Cooling Air Flow Fraction of 0.72766 [m3/s]

  Component Sizing Information, AirTerminal:SingleDuct:VAV:NoReheat, SPACE1-1 DOAS AIR TERMINAL, Design Size Maximum Air Flow Rate [m3/s], 0.10384
- Component Sizing Information, AirTerminal:SingleDuct:VAV:NoReheat, SPACE1-1 DOAS AIR TERMINAL, Design Size Constant Minimum Air Flow Fraction, 0.00000
+ Component Sizing Information, AirTerminal:SingleDuct:VAV:NoReheat, SPACE1-1 DOAS AIR TERMINAL, Design Size Constant Minimum Air Flow Fraction, 0.72766
  Component Sizing Information, AirTerminal:SingleDuct:VAV:NoReheat, SPACE1-1 DOAS AIR TERMINAL, User-Specified Constant Minimum Air Flow Fraction, 1.00000

Re-running linux tests - strange errors before. Otherwise, this is ready for review.

@mjwitte mjwitte closed this Jul 20, 2017
@mjwitte mjwitte reopened this Jul 20, 2017
@Myoldmopar Myoldmopar modified the milestone: EnergyPlus 8.8.0 Jul 29, 2017
@Myoldmopar Myoldmopar self-assigned this Jul 31, 2017
Copy link
Copy Markdown
Member

@Myoldmopar Myoldmopar left a comment

Choose a reason for hiding this comment

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

Not a yes/no so far, just ending up being comments.

The minimum flow rate to the zone while the system is operating, specified as a fraction of the maximum air flow rate. The minimum zone fraction is normally specified to meet the minimum ventilation requirement for the occupants. The reheat coil operates only when the damper is at this minimum flow rate when Damper Heating Action is set to Normal.~ This field is used if the previous field is set to Constant.~ If the previous field is set to Scheduled (and the field Maximum Hot Water or Steam Flow Rate is set to autosize), then this field is optional and can be used to separately control the air flow rate used for sizing normal-action reheat coils. If this field and the following field have values, the greater of the two is used for sizing.

This field is autosizable and defaulted to autosize. The values for autosizing are picked up from the Sizing:Zone input fields "Cooling Minimum Air Flow per Zone Floor Area", "Cooling Minimum Air Flow", and "Cooling Minimum Air Flow Fraction". If there is no sizing calculation a default of .000762 cubic meters per second per square meter of zone floor area (0.15 cfm/ft2) is used.
This field is autosizable and defaulted to autosize. The autosized flow fraction is calculated using the maximum flow rate derived from the design outdoor air flow (including VRP adjustments) and the Sizing:Zone input fields "Cooling Minimum Air Flow per Zone Floor Area", "Cooling Minimum Air Flow", and "Cooling Minimum Air Flow Fraction". If there is no sizing calculation the defaults of 0.000762 cubic meters per second per square meter of zone floor area (0.15 cfm/ft2) and 0.2 are used.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm going through this carefully so there may be many comments. I'll recap any major things in the final review comment.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This is one of those where there is no way to know if these changes are correct without a review of several input file results. I assume that was done. Any results to share? For example a list of tables that show changes in flow rates based on changes to inputs.

\paragraph{Field: System Outdoor Air Method}\label{field-system-outdoor-air-method-000}

The method used to calculate the system minimum outdoor air flow. The two choices are ZoneSum and VentilationRateProcedure (VRP). ZoneSum sums the outdoor air flows across all zones served by the system. VRP uses the multi-zone equations defined in 62.1-2007 to calculate the system outdoor air flow. VRP considers zone air distribution effectiveness and zone diversification of outdoor air fractions.
The method used to calculate the system minimum outdoor air flow. The two choices are ZoneSum and VentilationRateProcedure (VRP). ZoneSum sums the outdoor air flows across all zones served by the system. VRP uses the multi-zone equations defined in 62.1-2007 to calculate the system outdoor air flow. VRP considers zone air distribution effectiveness and zone diversification of outdoor air fractions. VRP may also adjust autosized air terminal maximum and minimum supply flow rates if needed to ensure adequate outdoor air flow rate to each zone.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Doc changes look good. Built them locally and changes are fine.

\minimum 0
\default 0.2
\note This input is currently used in sizing the Fan minimum Flow Rate.
\note This input is currently used in sizing the VAV air terminal unit and fan minimum flow rate
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

👍

Real64 DesCoolMinAirFlowPerArea; // design cooling minimum air flow rate per zone area [m3/s / m2]
Real64 DesCoolMinAirFlow; // design cooling minimum air flow rate [m3/s]
Real64 DesCoolMinAirFlowFrac; // design cooling minimum air flow rate fraction
bool DesCoolMinAirFlowFracUsInpFlg; // user input for minimum air flow rate fraction
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Interesting seeing a variable removed. I like it, just not very common it seems. I'll give 200 internet points for every line of code removed.

int MatchingCooledZoneNum; // temporary variable
Real64 termunitsizingtempfrac; // 1.0/(1.0+termunitsizing(ctrlzone)%inducrat)
Real64 termunitsizingtemp; // (1.0+termunitsizing(ctrlzone)%inducrat)
Real64 VozClg( 0.0 ); // corrected (for ventilation efficiency) zone outside air flaw rate [m3/s]
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

👍 for removing the flaw

// save new (increased) minimum flow rate
FinalZoneSizing( CtrlZoneNum ).DesCoolVolFlowMin = AvailSAFlow;
// make sure the max flow rate is >= the new minimum flow rate
FinalZoneSizing( CtrlZoneNum ).DesCoolVolFlow = max( AvailSAFlow, FinalZoneSizing( CtrlZoneNum ).DesCoolVolFlow );
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

OK, so you calculate a new value of DesCoolVolFlow here. Then it is used a few lines below in calculating a value for the local variables VpzClgByZone and VdzClgByZone. And those are reported. Is DesCoolVolFlow supposed to be used anywhere else? I don't see it in the other places below. But I'll keep looking.

FixedMinAirDes = max( 0.2 * Sys( SysNum ).MaxAirVolFlowRate, 0.000762 * Zone( ZoneNum ).FloorArea * Zone( ZoneNum ).Multiplier * Zone( ZoneNum ).ListMultiplier );
} else {
MinAirFlowFracDes = 0.0;
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Yeah I was expecting to see the DesCoolVolFlow used somewhere here in this file somewhere, but it's not. I'll keep rigoring over it to see what I am not grokking.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

It's used here, as "always" but now it's more correct for situations where the required min flow is greater than the design flow based on load.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

It's OK that DesCoolVolFlow is not used anywhere else as long as it's the correct value where someone in the future can use it as needed.

@mjwitte
Copy link
Copy Markdown
Contributor Author

mjwitte commented Aug 10, 2017

@rraustad Defect files added (soon) to DevSupport...\6055. Here are results for 0.6, 0.7, and 0.8 zone Ev. With 0.7 the Vpz-min increases, but no change in Vpz and Vdz. With 0.8 they all change for the zone in the last row of the screen shots.
image
image
image

@mjwitte
Copy link
Copy Markdown
Contributor Author

mjwitte commented Aug 10, 2017

Just to be clear, these are results after this fix.

@rraustad
Copy link
Copy Markdown
Collaborator

OK, this makes sense. Why in the second case does Ev = 0.81 for the first zone (Corner_Class_1) instead of 0.7 ? @larryscheier please review these results and comment.

@rraustad
Copy link
Copy Markdown
Collaborator

rraustad commented Aug 10, 2017

It's Vpz-min that is changing, up to the point where Vpz-min increases the zone primary air flow rate Vpz (so that Vpz >= Vpz-min). So the minimum zone air flow rate increases as ventilation efficiency Ev increases, does that make sense? Larry, if the ventilation efficiency increases shouldn't the zone need less OA? and therefore the zone minimum air flow rate Vpz-min should decrease?

@rraustad
Copy link
Copy Markdown
Collaborator

rraustad commented Aug 10, 2017

This is from ASHRAE Std 62 - 2001, but the trend should still be valid. Doesn't this show that flow decreases as Ev increases?

ev

zp

@mjwitte
Copy link
Copy Markdown
Contributor Author

mjwitte commented Aug 10, 2017

Zp is the OA fraction, so higher primary flow will reduce Zp and increase Ev. Regarding the 0.7 case above, that idf had another change as well. New apples-to-apples idf added to the defect files folder and the screenshot above has been replaced.

@larryscheier
Copy link
Copy Markdown

  1. RR: "Why in the second case does Ev = 0.81 for the first zone (Corner_Class_1) instead of 0.7?"
    LS: I don't understand this either. Input error?
  2. RR: "Larry, if the ventilation efficiency increases shouldn't the zone need less OA? and therefore the zone minimum air flow rate Vpz-min should decrease?"
    LS: We decrease the system Vot (=Vou/Evs) by increasing the overall system efficiency (Evs=Minimum zone Evz) by decreasing the critical zone Zpz which is accomplished by increasing the corresponding zone's Vpz-min. When we fix the zone Evz, we then back-calculate what the required zone ventilation fraction Zd should be. As the Evz increases, the required Zpz (=Voz/Vpzmin) decreases because we have forced a larger Vpzmin:
    Evz = 1 + Xs - Zpz
    so
    Zpz = 1 + Xs - Evz and Zpz = Voz / Vpzmin
    Solving for Vpzmin
    Vpzmin = Voz / Zpz

Using Multi Class 1: (In the displaced example the system Xs = 0.546)
Zd@(Evz=0.6) = 1 + 0.546 - 0.6 = 0.946
Vpzmin@(Zd=0.946) = Voz / Zpz = 0.9086/0.946 = 0.9605 m3/s
Zd@(Evz=0.7) = 1 + 0.546 - 0.7 = 0.846
Vpzmin@(Zd=0.846) = 0.9086/0.846 = 1.074 m3/s
Zd@(Evz=0.8) = 1 + 0.546 - 0.8 = 0.746
Vpzmin@(Zd=0.746) = 0.9086/0.746 = 1.218 m3/s

@rraustad
Copy link
Copy Markdown
Collaborator

Given that @larryscheier's math above exactly matches the results, then these changes accurately report simulation inputs/results. @mjwitte are there any more changes on the horizon?

@mjwitte
Copy link
Copy Markdown
Contributor Author

mjwitte commented Aug 16, 2017

@rraustad No more changes planned.

@Myoldmopar
Copy link
Copy Markdown
Member

Inclined to merge. Do we need to occupy time on the call in an hour to discuss this further? I'd rather drop this in and talk about the other remaining items as it looks like we're all happy with this. I'll merge if I don't hear anything before the call.

@rraustad
Copy link
Copy Markdown
Collaborator

I'm OK with that. I was going to run a few defect files tonight but there is plenty of other things to do.

@mjwitte
Copy link
Copy Markdown
Contributor Author

mjwitte commented Aug 16, 2017

No objection from me.

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 IDDChange Code changes impact the IDD file (cannot be merged after IO freeze)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants