First time here? Check out the Help page!
1 | initial version |
OpenStudio enforces correspondance of the ScheduleTypeLimits when you try to set schedules.
You can see the expected schedule type limits for the DefaultScheduleSet here in ScheduleTypeRegistry.cpp:
// className, scheduleDisplayName, scheduleRelationshipName, isContinuous, unitType, lowerLimitValue, upperLimitValue;
{"DefaultScheduleSet","Hours of Operation","hoursofOperationSchedule",false,"Availability",0.0,1.0},
{"DefaultScheduleSet","Number of People","numberofPeopleSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","People Activity Level","peopleActivityLevelSchedule",true,"ActivityLevel",0.0,OptionalDouble()},
{"DefaultScheduleSet","Lighting","lightingSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Electric Equipment","electricEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Gas Equipment","gasEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Hot Water Equipment","hotWaterEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Infiltration","infiltrationSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Steam Equipment","steamEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Other Equipment","otherEquipmentSchedule",true,"",OptionalDouble(),OptionalDouble()},
If you're curious:
className
, scheduleDisplayName
) is done in class file, cf DefaultScheduleSet::getScheduleTypeKeys2 | No.2 Revision |
TL;DR: DefaultScheduleSet will never accept any schedule with a "Temperature" unit type (which is what the default Temperature
ScheduleTypeLimits has).
OpenStudio enforces correspondance of the ScheduleTypeLimits correspondence of the ScheduleTypeLimits
when you try to set schedules.
ScheduleTypeLimits
, it'll create and assign one for you (it'll always work)ScheduleTypeLimits
, it will check whether it's compatible, that is check the lower/upper limits and the Unit Type (it doesn't care whether it's continuous or discrete).You can see the expected schedule type limits for the DefaultScheduleSet DefaultScheduleSet
here in ScheduleTypeRegistry.cpp:
// className, scheduleDisplayName, scheduleRelationshipName, isContinuous, unitType, lowerLimitValue, upperLimitValue;
{"DefaultScheduleSet","Hours of Operation","hoursofOperationSchedule",false,"Availability",0.0,1.0},
{"DefaultScheduleSet","Number of People","numberofPeopleSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","People Activity Level","peopleActivityLevelSchedule",true,"ActivityLevel",0.0,OptionalDouble()},
{"DefaultScheduleSet","Lighting","lightingSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Electric Equipment","electricEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Gas Equipment","gasEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Hot Water Equipment","hotWaterEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Infiltration","infiltrationSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Steam Equipment","steamEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Other Equipment","otherEquipmentSchedule",true,"",OptionalDouble(),OptionalDouble()},
So indeeed, none have a unitType == "Temperature"
If you're curious:
className
, scheduleDisplayName
) is done in class file, cf DefaultScheduleSet::getScheduleTypeKeys3 | No.3 Revision |
TL;DR: DefaultScheduleSet will never accept any schedule with a "Temperature" unit type (which is what the default Temperature
ScheduleTypeLimits has).
OpenStudio enforces correspondence of the ScheduleTypeLimits
when you try to set schedules.
ScheduleTypeLimits
, it'll create and assign one for you (it'll always work)ScheduleTypeLimits
, it will check whether it's compatible, that is check the lower/upper limits and the Unit Type (it doesn't care whether it's continuous or discrete).You can see the expected schedule type limits for the DefaultScheduleSet
here in ScheduleTypeRegistry.cpp:
// className, scheduleDisplayName, scheduleRelationshipName, isContinuous, unitType, lowerLimitValue, upperLimitValue;
{"DefaultScheduleSet","Hours of Operation","hoursofOperationSchedule",false,"Availability",0.0,1.0},
{"DefaultScheduleSet","Number of People","numberofPeopleSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","People Activity Level","peopleActivityLevelSchedule",true,"ActivityLevel",0.0,OptionalDouble()},
{"DefaultScheduleSet","Lighting","lightingSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Electric Equipment","electricEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Gas Equipment","gasEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Hot Water Equipment","hotWaterEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Infiltration","infiltrationSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Steam Equipment","steamEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Other Equipment","otherEquipmentSchedule",true,"",OptionalDouble(),OptionalDouble()},
So indeeed, none have a unitType == "Temperature"
If you're curious:
className
, scheduleDisplayName
) is done in class file, cf DefaultScheduleSet::getScheduleTypeKeysAnd if you need more proof, here's a demo using the ruby bindings:
I get a model, and retrieve a Temperature schedule.
[13] model(main)> sch = m.getScheduleRulesetByName("Medium Office Heating Setpoint Schedule").get
=> #<OpenStudio::Model::ScheduleRuleset:0x000055a9f1cf8398 @__swigtype__="_p_openstudio__model__ScheduleRuleset">
[9] model(main)> puts sch
OS:Schedule:Ruleset,
{fb99be89-78c9-4473-a724-c19078c7a311}, !- Handle
Medium Office Heating Setpoint Schedule, !- Name
{4d58c6f5-7a17-476e-8c71-4472d4190115}, !- Schedule Type Limits Name
{4201662b-b6bd-4cbb-98ec-b7e57b8406e0}, !- Default Day Schedule Name
, !- Summer Design Day Schedule Name
{8e5f2044-0cc5-4ff0-aeb6-0cbef560f87b}; !- Winter Design Day Schedule Name
=> nil
[14] model(main)> puts sch.scheduleTypeLimits.get
OS:ScheduleTypeLimits,
{4d58c6f5-7a17-476e-8c71-4472d4190115}, !- Handle
Temperature, !- Name
-60, !- Lower Limit Value
200, !- Upper Limit Value
CONTINUOUS, !- Numeric Type
Temperature; !- Unit Type
Now I create a DefaultScheduleSet and tries to assign this schedule to every slot in it:
[15] model(main)> d = DefaultScheduleSet.new(m)
[16] model(main)> d.setHoursofOperationSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Hours of Operation=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[17] model(main)> d.setNumberofPeopleSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Number of People=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[18] model(main)> d.setPeopleActivityLevelSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule People Activity Level=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[19] model(main)> d.setLightingSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Lighting=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[20] model(main)> d.setElectricEquipmentSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Electric Equipment=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[21] model(main)> d.setGasEquipmentSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Gas Equipment=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[22] model(main)> d.setHotWaterEquipmentSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Hot Water Equipment=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[23] model(main)> d.setInfiltrationSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Infiltration=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[24] model(main)> d.setSteamEquipmentSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Steam Equipment=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[25] model(main)> d.setOtherEquipmentSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Other Equipment=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
4 | No.4 Revision |
TL;DR: DefaultScheduleSet will never accept any schedule with a "Temperature" unit type (which is what the default Temperature
ScheduleTypeLimits has).
OpenStudio enforces correspondence of the ScheduleTypeLimits
when you try to set schedules.
ScheduleTypeLimits
, it'll create and assign one for you (it'll always work)ScheduleTypeLimits
, it will check whether it's compatible, that is check the lower/upper limits and the Unit Type (it doesn't care whether it's continuous or discrete).You can see the expected schedule type limits for the DefaultScheduleSet
here in ScheduleTypeRegistry.cpp:
// className, scheduleDisplayName, scheduleRelationshipName, isContinuous, unitType, lowerLimitValue, upperLimitValue;
{"DefaultScheduleSet","Hours of Operation","hoursofOperationSchedule",false,"Availability",0.0,1.0},
{"DefaultScheduleSet","Number of People","numberofPeopleSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","People Activity Level","peopleActivityLevelSchedule",true,"ActivityLevel",0.0,OptionalDouble()},
{"DefaultScheduleSet","Lighting","lightingSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Electric Equipment","electricEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Gas Equipment","gasEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Hot Water Equipment","hotWaterEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Infiltration","infiltrationSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Steam Equipment","steamEquipmentSchedule",true,"",0.0,1.0},
{"DefaultScheduleSet","Other Equipment","otherEquipmentSchedule",true,"",OptionalDouble(),OptionalDouble()},
So indeeed, none have a unitType == "Temperature"
If you're curious:
className
, scheduleDisplayName
) is done in class file, cf DefaultScheduleSet::getScheduleTypeKeysAnd if you need more proof, here's a demo using the ruby bindings:
I get a model, and retrieve a Temperature schedule.
[13] model(main)> sch = m.getScheduleRulesetByName("Medium Office Heating Setpoint Schedule").get
=> #<OpenStudio::Model::ScheduleRuleset:0x000055a9f1cf8398 @__swigtype__="_p_openstudio__model__ScheduleRuleset">
[9] model(main)> puts sch
OS:Schedule:Ruleset,
{fb99be89-78c9-4473-a724-c19078c7a311}, !- Handle
Medium Office Heating Setpoint Schedule, !- Name
{4d58c6f5-7a17-476e-8c71-4472d4190115}, !- Schedule Type Limits Name
{4201662b-b6bd-4cbb-98ec-b7e57b8406e0}, !- Default Day Schedule Name
, !- Summer Design Day Schedule Name
{8e5f2044-0cc5-4ff0-aeb6-0cbef560f87b}; !- Winter Design Day Schedule Name
=> nil
[14] model(main)> puts sch.scheduleTypeLimits.get
OS:ScheduleTypeLimits,
{4d58c6f5-7a17-476e-8c71-4472d4190115}, !- Handle
Temperature, !- Name
-60, !- Lower Limit Value
200, !- Upper Limit Value
CONTINUOUS, !- Numeric Type
Temperature; !- Unit Type
Now I create a DefaultScheduleSet and tries to assign this schedule to every slot in it:
[15] model(main)> d = DefaultScheduleSet.new(m)
Note: to get the list of methods d.methods.grep(/^set.*Schedule/i).each {|m| puts "d.#{m.to_s}(sch)"}
[16] model(main)> d.setHoursofOperationSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Hours of Operation=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[17] model(main)> d.setNumberofPeopleSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Number of People=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[18] model(main)> d.setPeopleActivityLevelSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule People Activity Level=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[19] model(main)> d.setLightingSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Lighting=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[20] model(main)> d.setElectricEquipmentSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Electric Equipment=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[21] model(main)> d.setGasEquipmentSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Gas Equipment=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[22] model(main)> d.setHotWaterEquipmentSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Hot Water Equipment=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[23] model(main)> d.setInfiltrationSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Infiltration=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[24] model(main)> d.setSteamEquipmentSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Steam Equipment=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits
=> false
[25] model(main)> d.setOtherEquipmentSchedule(sch)
[openstudio.model.ModelObject] <0> For Object of type 'OS:DefaultScheduleSet' and named 'Default Schedule Set 1' cannot set Schedule Other Equipment=Medium Office Heating Setpoint Schedule because it has an incompatible ScheduleTypeLimits