Skip to content

Air-cooled chiller sizing can cause RH > 100 warnings. - #11768

Merged
mitchute merged 8 commits into
developfrom
7134-Invalid-condenser-outlet-condition
Sep 9, 2026
Merged

Air-cooled chiller sizing can cause RH > 100 warnings.#11768
mitchute merged 8 commits into
developfrom
7134-Invalid-condenser-outlet-condition

Conversation

@rraustad

@rraustad rraustad commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

Pull request overview

Description of the purpose of this PR

Plant chillers calculates a condenser fluid outlet temperature. If the condenser fluid (air) flow rate is not accurately represented then the outlet temperature is not correct. The air-cooled condenser water and outlet air temp are not reported but do set a NODE condition and therefore should be calculated in good faith.

Correction changes: this->CondMassFlowRate to a more reasonable value

this->CondVolFlowRate = this->NomCap * 0.000114; // m3/s/w (850 cfm/ton)

Real64 CpCond = Psychrometrics::PsyCpAirFnW(state.dataLoopNodes->Node(this->CondInletNodeNum).HumRat);
this->CondOutletTemp = condInletTemp + this->QCondenser / this->CondMassFlowRate / CpCond;

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
  • If adding/removing any output files (e.g., eplustbl.*)
    • Update ..\scripts\Epl-run.bat
    • Update ..\scripts\RunEPlus.bat
    • Update ..\src\EPLaunch\ MainModule.bas, epl-ui.frm, and epl.vbp (VersionComments)
    • Update ...github\workflows\energyplus.py

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 self-assigned this Aug 28, 2026
@rraustad rraustad added the Defect Includes code to repair a defect in EnergyPlus label Aug 28, 2026
@rraustad rraustad changed the title Add sizing for condenser air flow when not water-cooled Air-cooled chiller sizing and cause RH > 100 warnings. Aug 28, 2026
@rraustad rraustad changed the title Air-cooled chiller sizing and cause RH > 100 warnings. Air-cooled chiller sizing can cause RH > 100 warnings. Aug 28, 2026
if (thisChiller.CondenserType == DataPlant::CondenserType::AirCooled ||
thisChiller.CondenserType == DataPlant::CondenserType::EvapCooled) {
thisChiller.CondVolFlowRate = 0.0011; // set to avoid errors in calc routine
}

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Given the issue, not a good choice. HindSight.

// sizing of condenser flow for air/evap-cooled is not reported but the condenser side deltaT is calculated, so at least make it realistic
if (this->CondVolFlowRate == DataSizing::AutoSize && state.dataPlnt->PlantFinalSizesOkayToReport) {
this->CondVolFlowRate = this->NomCap * 0.000114; // m3/s/w (850 cfm/ton)
}

@rraustad rraustad Aug 28, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Size non-water-cooled condenser air flow to a reasonable value. This info is not reported but is used in a calculation and can trip RH > 100 warnings. So just give the engine a decent (rule-of-thumb) value for condenser air flow rate.

this->CondVolFlowRate = this->NomCap * 0.000114; // m3/s/w (850 cfm/ton)
this->CondMassFlowRateMax = rho * this->CondVolFlowRate;

Real64 CpCond = Psychrometrics::PsyCpAirFnW(state.dataLoopNodes->Node(this->CondInletNodeNum).HumRat);
this->CondOutletTemp = condInletTemp + this->QCondenser / this->CondMassFlowRate / CpCond;

@rraustad

rraustad commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator Author

Example file is clean (of this issue) now:

Program Version,EnergyPlus, Version 26.2.0-a98cb64024, YMD=2026.08.27 20:43,
 ************* Beginning Zone Sizing Calculations
 ************* Beginning System Sizing Calculations
 ************* Beginning Plant Sizing Calculations
 ** Warning ** FinalSystemSizing: AirLoop="VAV SYS 1", Sizing:System Central Heating Maximum System Air Flow Ratio = 0.300000,
 **   ~~~   ** is less than the system heating to maximum air flow ratio. Central Heating Maximum System Air Flow Ratio = 0.428990.
 **   ~~~   ** The central heating coil may undersize if autosized. Consider increasing the Central Heating Maximum System Air Flow Ratio.
 **   ~~~   ** System heating volumetric air flow rate = 0.533493 [m3/s].
 **   ~~~   ** System cooling volumetric air flow rate = 1.363461 [m3/s].
 **   ~~~   ** System main volumetric air flow rate = 1.363461 [m3/s].
 ************* Testing Individual Branch Integrity
 ************* All Branches passed integrity testing
 ************* Testing Individual Supply Air Path Integrity
 ************* All Supply Air Paths passed integrity testing
 ************* Testing Individual Return Air Path Integrity
 ************* All Return Air Paths passed integrity testing
 ************* No node connection errors were found.
 ************* Beginning Simulation
 ************* Simulation Error Summary *************
 ************* EnergyPlus Warmup Error Summary. During Warmup: 0 Warning; 0 Severe Errors.
 ************* EnergyPlus Sizing Error Summary. During Sizing: 0 Warning; 0 Severe Errors.
 ************* EnergyPlus Completed Successfully-- 1 Warning; 0 Severe Errors; Elapsed Time=00hr 00min  0.73sec

@github-actions

Copy link
Copy Markdown

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

Regression Summary
  • Audit: 49
  • EIO: 52
  • Table Big Diffs: 49
  • Table Small Diffs: 3
  • ESO Big Diffs: 3

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit 77cc02d

Regression Summary
  • Audit: 49
  • EIO: 52
  • Table Big Diffs: 49
  • Table Small Diffs: 3
  • ESO Big Diffs: 3

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit 5823940

Regression Summary
  • EIO: 52
  • Table Big Diffs: 52
  • Table String Diffs: 47
  • Audit: 3
  • ERR: 3
  • ESO Big Diffs: 3

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on macos-14 for commit 5823940

Regression Summary
  • EIO: 52
  • Table Big Diffs: 52
  • Table String Diffs: 47
  • Audit: 3
  • ERR: 3
  • ESO Big Diffs: 3

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit ce8e0ad

Regression Summary
  • EIO: 52
  • Table Big Diffs: 52
  • Table String Diffs: 47
  • Audit: 3
  • ERR: 3
  • ESO Big Diffs: 3

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on macos-14 for commit ce8e0ad

Regression Summary
  • EIO: 52
  • Table Big Diffs: 52
  • Table String Diffs: 47
  • Audit: 3
  • ERR: 3
  • ESO Big Diffs: 3

@rraustad

Copy link
Copy Markdown
Collaborator Author

The 3 example files with new warnings for the air-cooled chiller should be fixed in this branch.

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on macos-14 for commit 9120668

Regression Summary
  • EIO: 52
  • Table Big Diffs: 52
  • Table String Diffs: 47
  • Audit: 3
  • ERR: 1
  • ESO Big Diffs: 3

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit 9120668

Regression Summary
  • EIO: 52
  • Table Big Diffs: 52
  • Table String Diffs: 47
  • Audit: 3
  • ERR: 1
  • ESO Big Diffs: 3

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit bd08b73

Regression Summary
  • EIO: 52
  • Table Big Diffs: 52
  • Table String Diffs: 47
  • Audit: 3
  • ESO Big Diffs: 3

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on macos-14 for commit bd08b73

Regression Summary
  • EIO: 52
  • Table Big Diffs: 52
  • Table String Diffs: 47
  • Audit: 3
  • ESO Big Diffs: 3

@rraustad

Copy link
Copy Markdown
Collaborator Author

The diffs in eso for SmallOffice_CentralDOAS made me look at air-cooled node data for the condenser side. It was not working at all. This last change seems to fix it. The condenser flow and conditions are not used for anything but the node info can still be reported, so why not just report the information correctly.

image

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on macos-14 for commit 2008d03

Regression Summary
  • EIO: 52
  • Table Big Diffs: 52
  • Table String Diffs: 47
  • Audit: 3
  • ESO Big Diffs: 3

@github-actions

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit 2008d03

Regression Summary
  • EIO: 52
  • Table Big Diffs: 52
  • Table String Diffs: 47
  • Audit: 3
  • ESO Big Diffs: 3

