honeybee-openstudio 2.6.9 → 2.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/pull_request.yaml +25 -0
  3. data/.gitignore +1 -0
  4. data/README.md +5 -5
  5. data/Rakefile +2 -7
  6. data/doc_templates/README.md.erb +42 -0
  7. data/doc_templates/copyright_erb.txt +2 -2
  8. data/doc_templates/copyright_ruby.txt +2 -2
  9. data/honeybee-openstudio.gemspec +11 -7
  10. data/lib/files/Honeybee.rb +7 -7
  11. data/lib/from_openstudio.rb +49 -0
  12. data/lib/from_openstudio/geometry/aperture.rb +136 -0
  13. data/lib/from_openstudio/geometry/door.rb +136 -0
  14. data/lib/from_openstudio/geometry/face.rb +174 -0
  15. data/lib/from_openstudio/geometry/room.rb +121 -0
  16. data/lib/from_openstudio/geometry/shade.rb +87 -0
  17. data/lib/from_openstudio/model.rb +123 -0
  18. data/lib/from_openstudio/model_object.rb +43 -0
  19. data/lib/from_openstudio/simulation/design_day.rb +123 -0
  20. data/lib/from_openstudio/simulation/parameter_model.rb +93 -0
  21. data/lib/from_openstudio/simulation/simulation_output.rb +67 -0
  22. data/lib/{from_honeybee.rb → honeybee.rb} +47 -40
  23. data/lib/{from_honeybee → honeybee}/_defaults/energy_default.json +0 -0
  24. data/lib/{from_honeybee → honeybee}/_defaults/model.json +0 -0
  25. data/lib/{from_honeybee → honeybee}/_defaults/simulation-parameter.json +1 -0
  26. data/lib/honeybee/construction/air.rb +42 -0
  27. data/lib/honeybee/construction/opaque.rb +42 -0
  28. data/lib/honeybee/construction/shade.rb +42 -0
  29. data/lib/honeybee/construction/window.rb +51 -0
  30. data/lib/honeybee/construction/windowshade.rb +43 -0
  31. data/lib/honeybee/construction_set.rb +42 -0
  32. data/lib/{from_honeybee → honeybee}/extension.rb +5 -5
  33. data/lib/honeybee/geometry/aperture.rb +42 -0
  34. data/lib/honeybee/geometry/door.rb +42 -0
  35. data/lib/honeybee/geometry/face.rb +48 -0
  36. data/lib/honeybee/geometry/room.rb +56 -0
  37. data/lib/honeybee/geometry/shade.rb +42 -0
  38. data/lib/honeybee/hvac/ideal_air.rb +42 -0
  39. data/lib/honeybee/hvac/template.rb +73 -0
  40. data/lib/honeybee/load/electric_equipment.rb +42 -0
  41. data/lib/honeybee/load/gas_equipment.rb +42 -0
  42. data/lib/honeybee/load/infiltration.rb +42 -0
  43. data/lib/{from_honeybee/simulation/extension.rb → honeybee/load/lighting.rb} +10 -13
  44. data/lib/honeybee/load/people.rb +42 -0
  45. data/lib/honeybee/load/setpoint_humidistat.rb +46 -0
  46. data/lib/honeybee/load/setpoint_thermostat.rb +46 -0
  47. data/lib/honeybee/load/ventilation.rb +42 -0
  48. data/lib/honeybee/material/opaque.rb +42 -0
  49. data/lib/honeybee/material/opaque_no_mass.rb +42 -0
  50. data/lib/honeybee/material/window_blind.rb +42 -0
  51. data/lib/honeybee/material/window_gas.rb +42 -0
  52. data/lib/honeybee/material/window_gas_custom.rb +42 -0
  53. data/lib/honeybee/material/window_gas_mixture.rb +42 -0
  54. data/lib/honeybee/material/window_glazing.rb +42 -0
  55. data/lib/honeybee/material/window_shade.rb +42 -0
  56. data/lib/honeybee/material/window_simpleglazsys.rb +42 -0
  57. data/lib/honeybee/model.rb +87 -0
  58. data/lib/{from_honeybee → honeybee}/model_object.rb +16 -18
  59. data/lib/honeybee/program_type.rb +56 -0
  60. data/lib/honeybee/schedule/fixed_interval.rb +42 -0
  61. data/lib/honeybee/schedule/ruleset.rb +42 -0
  62. data/lib/honeybee/schedule/type_limit.rb +42 -0
  63. data/lib/honeybee/simulation/design_day.rb +42 -0
  64. data/lib/honeybee/simulation/parameter_model.rb +86 -0
  65. data/lib/honeybee/simulation/simulation_output.rb +42 -0
  66. data/lib/honeybee/ventcool/control.rb +42 -0
  67. data/lib/honeybee/ventcool/opening.rb +46 -0
  68. data/lib/honeybee/ventcool/simulation.rb +42 -0
  69. data/lib/measures/from_honeybee_model/LICENSE.md +18 -22
  70. data/lib/measures/from_honeybee_model/measure.rb +4 -4
  71. data/lib/measures/from_honeybee_model/measure.xml +14 -37
  72. data/lib/measures/from_honeybee_model/tests/from_honeybee_model_test.rb +2 -2
  73. data/lib/measures/from_honeybee_simulation_parameter/LICENSE.md +18 -22
  74. data/lib/measures/from_honeybee_simulation_parameter/measure.rb +4 -4
  75. data/lib/measures/from_honeybee_simulation_parameter/measure.xml +15 -20
  76. data/lib/measures/from_honeybee_simulation_parameter/tests/from_honeybee_simulation_parameter_test.rb +3 -3
  77. data/lib/to_openstudio.rb +92 -0
  78. data/lib/{from_honeybee → to_openstudio}/construction/air.rb +7 -16
  79. data/lib/{from_honeybee → to_openstudio}/construction/opaque.rb +9 -19
  80. data/lib/{from_honeybee → to_openstudio}/construction/shade.rb +17 -26
  81. data/lib/{from_honeybee → to_openstudio}/construction/window.rb +12 -21
  82. data/lib/{from_honeybee → to_openstudio}/construction/windowshade.rb +8 -23
  83. data/lib/{from_honeybee → to_openstudio}/construction_set.rb +11 -23
  84. data/lib/{from_honeybee → to_openstudio}/geometry/aperture.rb +22 -32
  85. data/lib/{from_honeybee → to_openstudio}/geometry/door.rb +21 -31
  86. data/lib/{from_honeybee → to_openstudio}/geometry/face.rb +11 -28
  87. data/lib/{from_honeybee → to_openstudio}/geometry/room.rb +15 -38
  88. data/lib/{from_honeybee → to_openstudio}/geometry/shade.rb +8 -18
  89. data/lib/{from_honeybee → to_openstudio}/hvac/Model.hvac.rb +2 -2
  90. data/lib/{from_honeybee → to_openstudio}/hvac/ideal_air.rb +10 -19
  91. data/lib/{from_honeybee → to_openstudio}/hvac/template.rb +9 -43
  92. data/lib/{from_honeybee → to_openstudio}/load/electric_equipment.rb +12 -21
  93. data/lib/{from_honeybee → to_openstudio}/load/gas_equipment.rb +13 -22
  94. data/lib/{from_honeybee → to_openstudio}/load/infiltration.rb +14 -23
  95. data/lib/{from_honeybee → to_openstudio}/load/lighting.rb +10 -19
  96. data/lib/{from_honeybee → to_openstudio}/load/people.rb +9 -18
  97. data/lib/{from_honeybee → to_openstudio}/load/setpoint_humidistat.rb +8 -17
  98. data/lib/{from_honeybee → to_openstudio}/load/setpoint_thermostat.rb +8 -17
  99. data/lib/{from_honeybee → to_openstudio}/load/ventilation.rb +11 -20
  100. data/lib/{from_honeybee → to_openstudio}/material/opaque.rb +7 -16
  101. data/lib/{from_honeybee → to_openstudio}/material/opaque_no_mass.rb +8 -17
  102. data/lib/{from_honeybee → to_openstudio}/material/window_blind.rb +27 -36
  103. data/lib/{from_honeybee → to_openstudio}/material/window_gas.rb +8 -17
  104. data/lib/{from_honeybee → to_openstudio}/material/window_gas_custom.rb +10 -20
  105. data/lib/{from_honeybee → to_openstudio}/material/window_gas_mixture.rb +9 -18
  106. data/lib/{from_honeybee → to_openstudio}/material/window_glazing.rb +21 -30
  107. data/lib/{from_honeybee → to_openstudio}/material/window_shade.rb +17 -26
  108. data/lib/{from_honeybee → to_openstudio}/material/window_simpleglazsys.rb +7 -16
  109. data/lib/{from_honeybee → to_openstudio}/model.rb +13 -103
  110. data/lib/to_openstudio/model_object.rb +52 -0
  111. data/lib/{from_honeybee → to_openstudio}/program_type.rb +14 -34
  112. data/lib/{from_honeybee → to_openstudio}/schedule/fixed_interval.rb +11 -21
  113. data/lib/{from_honeybee → to_openstudio}/schedule/ruleset.rb +43 -44
  114. data/lib/{from_honeybee → to_openstudio}/schedule/type_limit.rb +9 -21
  115. data/lib/{from_honeybee/simulation/designday.rb → to_openstudio/simulation/design_day.rb} +7 -16
  116. data/lib/{from_honeybee/simulation/parameter.rb → to_openstudio/simulation/parameter_model.rb} +8 -57
  117. data/lib/{from_honeybee → to_openstudio}/ventcool/control.rb +8 -17
  118. data/lib/{from_honeybee → to_openstudio}/ventcool/opening.rb +8 -22
  119. data/lib/{from_honeybee → to_openstudio}/ventcool/simulation.rb +7 -16
  120. metadata +105 -134
@@ -1,7 +1,7 @@
1
1
  # *******************************************************************************
2
- # Honeybee OpenStudio Gem, Copyright (c) 2020, Alliance for Sustainable
2
+ # Honeybee OpenStudio Gem, Copyright (c) 2020, Alliance for Sustainable
3
3
  # Energy, LLC, Ladybug Tools LLC and other contributors. All rights reserved.
4
- #
4
+ #
5
5
  # Redistribution and use in source and binary forms, with or without
6
6
  # modification, are permitted provided that the following conditions are met:
7
7
  #
@@ -29,21 +29,12 @@
29
29
  # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
30
  # *******************************************************************************
31
31
 
32
- require 'from_honeybee/model_object'
33
-
34
- require 'openstudio'
32
+ require 'honeybee/material/window_glazing'
35
33
 
36
- module FromHoneybee
37
- class EnergyWindowMaterialGlazing < ModelObject
38
- attr_reader :errors, :warnings
34
+ require 'to_openstudio/model_object'
39
35
 
40
- def initialize(hash = {})
41
- super(hash)
42
- end
43
-
44
- def defaults
45
- @@schema[:components][:schemas][:EnergyWindowMaterialGlazing][:properties]
46
- end
36
+ module Honeybee
37
+ class EnergyWindowMaterialGlazing
47
38
 
