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
@@ -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
 
@@ -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,29 +29,19 @@
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
-
35
- module FromHoneybee
36
- class ScheduleFixedIntervalAbridged < ModelObject
37
- attr_reader :errors, :warnings
32
+ require 'honeybee/schedule/fixed_interval'
38
33
 
39
- def initialize(hash = {})
40
- super(hash)
34
+ require 'to_openstudio/model_object'
41
35
 
42
- raise "Incorrect model type '#{@type}'" unless @type == 'ScheduleFixedIntervalAbridged'
43
- end
44
-
45
- def defaults
46
- @@schema[:components][:schemas][:ScheduleFixedIntervalAbridged][:properties]
47
- end
36
+ module Honeybee
37
+ class ScheduleFixedIntervalAbridged
48
38
 
49
39
  def find_existing_openstudio_object(openstudio_model)
50
40
  model_schedule = openstudio_model.getScheduleFixedIntervalByName(@hash[:identifier])
51
41
  return model_schedule.get unless model_schedule.empty?
52
42
  nil
53
43
  end
54
-
44
+
55
45
  def to_openstudio(openstudio_model)
56
46
  # create the new schedule
57
47
  os_fi_schedule = OpenStudio::Model::ScheduleFixedInterval.new(openstudio_model)
@@ -92,13 +82,13 @@ module FromHoneybee
92
82
  interval_length = 60 / timestep
93
83
  os_fi_schedule.setIntervalLength(interval_length)
94
84
  end
95
- openstudio_interval_length = OpenStudio::Time.new(0, 0, interval_length)
85
+ openstudio_interval_length = OpenStudio::Time.new(0, 0, interval_length)
96
86
 
97
87
  # assign the values as a timeseries
98
88
  year_description = openstudio_model.getYearDescription
99
89
 
100
90
  # set is leap year = true in case start date has 3 integers
101
- if @hash[:start_date][2]
91
+ if @hash[:start_date][2]
102
92
  year_description.setIsLeapYear(true)
103
93
  end
104
94
 
@@ -110,6 +100,6 @@ module FromHoneybee
110
100
 
111
101
  os_fi_schedule
112
102
  end
113
-
103
+
114
104
  end #ScheduleFixedIntervalAbridged
115
- end #FromHoneybee
105
+ 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,23 +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/schedule/ruleset'
35
33
 
36
- module FromHoneybee
37
- class ScheduleRulesetAbridged < ModelObject
38
- attr_reader :errors, :warnings
34
+ require 'to_openstudio/model_object'
39
35
 
40
- def initialize(hash = {})
41
- super(hash)
42
-
43
- raise "Incorrect model type '#{@type}'" unless @type == 'ScheduleRulesetAbridged'
44
- end
45
-
46
- def defaults
47
- @@schema[:components][:schemas][:ScheduleRulesetAbridged][:properties]
48
- end
36
+ module Honeybee
37
+ class ScheduleRulesetAbridged
49
38
 
50
39
  def find_existing_openstudio_object(openstudio_model)
51
40
  object = openstudio_model.getScheduleRulesetByName(@hash[:identifier])
@@ -69,24 +58,30 @@ module FromHoneybee
69
58
  end
70
59
 
71
60
  # loop through day schedules and create openstudio schedule day object
61
+ def_day_id = @hash[:default_day_schedule]
62
+ def_day_hash = nil
72
63
  @hash[:day_schedules].each do |day_schedule|
73
- day_schedule_new = OpenStudio::Model::ScheduleDay.new(openstudio_model)
74
- day_schedule_new.setName(day_schedule[:identifier])
75
- unless sch_type_limit_obj.nil?
76
- day_schedule_new.setScheduleTypeLimits(sch_type_limit_obj)
77
- end
78
- values_day_new = day_schedule[:values]
79
- times_day_new = day_schedule[:times]
80
- times_day_new.delete_at(0) # Remove [0, 0] from array at index 0.
81
- times_day_new.push([24, 0]) # Add [24, 0] at index 0
82
- values_day_new.each_index do |i|
83
- time_until = OpenStudio::Time.new(0, times_day_new[i][0], times_day_new[i][1], 0)
84
- day_schedule_new.addValue(time_until, values_day_new[i])
64
+ if day_schedule[:identifier] != def_day_id
65
+ day_schedule_new = OpenStudio::Model::ScheduleDay.new(openstudio_model)
66
+ day_schedule_new.setName(day_schedule[:identifier])
67
+ unless sch_type_limit_obj.nil?
68
+ day_schedule_new.setScheduleTypeLimits(sch_type_limit_obj)
69
+ end
70
+ values_day_new = day_schedule[:values]
71
+ times_day_new = day_schedule[:times]
72
+ times_day_new.delete_at(0) # Remove [0, 0] from array at index 0.
73
+ times_day_new.push([24, 0]) # Add [24, 0] at index 0
74
+ values_day_new.each_index do |i|
75
+ time_until = OpenStudio::Time.new(0, times_day_new[i][0], times_day_new[i][1], 0)
76
+ day_schedule_new.addValue(time_until, values_day_new[i])
77
+ end
78
+ else
79
+ def_day_hash = day_schedule
85
80
  end
