honeybee-openstudio 2.17.5 → 2.18.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/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/shade.rb +7 -1
- data/lib/from_openstudio/material/opaque_no_mass.rb +17 -12
- data/lib/from_openstudio/model.rb +65 -2
- data/lib/honeybee/_defaults/model.json +123 -127
- data/lib/honeybee/material/opaque_no_mass.rb +1 -1
- data/lib/to_openstudio/construction/windowshade.rb +1 -1
- data/lib/to_openstudio/geometry/room.rb +2 -2
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe82ab879bf620ce30c665948e97a2b078e8b3c5899cbecea1ae0cc0b319c80e
|
4
|
+
data.tar.gz: c86bad1a3e7fe7a0c7e8ccbe2900774a561a46056dae0450ed2998d2e29213b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a86ca8992989da3f1f4a5642b55ece1c920e0378a82d8bf55e6362546375cc9fb66f1d0d4e69e74c3803678a77c168b87b733f58a2851b2eafebac0db4386190
|
7
|
+
data.tar.gz: 67740da44c34b3408f248a7be3d6a02fb1c9c76524dec2a7cf9fda9755ee923baa443f5f65b136c0d0fcb4d7ca956a8ffe9130715b1369f3413a7534ad34f88f
|
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.18.0'
|
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/from_openstudio.rb
CHANGED
@@ -43,6 +43,22 @@ require 'from_openstudio/geometry/face'
|
|
43
43
|
require 'from_openstudio/geometry/room'
|
44
44
|
require 'from_openstudio/geometry/shade'
|
45
45
|
|
46
|
+
# extend the construction objects
|
47
|
+
require 'from_openstudio/construction/opaque'
|
48
|
+
require 'from_openstudio/construction/window'
|
49
|
+
require 'from_openstudio/construction/shade'
|
50
|
+
require 'from_openstudio/construction/air'
|
51
|
+
|
52
|
+
# import the material objects
|
53
|
+
require 'from_openstudio/material/opaque'
|
54
|
+
require 'from_openstudio/material/opaque_no_mass'
|
55
|
+
require 'from_openstudio/material/window_gas'
|
56
|
+
require 'from_openstudio/material/window_gas_mixture'
|
57
|
+
require 'from_openstudio/material/window_gas_custom'
|
58
|
+
require 'from_openstudio/material/window_blind'
|
59
|
+
require 'from_openstudio/material/window_glazing'
|
60
|
+
require 'from_openstudio/material/window_simpleglazsys'
|
61
|
+
|
46
62
|
# extend the simulation objects
|
47
63
|
require 'from_openstudio/simulation/design_day'
|
48
64
|
require 'from_openstudio/simulation/parameter_model'
|
@@ -0,0 +1,55 @@
|
|
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/construction/air'
|
33
|
+
require 'to_openstudio/model_object'
|
34
|
+
|
35
|
+
module Honeybee
|
36
|
+
class AirBoundaryConstructionAbridged < ModelObject
|
37
|
+
|
38
|
+
def self.from_construction(construction)
|
39
|
+
# create an empty hash
|
40
|
+
hash = {}
|
41
|
+
hash[:type] = 'AirBoundaryConstructionAbridged'
|
42
|
+
# set hash values from OpenStudio Object
|
43
|
+
hash[:identifier] = construction.nameString
|
44
|
+
# check if boost optional object is empty
|
45
|
+
unless construction.simpleMixingSchedule.empty?
|
46
|
+
schedule = construction.simpleMixingSchedule.get
|
47
|
+
hash[:air_mixing_schedule] = schedule.nameString
|
48
|
+
end
|
49
|
+
#TODO: Add air_mixing_per_area
|
50
|
+
|
51
|
+
hash
|
52
|
+
end
|
53
|
+
|
54
|
+
end # AirBoundaryConstructionAbridged
|
55
|
+
end # Honeybee
|
@@ -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 'honeybee/construction/opaque'
|
33
|
+
require 'to_openstudio/model_object'
|
34
|
+
|
35
|
+
module Honeybee
|
36
|
+
class OpaqueConstructionAbridged < ModelObject
|
37
|
+
|
38
|
+
def self.from_construction(construction)
|
39
|
+
# create an empty hash
|
40
|
+
hash = {}
|
41
|
+
hash[:type] = 'OpaqueConstructionAbridged'
|
42
|
+
# set hash values from OpenStudio Object
|
43
|
+
hash[:identifier] = construction.nameString
|
44
|
+
hash[:materials] = []
|
45
|
+
# get construction layers
|
46
|
+
layers = construction.layers
|
47
|
+
layers.each do |layer|
|
48
|
+
name = layer.nameString
|
49
|
+
hash[:materials] << name
|
50
|
+
end
|
51
|
+
|
52
|
+
hash
|
53
|
+
end
|
54
|
+
|
55
|
+
end # OpaqueConstructionAbridged
|
56
|
+
end # Honeybee
|
@@ -0,0 +1,82 @@
|
|
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/construction/shade'
|
33
|
+
require 'from_openstudio/model_object'
|
34
|
+
|
35
|
+
module Honeybee
|
36
|
+
class ShadeConstruction < ModelObject
|
37
|
+
|
38
|
+
def self.from_construction(construction)
|
39
|
+
# create an empty hash
|
40
|
+
hash = {}
|
41
|
+
hash[:type] = 'ShadeConstruction'
|
42
|
+
# set hash values from OpenStudio Object
|
43
|
+
hash[:identifier] = construction.nameString
|
44
|
+
# get outermost construction layers
|
45
|
+
layer = construction.layers[0]
|
46
|
+
if layer.to_StandardGlazing.is_initialized
|
47
|
+
layer = layer.to_StandardGlazing.get
|
48
|
+
hash[:is_specular] = true
|
49
|
+
# set reflectance properties from outermost layer
|
50
|
+
unless layer.frontSideSolarReflectanceatNormalIncidence.empty?
|
51
|
+
hash[:solar_reflectance] = layer.frontSideSolarReflectanceatNormalIncidence.get
|
52
|
+
end
|
53
|
+
unless layer.frontSideVisibleReflectanceatNormalIncidence.empty?
|
54
|
+
hash[:visible_reflectance] = layer.frontSideVisibleReflectanceatNormalIncidence.get
|
55
|
+
end
|
56
|
+
elsif layer.to_StandardOpaqueMaterial.is_initialized
|
57
|
+
layer = layer.to_StandardOpaqueMaterial.get
|
58
|
+
hash[:is_specular] = false
|
59
|
+
# set reflectance properties from outermost layer
|
60
|
+
unless layer.solarReflectance.empty?
|
61
|
+
hash[:solar_reflectance] = layer.solarReflectance.get
|
62
|
+
end
|
63
|
+
unless layer.visibleReflectance.empty?
|
64
|
+
hash[:visible_reflectance] = layer.visibleReflectance
|
65
|
+
end
|
66
|
+
elsif layer.to_MasslessOpaqueMaterial.is_initialized
|
67
|
+
layer = layer.to_MasslessOpaqueMaterial.get
|
68
|
+
hash[:is_specular] = false
|
69
|
+
# set reflectance properties from outermost layer
|
70
|
+
unless layer.solarAbsorptance.empty?
|
71
|
+
hash[:solar_reflectance] = 1 - layer.solarAbsorptance.get
|
72
|
+
end
|
73
|
+
unless layer.visibleAbsorptance.empty?
|
74
|
+
hash[:visible_reflectance] = 1 - layer.visibleAbsorptance.get
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
hash
|
79
|
+
end
|
80
|
+
|
81
|
+
end # ShadeConstruction
|
82
|
+
end # Honeybee
|
@@ -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 'honeybee/construction/window'
|
33
|
+
require 'to_openstudio/model_object'
|
34
|
+
|
35
|
+
module Honeybee
|
36
|
+
class WindowConstructionAbridged
|
37
|
+
|
38
|
+
def self.from_construction(construction)
|
39
|
+
# create an empty hash
|
40
|
+
hash = {}
|
41
|
+
hash[:type] = 'WindowConstructionAbridged'
|
42
|
+
# set hash values from OpenStudio Object
|
43
|
+
hash[:identifier] = construction.nameString
|
44
|
+
hash[:materials] = []
|
45
|
+
# get construction layers
|
46
|
+
layers = construction.layers
|
47
|
+
layers.each do |layer|
|
48
|
+
name = layer.nameString
|
49
|
+
hash[:materials] << name
|
50
|
+
end
|
51
|
+
|
52
|
+
hash
|
53
|
+
end
|
54
|
+
|
55
|
+
end # WindowConstructionAbridged
|
56
|
+
end # Honeybee
|
@@ -61,7 +61,13 @@ module Honeybee
|
|
61
61
|
|
62
62
|
construction = shading_surface.construction
|
63
63
|
if !construction.empty?
|
64
|
-
|
64
|
+
const_name = construction.get.nameString
|
65
|
+
hash[:construction] = const_name
|
66
|
+
unless $shade_construction.has_key?(const_name)
|
67
|
+
const_obj = construction.get
|
68
|
+
const = const_obj.to_LayeredConstruction.get
|
69
|
+
$shade_construction[const_name] = const
|
70
|
+
end
|
65
71
|
end
|
66
72
|
|
67
73
|
transmittance_schedule = shading_surface.transmittanceSchedule
|
@@ -42,18 +42,23 @@ module Honeybee
|
|
42
42
|
# set hash values from OpenStudio Object
|
43
43
|
hash[:identifier] = material.nameString
|
44
44
|
hash[:r_value] = material.thermalResistance
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
45
|
+
|
46
|
+
if material.to_MasslessOpaqueMaterial.is_initialized
|
47
|
+
# Roughness is a required property for OS MasslessOpaqueMaterial but isn't a listed
|
48
|
+
# property for OS AirGap
|
49
|
+
hash[:roughness] = material.roughness
|
50
|
+
# check if boost optional object is empty
|
51
|
+
unless material.thermalAbsorptance.empty?
|
52
|
+
hash[:thermal_absorptance] = material.thermalAbsorptance.get
|
53
|
+
end
|
54
|
+
# check if boost optional object is empty
|
55
|
+
unless material.solarAbsorptance.empty?
|
56
|
+
hash[:solar_absorptance] = material.solarAbsorptance.get
|
57
|
+
end
|
58
|
+
# check if boost optional object is empty
|
59
|
+
unless material.visibleAbsorptance.empty?
|
60
|
+
hash[:visible_absorptance] = material.visibleAbsorptance.get
|
61
|
+
end
|
57
62
|
end
|
58
63
|
|
59
64
|
hash
|
@@ -41,6 +41,10 @@ require 'from_openstudio/material/window_blind'
|
|
41
41
|
require 'from_openstudio/material/window_gas'
|
42
42
|
require 'from_openstudio/material/window_gas_custom'
|
43
43
|
require 'from_openstudio/material/window_gas_mixture'
|
44
|
+
require 'from_openstudio/construction/air'
|
45
|
+
require 'from_openstudio/construction/opaque'
|
46
|
+
require 'from_openstudio/construction/window'
|
47
|
+
require 'from_openstudio/construction/shade'
|
44
48
|
|
45
49
|
require 'openstudio'
|
46
50
|
|
@@ -57,6 +61,8 @@ module Honeybee
|
|
57
61
|
hash[:tolerance] = 0.01
|
58
62
|
hash[:angle_tolerance] = 1.0
|
59
63
|
|
64
|
+
# Hash for all shade constructions in the model
|
65
|
+
$shade_construction = {}
|
60
66
|
hash[:properties] = properties_from_model(openstudio_model)
|
61
67
|
|
62
68
|
rooms = rooms_from_model(openstudio_model)
|
@@ -65,6 +71,12 @@ module Honeybee
|
|
65
71
|
orphaned_shades = orphaned_shades_from_model(openstudio_model)
|
66
72
|
hash[:orphaned_shades] = orphaned_shades if !orphaned_shades.empty?
|
67
73
|
|
74
|
+
unless $shade_construction.empty?
|
75
|
+
shade_constructions_from_model($shade_construction).each do |shade_const|
|
76
|
+
hash[:properties][:energy][:constructions] << shade_const
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
68
80
|
Model.new(hash)
|
69
81
|
end
|
70
82
|
|
@@ -103,13 +115,17 @@ module Honeybee
|
|
103
115
|
def self.properties_from_model(openstudio_model)
|
104
116
|
hash = {}
|
105
117
|
hash[:type] = 'ModelProperties'
|
118
|
+
hash[:energy] = energy_properties_from_model(openstudio_model)
|
106
119
|
hash
|
107
120
|
end
|
108
121
|
|
109
122
|
def self.energy_properties_from_model(openstudio_model)
|
110
123
|
hash = {}
|
111
124
|
hash[:type] = 'ModelEnergyProperties'
|
112
|
-
hash[:
|
125
|
+
hash[:constructions] = []
|
126
|
+
hash[:constructions] = constructions_from_model(openstudio_model)
|
127
|
+
hash[:materials] = materials_from_model(openstudio_model)
|
128
|
+
|
113
129
|
hash
|
114
130
|
end
|
115
131
|
|
@@ -145,10 +161,17 @@ module Honeybee
|
|
145
161
|
openstudio_model.getStandardOpaqueMaterials.each do |material|
|
146
162
|
result << EnergyMaterial.from_material(material)
|
147
163
|
end
|
148
|
-
|
164
|
+
|
165
|
+
# Create HB EnergyMaterialNoMass from OpenStudio MasslessOpaque Materials
|
149
166
|
openstudio_model.getMasslessOpaqueMaterials.each do |material|
|
150
167
|
result << EnergyMaterialNoMass.from_material(material)
|
151
168
|
end
|
169
|
+
|
170
|
+
# Create HB EnergyMaterialNoMass from OpenStudio AirGap materials
|
171
|
+
openstudio_model.getAirGaps.each do|material|
|
172
|
+
result << EnergyMaterialNoMass.from_material(material)
|
173
|
+
end
|
174
|
+
|
152
175
|
# Create HB WindowMaterialSimpleGlazSys from OpenStudio Material
|
153
176
|
openstudio_model.getSimpleGlazings.each do |material|
|
154
177
|
result << EnergyWindowMaterialSimpleGlazSys.from_material(material)
|
@@ -178,5 +201,45 @@ module Honeybee
|
|
178
201
|
result
|
179
202
|
end
|
180
203
|
|
204
|
+
# Create HB Construction from OpenStudio Materials
|
205
|
+
def self.constructions_from_model(openstudio_model)
|
206
|
+
result = []
|
207
|
+
|
208
|
+
# Create HB AirConstruction from OpenStudio Construction
|
209
|
+
openstudio_model.getConstructionAirBoundarys.each do |construction|
|
210
|
+
result << AirBoundaryConstructionAbridged.from_construction(construction)
|
211
|
+
end
|
212
|
+
|
213
|
+
# Create HB WindowConstruction from OpenStudio Construction
|
214
|
+
openstudio_model.getConstructions.each do |construction|
|
215
|
+
window_construction = false
|
216
|
+
opaque_construction = false
|
217
|
+
material = construction.layers[0]
|
218
|
+
if material.to_StandardGlazing.is_initialized or material.to_SimpleGlazing.is_initialized
|
219
|
+
window_construction = true
|
220
|
+
elsif material.to_StandardOpaqueMaterial.is_initialized or material.to_MasslessOpaqueMaterial.is_initialized
|
221
|
+
opaque_construction = true
|
222
|
+
end
|
223
|
+
if window_construction == true
|
224
|
+
result << WindowConstructionAbridged.from_construction(construction)
|
225
|
+
end
|
226
|
+
if opaque_construction == true
|
227
|
+
result << OpaqueConstructionAbridged.from_construction(construction)
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
result
|
232
|
+
end
|
233
|
+
|
234
|
+
def self.shade_constructions_from_model(shade_constructions)
|
235
|
+
result = []
|
236
|
+
|
237
|
+
shade_constructions.each do |key, value|
|
238
|
+
result << ShadeConstruction.from_construction(value)
|
239
|
+
end
|
240
|
+
|
241
|
+
result
|
242
|
+
end
|
243
|
+
|
181
244
|
end # Model
|
182
245
|
end # Honeybee
|