Skip to content

Conversation

@mjwitte
Copy link
Contributor

@mjwitte mjwitte commented Mar 19, 2025

Pull request overview

  • Fixes Component Sizing Summary - PlantLoop incorrect table values #10987
  • Add new function reportSizerStrOutput that allows component sizing to output a string.
  • For PlantLoop and CondenserLoop change component sizing output:
    • Always report sizing values whether autosized or hard-sized
    • Change "Sizing option (Coincident/NonCoincident), 1.00000" --> "Sizing Option, NonCoincident".
  • Fix Table Output, Equipment Summary, PlantLoop or CondenserLoop subtable
    • Fix values reported for "Provides Heating", "Provides Cooling", "Maximum Loop Flow Rate", and "Minimum Loop Flow Rate".
    • Always report values whether autosized or hard-sized
    • Add columns for "Design Supply Temperature", "Design ReturnTemperature", and "Design Capacity".

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

@mjwitte mjwitte added the Defect Includes code to repair a defect in EnergyPlus label Mar 19, 2025
@mjwitte mjwitte added this to the EnergyPlus 25.1 milestone Mar 19, 2025
@github-actions
Copy link

⚠️ Regressions detected on macos-14 for commit b68abf1

Regression Summary
  • EIO: 262
  • Table Big Diffs: 183
  • Table String Diffs: 98
  • Audit: 63
  • Table Small Diffs: 1

@mjwitte mjwitte changed the title Initial plant sizing report fixes Plant sizing report fixes Mar 21, 2025
@mjwitte
Copy link
Contributor Author

mjwitte commented Mar 21, 2025

Here is an initial update to the relevant tables in the Component Sizing Summary for 5ZoneVAV-Pri-SecLoop.idf:
image
image

There is also this table in the Equipment Summary report which is somewhat redundant and also needs repairs:
image

For the component sizing summary:

  • The reason the table wasn't populating before is that it only reported for values that were actually autosized. The changes at this point force reporting for hard-sized values as well. However, the proper way to do this would be to report both Design Size and User-Specifed values, the way most other components do:
    image

  • For the coincident/non-coincident field, the reporting functions used for component sizing (BaseSizer::reportSizerOutput, OutputReportPredefined::AddCompSizeTableEntry, and OutputReportTabular::WriteComponentSizing) all expect a numeric value, so wedging in a string value would require some extra effort. It would be easy to move this to the Equipment Summary table instead, even though it's related to sizing, but it's not an autosized value result (which is what Component Sizing is generally supposed to be reporting).

  • This also applies to Supply Temperature, Return Temperature, and Minimum Loop Flow Rate which are not autosizable inputs.

@mjwitte
Copy link
Contributor Author

mjwitte commented Apr 3, 2025

  1. Plant loops currently report sizing results only if autosized and don't use the "Design Size" "User-Specified" labels.
 Component Sizing Information, PlantLoop, HOT WATER LOOP, Maximum Loop Flow Rate [m3/s], 5.96451E-004
 Component Sizing Information, PlantLoop, HOT WATER LOOP, Plant Loop Volume [m3], 7.15741E-002

I plan to add the logic to report "Design Size" and "User-Specified" values.

  1. These informationl values that aren't really autosized were added to the "Component Sizing" reporting to support RPD:
 Component Sizing Information, PlantLoop, HOT WATER LOOP, Design Supply Temperature [C], 82.00000
 Component Sizing Information, PlantLoop, HOT WATER LOOP, Design Return Temperature [C], 71.00000
 Component Sizing Information, PlantLoop, HOT WATER LOOP, Sizing option (Coincident/NonCoincident), 1.00000
 Component Sizing Information, PlantLoop, HOT WATER LOOP, Minimum Loop Flow Rate [m3/s], 0.00000
 Component Sizing Information, PlantLoop, HOT WATER LOOP, Design Capacity [W], 27539.63807

I'm planning to move these to the Equipment Summary table reports.

@JasonGlazer @rraustad @EnergyArchmage Please comment if you disagree.

@JasonGlazer
Copy link
Contributor

Thanks for working on this.

@rraustad
Copy link
Contributor

rraustad commented Apr 9, 2025

@mjwitte I am all for reporting data whether autosized or not. The user should not have to search for data that is not in the eio or tables, even though the user entered that data.

However, the proper way to do this would be to report both Design Size and User-Specifed values, the way most other components do

