From 692b190ef192e3019a429a3d1c863baffe63f511 Mon Sep 17 00:00:00 2001 From: Matt Mitchell Date: Mon, 23 Feb 2026 11:33:10 -0700 Subject: [PATCH] protect table bin limits when no data are present --- src/EnergyPlus/OutputReportTabularAnnual.cc | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/EnergyPlus/OutputReportTabularAnnual.cc b/src/EnergyPlus/OutputReportTabularAnnual.cc index 391d2676e20..11ecf8cd547 100644 --- a/src/EnergyPlus/OutputReportTabularAnnual.cc +++ b/src/EnergyPlus/OutputReportTabularAnnual.cc @@ -1007,7 +1007,9 @@ void AnnualTable::writeTable(EnergyPlusData &state, OutputReportTabular::tabular const Real64 binBottom = fldStIt.m_bottomBinValue; const Real64 binTop = fldStIt.m_topBinValue; constexpr int numBins = 10; - const Real64 intervalSize = (binTop - binBottom) / static_cast(numBins); + const Real64 intervalSize = + ((binBottom == veryLarge) && (binTop == verySmall)) ? 0 : ((binTop - binBottom) / static_cast(numBins)); + // Column headers for (int iBin = 0; iBin < numBins; ++iBin) { const char binLetter = static_cast('A' + iBin); @@ -1412,11 +1414,16 @@ std::vector AnnualTable::calculateBins(int const numberOfBins, Real64 &timeAboveTopBin, Real64 &timeBelowBottomBin) { - std::vector returnBins(0.0); - returnBins.resize(numberOfBins); - const Real64 intervalSize = (topOfBins - bottomOfBins) / static_cast(numberOfBins); + if (numberOfBins <= 0) { + return {}; + } + std::vector returnBins(numberOfBins, 0.0); timeAboveTopBin = 0.0; timeBelowBottomBin = 0.0; + if (valuesToBin.empty()) { + return returnBins; + } + const Real64 intervalSize = (topOfBins - bottomOfBins) / static_cast(numberOfBins); std::vector::iterator elapsedTimeIt = corrElapsedTime.begin(); for (auto const &valueIt : valuesToBin) { if (valueIt < bottomOfBins) {