48
39
  def find_existing_openstudio_object(openstudio_model)
49
40
  object = openstudio_model.getStandardGlazingByName(@hash[:identifier])
@@ -55,14 +46,14 @@ module FromHoneybee
55
46
  # create openstudio standard glazing object and set identifier
56
47
  os_glazing = OpenStudio::Model::StandardGlazing.new(openstudio_model)
57
48
  os_glazing.setName(@hash[:identifier])
58
-
49
+
59
50
  # assign thickness
60
51
  if @hash[:thickness]
61
52
  os_glazing.setThickness(@hash[:thickness])
62
53
  else
63
54
  os_glazing.setThickness(defaults[:thickness][:default])
64
55
  end
65
-
56
+
66
57
  # assign solar transmittance
67
58
  if @hash[:solar_transmittance]
68
59
  os_glazing.setSolarTransmittanceatNormalIncidence(@hash[:solar_transmittance])
@@ -70,7 +61,7 @@ module FromHoneybee
70
61
  os_glazing.setSolarTransmittanceatNormalIncidence(
71
62
  defaults[:solar_transmittance][:default])
72
63
  end
73
-
64
+
74
65
  # assign front solar reflectance
75
66
  if @hash[:solar_reflectance]
76
67
  os_glazing.setFrontSideSolarReflectanceatNormalIncidence(@hash[:solar_reflectance])
@@ -78,7 +69,7 @@ module FromHoneybee
78
69
  os_glazing.setFrontSideSolarReflectanceatNormalIncidence(
79
70
  defaults[:solar_reflectance][:default])
80
71
  end
81
-
72
+
82
73
  # assign back solar reflectance
83
74
  if @hash[:solar_reflectance_back]
84
75
  os_glazing.setBackSideSolarReflectanceatNormalIncidence(@hash[:solar_reflectance_back])
@@ -86,7 +77,7 @@ module FromHoneybee
86
77
  os_glazing.setBackSideSolarReflectanceatNormalIncidence(
87
78
  defaults[:solar_reflectance_back][:default])
