Skip to content

Conversation

@joseph-robertson
Copy link
Collaborator

@joseph-robertson joseph-robertson commented Sep 30, 2025

Pull request overview

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 Sep 30, 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 Sep 30, 2025
@joseph-robertson joseph-robertson mentioned this pull request Sep 30, 2025
26 tasks
Comment on lines 24937 to 24939
N4 , \field Heat Rejection Capacity and Nominal Capacity Sizing Ratio
\required-field
\type real
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Need VT because of this change.

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 this is a new field, and E+ has 1.25 as the default.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Well, this is not a new field, I didn't bother going back to the root, but it was already there in V8-6-0.

Not sure why we don't have it?

Copy link
Collaborator

Choose a reason for hiding this comment

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

It was added in OS SDK 1.13.0, which was based on V8.6.0.

That field was added somewhere between E+ V8.0.0 and V8.1.0, so I'm not sure how this happened, but let's just say we don't care, it's just too old to care. Adding it, and moving on

}

boost::optional<double> EvaporativeFluidCoolerSingleSpeed_Impl::autosizedDesignEnteringWaterTemperature() const {
return getAutosizedValue("TODO", "m3/s");
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Need to address this.

}

boost::optional<double> EvaporativeFluidCoolerTwoSpeed_Impl::autosizedDesignEnteringWaterTemperature() const {
return getAutosizedValue("TODO", "W");
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Need to address this.

Comment on lines 24978 to 25004
N9 , \field Design Entering Water Temperature
\type real
\units C
\minimum> 0.0
\default autosize
\autosizable
\ip-units F
\note Only used for Performance Input Method = UserSpecifiedDesignCapacity;
\note for other Performance Input Methods, this field is ignored.
\note Design Entering Water Temperature must be greater than Design Entering Air Temperature.
N9 , \field Design Entering Air Temperature
N10, \field Design Entering Air Temperature
\type real
\units C
\default 35.0
\minimum> 0.0
\ip-units F
\note Only used for Performance Input Method = UserSpecifiedDesignCapacity;
\note for other Performance Input Methods, this field is ignored.
\note Design Entering Air Temperature must be greater than Design Entering Air Wet-bulb
\note Temperature.
N10, \field Design Entering Air Wet-bulb Temperature
N11, \field Design Entering Air Wet-bulb Temperature
\type real
\units C
\default 25.6
\minimum> 0.0
\ip-units F
\note Only used for Performance Input Method = UserSpecifiedDesignCapacity;
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I feel like these should just be made required. Then our getters are simplified. If so, we need VT rules.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Hum.

So Design Entering Air Temperature / Design Entering Air Wet-bulb Temperature

Only used for Performance Input Method = UserSpecifiedDesignCapacity; for other performance input methods this field is ignored.

That's why we had a reset function before.

* `Design Entering Air Wet-bulb Temperature`
* API-breaking changes for `EvaporativeFluidCooler:SingleSpeed` and `EvaporativeFluidCooler:TwoSpeed`:
* `designEnteringAirTemperature` and `designEnteringAirWetbulbTemperature` (`boost::optional<double>` to `double`)
* `resetDesignEnteringWaterTemperature`, `resetDesignEnteringAirTemperature`, and `resetDesignEnteringAirWetbulbTemperature` are removed
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Should these instead be deprecated (to do nothing)? Seems dangerous.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Technically speaking, we could have the reset do the IDD default (autosize, 35.0 and 25.6).

But I think it's confusing. We're already API breaking this object here anyways, so I think it's best to just rip out the band aid right away.

@joseph-robertson joseph-robertson marked this pull request as ready for review October 16, 2025 16:10
Comment on lines 24937 to 24939
N4 , \field Heat Rejection Capacity and Nominal Capacity Sizing Ratio
\required-field
\type real
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 this is a new field, and E+ has 1.25 as the default.

Comment on lines 24937 to 24939
N4 , \field Heat Rejection Capacity and Nominal Capacity Sizing Ratio
\required-field
\type real
Copy link
Collaborator

Choose a reason for hiding this comment

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

Well, this is not a new field, I didn't bother going back to the root, but it was already there in V8-6-0.

Not sure why we don't have it?

Comment on lines 24937 to 24939
N4 , \field Heat Rejection Capacity and Nominal Capacity Sizing Ratio
\required-field
\type real
Copy link
Collaborator

Choose a reason for hiding this comment

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

It was added in OS SDK 1.13.0, which was based on V8.6.0.

That field was added somewhere between E+ V8.0.0 and V8.1.0, so I'm not sure how this happened, but let's just say we don't care, it's just too old to care. Adding it, and moving on

Comment on lines 24978 to 25004
N9 , \field Design Entering Water Temperature
\type real
\units C
\minimum> 0.0
\default autosize
\autosizable
\ip-units F
\note Only used for Performance Input Method = UserSpecifiedDesignCapacity;
\note for other Performance Input Methods, this field is ignored.
\note Design Entering Water Temperature must be greater than Design Entering Air Temperature.
N9 , \field Design Entering Air Temperature
N10, \field Design Entering Air Temperature
\type real
\units C
\default 35.0
\minimum> 0.0
\ip-units F
\note Only used for Performance Input Method = UserSpecifiedDesignCapacity;
\note for other Performance Input Methods, this field is ignored.
\note Design Entering Air Temperature must be greater than Design Entering Air Wet-bulb
\note Temperature.
N10, \field Design Entering Air Wet-bulb Temperature
N11, \field Design Entering Air Wet-bulb Temperature
\type real
\units C
\default 25.6
\minimum> 0.0
\ip-units F
\note Only used for Performance Input Method = UserSpecifiedDesignCapacity;
Copy link
Collaborator

Choose a reason for hiding this comment

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

Hum.

So Design Entering Air Temperature / Design Entering Air Wet-bulb Temperature

Only used for Performance Input Method = UserSpecifiedDesignCapacity; for other performance input methods this field is ignored.

That's why we had a reset function before.

Comment on lines 24982 to 24983
\required-field
\autosizable
Copy link
Collaborator

Choose a reason for hiding this comment

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

Just a side node: IMHO Should probably be \autocalculatable given that it just reads mandatory numeric values from Sizing:Plant

Copy link
Collaborator

Choose a reason for hiding this comment

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

Anyways, this field is also

Only used for Performance Input Method = UserSpecifiedDesignCapacity; for other performance input methods this field is ignored.

Hence why we have had a reset function for it as well

Comment on lines -615 to -618
{
EvaporativeFluidCoolerTwoSpeed obj(m);
EXPECT_EQ(openstudio::energyplus::ComponentType::COOLING, openstudio::energyplus::componentType(obj));
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why remove this?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

It's repeated below (right after EvaporativeFluidCoolerSingleSpeed obj(m)).

Comment on lines +125 to +126
} else if (modelObject.isDesignEnteringWaterTemperatureAutosized()) {
idfObject.setString(openstudio::EvaporativeFluidCooler_SingleSpeedFields::DesignEnteringWaterTemperature, "Autosize");
Copy link
Collaborator

@jmarrec jmarrec Oct 20, 2025

Choose a reason for hiding this comment

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

Ok, all good for FT.


Note: generally speaking, I wonder if it's better to only translate choice-dependent fields.
Meaning here, if performance input method is not UserSpecifiedDesignCapacity, should you not translate these Design Temperatures?

Another area where we should probably have guidelines for consistency

@joseph-robertson I filled this, to echo some convos we've had on Slack in the past few months too:

Comment on lines +755 to +756
Test/EvaporativeFluidCoolerSingleSpeed_GTest.cpp
Test/EvaporativeFluidCoolerTwoSpeed_GTest.cpp
Copy link
Collaborator

Choose a reason for hiding this comment

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

Thanks for this

@jmarrec
Copy link
Collaborator

jmarrec commented Oct 20, 2025

TL;DR right now:

  • I think I agree with these changes

But I'd like to clarify the autosizedDesignWaterFlowRate thing:

  • Ensure this value is found in the SQL or flag it properly
  • update OpenStudio-resources autosize_hvac (either add the object, or make an exclusion with a comment if not found in SQL)

Base automatically changed from v25.2.0-IOFreeze to develop October 20, 2025 12:08
@joseph-robertson
Copy link
Collaborator Author

TL;DR right now:

  • I think I agree with these changes

But I'd like to clarify the autosizedDesignWaterFlowRate thing:

  • Ensure this value is found in the SQL or flag it properly
  • update OpenStudio-resources autosize_hvac (either add the object, or make an exclusion with a comment if not found in SQL)

You mean autosizedDesignEnteringWaterTemperature, right?

@jmarrec
Copy link
Collaborator

jmarrec commented Oct 23, 2025

@jmarrec jmarrec force-pushed the v25.2.0-IOFreeze-evap-fluid branch from 0745cc6 to c37a3fc Compare October 24, 2025 16:31
@joseph-robertson joseph-robertson changed the base branch from develop to v25.2.0-RC1 October 29, 2025 03:59
@ci-commercialbuildings
Copy link
Collaborator

ci-commercialbuildings commented Oct 29, 2025

Base automatically changed from v25.2.0-RC1 to develop October 29, 2025 17:30
@joseph-robertson joseph-robertson merged commit fdff733 into develop Oct 29, 2025
0 of 4 checks passed
@joseph-robertson joseph-robertson deleted the v25.2.0-IOFreeze-evap-fluid branch October 29, 2025 17:31
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