honeybee-openstudio 2.23.0 → 2.23.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8b1713bd43ce02933e6b62917cfd588f51b34474ab42cc964fac0707892ef6cb
4
- data.tar.gz: 1b63c7e6ef5ef775b1c6312170fc11cb2117685141e6e6c00d39bc14a4dcb7e9
3
+ metadata.gz: f5b611d0b78befb14bd1968ad3bc09479295c7367265049523c28ef3b3e3feeb
4
+ data.tar.gz: 6630478417dcc8d8680339b3d673b857ac6e0593152310213a3dc9c6eb227914
5
5
  SHA512:
6
- metadata.gz: b2ce15cb4c8761569e16fae90f1a378a34d4a662abe027458714ed2c11004e84d833dec91ab7795d14d019ada20803a96969ac08c9eb0e8b8f9f725d60911fd5
7
- data.tar.gz: 2ed1a4870310d697989c9af03079522af38459cba61280b2053e8b2e59cade74318e5ec43380ca85512ec74258d02b2f13305206c2a3a24e97395de428a95266
6
+ metadata.gz: 549cb01585b8b2983b5d5014703325bf87a83db1cc600c4f4ed557a501d998cc5e2632970a7d58d0c75d7a34234a11befbe2eb27c49c085303d25708040c794a
7
+ data.tar.gz: 16c6ed67bb2a2a8a5e83fe63641dee6db8df13a855103149565a4d476e0746c02a7837d12307f45ad67fe77854d2c572fcd39323434be5338395e27bb98f36a5
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'honeybee-openstudio'
7
- spec.version = '2.23.0'
7
+ spec.version = '2.23.1'
8
8
  spec.authors = ['Tanushree Charan', 'Dan Macumber', 'Chris Mackey', 'Mostapha Sadeghipour Roudsari']
9
9
  spec.email = ['tanushree.charan@nrel.gov', 'chris@ladybug.tools']
10
10
 
@@ -128,14 +128,10 @@ module Honeybee
128
128
  def self.energy_properties_from_model(openstudio_model)
129
129
  hash = {}
130
130
  hash[:type] = 'ModelEnergyProperties'
131
- hash[:constructions] = []
132
131
  hash[:constructions] = constructions_from_model(openstudio_model)
133
132
  hash[:materials] = materials_from_model(openstudio_model)
134
- hash[:construction_sets] = []
135
133
  hash[:construction_sets] = constructionsets_from_model(openstudio_model)
136
- hash[:schedule_type_limits] = []
137
134
  hash[:schedule_type_limits] = schedtypelimits_from_model(openstudio_model)
138
- hash[:schedules] = []
139
135
  hash[:schedules] = scheduleruleset_from_model(openstudio_model)
140
136
 
141
137
  hash
@@ -39,23 +39,49 @@ module Honeybee
39
39
  # create an empty hash
40
40
  hash = {}
41
41
  hash[:type] = 'ScheduleRulesetAbridged'
42
- # set hash values from OpenStudio Object
43
- hash[:identifier] = schedule_ruleset.nameString
44
- # check if boost optional object is empty
45
- hash[:default_day_schedule] = schedule_ruleset.defaultDaySchedule.nameString
46
- hash[:summer_designday_schedule] = schedule_ruleset.summerDesignDaySchedule.nameString
47
- hash[:winter_designday_schedule] = schedule_ruleset.winterDesignDaySchedule.nameString
48
- hash[:holiday_schedule] = schedule_ruleset.holidaySchedule.nameString
42
+ # set the primary (required) day schedules of the object
43
+ hash[:identifier] = clean_name(schedule_ruleset.nameString)
44
+ hash[:default_day_schedule] = clean_name(schedule_ruleset.defaultDaySchedule.nameString)
45
+ hash[:summer_designday_schedule] = clean_name(schedule_ruleset.summerDesignDaySchedule.nameString)
46
+ hash[:winter_designday_schedule] = clean_name(schedule_ruleset.winterDesignDaySchedule.nameString)
47
+ hash[:holiday_schedule] = clean_name(schedule_ruleset.holidaySchedule.nameString)
49
48
 