88
79
  end
89
-
80
+
90
81
  # assign visible transmittance at normal incidence
91
82
  if @hash[:visible_transmittance]
92
83
  os_glazing.setVisibleTransmittanceatNormalIncidence(@hash[:visible_transmittance])
@@ -94,7 +85,7 @@ module FromHoneybee
94
85
  os_glazing.setVisibleTransmittanceatNormalIncidence(
95
86
  defaults[:visible_transmittance][:default])
96
87
  end
97
-
88
+
98
89
  # assign front side visible reflectance
99
90
  if @hash[:visible_reflectance]
100
91
  os_glazing.setFrontSideVisibleReflectanceatNormalIncidence(@hash[:visible_reflectance])
@@ -102,7 +93,7 @@ module FromHoneybee
102
93
  os_glazing.setFrontSideVisibleReflectanceatNormalIncidence(
103
94
  defaults[:visible_reflectance][:default])
104
95
  end
105
-
96
+
106
97
  # assign back side visible reflectance
107
98
  if @hash[:visible_reflectance_back]
108
99
  os_glazing.setBackSideVisibleReflectanceatNormalIncidence(@hash[:visible_reflectance_back])
@@ -110,7 +101,7 @@ module FromHoneybee
110
101
  os_glazing.setBackSideVisibleReflectanceatNormalIncidence(
111
102
  defaults[:visible_reflectance_back][:default])
112
103
  end
113
-
104
+
114
105
  # assign infrared transmittance
115
106
  if @hash[:infrared_transmittance]
116
107
  os_glazing.setInfraredTransmittanceatNormalIncidence(@hash[:infrared_transmittance])
@@ -118,15 +109,15 @@ module FromHoneybee
118
109
  os_glazing.setInfraredTransmittanceatNormalIncidence(
119
110
  defaults[:infrared_transmittance][:default])
120
111
  end
121
-
122
- # assign front side emissivity
112
+
113
+ # assign front side emissivity
123
114
  if @hash[:emissivity]
124
115
  os_glazing.setFrontSideInfraredHemisphericalEmissivity(@hash[:emissivity])
125
116
  else
126
117
  os_glazing.setFrontSideInfraredHemisphericalEmissivity(
127
118
  defaults[:emissivity][:default])
128
119
  end
129
-
120
+
130
121
  # assign back side emissivity
131
122
  if @hash[:emissivity_back]
132
123
  os_glazing.setBackSideInfraredHemisphericalEmissivity(@hash[:emissivity_back])
@@ -134,7 +125,7 @@ module FromHoneybee
134
125
  os_glazing.setBackSideInfraredHemisphericalEmissivity(
135
126
  defaults[:emissivity_back][:default])
136
127
  end
137
-
128
+
138
129
  # assign conductivity
139
130
  if @hash[:conductivity]
140
131
  os_glazing.setThermalConductivity(@hash[:conductivity])
@@ -142,7 +133,7 @@ module FromHoneybee
142
133
  os_glazing.setThermalConductivity(
143
134
  defaults[:conductivity_glass][:default])
144
135
  end
145
-
136
+
146
137
  # assign dirt correction
147
138
  if @hash[:dirt_correction]
148
139
  os_glazing.setDirtCorrectionFactorforSolarandVisibleTransmittance(@hash[:dirt_correction])
@@ -150,7 +141,7 @@ module FromHoneybee
150
141
  os_glazing.setDirtCorrectionFactorforSolarandVisibleTransmittance(
151
142
  defaults[:dirt_correction][:default])
152
143
  end
153
-
144
+
154
145
  # assign solar diffusing
155
146
  if @hash[:solar_diffusing] == false
156
147
  os_glazing.setSolarDiffusing(false)
@@ -163,4 +154,4 @@ module FromHoneybee
163
154
  os_glazing
164
155
  end
165
156
  end # EnergyWindowMaterialGlazing
166
- end # FromHoneybee
157
+ end # Honeybee
@@ -1,7 +1,7 @@
1
1
  # *******************************************************************************
2
- # Honeybee OpenStudio Gem, Copyright (c) 2020, Alliance for Sustainable
2
+ # Honeybee OpenStudio Gem, Copyright (c) 2020, Alliance for Sustainable
3
3
  # Energy, LLC, Ladybug Tools LLC and other contributors. All rights reserved.
4
- #
4
+ #
5
5
  # Redistribution and use in source and binary forms, with or without
6
6
  # modification, are permitted provided that the following conditions are met:
7
7
  #
@@ -29,21 +29,12 @@
29
29
  # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
30
  # *******************************************************************************
31
31
 
32
- require 'from_honeybee/model_object'
33
-
34
- require 'openstudio'
32
+ require 'honeybee/material/window_shade'
35
33
 
36
- module FromHoneybee
37
- class EnergyWindowMaterialShade < ModelObject
38
- attr_reader :errors, :warnings
39
-
40
- def initialize(hash)
41
- super(hash)
42
- end
34
+ require 'to_openstudio/model_object'
43
35
 
44
- def defaults
45
- @@schema[:components][:schemas][:EnergyWindowMaterialShade][:properties]
46
- end
36
+ module Honeybee
37
+ class EnergyWindowMaterialShade
47
38
 
48
39
  def find_existing_openstudio_object(openstudio_model)
49
40
  object = openstudio_model.getShadeByName(@hash[:identifier])
@@ -83,70 +74,70 @@ module FromHoneybee
83
74
  else
84
75
  os_shade_mat.setVisibleReflectance(defaults[:visible_reflectance][:default])
85
76
  end
86
-
77
+
87
78
  # assign emissivity
88
79
  if @hash[:emissivity]
89
80
  os_shade_mat.setThermalHemisphericalEmissivity(@hash[:emissivity])
90
81
  else
91
82
  os_shade_mat.setThermalHemisphericalEmissivity(defaults[:emissivity][:default])
92
83
  end
93
-
84
+
94
85
  # assign infrared transmittance
95
86
  if @hash[:infrared_transmittance]
96
87
  os_shade_mat.setThermalTransmittance(@hash[:infrared_transmittance])
97
88
  else
98
89
  os_shade_mat.setThermalTransmittance(defaults[:infrared_transmittance][:default])
99
90
  end
100
-
91
+
101
92
  # assign thickness
102
93
  if @hash[:thickness]
103
94
  os_shade_mat.setThickness(@hash[:thickness])
104
95
  else
105
96
  os_shade_mat.setThickness(defaults[:thickness][:default])
106
97
  end
107
-
98
+
108
99
  # assign conductivity
109
100
  if @hash[:conductivity]
110
101
  os_shade_mat.setConductivity(@hash[:conductivity])
111
102
  else
112
103
  os_shade_mat.setConductivity(defaults[:conductivity][:default])
113
104
  end
114
-
105
+
115
106
  # assign distance to glass
116
107
  if @hash[:distance_to_glass]
117
108
  os_shade_mat.setShadetoGlassDistance(@hash[:distance_to_glass])
118
109
  else
119
110
  os_shade_mat.setShadetoGlassDistance(defaults[:distance_to_glass][:default])
120
111
  end
121
-
112
+
122
113
  # assign top opening multiplier
123
114
  if @hash[:top_opening_multiplier]
124
115
  os_shade_mat.setTopOpeningMultiplier(@hash[:top_opening_multiplier])
125
116
  else
126
117
  os_shade_mat.setTopOpeningMultiplier(defaults[:top_opening_multiplier][:default])
127
118
  end
128
-
119
+
129
120
  # assign bottom opening multiplier
130
121
  if @hash[:bottom_opening_multiplier]
131
122
  os_shade_mat.setBottomOpeningMultiplier(@hash[:bottom_opening_multiplier])
132
123
  else
133
124
  os_shade_mat.setBottomOpeningMultiplier(defaults[:bottom_opening_multiplier][:default])
134
125
  end
135
-
126
+
136
127
  # assign left opening multiplier
137
128
  if @hash[:left_opening_multiplier]
138
129
  os_shade_mat.setLeftSideOpeningMultiplier(@hash[:left_opening_multiplier])
139
130
  else
140
131
  os_shade_mat.setLeftSideOpeningMultiplier(defaults[:left_opening_multiplier][:default])
141
132
  end
142
-
133
+
143
134
  # assign right opening muliplier
144
135
  if @hash[:right_opening_multiplier]
145
136
  os_shade_mat.setRightSideOpeningMultiplier(@hash[:right_opening_multiplier])
146
137
  else
147
138
  os_shade_mat.setRightSideOpeningMultiplier(defaults[:right_opening_multiplier][:default])
148
139
  end
149
-
140
+
150
141
  # assign airflow permeability
151
142
  if @hash[:airflow_permeability]
152
143
  os_shade_mat.setAirflowPermeability(@hash[:airflow_permeability])
@@ -157,4 +148,4 @@ module FromHoneybee
157
148
  os_shade_mat
158
149
  end
159
150
  end # EnergyWindowMaterialShade
160
- end # FromHoneybee
151
+ end # Honeybee
@@ -1,7 +1,7 @@
1
1
  # *******************************************************************************
2
- # Honeybee OpenStudio Gem, Copyright (c) 2020, Alliance for Sustainable
2
+ # Honeybee OpenStudio Gem, Copyright (c) 2020, Alliance for Sustainable
3
3
  # Energy, LLC, Ladybug Tools LLC and other contributors. All rights reserved.
4
- #
4
+ #
5
5
  # Redistribution and use in source and binary forms, with or without
6
6
  # modification, are permitted provided that the following conditions are met:
7
7
  #
@@ -29,21 +29,12 @@
29
29
  # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
30
  # *******************************************************************************
31
31
 
32
- require 'from_honeybee/model_object'
33
-
34
- require 'openstudio'
32
+ require 'honeybee/material/window_simpleglazsys'
35
33
 
36
- module FromHoneybee
37
- class EnergyWindowMaterialSimpleGlazSys < ModelObject
38
- attr_reader :errors, :warnings
34
+ require 'to_openstudio/model_object'
39
35
 
40
- def initialize(hash = {})
41
- super(hash)
42
- end
43
-
44
- def defaults
45
- @@schema[:components][:schemas][:EnergyWindowMaterialSimpleGlazSys][:properties]
46
- end
36
+ module Honeybee
37
+ class EnergyWindowMaterialSimpleGlazSys
47
38
 
48
39
  def find_existing_openstudio_object(openstudio_model)
49
40
  object = openstudio_model.getSimpleGlazingByName(@hash[:identifier])
@@ -70,4 +61,4 @@ module FromHoneybee
70
61
 
71
62
 
72
63
  end # EnergyWindowMaterialSimpleGlazSys
73
- end # FromHoneybee
64
+ end # Honeybee
@@ -1,7 +1,7 @@
1
1
  # *******************************************************************************
2
- # Honeybee OpenStudio Gem, Copyright (c) 2020, Alliance for Sustainable
2
+ # Honeybee OpenStudio Gem, Copyright (c) 2020, Alliance for Sustainable
3
3
  # Energy, LLC, Ladybug Tools LLC and other contributors. All rights reserved.
4
- #
4
+ #
5
5
  # Redistribution and use in source and binary forms, with or without
6
6
  # modification, are permitted provided that the following conditions are met:
7
7
  #
@@ -29,105 +29,15 @@
29
29
  # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
30
  # *******************************************************************************
31
31
 
32
- # import the core objects from which everything inherits
33
- require 'from_honeybee/extension'
34
- require 'from_honeybee/model_object'
35
-
36
- # import the compound objects that house the other objects
37
- require 'from_honeybee/construction_set'
38
- require 'from_honeybee/program_type'
39
-
40
- # import the geometry objects
41
- require 'from_honeybee/geometry/shade'
42
- require 'from_honeybee/geometry/door'
43
- require 'from_honeybee/geometry/aperture'
44
- require 'from_honeybee/geometry/face'
45
- require 'from_honeybee/geometry/room'
46
-
47
- # import the HVAC objects
48
- require 'from_honeybee/hvac/ideal_air'
49
- require 'from_honeybee/hvac/template'
50
-
51
- # import the construction objects
52
- require 'from_honeybee/construction/opaque'
53
- require 'from_honeybee/construction/window'
54
- require 'from_honeybee/construction/windowshade'
55
- require 'from_honeybee/construction/shade'
56
- require 'from_honeybee/construction/air'
57
-
58
- # import the material objects
59
- require 'from_honeybee/material/opaque'
60
- require 'from_honeybee/material/opaque_no_mass'
61
- require 'from_honeybee/material/window_gas'
62
- require 'from_honeybee/material/window_gas_mixture'
63
- require 'from_honeybee/material/window_gas_custom'
64
- require 'from_honeybee/material/window_blind'
65
- require 'from_honeybee/material/window_glazing'
66
- require 'from_honeybee/material/window_shade'
67
- require 'from_honeybee/material/window_simpleglazsys'
68
-
69
- # import the schedule objects
70
- require 'from_honeybee/schedule/type_limit'
71
- require 'from_honeybee/schedule/fixed_interval'
72
- require 'from_honeybee/schedule/ruleset'
73
-
74
- # import the load objects
75
- require 'from_honeybee/load/setpoint_thermostat'
76
- require 'from_honeybee/load/setpoint_humidistat'
77
-
78
- # import the ventilative cooling objects
79
- require 'from_honeybee/ventcool/simulation'
32
+ require 'honeybee/model'
80
33
 
