Skip to content

Conversation

@joseph-robertson
Copy link
Collaborator

Pull request overview

  • Fixes #ISSUENUMBERHERE (IF THIS IS A DEFECT)

Pull Request Author

  • Model API Changes / Additions
  • Any new or modified fields have been implemented in the EnergyPlus ForwardTranslator (and ReverseTranslator as appropriate)
  • Model API methods are tested (in src/model/test)
  • EnergyPlus ForwardTranslator Tests (in src/energyplus/Test)
  • If a new object or method, added a test in NREL/OpenStudio-resources: Add Link
  • If needed, added VersionTranslation rules for the objects (src/osversion/VersionTranslator.cpp)
  • Verified that C# bindings built fine on Windows, partial classes used as needed, etc.
  • All new and existing tests passes
  • If methods have been deprecated, update rest of code to use the new methods

Labels:

  • If change to an IDD file, add the label IDDChange
  • If breaking existing API, add the label APIChange
  • If deemed ready, add label Pull Request - Ready for CI so that CI builds your PR

Review Checklist

This will not be exhaustively relevant to every PR.

  • Perform a Code Review on GitHub
  • Code Style, strip trailing whitespace, etc.
  • All related changes have been implemented: model changes, model tests, FT changes, FT tests, VersionTranslation, OS App
  • Labeling is ok
  • 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

@joseph-robertson joseph-robertson self-assigned this Oct 6, 2025
@joseph-robertson joseph-robertson added Pull Request - Ready for CI This pull request if finalized and is ready for continuous integration verification prior to merge. IDDChange labels Oct 6, 2025
@joseph-robertson joseph-robertson mentioned this pull request Oct 6, 2025
26 tasks
@joseph-robertson joseph-robertson marked this pull request as ready for review October 10, 2025 18:44
Base automatically changed from v25.2.0-IOFreeze to develop October 20, 2025 12:08
@jmarrec jmarrec force-pushed the v25.2.0-IOFreeze-dx-coil-ratio branch from 7ef6898 to a86e174 Compare October 20, 2025 13:04
@ci-commercialbuildings
Copy link
Collaborator

ci-commercialbuildings commented Oct 20, 2025

CI Results for a86e174:

Copy link
Collaborator

@jmarrec jmarrec left a comment

Choose a reason for hiding this comment

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

I suppose adding 2 lines in 3 model gtests would be good, but otherwise this is good to go

(also the optional assignment for non-optional getter in FT, but whatever)