50
- schedule_days = [schedule_ruleset.defaultDaySchedule, schedule_ruleset.summerDesignDaySchedule, schedule_ruleset.winterDesignDaySchedule, schedule_ruleset.holidaySchedule]
51
- hash[:day_schedules] = []
52
- schedule_days.each do |schedule_day|
53
- hash[:day_schedules] << ScheduleRulesetAbridged.from_day_schedule(schedule_day)
49
+ # create a list of all day schedules referenced in the Ruleset
50
+ schedule_days, day_ids = [], []
51
+ required_days = [
52
+ schedule_ruleset.defaultDaySchedule,
53
+ schedule_ruleset.summerDesignDaySchedule,
54
+ schedule_ruleset.winterDesignDaySchedule,
55
+ schedule_ruleset.holidaySchedule
56
+ ]
57
+ required_days.each do |day_sch|
58
+ unless day_ids.include? day_sch.nameString
59
+ schedule_days << day_sch
60
+ day_ids << day_sch.nameString
61
+ end
54
62
  end
55
63
 
64
+ # loop through the rules and add them along with their day schedules
56
65
  hash[:schedule_rules] = []
57
66
  schedule_ruleset.scheduleRules.each do |schedule_rule|
58
67
  hash[:schedule_rules] << ScheduleRulesetAbridged.from_schedule_rule(schedule_rule)
68
+ day_sch = schedule_rule.daySchedule
69
+ unless day_ids.include? day_sch.nameString
70
+ schedule_days << day_sch
71
+ day_ids << day_sch.nameString
72
+ end
73
+ end
74
+
75
+ # write all of the day schedule specifications into the hash
76
+ hash[:day_schedules] = []
77
+ schedule_days.each do |schedule_day|
78
+ hash[:day_schedules] << ScheduleRulesetAbridged.from_day_schedule(schedule_day)
79
+ end
80
+
81
+ # assing any schedule type limits if they exist
82
+ unless schedule_ruleset.scheduleTypeLimits.empty?
83
+ typ_lim = schedule_ruleset.scheduleTypeLimits.get
84
+ hash[:schedule_type_limit] = clean_name(typ_lim.nameString)
59
85
  end
60
86
 
61
87
  hash
@@ -64,7 +90,7 @@ module Honeybee
64
90
  def self.from_day_schedule(day_schedule)
65
91
  hash = {}
66
92
  hash[:type] = 'ScheduleDay'
67
- hash[:identifier] = day_schedule.nameString
93
+ hash[:identifier] = clean_name(day_schedule.nameString)
68
94
  hash[:interpolate] = day_schedule.interpolatetoTimestep
69
95
  hash[:values] = day_schedule.values
70
96
  time_until = [[0,0]]
@@ -80,7 +106,7 @@ module Honeybee
80
106
  def self.from_schedule_rule(schedule_rule)
81
107
  hash = {}
82
108
  hash[:type] = 'ScheduleRuleAbridged'
83
- hash[:schedule_day] = schedule_rule.daySchedule.nameString
109
+ hash[:schedule_day] = clean_name(schedule_rule.daySchedule.nameString)
84
110
  hash[:apply_sunday] = schedule_rule.applySunday
85
111
  hash[:apply_monday] = schedule_rule.applyMonday
86
112
  hash[:apply_tuesday] = schedule_rule.applyTuesday
@@ -40,7 +40,7 @@ module Honeybee
40
40
  hash = {}
41
41
  hash[:type] = 'ScheduleTypeLimit'
42
42
  # set hash values from OpenStudio Object
43
- hash[:identifier] = schedule_type_limit.nameString
43
+ hash[:identifier] = clean_name(schedule_type_limit.nameString)
44
44
  # check if boost optional object is empty
45
45
  unless schedule_type_limit.lowerLimitValue.empty?
46
46
  hash[:lower_limit] = schedule_type_limit.lowerLimitValue.get
@@ -54,7 +54,19 @@ module Honeybee
54
54
  numeric_type = schedule_type_limit.numericType.get
55
55
  hash[:numeric_type] = numeric_type.titleize
56
56
  end
57
- hash[:unit_type] = schedule_type_limit.unitType
57
+
58
+ # make sure unit type always follows the capitalization of the Honeybee Enumeration
59
+ unit_type = schedule_type_limit.unitType.titleize
60
+ if unit_type == 'Deltatemperature'
61
+ unit_type = 'DeltaTemperature'
62
+ elsif unit_type == 'Precipitationrate'
63
+ unit_type = 'PrecipitationRate'
64
+ elsif unit_type == 'Convectioncoefficient'
65
+ unit_type = 'ConvectionCoefficient'
66
+ elsif unit_type == 'Activitylevel'
67
+ unit_type = 'ActivityLevel'
68
+ end
69
+ hash[:unit_type] = unit_type
58
70
 
59
71
  hash
60
72
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honeybee-openstudio
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.23.0
4
+ version: 2.23.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tanushree Charan