…d or blank condenser flow for heat recovery, size zero flow using the 850 cfm/ton estimate, update IDD, and add tests
Comment on lines +509 to +510
if (thisChiller.CondVolFlowRate <= 0.0 && thisChiller.CondVolFlowRate != DataSizing::AutoSize &&
!state.dataIPShortCut->lNumericFieldBlanks(10)) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Added a couple of touch-ups here. This is because the IDD labels this field as \minimum 0.0, but it should probably be \minimum> 0.0

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown

⚠️ Regressions detected on ubuntu-24.04 for commit f02b211

Regression Summary
  • EIO: 52
  • Table Big Diffs: 52
  • Table String Diffs: 47
  • Audit: 3
  • ESO Big Diffs: 3

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown

⚠️ Regressions detected on macos-14 for commit f02b211

Regression Summary
  • EIO: 52
  • Table Big Diffs: 52
  • Table String Diffs: 47
  • Audit: 3
  • ESO Big Diffs: 3

@mitchute mitchute left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Looks good. Thanks @rraustad.

Comment on lines +1216 to +1236
} else {
// sizing of condenser flow for air/evap-cooled is not reported but the condenser side deltaT is calculated, so at least make it realistic
if (state.dataPlnt->PlantFinalSizesOkayToReport) {
Real64 const desAirVolFlowRate = this->NomCap * 0.000114; // m3/s/w (850 cfm/ton)
if (this->CondVolFlowRate == DataSizing::AutoSize || this->CondVolFlowRate == 0.0) {
this->CondVolFlowRate = desAirVolFlowRate;
BaseSizer::reportSizerOutput(
state, "Chiller:Electric", this->Name, "Design Size Design Condenser Fluid Flow Rate [m3/s]", this->CondVolFlowRate);
} else if (std::abs((this->CondVolFlowRate - desAirVolFlowRate) / desAirVolFlowRate) > state.dataSize->AutoVsHardSizingThreshold) {
ShowWarningError(state, std::format("User-specified Design Condenser Fluid Flow Rate = {:.5f} [m3/s]", this->CondVolFlowRate));
ShowContinueError(state,
std::format("differs from design size design condenser fluid flow rate = {:.5f} [m3/s]", desAirVolFlowRate));
ShowContinueError(state, "This may, or may not, indicate mismatched component sizes.");
ShowContinueError(state, "Verify that the value entered is intended and is consistent with other components.");
ShowContinueError(state, std::format("Occurs in Electric Chiller object={}", this->Name));
BaseSizer::reportSizerOutput(
state, "Chiller:Electric", this->Name, "Design Size Design Condenser Fluid Flow Rate [m3/s]", desAirVolFlowRate);
BaseSizer::reportSizerOutput(
state, "Chiller:Electric", this->Name, "User-Specified Design Condenser Fluid Flow Rate [m3/s]", this->CondVolFlowRate);
}
}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Looks good

Comment on lines +2000 to 2002
state.dataLoopNodes->Node(this->CondInletNodeNum).MassFlowRate = this->CondMassFlowRate;
state.dataLoopNodes->Node(this->CondOutletNodeNum).MassFlowRate = this->CondMassFlowRate;
}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Looks good. The water-cooled nodes are set through PlantUtilities::SetComponentFlowRate.

Comment on lines +3268 to 3273
} else {
// sizing of condenser flow for air/evap-cooled is not reported but the condenser side deltaT is calculated, so at least make it realistic
if (this->CondVolFlowRate == DataSizing::AutoSize && state.dataPlnt->PlantFinalSizesOkayToReport) {
this->CondVolFlowRate = this->NomCap * 0.000114; // m3/s/w (850 cfm/ton)
}
}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Nice description.

@mitchute

mitchute commented Sep 9, 2026

Copy link
Copy Markdown
Collaborator

Thanks @rraustad. Merging.

@mitchute
mitchute merged commit e1cb059 into develop Sep 9, 2026
7 of 8 checks passed
@mitchute
mitchute deleted the 7134-Invalid-condenser-outlet-condition branch September 9, 2026 21:15
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Invalid condenser outlet node conditions in 5ZoneBranchSupplyPumps.idf

3 participants