Comment on lines +87 to +91
* [#5492](https://github.com/NREL/OpenStudio/pull/5492) - New DX Heating Coil Sizing Ratio fields
* Replaces `Minimum Outdoor Dry-Bulb Temperature for Compressor Operation` with `DX Heating Coil Sizing Ratio` for `AirLoopHVAC:UnitaryHeatPump:AirToAir:MultiSpeed`
* Deprecated methods for `AirLoopHVAC:UnitaryHeatPump:AirToAir:MultiSpeed`:
* `minimumOutdoorDryBulbTemperatureforCompressorOperation`
* `setMinimumOutdoorDryBulbTemperatureforCompressorOperation`
Copy link
Collaborator

Choose a reason for hiding this comment

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

I don't think you need to deprecate per se, but I'd look for it when I get to the C++ deprecation

Btw, the E+ PR is

setNoLoadSupplyAirFlowRateControlSetToLowSpeed(true);
autosizeOutdoorAirFlowRateWhenNoCoolingorHeatingisNeeded();
setString(OS_ZoneHVAC_WaterToAirHeatPumpFields::AvailabilityManagerListName, "");
setDXHeatingCoilSizingRatio(1.0);
Copy link
Collaborator

Choose a reason for hiding this comment

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

Alright. non opt getter, one setter only, and Ctor defaults the required field

Comment on lines 1230 to 1240
// DEPRECATED
double AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed::minimumOutdoorDryBulbTemperatureforCompressorOperation() const {
DEPRECATED_AT_MSG(3, 11, 0, "TODO.");
return -999;
}

bool AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed::setMinimumOutdoorDryBulbTemperatureforCompressorOperation(
double minimumOutdoorDryBulbTemperatureforCompressorOperation) {
DEPRECATED_AT_MSG(3, 11, 0, "TODO.");
return false;
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

  • TODO

Copy link
Collaborator

Choose a reason for hiding this comment

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

Ok, so I reviewed the E+ C++ code for the corresponding PR, and this field was purely unused before.

MinOATCompressorHeating is grabbed from DXHeatingCoilIndex and MinOATCompressorCooling is grabbed from DXCoolingCoilIndex

https://github.com/NREL/EnergyPlus/blob/0befe779fe9721745ba31a65f877cc05905ac6b3/src/EnergyPlus/HVACMultiSpeedHeatPump.cc#L745

Copy link
Collaborator

Choose a reason for hiding this comment

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

Given the former IDD note

N1 , \field Minimum Outdoor Dry-Bulb Temperature for Compressor Operation
\type real
\default -8.0
\units C
\note Needs to match the corresponding minimum outdoor temperature defined
\note in the DX heating coil object.

Comment on lines 1230 to 1240
// DEPRECATED
double AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed::minimumOutdoorDryBulbTemperatureforCompressorOperation() const {
DEPRECATED_AT_MSG(3, 11, 0, "TODO.");
return -999;
}

bool AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed::setMinimumOutdoorDryBulbTemperatureforCompressorOperation(
double minimumOutdoorDryBulbTemperatureforCompressorOperation) {
DEPRECATED_AT_MSG(3, 11, 0, "TODO.");
return false;
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

Proposed implementation in 983ee15

Copy link
Collaborator

Choose a reason for hiding this comment

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

Ideally, since you are touched 4 classes, I'd see 4 model Gtests changes instead of one

Comment on lines +1231 to +1253
// DEPRECATED
double AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed::minimumOutdoorDryBulbTemperatureforCompressorOperation() const {
// Former v25.1.0 IDD note said this "Needs to match the corresponding minimum outdoor temperature defined in the DX heating coil object"
DEPRECATED_AT_MSG(3, 11, 0,
"This field was previously unused and removed in EnergyPlus 25.2.0. Set the Minimum OAT for Compressor Operation on the child "
"DX MultiSpeed Coils if any.");
if (auto hc_ = heatingCoil().optionalCast<CoilHeatingDXMultiSpeed>()) {
return hc_->minimumOutdoorDryBulbTemperatureforCompressorOperation();
}
return -1000.0;
}

bool AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed::setMinimumOutdoorDryBulbTemperatureforCompressorOperation(
double minimumOutdoorDryBulbTemperatureforCompressorOperation) {
DEPRECATED_AT_MSG(3, 11, 0,
"This field was previously unused and removed in EnergyPlus 25.2.0. Set the Minimum OAT for Compressor Operation on the child "
"DX MultiSpeed Coils if any.");
if (auto hc_ = heatingCoil().optionalCast<CoilHeatingDXMultiSpeed>()) {
return hc_->setMinimumOutdoorDryBulbTemperatureforCompressorOperation(minimumOutdoorDryBulbTemperatureforCompressorOperation);
}

return false;
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

@joseph-robertson My proposed implementation here.

I picked -1000.0 because that's what E+ GetMinOATCompressor does.

https://github.com/NREL/EnergyPlus/blob/0befe779fe9721745ba31a65f877cc05905ac6b3/src/EnergyPlus/DXCoils.cc#L15514-L15534

Comment on lines +365 to +368
// DXHeatingCoilSizingRatio
if ((value = modelObject.dXHeatingCoilSizingRatio())) {
idfObject.setDouble(ZoneHVAC_WaterToAirHeatPumpFields::DXHeatingCoilSizingRatio, value.get());
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

Non optional, so shouldn't need to go though an optional and suffer the penalty

@jmarrec jmarrec merged commit ac70dbc into develop Oct 20, 2025
2 of 6 checks passed
@jmarrec jmarrec deleted the v25.2.0-IOFreeze-dx-coil-ratio branch October 20, 2025 13:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

IDDChange Pull Request - Ready for CI This pull request if finalized and is ready for continuous integration verification prior to merge.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants