honeybee-openstudio 2.6.9 → 2.7.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/pull_request.yaml +25 -0
  3. data/.gitignore +1 -0
  4. data/Gemfile +1 -1
  5. data/README.md +5 -5
  6. data/Rakefile +2 -7
  7. data/doc_templates/README.md.erb +42 -0
  8. data/doc_templates/copyright_erb.txt +2 -2
  9. data/doc_templates/copyright_ruby.txt +2 -2
  10. data/honeybee-openstudio.gemspec +13 -9
  11. data/lib/files/Honeybee.rb +8 -8
  12. data/lib/files/urbanopt_Gemfile +14 -6
  13. data/lib/from_openstudio.rb +49 -0
  14. data/lib/from_openstudio/geometry/aperture.rb +136 -0
  15. data/lib/from_openstudio/geometry/door.rb +136 -0
  16. data/lib/from_openstudio/geometry/face.rb +174 -0
  17. data/lib/from_openstudio/geometry/room.rb +121 -0
  18. data/lib/from_openstudio/geometry/shade.rb +87 -0
  19. data/lib/from_openstudio/model.rb +123 -0
  20. data/lib/from_openstudio/model_object.rb +43 -0
  21. data/lib/from_openstudio/simulation/design_day.rb +123 -0
  22. data/lib/from_openstudio/simulation/parameter_model.rb +93 -0
  23. data/lib/from_openstudio/simulation/simulation_output.rb +67 -0
  24. data/lib/{from_honeybee.rb → honeybee.rb} +47 -40
  25. data/lib/{from_honeybee → honeybee}/_defaults/energy_default.json +0 -0
  26. data/lib/{from_honeybee → honeybee}/_defaults/model.json +0 -0
  27. data/lib/{from_honeybee → honeybee}/_defaults/simulation-parameter.json +1 -0
  28. data/lib/honeybee/construction/air.rb +42 -0
  29. data/lib/honeybee/construction/opaque.rb +42 -0
  30. data/lib/honeybee/construction/shade.rb +42 -0
  31. data/lib/honeybee/construction/window.rb +51 -0
  32. data/lib/honeybee/construction/windowshade.rb +43 -0
  33. data/lib/honeybee/construction_set.rb +42 -0
  34. data/lib/{from_honeybee → honeybee}/extension.rb +5 -5
  35. data/lib/honeybee/geometry/aperture.rb +42 -0
  36. data/lib/honeybee/geometry/door.rb +42 -0
  37. data/lib/honeybee/geometry/face.rb +48 -0
  38. data/lib/honeybee/geometry/room.rb +56 -0
  39. data/lib/honeybee/geometry/shade.rb +42 -0
  40. data/lib/honeybee/hvac/ideal_air.rb +42 -0
  41. data/lib/honeybee/hvac/template.rb +73 -0
  42. data/lib/honeybee/load/electric_equipment.rb +42 -0
  43. data/lib/honeybee/load/gas_equipment.rb +42 -0
  44. data/lib/honeybee/load/infiltration.rb +42 -0
  45. data/lib/{from_honeybee/simulation/extension.rb → honeybee/load/lighting.rb} +10 -13
  46. data/lib/honeybee/load/people.rb +42 -0
  47. data/lib/honeybee/load/setpoint_humidistat.rb +46 -0
  48. data/lib/honeybee/load/setpoint_thermostat.rb +46 -0
  49. data/lib/honeybee/load/ventilation.rb +42 -0
  50. data/lib/honeybee/material/opaque.rb +42 -0
  51. data/lib/honeybee/material/opaque_no_mass.rb +42 -0
  52. data/lib/honeybee/material/window_blind.rb +42 -0
  53. data/lib/honeybee/material/window_gas.rb +42 -0
  54. data/lib/honeybee/material/window_gas_custom.rb +42 -0
  55. data/lib/honeybee/material/window_gas_mixture.rb +42 -0
  56. data/lib/honeybee/material/window_glazing.rb +42 -0
  57. data/lib/honeybee/material/window_shade.rb +42 -0
  58. data/lib/honeybee/material/window_simpleglazsys.rb +42 -0
  59. data/lib/honeybee/model.rb +87 -0
  60. data/lib/{from_honeybee → honeybee}/model_object.rb +16 -18
  61. data/lib/honeybee/program_type.rb +56 -0
  62. data/lib/honeybee/schedule/fixed_interval.rb +42 -0
  63. data/lib/honeybee/schedule/ruleset.rb +42 -0
  64. data/lib/honeybee/schedule/type_limit.rb +42 -0
  65. data/lib/honeybee/simulation/design_day.rb +42 -0
  66. data/lib/honeybee/simulation/parameter_model.rb +86 -0
  67. data/lib/honeybee/simulation/simulation_output.rb +42 -0
  68. data/lib/honeybee/ventcool/control.rb +42 -0
  69. data/lib/honeybee/ventcool/opening.rb +46 -0
  70. data/lib/honeybee/ventcool/simulation.rb +42 -0
  71. data/lib/measures/from_honeybee_model/LICENSE.md +18 -22
  72. data/lib/measures/from_honeybee_model/measure.rb +4 -4
  73. data/lib/measures/from_honeybee_model/measure.xml +14 -37
  74. data/lib/measures/from_honeybee_model/tests/from_honeybee_model_test.rb +2 -2
  75. data/lib/measures/from_honeybee_simulation_parameter/LICENSE.md +18 -22
  76. data/lib/measures/from_honeybee_simulation_parameter/measure.rb +4 -4
  77. data/lib/measures/from_honeybee_simulation_parameter/measure.xml +15 -20
  78. data/lib/measures/from_honeybee_simulation_parameter/tests/from_honeybee_simulation_parameter_test.rb +3 -3
  79. data/lib/to_openstudio.rb +92 -0
  80. data/lib/{from_honeybee → to_openstudio}/construction/air.rb +7 -16
  81. data/lib/{from_honeybee → to_openstudio}/construction/opaque.rb +9 -19
  82. data/lib/{from_honeybee → to_openstudio}/construction/shade.rb +17 -26
  83. data/lib/{from_honeybee → to_openstudio}/construction/window.rb +12 -21
  84. data/lib/{from_honeybee → to_openstudio}/construction/windowshade.rb +8 -23
  85. data/lib/{from_honeybee → to_openstudio}/construction_set.rb +11 -23
  86. data/lib/{from_honeybee → to_openstudio}/geometry/aperture.rb +22 -32
  87. data/lib/{from_honeybee → to_openstudio}/geometry/door.rb +21 -31
  88. data/lib/{from_honeybee → to_openstudio}/geometry/face.rb +11 -28
  89. data/lib/{from_honeybee → to_openstudio}/geometry/room.rb +15 -38
  90. data/lib/{from_honeybee → to_openstudio}/geometry/shade.rb +8 -18
  91. data/lib/{from_honeybee → to_openstudio}/hvac/Model.hvac.rb +17 -11
  92. data/lib/{from_honeybee → to_openstudio}/hvac/ideal_air.rb +10 -19
  93. data/lib/{from_honeybee → to_openstudio}/hvac/template.rb +9 -43
  94. data/lib/{from_honeybee → to_openstudio}/load/electric_equipment.rb +12 -21
  95. data/lib/{from_honeybee → to_openstudio}/load/gas_equipment.rb +13 -22
  96. data/lib/{from_honeybee → to_openstudio}/load/infiltration.rb +14 -23
  97. data/lib/{from_honeybee → to_openstudio}/load/lighting.rb +10 -19
  98. data/lib/{from_honeybee → to_openstudio}/load/people.rb +9 -18
  99. data/lib/{from_honeybee → to_openstudio}/load/setpoint_humidistat.rb +8 -17
  100. data/lib/{from_honeybee → to_openstudio}/load/setpoint_thermostat.rb +8 -17
  101. data/lib/{from_honeybee → to_openstudio}/load/ventilation.rb +11 -20
  102. data/lib/{from_honeybee → to_openstudio}/material/opaque.rb +7 -16
  103. data/lib/{from_honeybee → to_openstudio}/material/opaque_no_mass.rb +8 -17
  104. data/lib/{from_honeybee → to_openstudio}/material/window_blind.rb +27 -36
  105. data/lib/{from_honeybee → to_openstudio}/material/window_gas.rb +8 -17
  106. data/lib/{from_honeybee → to_openstudio}/material/window_gas_custom.rb +10 -20
  107. data/lib/{from_honeybee → to_openstudio}/material/window_gas_mixture.rb +9 -18
  108. data/lib/{from_honeybee → to_openstudio}/material/window_glazing.rb +21 -30
  109. data/lib/{from_honeybee → to_openstudio}/material/window_shade.rb +17 -26
  110. data/lib/{from_honeybee → to_openstudio}/material/window_simpleglazsys.rb +7 -16
  111. data/lib/{from_honeybee → to_openstudio}/model.rb +13 -103
  112. data/lib/to_openstudio/model_object.rb +52 -0
  113. data/lib/{from_honeybee → to_openstudio}/program_type.rb +14 -34
  114. data/lib/{from_honeybee → to_openstudio}/schedule/fixed_interval.rb +11 -21
  115. data/lib/{from_honeybee → to_openstudio}/schedule/ruleset.rb +43 -44
  116. data/lib/{from_honeybee → to_openstudio}/schedule/type_limit.rb +9 -21
  117. data/lib/{from_honeybee/simulation/designday.rb → to_openstudio/simulation/design_day.rb} +7 -16
  118. data/lib/{from_honeybee/simulation/parameter.rb → to_openstudio/simulation/parameter_model.rb} +8 -57
  119. data/lib/{from_honeybee → to_openstudio}/ventcool/control.rb +8 -17
  120. data/lib/{from_honeybee → to_openstudio}/ventcool/opening.rb +8 -22
  121. data/lib/{from_honeybee → to_openstudio}/ventcool/simulation.rb +7 -16
  122. metadata +109 -138
