honeybee-openstudio 2.17.3 → 2.19.0
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/README.md +1 -2
- data/honeybee-openstudio.gemspec +1 -1
- data/lib/from_openstudio.rb +16 -0
- data/lib/from_openstudio/construction/air.rb +55 -0
- data/lib/from_openstudio/construction/opaque.rb +56 -0
- data/lib/from_openstudio/construction/shade.rb +82 -0
- data/lib/from_openstudio/construction/window.rb +56 -0
- data/lib/from_openstudio/geometry/aperture.rb +4 -1
- data/lib/from_openstudio/geometry/door.rb +6 -1
- data/lib/from_openstudio/geometry/face.rb +6 -3
- data/lib/from_openstudio/geometry/shade.rb +7 -1
- data/lib/from_openstudio/material/opaque_no_mass.rb +17 -12
- data/lib/from_openstudio/model.rb +73 -2
- data/lib/honeybee.rb +2 -1
- data/lib/honeybee/_defaults/model.json +277 -133
- data/lib/honeybee/internalmass.rb +42 -0
- data/lib/honeybee/material/opaque_no_mass.rb +1 -1
- data/lib/measures/from_honeybee_model/measure.rb +16 -0
- data/lib/to_openstudio.rb +2 -1
- data/lib/to_openstudio/construction/windowshade.rb +1 -1
- data/lib/to_openstudio/geometry/room.rb +11 -2
- data/lib/to_openstudio/internalmass.rb +56 -0
- data/lib/to_openstudio/model.rb +7 -0
- metadata +8 -2
@@ -0,0 +1,42 @@
|
|
1
|
+
# *******************************************************************************
|
2
|
+
# Honeybee OpenStudio Gem, Copyright (c) 2020, Alliance for Sustainable
|
3
|
+
# Energy, LLC, Ladybug Tools LLC and other contributors. All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# (1) Redistributions of source code must retain the above copyright notice,
|
9
|
+
# this list of conditions and the following disclaimer.
|
10
|
+
#
|
11
|
+
# (2) Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# (3) Neither the name of the copyright holder nor the names of any contributors
|
16
|
+
# may be used to endorse or promote products derived from this software without
|
17
|
+
# specific prior written permission from the respective party.
|
18
|
+
#
|
19
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS
|
20
|
+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
21
|
+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
22
|
+
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE
|
23
|
+
# UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF
|
24
|
+
# THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
25
|
+
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
26
|
+
# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
27
|
+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
28
|
+
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
29
|
+
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
30
|
+
# *******************************************************************************
|
31
|
+
|
32
|
+
require 'honeybee/model_object'
|
33
|
+
|
34
|
+
module Honeybee
|
35
|
+
class InternalMassAbridged < ModelObject
|
36
|
+
|
37
|
+
def defaults
|
38
|
+
@@schema[:components][:schemas][:InternalMassAbridged][:properties]
|
39
|
+
end
|
40
|
+
|
41
|
+
end #InternalMassAbridged
|
42
|
+
end #Honeybee
|
@@ -34,6 +34,9 @@
|
|
34
34
|
|
35
35
|
require 'to_openstudio'
|
36
36
|
|
37
|
+
require 'fileutils'
|
38
|
+
require 'pathname'
|
39
|
+
|
37
40
|
# start the measure
|
38
41
|
class FromHoneybeeModel < OpenStudio::Measure::ModelMeasure
|
39
42
|
# human readable name
|
@@ -96,6 +99,7 @@ class FromHoneybeeModel < OpenStudio::Measure::ModelMeasure
|
|
96
99
|
honeybee_model = Honeybee::Model.read_from_disk(model_json)
|
97
100
|
|
98
101
|
if schedule_csv_dir && !schedule_csv_dir.empty?
|
102
|
+
schedule_csv_dir = Pathname.new(schedule_csv_dir).cleanpath
|
99
103
|
if !Dir.exist?(schedule_csv_dir)
|
100
104
|
runner.registerError("Directory for exported CSV Schedules does not exist '#{schedule_csv_dir}'")
|
101
105
|
return false
|
@@ -106,6 +110,18 @@ class FromHoneybeeModel < OpenStudio::Measure::ModelMeasure
|
|
106
110
|
STDOUT.flush
|
107
111
|
honeybee_model.to_openstudio_model(model)
|
108
112
|
STDOUT.flush
|
113
|
+
|
114
|
+
generated_files_dir = "#{runner.workflow.absoluteRootDir}/generated_files"
|
115
|
+
if schedule_csv_dir && !schedule_csv_dir.empty?
|
116
|
+
if Dir.exist?(schedule_csv_dir)
|
117
|
+
runner.registerInfo("Copying exported schedules from '#{schedule_csv_dir}' to '#{generated_files_dir}'")
|
118
|
+
FileUtils.mkdir_p(generated_files_dir)
|
119
|
+
Dir.glob("#{schedule_csv_dir}/*.csv").each do |file|
|
120
|
+
FileUtils.cp(file, generated_files_dir)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
109
125
|
return true
|
110
126
|
end
|
111
127
|
end
|
data/lib/to_openstudio.rb
CHANGED
@@ -84,10 +84,11 @@ require 'to_openstudio/schedule/type_limit'
|
|
84
84
|
require 'to_openstudio/schedule/fixed_interval'
|
85
85
|
require 'to_openstudio/schedule/ruleset'
|
86
86
|
|
87
|
-
# import the ventilation objects
|
87
|
+
# import the ventilation and internal mass objects
|
88
88
|
require 'to_openstudio/ventcool/control'
|
89
89
|
require 'to_openstudio/ventcool/opening'
|
90
90
|
require 'to_openstudio/ventcool/simulation'
|
91
|
+
require 'to_openstudio/internalmass'
|
91
92
|
|
92
93
|
# extend the simulation objects
|
93
94
|
require 'to_openstudio/simulation/design_day'
|
@@ -45,7 +45,7 @@ module Honeybee
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def to_openstudio(openstudio_model)
|
48
|
-
# write the shaded and unsaded versions of the
|
48
|
+
# write the shaded and unsaded versions of the construction into the model
|
49
49
|
# reverse the shaded and unshaded identifiers so unshaded one is assigned to apertures
|
50
50
|
unshd_id = @hash[:identifier]
|
51
51
|
shd_id = @hash[:window_construction][:identifier]
|
@@ -180,7 +180,7 @@ module Honeybee
|
|
180
180
|
|
181
181
|
if !face[:properties][:energy][:construction]
|
182
182
|
if face[:boundary_condition][:type] == 'Adiabatic'
|
183
|
-
# assign default interior
|
183
|
+
# assign default interior construction for Adiabatic Faces
|
184
184
|
if face[:face_type] != 'Wall'
|
185
185
|
interior_construction = closest_interior_construction(openstudio_model, os_space, face[:face_type])
|
186
186
|
unless interior_construction.nil?
|
@@ -188,7 +188,7 @@ module Honeybee
|
|
188
188
|
end
|
189
189
|
end
|
190
190
|
elsif face[:face_type] == 'AirBoundary'
|
191
|
-
# assign default air boundary
|
191
|
+
# assign default air boundary construction for AirBoundary face types
|
192
192
|
air_construction = closest_air_construction(openstudio_model, os_space)
|
193
193
|
unless air_construction.nil?
|
194
194
|
os_surface.setConstruction(air_construction)
|
@@ -362,6 +362,15 @@ module Honeybee
|
|
362
362
|
end
|
363
363
|
end
|
364
364
|
|
365
|
+
# assign any internal masses if specified
|
366
|
+
if @hash[:properties][:energy][:internal_masses]
|
367
|
+
@hash[:properties][:energy][:internal_masses].each do |int_mass|
|
368
|
+
hb_int_mass = InternalMassAbridged.new(int_mass)
|
369
|
+
os_int_mass = hb_int_mass.to_openstudio(openstudio_model, os_space)
|
370
|
+
os_int_mass.setSpace(os_space)
|
371
|
+
end
|
372
|
+
end
|
373
|
+
|
365
374
|
os_space
|
366
375
|
end
|
367
376
|
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# *******************************************************************************
|
2
|
+
# Honeybee OpenStudio Gem, Copyright (c) 2020, Alliance for Sustainable
|
3
|
+
# Energy, LLC, Ladybug Tools LLC and other contributors. All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# (1) Redistributions of source code must retain the above copyright notice,
|
9
|
+
# this list of conditions and the following disclaimer.
|
10
|
+
#
|
11
|
+
# (2) Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# (3) Neither the name of the copyright holder nor the names of any contributors
|
16
|
+
# may be used to endorse or promote products derived from this software without
|
17
|
+
# specific prior written permission from the respective party.
|
18
|
+
#
|
19
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS
|
20
|
+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
21
|
+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
22
|
+
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE
|
23
|
+
# UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF
|
24
|
+
# THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
25
|
+
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
26
|
+
# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
27
|
+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
28
|
+
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
29
|
+
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
30
|
+
# *******************************************************************************
|
31
|
+
|
32
|
+
require 'to_openstudio/model_object'
|
33
|
+
|
34
|
+
module Honeybee
|
35
|
+
class InternalMassAbridged
|
36
|
+
|
37
|
+
def to_openstudio(openstudio_model, parent)
|
38
|
+
# create the internal mass definition and set properties
|
39
|
+
os_mass_def = OpenStudio::Model::InternalMassDefinition.new(openstudio_model)
|
40
|
+
os_mass_def.setName(@hash[:identifier] + '::' + parent.name.get)
|
41
|
+
os_mass_def.setSurfaceArea(@hash[:area])
|
42
|
+
construction = openstudio_model.getConstructionByName(@hash[:construction])
|
43
|
+
unless construction.empty?
|
44
|
+
os_construction = construction.get
|
45
|
+
os_mass_def.setConstruction(os_construction)
|
46
|
+
end
|
47
|
+
|
48
|
+
# assign the internal mass definition to an internal mass object
|
49
|
+
os_mass = OpenStudio::Model::InternalMass.new(os_mass_def)
|
50
|
+
os_mass.setName(@hash[:identifier] + '::' + parent.name.get)
|
51
|
+
|
52
|
+
os_mass
|
53
|
+
end
|
54
|
+
|
55
|
+
end #InternalMassAbridged
|
56
|
+
end #Honeybee
|
data/lib/to_openstudio/model.rb
CHANGED
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.19.0
|
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: 2021-
|
14
|
+
date: 2021-06-15 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|
@@ -168,6 +168,10 @@ files:
|
|
168
168
|
- lib/files/reopt_assumptions.json
|
169
169
|
- lib/files/urbanopt_Gemfile
|
170
170
|
- lib/from_openstudio.rb
|
171
|
+
- lib/from_openstudio/construction/air.rb
|
172
|
+
- lib/from_openstudio/construction/opaque.rb
|
173
|
+
- lib/from_openstudio/construction/shade.rb
|
174
|
+
- lib/from_openstudio/construction/window.rb
|
171
175
|
- lib/from_openstudio/geometry/aperture.rb
|
172
176
|
- lib/from_openstudio/geometry/door.rb
|
173
177
|
- lib/from_openstudio/geometry/face.rb
|
@@ -204,6 +208,7 @@ files:
|
|
204
208
|
- lib/honeybee/geometry/shade.rb
|
205
209
|
- lib/honeybee/hvac/ideal_air.rb
|
206
210
|
- lib/honeybee/hvac/template.rb
|
211
|
+
- lib/honeybee/internalmass.rb
|
207
212
|
- lib/honeybee/load/daylight.rb
|
208
213
|
- lib/honeybee/load/electric_equipment.rb
|
209
214
|
- lib/honeybee/load/gas_equipment.rb
|
@@ -281,6 +286,7 @@ files:
|
|
281
286
|
- lib/to_openstudio/hvac/Model.hvac.rb
|
282
287
|
- lib/to_openstudio/hvac/ideal_air.rb
|
283
288
|
- lib/to_openstudio/hvac/template.rb
|
289
|
+
- lib/to_openstudio/internalmass.rb
|
284
290
|
- lib/to_openstudio/load/daylight.rb
|
285
291
|
- lib/to_openstudio/load/electric_equipment.rb
|
286
292
|
- lib/to_openstudio/load/gas_equipment.rb
|