diff --git a/src/EnergyPlus/BaseboardRadiator.cc b/src/EnergyPlus/BaseboardRadiator.cc index 8b76f59af7d..ae3d917049b 100644 --- a/src/EnergyPlus/BaseboardRadiator.cc +++ b/src/EnergyPlus/BaseboardRadiator.cc @@ -375,10 +375,6 @@ namespace BaseboardRadiator { state, std::format("Blank field not allowed for {}", numericFieldNames[iHeatFracOfAutosizedCapacityNumericNum - 1])); ErrorsFound = true; } - } else { - ShowSevereError(state, std::format("{} = {}", cCMO_BBRadiator_Water, thisBaseboard.EquipID)); - ShowContinueError(state, std::format("Illegal {} = {}", heatingDesignCapacityMethodFieldName, heatingDesignCapacityMethod)); - ErrorsFound = true; } thisBaseboard.UA = inputProcessor->getRealFieldValue(baseboardFields, baseboardSchemaProps, "u_factor_times_area_value"); @@ -631,14 +627,20 @@ namespace BaseboardRadiator { this->ScaledHeatingCapacity * state.dataHeatBal->Zone(state.dataSize->DataZoneNumber).FloorArea; TempSize = zoneEqSizing.DesHeatingLoad; state.dataSize->DataScalableCapSizingON = true; - } else if (CapSizingMethod == DataSizing::FractionOfAutosizedHeatingCapacity) { + } else { // CapSizingMethod == DataSizing::FractionOfAutosizedHeatingCapacity zoneEqSizing.HeatingCapacity = true; state.dataSize->DataFracOfAutosizedHeatingCapacity = this->ScaledHeatingCapacity; zoneEqSizing.DesHeatingLoad = finalZoneSizing.NonAirSysDesHeatLoad; TempSize = DataSizing::AutoSize; state.dataSize->DataScalableCapSizingON = true; - } else { - TempSize = this->ScaledHeatingCapacity; + } + if (!state.dataSize->FinalZoneSizing.empty() && + state.dataSize->CurZoneEqNum <= static_cast(state.dataSize->FinalZoneSizing.size())) { + BaseSizer::reportSizerOutput(state, + cCMO_BBRadiator_Water, + this->EquipID, + "Design Size Heating Load [W]", + state.dataSize->FinalZoneSizing(state.dataSize->CurZoneEqNum).NonAirSysDesHeatLoad); } bool PrintFlag = false; // TRUE when sizing information is reported in the eio file bool errorsFound = false; diff --git a/src/EnergyPlus/HWBaseboardRadiator.cc b/src/EnergyPlus/HWBaseboardRadiator.cc index 43e4ce3fff5..afccac69f08 100644 --- a/src/EnergyPlus/HWBaseboardRadiator.cc +++ b/src/EnergyPlus/HWBaseboardRadiator.cc @@ -1018,15 +1018,13 @@ namespace HWBaseboardRadiator { hWBaseboard.ScaledHeatingCapacity * state.dataHeatBal->Zone(state.dataSize->DataZoneNumber).FloorArea; TempSize = zoneEqSizing.DesHeatingLoad; state.dataSize->DataScalableCapSizingON = true; - } else if (CapSizingMethod == DataSizing::FractionOfAutosizedHeatingCapacity) { + } else { // CapSizingMethod == DataSizing::FractionOfAutosizedHeatingCapacity CheckZoneSizing(state, CompType, CompName); zoneEqSizing.HeatingCapacity = true; state.dataSize->DataFracOfAutosizedHeatingCapacity = hWBaseboard.ScaledHeatingCapacity; zoneEqSizing.DesHeatingLoad = state.dataSize->FinalZoneSizing(state.dataSize->CurZoneEqNum).NonAirSysDesHeatLoad; TempSize = DataSizing::AutoSize; state.dataSize->DataScalableCapSizingON = true; - } else { - TempSize = hWBaseboard.ScaledHeatingCapacity; } bool PrintFlag = false; bool errorsFound = false; @@ -1039,6 +1037,14 @@ namespace HWBaseboardRadiator { } else { hWBaseboard.RatedCapacity = TempSize; } + if (!state.dataSize->FinalZoneSizing.empty() && + state.dataSize->CurZoneEqNum <= static_cast(state.dataSize->FinalZoneSizing.size())) { + BaseSizer::reportSizerOutput(state, + cCMO_BBRadiator_Water, + hWBaseboard.Name, + "Design Size Heating Load [W]", + state.dataSize->FinalZoneSizing(state.dataSize->CurZoneEqNum).NonAirSysDesHeatLoad); + } RatedCapacityDes = TempSize; state.dataSize->DataScalableCapSizingON = false; } diff --git a/tst/EnergyPlus/unit/BaseboardRadiator.unit.cc b/tst/EnergyPlus/unit/BaseboardRadiator.unit.cc index e4d10ba1a83..647f071902e 100644 --- a/tst/EnergyPlus/unit/BaseboardRadiator.unit.cc +++ b/tst/EnergyPlus/unit/BaseboardRadiator.unit.cc @@ -414,9 +414,20 @@ TEST_F(EnergyPlusFixture, BaseboardConvWater_SizingTest) state->dataBaseboardRadiator->baseboards(BaseboardNum).ScaledHeatingCapacity = DataSizing::AutoSize; state->dataBaseboardRadiator->baseboards(BaseboardNum).WaterVolFlowRateMax = DataSizing::AutoSize; state->dataBaseboardRadiator->baseboards(BaseboardNum).UA = DataSizing::AutoSize; // reset to autosize to test new calculation + state->files.eio.open_as_stringstream(); state->dataBaseboardRadiator->baseboards(BaseboardNum).SizeBaseboard(*state, BaseboardNum); EXPECT_EQ(state->dataZoneEnergyDemand->ZoneSysEnergyDemand(CntrlZoneNum).RemainingOutputReqToHeatSP, 2000.0); // design load = 2000 EXPECT_EQ(state->dataBaseboardRadiator->baseboards(BaseboardNum).UA, 2000.0); // UA = design load + EXPECT_NEAR(state->dataBaseboardRadiator->baseboards(BaseboardNum).WaterVolFlowRateMax, 4.86063E-05, 0.0000001); + EXPECT_TRUE(compare_eio_stream_substring("Component Sizing Information, ZoneHVAC:Baseboard:Convective:Water, SPACE2-1 BASEBOARD, " + "Design Size Maximum Water Flow Rate [m3/s], 4.86063E-05", + false)); + EXPECT_TRUE(compare_eio_stream_substring("Component Sizing Information, ZoneHVAC:Baseboard:Convective:Water, SPACE2-1 BASEBOARD, " + "Design Size Heating Load [W], 2000.00", + false)); + EXPECT_TRUE(compare_eio_stream_substring("Component Sizing Information, ZoneHVAC:Baseboard:Convective:Water, SPACE2-1 BASEBOARD, " + "Design Size U-Factor Times Area Value [W/K], 2000.00", + true)); BaseboardNum = 2; CntrlZoneNum = 2; @@ -444,8 +455,19 @@ TEST_F(EnergyPlusFixture, BaseboardConvWater_SizingTest) // check UA value with autosized UA state->dataBaseboardRadiator->baseboards(BaseboardNum).HeatingCapMethod = DataSizing::HeatingDesignCapacity; state->dataBaseboardRadiator->baseboards(BaseboardNum).ScaledHeatingCapacity = DataSizing::AutoSize; + state->files.eio.open_as_stringstream(); state->dataBaseboardRadiator->baseboards(BaseboardNum).SizeBaseboard(*state, BaseboardNum); EXPECT_EQ(state->dataBaseboardRadiator->baseboards(BaseboardNum).UA, 2000.0); + EXPECT_NEAR(state->dataBaseboardRadiator->baseboards(BaseboardNum).WaterVolFlowRateMax, 4.86063E-05, 0.0000001); + EXPECT_TRUE(compare_eio_stream_substring("Component Sizing Information, ZoneHVAC:Baseboard:Convective:Water, SPACE3-1 BASEBOARD, " + "Design Size Maximum Water Flow Rate [m3/s], 4.86063E-05", + false)); + EXPECT_TRUE(compare_eio_stream_substring("Component Sizing Information, ZoneHVAC:Baseboard:Convective:Water, SPACE3-1 BASEBOARD, " + "Design Size Heating Load [W], 2000.00", + false)); + EXPECT_TRUE(compare_eio_stream_substring("Component Sizing Information, ZoneHVAC:Baseboard:Convective:Water, SPACE3-1 BASEBOARD, " + "Design Size U-Factor Times Area Value [W/K], 2000.00", + true)); BaseboardNum = 3; CntrlZoneNum = 3; @@ -473,8 +495,18 @@ TEST_F(EnergyPlusFixture, BaseboardConvWater_SizingTest) // check UA value with autosized scaled capacity state->dataBaseboardRadiator->baseboards(BaseboardNum).HeatingCapMethod = DataSizing::HeatingDesignCapacity; state->dataBaseboardRadiator->baseboards(BaseboardNum).ScaledHeatingCapacity = DataSizing::AutoSize; + state->files.eio.open_as_stringstream(); state->dataBaseboardRadiator->baseboards(BaseboardNum).SizeBaseboard(*state, BaseboardNum); EXPECT_EQ(state->dataBaseboardRadiator->baseboards(BaseboardNum).UA, 3000.0); + EXPECT_NEAR(state->dataBaseboardRadiator->baseboards(BaseboardNum).WaterVolFlowRateMax, 7.29095E-05, 0.0000001); + EXPECT_TRUE(compare_eio_stream_substring("Component Sizing Information, ZoneHVAC:Baseboard:Convective:Water, SPACE4-1 BASEBOARD, " + "Design Size Maximum Water Flow Rate [m3/s], 7.29095E-05", + false)); + EXPECT_TRUE(compare_eio_stream_substring("Component Sizing Information, ZoneHVAC:Baseboard:Convective:Water, SPACE4-1 BASEBOARD, " + "Design Size Heating Load [W], 3000.00", + false)); + EXPECT_TRUE(compare_eio_stream_substring("Component Sizing Information, ZoneHVAC:Baseboard:Convective:Water, SPACE4-1 BASEBOARD, " + "Design Size U-Factor Times Area Value [W/K], 3000.00")); } TEST_F(EnergyPlusFixture, BaseboardConvWater_checkForZoneSizingTest) diff --git a/tst/EnergyPlus/unit/HWBaseboardRadiator.unit.cc b/tst/EnergyPlus/unit/HWBaseboardRadiator.unit.cc index 5356d7cdac2..6986e171213 100644 --- a/tst/EnergyPlus/unit/HWBaseboardRadiator.unit.cc +++ b/tst/EnergyPlus/unit/HWBaseboardRadiator.unit.cc @@ -334,4 +334,45 @@ TEST_F(EnergyPlusFixture, HWBaseboardRadiator_HWBaseboardWaterInputTest) ASSERT_NEAR(state->dataHWBaseboardRad->HWBaseboardDesignObject(1).FracRadiant, 0.4, absTol); ASSERT_NEAR(state->dataHWBaseboardRad->HWBaseboardDesignObject(1).FracDistribPerson, 0.2, absTol); ASSERT_NEAR(state->dataHWBaseboardRad->HWBaseboard(1).FracConvect, 0.6, absTol); + + state->dataSize->CurZoneEqNum = 1; + state->dataSize->ZoneSizingRunDone = true; + state->dataSize->FinalZoneSizing.allocate(1); + state->dataSize->FinalZoneSizing(1).NonAirSysDesHeatLoad = 1300.0; + state->dataSize->ZoneEqSizing.allocate(1); + state->dataSize->ZoneEqSizing(1).SizingMethod.allocate(HVAC::NumOfSizingTypes); + state->dataHWBaseboardRad->HWBaseboard(1).HeatingCapMethod = DataSizing::HeatingDesignCapacity; + state->dataHWBaseboardRad->HWBaseboard(1).ScaledHeatingCapacity = DataSizing::AutoSize; + state->dataHWBaseboardRad->HWBaseboard(1).plantLoc.loopNum = 1; + + state->dataPlnt->PlantLoop.allocate(1); + state->dataPlnt->PlantLoop(1).PlantSizNum = 1; + state->dataSize->PlantSizData.allocate(1); + state->dataSize->PlantSizData(1).DeltaT = 10.0; + state->dataPlnt->PlantLoop(1).LoopSide[0].Branch.allocate(1); + state->dataPlnt->PlantLoop(1).LoopSide[0].Branch(1).Comp.allocate(1); + + auto &this_loop = state->dataPlnt->PlantLoop(1); + this_loop.glycol = Fluid::GetWater(*state); + auto &this_loop_side = this_loop.LoopSide[0]; + auto &this_branch = state->dataPlnt->PlantLoop(1).LoopSide[0].Branch(1); + auto &this_comp = state->dataPlnt->PlantLoop(1).LoopSide[0].Branch(1).Comp(1); + + state->dataHWBaseboardRad->HWBaseboard(1).plantLoc.loop = &this_loop; + state->dataHWBaseboardRad->HWBaseboard(1).plantLoc.side = &this_loop_side; + state->dataHWBaseboardRad->HWBaseboard(1).plantLoc.branch = &this_branch; + state->dataHWBaseboardRad->HWBaseboard(1).plantLoc.comp = &this_comp; + + state->files.eio.open_as_stringstream(); + SizeHWBaseboard(*state, 1); + EXPECT_NEAR(state->dataHWBaseboardRad->HWBaseboard(1).UA, 24.2144, 0.0001); + EXPECT_NEAR(state->dataHWBaseboardRad->HWBaseboard(1).WaterVolFlowRateMax, 3.15941E-05, 0.0000001); + EXPECT_TRUE(compare_eio_stream_substring("Component Sizing Information, ZoneHVAC:Baseboard:RadiantConvective:Water, THISISABASEBOARD, " + "Design Size Heating Load [W], 1300.00", + false)); + EXPECT_TRUE(compare_eio_stream_substring("Component Sizing Information, ZoneHVAC:Baseboard:RadiantConvective:Water, THISISABASEBOARD, " + "Design Size Maximum Water Flow Rate [m3/s], 3.15941E-05", + false)); + EXPECT_TRUE(compare_eio_stream_substring("Component Sizing Information, ZoneHVAC:Baseboard:RadiantConvective:Water, THISISABASEBOARD, " + "U-Factor times Area [W/C], 24.2144")); }