@@ -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
@@ -0,0 +1,52 @@
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
+ require 'openstudio'
35
+
36
+ module Honeybee
37
+ class ModelObject
38
+
39
+ attr_reader :openstudio_object
40
+
41
+ # find an equivalent existing object in the openstudio model, return nil if not found
42
+ def find_existing_openstudio_object(openstudio_model)
43
+ raise 'find_existing_openstudio_object is not yet implemented for this ModelObject.'
44
+ end
45
+
46
+ # create a new object in the openstudio model and return it
47
+ def to_openstudio(openstudio_model)
48
+ raise 'to_openstudio is not yet implemented for this ModelObject.'
49
+ end
50
+
51
+ end # ModelObject
52
+ 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,45 +29,25 @@
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/extension'
33
- require 'from_honeybee/model_object'
34
- require 'from_honeybee/load/people'
35
- require 'from_honeybee/load/lighting'
36
- require 'from_honeybee/load/electric_equipment'
37
- require 'from_honeybee/load/gas_equipment'
38
- require 'from_honeybee/load/infiltration'
39
- require 'from_honeybee/load/ventilation'
40
- require 'from_honeybee/load/setpoint_thermostat'
41
- require 'from_honeybee/load/setpoint_humidistat'
42
-
43
- require 'openstudio'
44
-
45
- module FromHoneybee
46
- class ProgramTypeAbridged < ModelObject
47
- attr_reader :errors, :warnings
48
-
49
- def initialize(hash = {})
50
- super(hash)
51
-
52
- raise "Incorrect model type '#{@type}'" unless @type == 'ProgramTypeAbridged'
53
- end
54
-
55
- def defaults
56
- @@schema[:components][:schemas][:ProgramTypeAbridged][:properties]
57
- end
58
-
32
+ require 'honeybee/program_type'
33
+
34
+ require 'to_openstudio/model_object'
35
+
36
+ module Honeybee
37
+ class ProgramTypeAbridged
38
+
59
39
  def find_existing_openstudio_object(openstudio_model)
60
40
  model_space_type = openstudio_model.getSpaceTypeByName(@hash[:identifier])
61
41
  return model_space_type.get unless model_space_type.empty?
62
42
  nil
63
43
  end
64
-
65
- def to_openstudio(openstudio_model)
44
+
45
+ def to_openstudio(openstudio_model)
66
46
  # create openstudio space type object
67
47
  os_space_type = OpenStudio::Model::SpaceType.new(openstudio_model)
68
48
  os_space_type.setName(@hash[:identifier])
69
49
 
70
- # assign people
50
+ # assign people
71
51
  if @hash[:people]
72
52
  people = PeopleAbridged.new(@hash[:people])
73
53
  os_people = people.to_openstudio(openstudio_model)
@@ -117,8 +97,8 @@ module FromHoneybee
117
97
  os_space_type
118
98
  end
119
99
 
120
- end #ProgramTypeAbridged
121
- end #FromHoneybee
100
+ end #ProgramTypeAbridged
101
+ end #Honeybee
122
102
 
123
103
 
124
104