Skip to content

Commit 8008ef7

Browse files
Merge pull request #5596 from NatLabRockies/fix-rad-panel-temp-sch
Fix incompatible ScheduleTypeLimits issue for CoilCoolingWaterPanelRadiant cooling control temperature schedule
2 parents 611a0b0 + 2afc3c8 commit 8008ef7

5 files changed

Lines changed: 41 additions & 2 deletions

src/model/CoilCoolingWaterPanelRadiant.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,17 @@ namespace model {
5454
return CoilCoolingWaterPanelRadiant::iddObjectType();
5555
}
5656

57+
std::vector<ScheduleTypeKey> CoilCoolingWaterPanelRadiant_Impl::getScheduleTypeKeys(const Schedule& schedule) const {
58+
std::vector<ScheduleTypeKey> result;
59+
UnsignedVector fieldIndices = getSourceIndices(schedule.handle());
60+
UnsignedVector::const_iterator b(fieldIndices.begin());
61+
UnsignedVector::const_iterator e(fieldIndices.end());
62+
if (std::find(b, e, OS_Coil_Cooling_Water_Panel_RadiantFields::CoolingControlTemperatureScheduleName) != e) {
63+
result.emplace_back("CoilCoolingWaterPanelRadiant", "Cooling Control Temperature Schedule");
64+
}
65+
return result;
66+
}
67+
5768
unsigned CoilCoolingWaterPanelRadiant_Impl::inletPort() const {
5869
return OS_Coil_Cooling_Water_Panel_RadiantFields::WaterInletNodeName;
5970
}
@@ -252,7 +263,7 @@ namespace model {
252263

253264
bool CoilCoolingWaterPanelRadiant_Impl::setCoolingControlTemperatureSchedule(Schedule& coolingControlTemperatureSchedule) {
254265
bool result = setSchedule(OS_Coil_Cooling_Water_Panel_RadiantFields::CoolingControlTemperatureScheduleName, "CoilCoolingWaterPanelRadiant",
255-
"Cooling Control Temperature", coolingControlTemperatureSchedule);
266+
"Cooling Control Temperature Schedule", coolingControlTemperatureSchedule);
256267
return result;
257268
}
258269

src/model/CoilCoolingWaterPanelRadiant.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ namespace openstudio {
1313

1414
namespace model {
1515

16+
class Schedule;
17+
1618
namespace detail {
1719

1820
class CoilCoolingWaterPanelRadiant_Impl;

src/model/CoilCoolingWaterPanelRadiant_Impl.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
namespace openstudio {
1515
namespace model {
1616

17+
class Schedule;
18+
1719
namespace detail {
1820

1921
/** CoilCoolingWaterPanelRadiant_Impl is a StraightComponent_Impl that is the implementation class for CoilCoolingWaterPanelRadiant.*/
@@ -39,6 +41,8 @@ namespace model {
3941

4042
virtual IddObjectType iddObjectType() const override;
4143

44+
virtual std::vector<ScheduleTypeKey> getScheduleTypeKeys(const Schedule& schedule) const override;
45+
4246
virtual unsigned inletPort() const override;
4347

4448
virtual unsigned outletPort() const override;

src/model/ScheduleTypeRegistry.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,8 @@ namespace model {
207207
{"CoilCoolingLowTempRadiantVarFlow", "Cooling Control Temperature Schedule", "coolingControlTemperatureSchedule", true, "Temperature",
208208
OptionalDouble(), OptionalDouble()},
209209
{"CoilCoolingWater", "Availability", "availabilitySchedule", false, "Availability", 0.0, 1.0},
210-
{"CoilCoolingWaterPanelRadiant", "Cooling Control Temperature", "coolingControlTemperatureSchedule", true, "", 0.0, OptionalDouble()},
210+
{"CoilCoolingWaterPanelRadiant", "Cooling Control Temperature Schedule", "coolingControlTemperatureSchedule", true, "Temperature",
211+
OptionalDouble(), OptionalDouble()},
211212
{"CoilCoolingWaterToAirHeatPumpEquationFit", "Availability Schedule", "availabilitySchedule", false, "Availability", 0.0, 1.0},
212213
{"CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit", "Availability Schedule", "availabilitySchedule", false, "Availability", 0.0, 1.0},
213214
{"CoilHeatingDesuperheater", "Availability", "availabilitySchedule", false, "Availability", 0.0, 1.0},

src/model/test/CoilCoolingWaterPanelRadiant_GTest.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
#include "../ScheduleConstant_Impl.hpp"
2020
#include "../AirLoopHVAC.hpp"
2121
#include "../AirLoopHVACZoneSplitter.hpp"
22+
#include "../ScheduleRuleset.hpp"
23+
#include "../ScheduleTypeLimits.hpp"
2224

2325
using namespace openstudio;
2426
using namespace openstudio::model;
@@ -111,3 +113,22 @@ TEST_F(ModelFixture, CoilCoolingWaterPanelRadiant_SetGetFields) {
111113
coil.resetCoolingControlTemperatureSchedule();
112114
EXPECT_FALSE(coil.coolingControlTemperatureSchedule());
113115
}
116+
117+
TEST_F(ModelFixture, CoilCoolingWaterPanelRadiant_CoolingControlTemperatureSchedule) {
118+
// Address #5595, "CoilCoolingWaterPanelRadiant.setCoolingControlTemperatureSchedule" but
119+
// keep getting 'incompatible ScheduleTypeLimits' error.
120+
121+
Model m;
122+
CoilCoolingWaterPanelRadiant coil(m);
123+
124+
ScheduleTypeLimits temperatureLimits(m);
125+
EXPECT_TRUE(temperatureLimits.setLowerLimitValue(-60));
126+
EXPECT_TRUE(temperatureLimits.setUpperLimitValue(200));
127+
EXPECT_TRUE(temperatureLimits.setNumericType("Continuous"));
128+
EXPECT_TRUE(temperatureLimits.setUnitType("Temperature"));
129+
130+
ScheduleRuleset temperatureSchedule(m);
131+
EXPECT_TRUE(temperatureSchedule.setScheduleTypeLimits(temperatureLimits));
132+
133+
EXPECT_TRUE(coil.setCoolingControlTemperatureSchedule(temperatureSchedule));
134+
}

0 commit comments

Comments
 (0)