honeybee-openstudio 2.31.13 → 2.32.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/honeybee-openstudio.gemspec +1 -1
- data/lib/files/urbanopt_Gemfile +3 -3
- data/lib/from_openstudio/geometry/face.rb +11 -0
- data/lib/to_openstudio/geometry/face.rb +22 -3
- data/lib/to_openstudio/geometry/room.rb +5 -0
- data/lib/to_openstudio/schedule/ruleset.rb +38 -34
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1a0e49c9d5045c2b09cc0f0fbe3bd964fb4251e077eb2bd27db6bedcfcf39cd
|
4
|
+
data.tar.gz: 967f9557a5238c899c9af5214158b63f4bd9dff66074cc309bb4d3f9c59ee72a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf2aeec6148a31263db088720abf68dc914002d5fefb73c6ac24e599d79a148f763c4bda05d96eabaf9968ccb35519b707cb52febc84f3d7ffa8acb0924b27c6
|
7
|
+
data.tar.gz: 2ceb1977685d6b3b6fe4bc1edb69029906795d4a2f3541ecdb25226c3cc3068101c20b9dfa154a4795f5f490560717dad5e1230f41ff164fb235ba2415b4a353
|
data/honeybee-openstudio.gemspec
CHANGED
@@ -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.
|
7
|
+
spec.version = '2.32.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
|
|
data/lib/files/urbanopt_Gemfile
CHANGED
@@ -9,7 +9,7 @@ if allow_local && File.exist?('../openstudio-common-measures-gem')
|
|
9
9
|
elsif allow_local
|
10
10
|
gem 'openstudio-common-measures', github: 'NREL/openstudio-common-measures-gem', branch: 'develop'
|
11
11
|
else
|
12
|
-
gem 'openstudio-common-measures', '~> 0.6.
|
12
|
+
gem 'openstudio-common-measures', '~> 0.6.1'
|
13
13
|
end
|
14
14
|
|
15
15
|
if allow_local && File.exist?('../openstudio-model-articulation-gem')
|
@@ -25,7 +25,7 @@ if allow_local && File.exist?('../urbanopt-geojson-gem')
|
|
25
25
|
elsif allow_local
|
26
26
|
gem 'urbanopt-geojson', github: 'URBANopt/urbanopt-geojson-gem', branch: 'develop'
|
27
27
|
else
|
28
|
-
gem 'urbanopt-geojson', '~> 0.8.
|
28
|
+
gem 'urbanopt-geojson', '~> 0.8.1'
|
29
29
|
end
|
30
30
|
|
31
31
|
if allow_local && File.exist?('../urbanopt-reporting-gem')
|
@@ -33,7 +33,7 @@ if allow_local && File.exist?('../urbanopt-reporting-gem')
|
|
33
33
|
elsif allow_local
|
34
34
|
gem 'urbanopt-reporting', github: 'URBANopt/urbanopt-reporting-gem', branch: 'develop'
|
35
35
|
else
|
36
|
-
gem 'urbanopt-reporting', '~> 0.6.
|
36
|
+
gem 'urbanopt-reporting', '~> 0.6.1'
|
37
37
|
end
|
38
38
|
|
39
39
|
# include the honeybee-openstudio-gem
|
@@ -125,6 +125,17 @@ module Honeybee
|
|
125
125
|
result = {type: 'Ground'}
|
126
126
|
elsif surface_bc == 'Adiabatic'
|
127
127
|
result = {type: 'Adiabatic'}
|
128
|
+
elsif surface_bc == 'OtherSideCoefficients'
|
129
|
+
result = {type: 'OtherSideTemperature'}
|
130
|
+
unless surface.surfacePropertyOtherSideCoefficients.empty?
|
131
|
+
srf_prop = surface.surfacePropertyOtherSideCoefficients.get
|
132
|
+
if !srf_prop.isConstantTemperatureDefaulted
|
133
|
+
result[:temperature] = srf_prop.constantTemperature
|
134
|
+
end
|
135
|
+
unless srf_prop.combinedConvectiveRadiativeFilmCoefficient.empty?
|
136
|
+
result[:heat_transfer_coefficient] = srf_prop.combinedConvectiveRadiativeFilmCoefficient.get
|
137
|
+
end
|
138
|
+
end
|
128
139
|
else
|
129
140
|
sun_exposure = (surface.sunExposure == 'SunExposed')
|
130
141
|
wind_exposure = (surface.windExposure == 'WindExposed')
|
@@ -103,7 +103,7 @@ module Honeybee
|
|
103
103
|
end
|
104
104
|
|
105
105
|
# assign the boundary condition
|
106
|
-
boundary_condition =
|
106
|
+
boundary_condition = @hash[:boundary_condition][:type]
|
107
107
|
case boundary_condition
|
108
108
|
when 'Outdoors'
|
109
109
|
if @hash[:boundary_condition][:sun_exposure] == false
|
@@ -129,9 +129,28 @@ module Honeybee
|
|
129
129
|
surface = surface_object.get
|
130
130
|
os_surface.setAdjacentSurface(surface)
|
131
131
|
end
|
132
|
+
when 'OtherSideTemperature'
|
133
|
+
srf_prop = OpenStudio::Model::SurfacePropertyOtherSideCoefficients.new(openstudio_model)
|
134
|
+
srf_prop.setName(@hash[:identifier] + '_OtherTemp')
|
135
|
+
if @hash[:boundary_condition][:heat_transfer_coefficient].is_a? Numeric
|
136
|
+
srf_prop.setCombinedConvectiveRadiativeFilmCoefficient(
|
137
|
+
@hash[:boundary_condition][:heat_transfer_coefficient])
|
138
|
+
else
|
139
|
+
srf_prop.setCombinedConvectiveRadiativeFilmCoefficient(0)
|
140
|
+
end
|
141
|
+
if @hash[:boundary_condition][:temperature].is_a? Numeric
|
142
|
+
srf_prop.setConstantTemperature(@hash[:boundary_condition][:temperature])
|
143
|
+
srf_prop.setConstantTemperatureCoefficient(1)
|
144
|
+
srf_prop.setExternalDryBulbTemperatureCoefficient(0)
|
145
|
+
else
|
146
|
+
srf_prop.setConstantTemperatureCoefficient(0)
|
147
|
+
srf_prop.setExternalDryBulbTemperatureCoefficient(1)
|
148
|
+
end
|
149
|
+
os_surface.setSurfacePropertyOtherSideCoefficients(srf_prop)
|
132
150
|
end
|
133
|
-
|
134
|
-
|
151
|
+
|
152
|
+
unless boundary_condition == 'Surface' || boundary_condition == 'OtherSideTemperature'
|
153
|
+
os_surface.setOutsideBoundaryCondition(boundary_condition)
|
135
154
|
end
|
136
155
|
|
137
156
|
# assign apertures if they exist
|
@@ -211,6 +211,11 @@ module Honeybee
|
|
211
211
|
os_surface.setConstruction(interior_construction)
|
212
212
|
end
|
213
213
|
end
|
214
|
+
elsif face[:boundary_condition][:type] == 'OtherSideTemperature'
|
215
|
+
interior_construction = closest_interior_construction(openstudio_model, os_space, face[:face_type])
|
216
|
+
unless interior_construction.nil?
|
217
|
+
os_surface.setConstruction(interior_construction)
|
218
|
+
end
|
214
219
|
end
|
215
220
|
end
|
216
221
|
|
@@ -61,12 +61,16 @@ module Honeybee
|
|
61
61
|
end
|
62
62
|
|
63
63
|
# loop through day schedules and create openstudio schedule day object
|
64
|
+
day_schs = Hash.new
|
64
65
|
def_day_id = @hash[:default_day_schedule]
|
65
66
|
def_day_hash = nil
|
66
67
|
@hash[:day_schedules].each do |day_schedule|
|
67
68
|
if day_schedule[:identifier] != def_day_id
|
68
69
|
day_schedule_new = OpenStudio::Model::ScheduleDay.new(openstudio_model)
|
69
|
-
|
70
|
+
exist_sch = openstudio_model.getScheduleDayByName(day_schedule[:identifier])
|
71
|
+
if exist_sch.empty? # make sure we don't overwrite an existing schedule day
|
72
|
+
day_schedule_new.setName(day_schedule[:identifier])
|
73
|
+
end
|
70
74
|
unless @hash[:display_name].nil?
|
71
75
|
day_schedule_new.setDisplayName(@hash[:display_name])
|
72
76
|
end
|
@@ -81,53 +85,55 @@ module Honeybee
|
|
81
85
|
time_until = OpenStudio::Time.new(0, times_day_new[i][0], times_day_new[i][1], 0)
|
82
86
|
day_schedule_new.addValue(time_until, values_day_new[i])
|
83
87
|
end
|
88
|
+
day_schs[day_schedule[:identifier]] = day_schedule_new
|
84
89
|
else
|
85
90
|
def_day_hash = day_schedule
|
86
91
|
end
|
87
92
|
end
|
88
93
|
|
94
|
+
# assign default day schedule
|
95
|
+
def_day_sch = os_sch_ruleset.defaultDaySchedule
|
96
|
+
exist_sch = openstudio_model.getScheduleDayByName(def_day_id)
|
97
|
+
if exist_sch.empty? # make sure we don't overwrite an existing schedule day
|
98
|
+
def_day_sch.setName(def_day_id)
|
99
|
+
end
|
100
|
+
unless sch_type_limit_obj.nil?
|
101
|
+
def_day_sch.setScheduleTypeLimits(sch_type_limit_obj)
|
102
|
+
end
|
103
|
+
values_day_new = def_day_hash[:values]
|
104
|
+
times_day_new = def_day_hash[:times]
|
105
|
+
times_day_new.delete_at(0) # Remove [0, 0] from array at index 0.
|
106
|
+
times_day_new.push([24, 0]) # Add [24, 0] at index 0
|
107
|
+
values_day_new.each_index do |i|
|
108
|
+
time_until = OpenStudio::Time.new(0, times_day_new[i][0], times_day_new[i][1], 0)
|
109
|
+
def_day_sch.addValue(time_until, values_day_new[i])
|
110
|
+
end
|
111
|
+
day_schs[def_day_id] = def_day_sch
|
112
|
+
|
89
113
|
# assign holiday schedule
|
90
114
|
if @hash[:holiday_schedule]
|
91
|
-
holiday_schedule =
|
92
|
-
unless holiday_schedule.
|
93
|
-
|
94
|
-
os_sch_ruleset.setHolidaySchedule(holiday_schedule_object)
|
115
|
+
holiday_schedule = day_schs[@hash[:holiday_schedule]]
|
116
|
+
unless holiday_schedule.nil?
|
117
|
+
os_sch_ruleset.setHolidaySchedule(holiday_schedule)
|
95
118
|
end
|
96
119
|
end
|
97
120
|
|
98
121
|
# assign summer design day schedule
|
99
122
|
if @hash[:summer_designday_schedule]
|
100
|
-
summer_design_day =
|
101
|
-
unless summer_design_day.
|
102
|
-
|
103
|
-
os_sch_ruleset.setSummerDesignDaySchedule(summer_design_day_object)
|
123
|
+
summer_design_day = day_schs[@hash[:summer_designday_schedule]]
|
124
|
+
unless summer_design_day.nil?
|
125
|
+
os_sch_ruleset.setSummerDesignDaySchedule(summer_design_day)
|
104
126
|
end
|
105
127
|
end
|
106
128
|
|
107
129
|
# assign winter design day schedule
|
108
130
|
if @hash[:winter_designday_schedule]
|
109
|
-
winter_design_day =
|
110
|
-
unless winter_design_day.
|
111
|
-
|
112
|
-
os_sch_ruleset.setWinterDesignDaySchedule(winter_design_day_object)
|
131
|
+
winter_design_day = day_schs[@hash[:winter_designday_schedule]]
|
132
|
+
unless winter_design_day.nil?
|
133
|
+
os_sch_ruleset.setWinterDesignDaySchedule(winter_design_day)
|
113
134
|
end
|
114
135
|
end
|
115
136
|
|
116
|
-
# assign default day schedule
|
117
|
-
def_day_sch = os_sch_ruleset.defaultDaySchedule
|
118
|
-
def_day_sch.setName(def_day_id)
|
119
|
-
unless sch_type_limit_obj.nil?
|
120
|
-
def_day_sch.setScheduleTypeLimits(sch_type_limit_obj)
|
121
|
-
end
|
122
|
-
values_day_new = def_day_hash[:values]
|
123
|
-
times_day_new = def_day_hash[:times]
|
124
|
-
times_day_new.delete_at(0) # Remove [0, 0] from array at index 0.
|
125
|
-
times_day_new.push([24, 0]) # Add [24, 0] at index 0
|
126
|
-
values_day_new.each_index do |i|
|
127
|
-
time_until = OpenStudio::Time.new(0, times_day_new[i][0], times_day_new[i][1], 0)
|
128
|
-
def_day_sch.addValue(time_until, values_day_new[i])
|
129
|
-
end
|
130
|
-
|
131
137
|
# assign schedule rules
|
132
138
|
if @hash[:schedule_rules]
|
133
139
|
@hash[:schedule_rules].each do |rule|
|
@@ -145,12 +151,10 @@ module Honeybee
|
|
145
151
|
openstudio_schedule_rule.setStartDate(start_date)
|
146
152
|
openstudio_schedule_rule.setEndDate(end_date)
|
147
153
|
|
148
|
-
schedule_rule_day =
|
149
|
-
unless schedule_rule_day.
|
150
|
-
|
151
|
-
|
152
|
-
values_day = schedule_rule_day_object.values
|
153
|
-
times_day = schedule_rule_day_object.times
|
154
|
+
schedule_rule_day = day_schs[rule[:schedule_day]]
|
155
|
+
unless schedule_rule_day.nil?
|
156
|
+
values_day = schedule_rule_day.values
|
157
|
+
times_day = schedule_rule_day.times
|
154
158
|
|
155
159
|
values_day.each_index do |i|
|
156
160
|
openstudio_schedule_rule.daySchedule.addValue(times_day[i], values_day[i])
|
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.
|
4
|
+
version: 2.32.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tanushree Charan
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date: 2022-
|
14
|
+
date: 2022-09-09 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|