Skip to content

Conversation

@rraustad
Copy link
Contributor

@rraustad rraustad commented Jul 22, 2025

Pull request overview

Description of the purpose of this PR

  • New Feature: Heat Pump sizing using loads and operating capacities to size heat pumps according to ACCA Manual S. See pull request 11048.

Included for the following Equipment Types when operating as heat pump with DX coil types:

  • AirLoopHVAC:UnitarySystem
  • AirLoopHVAC:UnitaryHeatPump:AirToAir
  • AirLoopHVAC:UnitaryHeatPump:AirToAir:MultiSpeed
  • AirLoopHVAC:UnitaryHeatPump:WaterToAir
  • ZoneHVAC:PackagedTerminalHeatPump
  • ZoneHVAC:WaterToAirHeatPump

Added new input for DX Heating Coil Sizing Ratio to:

  • AirLoopHVAC:UnitaryHeatPump:AirToAir
  • AirLoopHVAC:UnitaryHeatPump:AirToAir:MultiSpeed
  • AirLoopHVAC:UnitaryHeatPump:WaterToAir
  • ZoneHVAC:PackagedTerminalHeatPump
  • ZoneHVAC:WaterToAirHeatPump

New table: Heat Pump ACCA Manual S Report:

image

New column: added to DX Heating Coils - Heating to Cooling Capacity Sizing Ratio to report user input for heat pump equipment.

image

New test files:

  • HeatPump-ACCA-Sizing_PackagedTerminalHeatPump
  • HeatPump-ACCA-Sizing_UnitarySystem_HeatPumpAuto

IDFVersioinUpdater transition for MultiSpeedHeatPump.idf:

V25.1:

AirLoopHVAC:UnitaryHeatPump:AirToAir:MultiSpeed,
  DXAC Heat Pump 1,        !- Name
  FanAndCoilAvailSched,    !- Availability Schedule Name
  Mixed Air Node,          !- Air Inlet Node Name
  Air Loop Outlet Node,    !- Air Outlet Node Name
  East Zone,               !- Controlling Zone or Thermostat Location
  Fan:OnOff,               !- Supply Air Fan Object Type
  Supply Fan 1,            !- Supply Air Fan Name
  BlowThrough,             !- Supply Air Fan Placement
  FanModeSchedule,         !- Supply Air Fan Operating Mode Schedule Name
  Coil:Heating:DX:MultiSpeed,  !- Heating Coil Object Type
  Heat Pump DX Heating Coil 1,  !- Heating Coil Name
  -8.0,                    !- Minimum Outdoor Dry-Bulb Temperature for Compressor Operation {C}

V25.2:

AirLoopHVAC:UnitaryHeatPump:AirToAir:MultiSpeed,
  DXAC Heat Pump 1,        !- Name
  FanAndCoilAvailSched,    !- Availability Schedule Name
  Mixed Air Node,          !- Air Inlet Node Name
  Air Loop Outlet Node,    !- Air Outlet Node Name
  East Zone,               !- Controlling Zone or Thermostat Location
  Fan:OnOff,               !- Supply Air Fan Object Type
  Supply Fan 1,            !- Supply Air Fan Name
  BlowThrough,             !- Supply Air Fan Placement
  FanModeSchedule,         !- Supply Air Fan Operating Mode Schedule Name
  Coil:Heating:DX:MultiSpeed,  !- Heating Coil Object Type
  Heat Pump DX Heating Coil 1,  !- Heating Coil Name
  ,                        !- DX Heating Coil Sizing Ratio

Typical differences in existing test files:

  • Results differences: None
  • New column in DX Heating Coils causes table differences
  • Audit differences:
image

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 NewFeature Includes code to add a new feature to EnergyPlus IDDChange Code changes impact the IDD file (cannot be merged after IO freeze) labels Jul 22, 2025
}
}
}
}
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Common function used by all heat pump parent types

this->UnitType,
this->Name,
HVAC::cAllCoilTypes(this->m_CoolingCoilType_Num)));
}
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 a safety (if not empty) for this last else, which includes multiple DXCoil types, so that this would not crash (as it did many time during development) and instead give an indication of what type of coil was missed so that coil type can be added.

@github-actions
Copy link

⚠️ Regressions detected on macos-14 for commit 790e18e

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

@rraustad rraustad added this to the EnergyPlus 25.2 IO Freeze milestone Jul 23, 2025
@github-actions
Copy link

⚠️ Regressions detected on macos-14 for commit 07682a9

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

SysCoolingCapacity = sizingCoolingCapacity.size(state, TempSize, errorsFound);
SysCoolingLoad = finalSysSizing.SensCoolCap;
SysTotCoolingLoad = finalSysSizing.TotCoolCap;
SysLatCoolingLoad = SysTotCoolingLoad - SysCoolingLoad;
Copy link
Contributor Author