I think the EIR chiller data shows user-specified only when hard-sized, or if no plant sizing is performed (i.e., the tables are dynamic). If autosized then the user-specified column would not show up? I don't see where user-specified comes from for autosized inputs. I searched for "User-Specified Reference Chilled Water Flow Rate" and only found it here and in the err file if difference > 10%.

        if (this->EvapVolFlowRateWasAutoSized) {
            this->EvapVolFlowRate = tmpEvapVolFlowRate;
            if (state.dataPlnt->PlantFinalSizesOkayToReport) {
                BaseSizer::reportSizerOutput(
                    state, "Chiller:Electric:EIR", this->Name, "Design Size Reference Chilled Water Flow Rate [m3/s]", tmpEvapVolFlowRate);
            }

        } else { // Hard-size with sizing data
            if (this->EvapVolFlowRate > 0.0 && tmpEvapVolFlowRate > 0.0) {
                Real64 EvapVolFlowRateUser = this->EvapVolFlowRate;
                if (state.dataPlnt->PlantFinalSizesOkayToReport) {
                    BaseSizer::reportSizerOutput(state,
                                                 "Chiller:Electric:EIR",
                                                 this->Name,
                                                 "Design Size Reference Chilled Water Flow Rate [m3/s]",
                                                 tmpEvapVolFlowRate,
                                                 "User-Specified Reference Chilled Water Flow Rate [m3/s]",
                                                 EvapVolFlowRateUser);

    if (!this->EvapVolFlowRateWasAutoSized && state.dataPlnt->PlantFinalSizesOkayToReport && (this->EvapVolFlowRate > 0.0)) {
        BaseSizer::reportSizerOutput(
            state, "Chiller:Electric:EIR", this->Name, "User-Specified Reference Chilled Water Flow Rate [m3/s]", this->EvapVolFlowRate);
    }

@EnergyArchmage
Copy link
Contributor

Reporting plant loop Design Capacity regardless of autosizing is a good idea.

I guess moving reports to Equipment Summary table means they no longer also show up in the EIO as they do when called as Component Sizing Information? If so, that is a drawback for us developers and anyone who prefers the EIO text for easy diff'ing.

@mjwitte
Copy link
Contributor Author

mjwitte commented Apr 9, 2025

Reporting plant loop Design Capacity regardless of autosizing is a good idea.

I guess moving reports to Equipment Summary table means they no longer also show up in the EIO as they do when called as Component Sizing Information? If so, that is a drawback for us developers and anyone who prefers the EIO text for easy diff'ing.

  • Maybe I'm being too much of a purist about what constitutes "component sizing" results and what doesn't. Perhaps I should leave things where they are and just make sure the values always get reported as a sizing result (whether autosized, or hard-sized, or calculated e.g. Design Capacity) and let these continue to report as a component sizing result without indicating "Design Size or User-Specified".

  • And possibly duplicate some values in the Equipment Summary?

  • Where would you like to see "Conicident/NonCoincident"? I could extend the report sizing functions to accept a string value, or simply move this to the equipment summary table.

@EnergyArchmage
Copy link
Contributor

I could extend the report sizing functions to accept a string value

This would be really useful I think. I have wanted this for a while; perfect for Coincident/NonCoincident reporting.

@github-actions
Copy link

github-actions bot commented Apr 9, 2025

⚠️ Regressions detected on macos-14 for commit 397edc6

Regression Summary
  • Audit: 794
  • EIO: 262
  • Table Big Diffs: 183
  • Table String Diffs: 98
  • Table Small Diffs: 1

@Myoldmopar
Copy link
Member

@mjwitte now that the plant location and other PRs have been merged, do you want to pull develop in and update this branch with those changes? It doesn't show conflicted, so you might not actually have to, but I can't tell immediately. It does need clang formatting it looks like anyway. Let me know if you want me to do anything here.

@mjwitte
Copy link
Contributor Author

mjwitte commented Apr 10, 2025

@Myoldmopar Thanks. There's more actual work to do here, and this doesn't really overlap with the plantloc work, because this PR is at the plant-loop level so plantloc doesn't even apply, duh.

@github-actions
Copy link

⚠️ Regressions detected on macos-14 for commit 4639552

Regression Summary
  • Audit: 794
  • EIO: 387
  • Table Big Diffs: 170
  • Table String Diffs: 87
  • Table Small Diffs: 1

@github-actions
Copy link

github-actions bot commented Jun 3, 2025

⚠️ Regressions detected on macos-14 for commit 2b4f752

Regression Summary
  • Audit: 794
  • Table Big Diffs: 736
  • EIO: 446
  • Table String Diffs: 366

@github-actions
Copy link

github-actions bot commented Jun 5, 2025

⚠️ Regressions detected on macos-14 for commit 714fb06

Regression Summary
  • Audit: 796
  • Table Big Diffs: 738
  • EIO: 446
  • Table String Diffs: 230

@github-actions
Copy link

github-actions bot commented Jun 6, 2025

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

Regression Summary
  • Audit: 796
  • Table Big Diffs: 738
  • EIO: 446
  • Table String Diffs: 230

@mjwitte
Copy link
Contributor Author

mjwitte commented Jun 19, 2025

@JasonGlazer @rraustad @EnergyArchmage

Here are some final sample outputs. For 5ZoneVAV-Pri-SecLoop which has Sizing:Plant objects:
Component Sizing report
image
image

Equipment Summary report
image

For CoolingTower.idf which does not have Sizing:Plant objects, so supply and return temps and resulting capacity are unknown:
Component Sizing report
image
image

Equipment Summary report
image

@mjwitte
Copy link
Contributor Author

mjwitte commented Jun 19, 2025

The reasons for diffs are noted in the output rules here

@rraustad
Copy link
Contributor

@mjwitte those tables look good.

@Myoldmopar Myoldmopar self-assigned this Jul 2, 2025
@mjwitte mjwitte added the RPD label Jul 7, 2025
Copy link
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.

Very good stuff here. The new functions in the sizer code and the sql code are good, and lots of little cleanups along the way. I resolved the minor conflict, and this should be good to go in.

int NumTimeStepsInAvg = 0; // number of zone timesteps in the averaging window for coincident plant flow
int SizingFactorOption = 0; // option for what sizing factor to apply
DataSizing::SizingConcurrence ConcurrenceOption =
DataSizing::SizingConcurrence::NonCoincident; // sizing option for coincident or noncoincident (default)
Copy link
Member

Choose a reason for hiding this comment

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

👍


void BaseSizer::reportSizerStrOutput(
EnergyPlusData &state, std::string_view CompType, std::string_view CompName, std::string_view VarDesc, std::string_view VarValue)
{
Copy link
Member

Choose a reason for hiding this comment

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

No need for the optional parameters I guess? That's fine with me for sure.

DataPlant::CtrlType::CoolingOp, // "HeatPump:PlantLoop:EIR:Cooling"
DataPlant::CtrlType::HeatingOp, // "HeatPump:PlantLoop:EIR:Heating"
DataPlant::CtrlType::HeatingOp // "DistrictHeating:Steam"
};
Copy link
Member

Choose a reason for hiding this comment

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

I have feelings about another list of things allocated to the same size as the others, but I will stop talking now.

sqliteStepCommand(m_componentSizingInsertStmt);
sqliteResetCommand(m_componentSizingInsertStmt);
}
}
Copy link
Member

Choose a reason for hiding this comment

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

👍

@github-actions
Copy link

⚠️ Regressions detected on macos-14 for commit 3540fe8

Regression Summary
  • Audit: 796
  • Table Big Diffs: 738
  • EIO: 446
  • Table String Diffs: 230

@mjwitte mjwitte added the OutputChange Code changes output in such a way that it cannot be merged after IO freeze label Jul 31, 2025
@github-actions
Copy link

⚠️ Regressions detected on macos-14 for commit 5b43c61

Regression Summary
  • Audit: 796
  • Table Big Diffs: 738
  • EIO: 446
  • Table String Diffs: 230

@nrel-bot-2c
Copy link

@Myoldmopar @mjwitte @Myoldmopar it has been 29 days since this pull request was last updated.

@github-actions
Copy link

github-actions bot commented Sep 6, 2025

⚠️ Regressions detected on macos-14 for commit b53c830

Regression Summary
  • Audit: 796
  • Table Big Diffs: 738
  • EIO: 446
  • Table String Diffs: 230

@github-actions
Copy link

github-actions bot commented Sep 6, 2025

⚠️ Regressions detected on ubuntu-24.04 for commit b53c830

Regression Summary
  • Audit: 799
  • Table Big Diffs: 740
  • EIO: 446
  • Table String Diffs: 230

@github-actions
Copy link

github-actions bot commented Sep 9, 2025

⚠️ Regressions detected on macos-14 for commit 4b49092

Regression Summary
  • Audit: 796
  • Table Big Diffs: 738
  • EIO: 446
  • Table String Diffs: 230

@github-actions
Copy link

github-actions bot commented Sep 9, 2025

⚠️ Regressions detected on ubuntu-24.04 for commit 4b49092

Regression Summary
  • Audit: 799
  • Table Big Diffs: 740
  • EIO: 446
  • Table String Diffs: 230

@mjwitte
Copy link
Contributor Author

mjwitte commented Sep 9, 2025

This was previously approved by @Myoldmopar and CI diffs are as expected, merging.

@mjwitte mjwitte merged commit 2745db9 into develop Sep 9, 2025
7 of 8 checks passed
@mjwitte mjwitte deleted the rpdTables2 branch September 9, 2025 21:06
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 OutputChange Code changes output in such a way that it cannot be merged after IO freeze RPD

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Component Sizing Summary - PlantLoop incorrect table values

8 participants