81
34
  require 'openstudio'
82
35
 
83
-
84
- module FromHoneybee
36
+ module Honeybee
85
37
  class Model
86
- attr_reader :errors, :warnings
87
-
88
- # Read Ladybug Energy Model JSON from disk
89
- def self.read_from_disk(file)
90
- hash = nil
91
- File.open(File.join(file), 'r') do |f|
92
- hash = JSON.parse(f.read, symbolize_names: true)
93
- end
94
- Model.new(hash)
95
- end
96
38
 
97
- # Load ModelObject from symbolized hash
98
- def initialize(hash)
99
- # initialize class variable @@extension only once
100
- @@extension ||= Extension.new
101
- @@schema ||= @@extension.schema
102
- @@standards ||= @@extension.standards
103
-
104
- @hash = hash
105
- @type = @hash[:type]
106
- raise 'Unknown model type' if @type.nil?
107
- raise "Incorrect model type '#{@type}'" unless @type == 'Model'
108
- end
39
+ attr_reader :openstudio_model
109
40
 
110
- # check if the model is valid
111
- def valid?
112
- if Gem.loaded_specs.has_key?("json-schema")
113
- return validation_errors.empty?
114
- else
115
- return true
116
- end
117
- end
118
-
119
- # return detailed model validation errors
120
- def validation_errors
121
- if Gem.loaded_specs.has_key?("json-schema")
122
- require 'json-schema'
123
- JSON::Validator.fully_validate(@@schema, @hash)
124
- end
125
- end
126
-
127
- def defaults
128
- @@schema[:components][:schemas][:ModelEnergyProperties][:properties]
129
- end
130
-
131
41
  # convert to openstudio model, clears errors and warnings
132
42
  def to_openstudio_model(openstudio_model=nil, log_report=true)
133
43
  @errors = []
@@ -203,7 +113,7 @@ module FromHoneybee
203
113
  if @hash[:properties][:energy][:constructions]
204
114
  create_constructions(@hash[:properties][:energy][:constructions])
205
115
  end
206
-
116
+
207
117
  if log_report
208
118
  puts 'Translating ConstructionSets'
209
119
  end
@@ -450,7 +360,7 @@ module FromHoneybee
450
360
  @hash[:rooms].each do |room|
451
361
  room_object = Room.new(room)
452
362
  openstudio_room = room_object.to_openstudio(@openstudio_model)
453
-
363
+
454
364
  # for rooms with setpoint objects definied in the ProgramType, make a new thermostat
455
365
  if room[:properties][:energy][:program_type] && !room[:properties][:energy][:setpoint]
456
366
  thermal_zone = openstudio_room.thermalZone()
@@ -471,7 +381,7 @@ module FromHoneybee
471
381
  end
472
382
  end
473
383
  end
474
-
384
+
475
385
  # create mixing objects between Rooms
476
386
  $air_mxing_array.each do |air_mix_props|
477
387
  zone_mixing = OpenStudio::Model::ZoneMixing.new(air_mix_props[0])
@@ -549,7 +459,7 @@ module FromHoneybee
549
459
  end
550
460
  end
551
461
  end
552
- end
462
+ end
553
463
 
554
464
  def create_orphaned_shades
555
465
  if @hash[:orphaned_shades]
@@ -574,14 +484,14 @@ module FromHoneybee
574
484
  raise "Orphaned Apertures are not translatable to OpenStudio."
575
485
  end
576
486
  end
577
-
487
+
578
488
  def create_orphaned_doors
579
489
  if @hash[:orphaned_doors]
580
490
  raise "Orphaned Doors are not translatable to OpenStudio."
581
491
  end
582
492
  end
583
493
 
584
- #TODO: create runlog for errors.
585
-
494
+ #TODO: create runlog for errors.
495
+
586
496
  end # Model
587
- end # FromHoneybee
497
+ end # Honeybee