@rraustad rraustad Jul 23, 2025

Choose a reason for hiding this comment

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

HP Sizing Method: Set airflow used for sizing (5902/5904), call cooling cap sizer to get capacity needed to meet load (5920), set capacity and load variables (5921 - 5923) (for reporting). Same for heating at 5925 - 5935. Then call the common function DataSizing::setHeatPumpSize (5937). Then set ZoneEqSizingData sizing variables for use during coil sizing (5938 - 5942). Reset DataFlowUsedForSizing, just in case (5943).

}
}

// ACCA Manual S reporting
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Wait for coils to size (e.g., call to SimDXCoil at line 5947) before setting up table report since we need SHR to calculate sensible and latent components of total capacity.

@rraustad
Copy link
Contributor Author

@Myoldmopar the failure for linux IntegrationCoverage ReleaseWithDebInfo seems odd since linux UnitTestCoverage ReleaseWithDebInfo passes.

\paragraph{Field: Minimum Outdoor Dry-Bulb Temperature for Compressor Operation}\label{field-minimum-outdoor-dry-bulb-temperature-for-compressor-operation-000}
\paragraph{Field: DX Heating Coil Sizing Ratio}\label{field-dx-heating-coil-sizing-ratio-0303}

\textbf{Deprecated field}. The Minimum Outdoor Dry-Bulb Temperature for Compressor Operation is now controlled by the \hyperref[coilcoolingdxmultispeed]{Coil:Cooling:DX:MultiSpeed} and \hyperref[coilheatingdxmultispeed]{Coil:Heating:DX:MultiSpeed} (if used) coil objects.
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Deprecated field replaced with a new numeric field.

@github-actions
Copy link

github-actions bot commented Aug 6, 2025

⚠️ Regressions detected on macos-14 for commit f96b01e

Regression Summary
  • Audit: 787
  • Table Big Diffs: 729

@github-actions
Copy link

github-actions bot commented Aug 6, 2025

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

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

@github-actions
Copy link

github-actions bot commented Aug 6, 2025

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

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

@github-actions
Copy link

github-actions bot commented Aug 6, 2025

⚠️ Regressions detected on macos-14 for commit 4615e3c

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

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

github-actions bot commented Aug 6, 2025

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

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

@github-actions
Copy link

github-actions bot commented Aug 7, 2025

⚠️ Regressions detected on macos-14 for commit 364f185

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

@rraustad rraustad self-assigned this Aug 13, 2025
@nrel-bot-2
Copy link

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

@mitchute
Copy link
Collaborator

@rraustad expecting a build failure on this merge.

/Users/mmitchel/Projects/EnergyPlus/src/EnergyPlus/Furnaces.cc:5908:29: error: unused variable 'thisCoil' [-Werror,-Wunused-variable]
 5908 |                 auto const &thisCoil = state.dataWaterToAirHeatPumpSimple->SimpleWatertoAirHP(thisFurnace.CoolingCoilIndex);
      |                             ^~~~~~~~

I would have fixed it up myself, but the intent wasn't clear to me. Can you take a look?

@rraustad
Copy link
Contributor Author

@rraustad expecting a build failure on this merge.

/Users/mmitchel/Projects/EnergyPlus/src/EnergyPlus/Furnaces.cc:5908:29: error: unused variable 'thisCoil' [-Werror,-Wunused-variable]
 5908 |                 auto const &thisCoil = state.dataWaterToAirHeatPumpSimple->SimpleWatertoAirHP(thisFurnace.CoolingCoilIndex);
      |                             ^~~~~~~~

I would have fixed it up myself, but the intent wasn't clear to me. Can you take a look?

Ah, I forgot to go back and set state.dataSize->DataTotCapCurveIndex here.

@github-actions
Copy link

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

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

@github-actions
Copy link

⚠️ Regressions detected on ubuntu-24.04 for commit 5d20383

Regression Summary
  • Audit: 800
  • Table Big Diffs: 741

@github-actions
Copy link

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

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

@github-actions
Copy link

⚠️ Regressions detected on ubuntu-24.04 for commit 0c674cc

Regression Summary
  • Audit: 800
  • Table Big Diffs: 741

@mitchute
Copy link
Collaborator

I made a few quick spot checks on the regressions, and it all looks consistent with your notes. Anything else here before merging? @rraustad @mjwitte ?

Copy link
Collaborator

@mitchute mitchute left a comment

Choose a reason for hiding this comment

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

Seems like everyone is done here. Merging.

@mitchute mitchute merged commit 6c7b9e4 into develop Sep 26, 2025
11 checks passed
@mitchute mitchute deleted the NFP-Initial-Implementation branch September 26, 2025 17:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants