Skip to content

Conversation

@mjwitte
Copy link
Contributor

@mjwitte mjwitte commented Jul 30, 2025

Pull request overview

  • Extends the Equipment Summary - Air Heat Recovery table output to support RPD. Adds the following new columns:
    • Heat Recovery Active ("WhenFansOn", "Scheduled", "WhenOutsideEconomizerLimits", "WhenMinimumOutdoorAir")
    • Zone HVAC Name
    • Airloop Name
    • OA System Name
    • OA Controller Name
  • Extends the Equipment Summary - Air Terminals table output. Add the following new columns:
    • PIU Heating Control Type ("Modulated", "Staged")
    • PIU Fan Control Type ("ConstantSpeed", "VariableSpeed")
  • Extends the Equipment Summary - Fans table output. Add the following new columns:
    • Speed Control Method ("Discrete", "Continuous")
    • Number of Speeds ("N/A" for Continuous speed control method)
  • Adds new System Summary Report, Fan Operation subtable with the following columns:
    • Occupied Time [hr]
    • Occupied Continuous Fan [hr]
    • Occupied Cycling Fan [hr]
    • Occupied Fan Off [hr]
    • Unoccupied Time [hr]
    • Unoccupied Continuous Fan [hr]
    • Unoccupied Cycling Fan [hr]
    • Unoccupied Fan Off [hr]

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 NewFeature Includes code to add a new feature to EnergyPlus OutputChange Code changes output in such a way that it cannot be merged after IO freeze RPD labels Jul 30, 2025
@github-actions
Copy link

⚠️ Regressions detected on macos-14 for commit ce97f40

Regression Summary
  • Audit: 796
  • Table Big Diffs: 738

@github-actions
Copy link

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

Regression Summary
  • Audit: 796
  • Table Big Diffs: 738

@mjwitte mjwitte added this to the EnergyPlus 25.2 IO Freeze milestone Aug 1, 2025
@github-actions
Copy link

github-actions bot commented Aug 6, 2025

⚠️ Regressions detected on macos-14 for commit 77ace05

Regression Summary
  • Audit: 796
  • Table Big Diffs: 738

@mjwitte
Copy link
Contributor Author

mjwitte commented Aug 7, 2025

@JasonGlazer Some examples of the new Air Heat Recovery Table columns.
ASHRAE901_HotelLarge_STD2019_Denver
image

DOAToUnitarySystem
image

OutdoorAirUnit
image

@mjwitte
Copy link
Contributor Author

mjwitte commented Aug 7, 2025

@JasonGlazer Some examples of the new PIU Air Terminal columns

PIUAuto - The PIU heating control type only applies with VariableSpeed fan. It's blank now for constant speed fan. Would you prefer "n/a"?
image

5ZoneAirCooledConvCoef_VSFan
image

@github-actions
Copy link

github-actions bot commented Aug 7, 2025

⚠️ Regressions detected on macos-14 for commit c80f755

Regression Summary
  • Audit: 796
  • Table Big Diffs: 738

@mjwitte mjwitte changed the title Extend equipment summary air heat recovery table Extend Equipment Summary Tables - Air Heat Recovery and Air Terminals Aug 8, 2025
@mjwitte
Copy link
Contributor Author

mjwitte commented Aug 8, 2025

@JasonGlazer Some example for the new Fans columns.
StripMallZoneEvapCooler.idf
image

Fans/FanCoilAutoSize_MultiSpeedFan
image

5ZoneAirCooledConvCoef_VSFan
image

For the PIU fans, Airloop Name is "N/A" - is that expected or a bug?

@github-actions
Copy link

github-actions bot commented Aug 8, 2025

⚠️ Regressions detected on macos-14 for commit 971aef8

Regression Summary
  • Audit: 796
  • Table Big Diffs: 738

@mjwitte mjwitte changed the title Extend Equipment Summary Tables - Air Heat Recovery and Air Terminals Extend Equipment Summary Tables - Air Heat Recovery, Air Terminals, and Fans Aug 8, 2025
@github-actions
Copy link

⚠️ Regressions detected on macos-14 for commit 059c5f3

Regression Summary
  • Audit: 796
  • Table Big Diffs: 738

@mjwitte
Copy link
Contributor Author

mjwitte commented Aug 11, 2025

A couple of samples of the new System Summary Report, Fan Operation subtable.
FurnaceWithDXSystem-ContFanOccupied-Annual
image

5ZoneAirCooledConvCoef_VSFan-Annual
image

@mjwitte mjwitte changed the title Extend Equipment Summary Tables - Air Heat Recovery, Air Terminals, and Fans Extend Equipment and System Summary Tables - Air Heat Recovery, Air Terminals, and Fans Aug 11, 2025
@mjwitte mjwitte marked this pull request as ready for review August 11, 2025 21:40
@github-actions
Copy link

⚠️ Regressions detected on macos-14 for commit 04b25b2

Regression Summary
  • Audit: 796
  • Table Big Diffs: 738

@JasonGlazer
Copy link
Contributor

PIUAuto - The PIU heating control type only applies with VariableSpeed fan. It's blank now for constant speed fan. Would you prefer "n/a"?

Generally, I prefer "n/a" over a blank since it means that it wasn't just overlooked but actively reported.

@JasonGlazer
Copy link
Contributor

For the PIU fans, Airloop Name is "N/A" - is that expected or a bug?

Probably a bug..

@mjwitte
Copy link
Contributor Author

mjwitte commented Aug 13, 2025

PIUAuto - The PIU heating control type only applies with VariableSpeed fan. It's blank now for constant speed fan. Would you prefer "n/a"?

Generally, I prefer "n/a" over a blank since it means that it wasn't just overlooked but actively reported.

Ok, "n/a" added, but the two PIU columns will be left blank for non-PIU terminal units.

@mjwitte
Copy link
Contributor Author

mjwitte commented Aug 13, 2025

Here's an example of the air terminals subtable.
image

@mjwitte
Copy link
Contributor Author

mjwitte commented Aug 13, 2025

For the PIU fans, Airloop Name is "N/A" - is that expected or a bug?

Probably a bug..

Fixed here.
image

@github-actions
Copy link

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

Regression Summary
  • Audit: 796
  • Table Big Diffs: 738

airLoopNum = state.dataSize->CurSysNum;
if (state.dataSize->CurSysNum > 0) {
airLoopNum = state.dataSize->CurSysNum;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't understand why this is needed. For this->fan, why is checking for CurSysNum > 0 necessary? If this fan is in the air loop, OA sys, or DOAS, then airloopNum > 0, otherwise it's 0. So what did you find that required this check?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I don't understand why this is needed. For this->fan, why is checking for CurSysNum > 0 necessary? If this fan is in the air loop, OA sys, or DOAS, then airloopNum > 0, otherwise it's 0. So what did you find that required this check?

Because the fan is in the PIU terminal unit, it gets simulated as zone equipment, so CurSysNum is 0 here for the PIU fans. But the terminal unit is ultimately connected to an airloop, so the check here avoids stomping on the fan's airLoopNum which is now set by the PIU terminal unit init. Maybe I should add a comment here?

Copy link
Contributor

@rraustad rraustad Aug 14, 2025

Choose a reason for hiding this comment

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

But the fan in the PIU will never see CurSysNum > 0, will it? Does it make sense for a zone equipment fan to know that information? The PIU unit knows what air loop it is attached to here (line 967). Maybe something similar to this for zone equiuipment?

int const AirLoopNum = state.dataZoneEquip->ZoneEquipConfig(thisPIU.CtrlZoneNum).InletNodeAirLoopNum(thisPIU.ctrlZoneInNodeIndex);

Copy link
Contributor

@rraustad rraustad Aug 14, 2025

Choose a reason for hiding this comment

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

OK, I see your point with "is now set by the PIU terminal unit type" although I don't see where that happens. I didn't realize parent equipment set that variable but that does make sense. So your check here is valid.

thisPIU.AirLoopNum = state.dataZoneEquip->ZoneEquipConfig(thisPIU.CtrlZoneNum).InletNodeAirLoopNum(thisPIU.ctrlZoneInNodeIndex);
state.dataDefineEquipment->AirDistUnit(thisPIU.ADUNum).AirLoopNum = thisPIU.AirLoopNum;
// Set the airloopnum for the PIU fan
state.dataFans->fans(thisPIU.Fan_Index)->airLoopNum = thisPIU.AirLoopNum;
Copy link
Contributor

Choose a reason for hiding this comment

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

Ahh, right here. That's what "is now set" means.

@mjwitte
Copy link
Contributor Author

mjwitte commented Sep 9, 2025

@JasonGlazer This new table only reports for airloop systems, not for zone systems such as fancoils. Is that adequate?

A couple of samples of the new System Summary Report, Fan Operation subtable. FurnaceWithDXSystem-ContFanOccupied-Annual image

5ZoneAirCooledConvCoef_VSFan-Annual image

@github-actions
Copy link

github-actions bot commented Sep 9, 2025

⚠️ Regressions detected on ubuntu-24.04 for commit 5049249

Regression Summary
  • Audit: 799
  • Table Big Diffs: 740

@github-actions
Copy link

github-actions bot commented Sep 9, 2025

⚠️ Regressions detected on macos-14 for commit 5049249

Regression Summary
  • Audit: 796
  • Table Big Diffs: 738

@JasonGlazer
Copy link
Contributor

This new table only reports for airloop systems, not for zone systems such as fancoils. Is that adequate?

It is probably adequate, but there might be some cases that I'm not thinking of. How difficult would it be to support zone systems like fancoils?

@mjwitte
Copy link
Contributor Author

mjwitte commented Sep 10, 2025

This new table only reports for airloop systems, not for zone systems such as fancoils. Is that adequate?

It is probably adequate, but there might be some cases that I'm not thinking of. How difficult would it be to support zone systems like fancoils?

Not sure, the current accumulations are done at the airloop level. It could be added to a zone level reporting struct. I'm going to merge this PR as-is and add a new item to the RPD task list.

@mjwitte
Copy link
Contributor Author

mjwitte commented Sep 10, 2025

@rraustad Has looked at this previously. CI is happy, diffs as expected. Merging.

@mjwitte mjwitte merged commit dc93b9d into develop Sep 10, 2025
7 of 8 checks passed
@mjwitte mjwitte deleted the rpdTables4 branch September 10, 2025 15:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

NewFeature Includes code to add a new feature to 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.

6 participants