86
81
  end
87
82
 
88
- # assign holiday schedule
89
- if @hash[:holiday_schedule]
83
+ # assign holiday schedule
84
+ if @hash[:holiday_schedule]
90
85
  holiday_schedule = openstudio_model.getScheduleDayByName(@hash[:holiday_schedule])
91
86
  unless holiday_schedule.empty?
92
87
  holiday_schedule_object = holiday_schedule.get
@@ -97,7 +92,7 @@ module FromHoneybee
97
92
  end
98
93
  end
99
94
 
100
- # assign summer design day schedule
95
+ # assign summer design day schedule
101
96
  if @hash[:summer_designday_schedule]
102
97
  summer_design_day = openstudio_model.getScheduleDayByName(@hash[:summer_designday_schedule])
103
98
  unless summer_design_day.empty?
@@ -113,22 +108,26 @@ module FromHoneybee
113
108
  winter_design_day_object = winter_design_day.get
114
109
  os_sch_ruleset.setWinterDesignDaySchedule(winter_design_day_object)
115
110
  end
116
- end
117
-
111
+ end
112
+
118
113
  # assign default day schedule
119
- default_day_schedule = openstudio_model.getScheduleDayByName(@hash[:default_day_schedule])
120
- unless default_day_schedule.empty?
121
- default_day_schedule_object = default_day_schedule.get
122
- values = default_day_schedule_object.values
123
- times = default_day_schedule_object.times
124
- values.each_index do |i|
125
- os_sch_ruleset.defaultDaySchedule.addValue(times[i], values[i])
126
- end
114
+ def_day_sch = os_sch_ruleset.defaultDaySchedule
115
+ def_day_sch.setName(def_day_id)
116
+ unless sch_type_limit_obj.nil?
117
+ def_day_sch.setScheduleTypeLimits(sch_type_limit_obj)
118
+ end
119
+ values_day_new = def_day_hash[:values]
120
+ times_day_new = def_day_hash[:times]
121
+ times_day_new.delete_at(0) # Remove [0, 0] from array at index 0.
122
+ times_day_new.push([24, 0]) # Add [24, 0] at index 0
123
+ values_day_new.each_index do |i|
124
+ time_until = OpenStudio::Time.new(0, times_day_new[i][0], times_day_new[i][1], 0)
125
+ def_day_sch.addValue(time_until, values_day_new[i])
127
126
  end
128
127
 
129
128
  # assign schedule rules
130
129
  if @hash[:schedule_rules]
131
- @hash[:schedule_rules].each do |rule|
130
+ @hash[:schedule_rules].each do |rule|
132
131
  openstudio_schedule_rule = OpenStudio::Model::ScheduleRule.new(os_sch_ruleset)
133
132
  openstudio_schedule_rule.setApplySunday(rule[:apply_sunday])
134
133
  openstudio_schedule_rule.setApplyMonday(rule[:apply_monday])
@@ -165,4 +164,4 @@ module FromHoneybee
165
164
  end
166
165
 
167
166
  end #ScheduleRulesetAbridged
168
- end #FromHoneybee
167
+ 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,24 +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/extension'
33
- require 'from_honeybee/model_object'
34
-
35
- require 'openstudio'
36
-
37
- module FromHoneybee
38
- class ScheduleTypeLimit < ModelObject
39
- attr_reader :errors, :warnings
40
-
41
- def initialize(hash = {})
42
- super(hash)
32
+ require 'honeybee/schedule/type_limit'
43
33
 
44
- raise "Incorrect model type '#{@type}'" unless @type == 'ScheduleTypeLimit'
45
- end
34
+ require 'to_openstudio/model_object'
46
35
 
47
- def defaults
48
- @@schema[:components][:schemas][:ScheduleTypeLimit][:properties]
49
- end
36
+ module Honeybee
37
+ class ScheduleTypeLimit
50
38
 
51
39
  def find_existing_openstudio_object(openstudio_model)
52
40
  object = openstudio_model.getScheduleTypeLimitsByName(@hash[:identifier])
@@ -77,12 +65,12 @@ module FromHoneybee
77
65
  # assign unit type
78
66
  if @hash[:unit_type]
79
67
  os_type_limit.setUnitType(@hash[:unit_type])
80
- else
68
+ else
81
69
  os_type_limit.setUnitType(defaults[:unit_type])
82
70
  end
83
-
71
+
84
72
  os_type_limit
85
73
  end
86
74
 
87
75
  end # ScheduleTypeLimit
88
- end # FromHoneybee
76
+ 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/simulation/design_day'
35
33
 
36
- module FromHoneybee
37
- class DesignDay < 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][:DesignDay][:properties]
46
- end
36
+ module Honeybee
37
+ class DesignDay
47
38
 
48
39
  def find_existing_openstudio_object(openstudio_model)
49
40
  object = openstudio_model.getDesignDayByName(@hash[:name])
@@ -102,4 +93,4 @@ module FromHoneybee
102
93
  os_des_day
103
94
  end
104
95
  end # DesignDay
105
- end # FromHoneybee
96
+ 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,61 +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
- require 'from_honeybee/simulation/extension'
34
- require 'from_honeybee/simulation/designday'
32
+ require 'honeybee/simulation/parameter_model'
35
33
 
36
34
  require 'openstudio'
37
35
 
38
- module FromHoneybee
39
- class SimulationParameter
40
- attr_reader :errors, :warnings
41
-
42
- # Read Simulation Parameter JSON from disk
43
- def self.read_from_disk(file)
44
- hash = nil
45
- File.open(File.join(file), 'r') do |f|
46
- hash = JSON.parse(f.read, symbolize_names: true)
47
- end
48
-
49
- SimulationParameter.new(hash)
50
- end
51
-
52
- # Load ModelObject from symbolized hash
53
- def initialize(hash)
54
- # initialize class variable @@extension only once
55
- @@extension = ExtensionSimulationParameter.new
56
- @@schema = nil
57
- File.open(@@extension.schema_file) do |f|
58
- @@schema = JSON.parse(f.read, symbolize_names: true)
59
- end
60
-
61
- @hash = hash
62
- @type = @hash[:type]
63
- raise 'Unknown model type' if @type.nil?
64
- raise "Incorrect model type for SimulationParameter '#{@type}'" unless @type == 'SimulationParameter'
65
- end
66
-
67
- # check if the model is valid
68
- def valid?
69
- if Gem.loaded_specs.has_key?("json-schema")
70
- return validation_errors.empty?
71
- else
72
- return true
73
- end
74
- end
75
-
76
- # return detailed model validation errors
77
- def validation_errors
78
- if Gem.loaded_specs.has_key?("json-schema")
79
- require 'json-schema'
80
- JSON::Validator.fully_validate(@@schema, @hash)
81
- end
82
- end
83
-
84
- def defaults
85
- @@schema[:components][:schemas]
86
- end
36
+ module Honeybee
37
+ class SimulationParameter
87
38
 
88
39
  # convert to openstudio model, clears errors and warnings
89
40
  def to_openstudio_model(openstudio_model=nil, log_report=false)
@@ -132,7 +83,7 @@ module FromHoneybee
132
83
  os_sim_control.setDoZoneSizingCalculation(@hash[:simulation_control][:do_zone_sizing])
133
84
  end
134
85
  unless @hash[:simulation_control][:do_system_sizing].nil?
135
- os_sim_control.setDoSystemSizingCalculation(@hash[:simulation_control][:do_system_sizing])
86
+ os_sim_control.setDoSystemSizingCalculation(@hash[:simulation_control][:do_system_sizing])
136
87
  end
137
88
  unless @hash[:simulation_control][:do_plant_sizing].nil?
138
89
  os_sim_control.setDoPlantSizingCalculation(@hash[:simulation_control][:do_plant_sizing])
@@ -205,7 +156,7 @@ module FromHoneybee
205
156
  @hash[:shadow_calculation][:solar_distribution])
206
157
  end
207
158
  end
208
-
159
+
209
160
  # set defaults for the Model's SizingParameter object
210
161
  os_sizing_par = @openstudio_model.getSizingParameters
211
162
  os_sizing_par.setHeatingSizingFactor(siz_defaults[:heating_factor][:default])
@@ -324,4 +275,4 @@ module FromHoneybee
324
275
  end
325
276
 
326
277
  end #SimulationParameter
327
- end #FromHoneybee
278
+ end #Honeybee