openstudio-ee 0.2.0 → 0.2.1

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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/Rakefile +2 -0
  4. data/lib/measures/ImproveFanTotalEfficiencybyPercentage/measure.rb +333 -0
  5. data/lib/measures/ImproveFanTotalEfficiencybyPercentage/measure.xml +150 -0
  6. data/lib/measures/ReplaceFanTotalEfficiency/measure.rb +330 -0
  7. data/lib/measures/ReplaceFanTotalEfficiency/measure.xml +150 -0
  8. data/lib/measures/add_apszhp_to_each_zone/measure.rb +607 -0
  9. data/lib/measures/add_apszhp_to_each_zone/measure.xml +184 -0
  10. data/lib/measures/add_energy_recovery_ventilator/measure.rb +354 -0
  11. data/lib/measures/add_energy_recovery_ventilator/measure.xml +78 -0
  12. data/lib/measures/improve_simple_glazing_by_percentage/measure.rb +81 -0
  13. data/lib/measures/improve_simple_glazing_by_percentage/measure.xml +70 -0
  14. data/lib/measures/reduce_water_use_by_percentage/measure.rb +61 -0
  15. data/lib/measures/reduce_water_use_by_percentage/measure.xml +62 -0
  16. data/lib/measures/replace_hvac_with_gshp_and_doas/measure.rb +511 -0
  17. data/lib/measures/replace_hvac_with_gshp_and_doas/measure.xml +375 -0
  18. data/lib/measures/replace_hvac_with_gshp_and_doas/resources/OsLib_AedgMeasures.rb +454 -0
  19. data/lib/measures/replace_hvac_with_gshp_and_doas/resources/OsLib_Constructions.rb +221 -0
  20. data/lib/measures/replace_hvac_with_gshp_and_doas/resources/OsLib_Geometry.rb +41 -0
  21. data/lib/measures/replace_hvac_with_gshp_and_doas/resources/OsLib_HVAC.rb +1682 -0
  22. data/lib/measures/replace_hvac_with_gshp_and_doas/resources/OsLib_HelperMethods.rb +114 -0
  23. data/lib/measures/replace_hvac_with_gshp_and_doas/resources/OsLib_LightingAndEquipment.rb +99 -0
  24. data/lib/measures/replace_hvac_with_gshp_and_doas/resources/OsLib_Schedules.rb +142 -0
  25. data/lib/measures/replace_simple_glazing/measure.rb +86 -0
  26. data/lib/measures/replace_simple_glazing/measure.xml +78 -0
  27. data/lib/measures/set_boiler_thermal_efficiency/measure.rb +520 -0
  28. data/lib/measures/set_boiler_thermal_efficiency/measure.xml +78 -0
  29. data/lib/measures/set_water_heater_efficiency_heat_lossand_peak_water_flow_rate/measure.rb +207 -0
  30. data/lib/measures/set_water_heater_efficiency_heat_lossand_peak_water_flow_rate/measure.xml +78 -0
  31. data/lib/measures/tenant_star_internal_loads/measure.rb +134 -0
  32. data/lib/measures/tenant_star_internal_loads/measure.xml +67 -0
  33. data/lib/measures/tenant_star_internal_loads/resources/os_lib_helper_methods.rb +401 -0
  34. data/lib/measures/vr_fwith_doas/measure.rb +468 -0
  35. data/lib/measures/vr_fwith_doas/measure.xml +298 -0
  36. data/lib/measures/vr_fwith_doas/resources/OsLib_AedgMeasures.rb +454 -0
  37. data/lib/measures/vr_fwith_doas/resources/OsLib_Constructions.rb +221 -0
  38. data/lib/measures/vr_fwith_doas/resources/OsLib_Geometry.rb +41 -0
  39. data/lib/measures/vr_fwith_doas/resources/OsLib_HVAC.rb +1516 -0
  40. data/lib/measures/vr_fwith_doas/resources/OsLib_HelperMethods.rb +114 -0
  41. data/lib/measures/vr_fwith_doas/resources/OsLib_LightingAndEquipment.rb +99 -0
  42. data/lib/measures/vr_fwith_doas/resources/OsLib_Schedules.rb +142 -0
  43. data/lib/openstudio/ee_measures/version.rb +1 -1
  44. data/openstudio-ee.gemspec +7 -5
  45. metadata +48 -9
@@ -0,0 +1,114 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OsLib_HelperMethods
4
+ # populate choice argument from model objects
5
+ def self.populateChoiceArgFromModelObjects(model, modelObject_args_hash, includeBuilding = nil)
6
+ # populate choice argument for constructions that are applied to surfaces in the model
7
+ modelObject_handles = OpenStudio::StringVector.new
8
+ modelObject_display_names = OpenStudio::StringVector.new
9
+
10
+ # looping through sorted hash of constructions
11
+ modelObject_args_hash.sort.map do |key, value|
12
+ modelObject_handles << value.handle.to_s
13
+ modelObject_display_names << key
14
+ end
15
+
16
+ if !includeBuilding.nil?
17
+ # add building to string vector with space type
18
+ building = model.getBuilding
19
+ modelObject_handles << building.handle.to_s
20
+ modelObject_display_names << includeBuilding
21
+ end
22
+
23
+ result = { 'modelObject_handles' => modelObject_handles, 'modelObject_display_names' => modelObject_display_names }
24
+ return result
25
+ end # end of OsLib_HelperMethods.populateChoiceArgFromModelObjects
26
+
27
+ # check choice argument made from model objects
28
+ def self.checkChoiceArgFromModelObjects(object, variableName, to_ObjectType, runner, user_arguments)
29
+ apply_to_building = false
30
+ modelObject = nil
31
+ if object.empty?
32
+ handle = runner.getStringArgumentValue(variableName, user_arguments)
33
+ if handle.empty?
34
+ runner.registerError("No #{variableName} was chosen.") # this logic makes this not work on an optional model object argument
35
+ else
36
+ runner.registerError("The selected #{variableName} with handle '#{handle}' was not found in the model. It may have been removed by another measure.")
37
+ end
38
+ return false
39
+ else
40
+ if !eval("object.get.#{to_ObjectType}").empty?
41
+ modelObject = eval("object.get.#{to_ObjectType}").get
42
+ elsif !object.get.to_Building.empty?
43
+ apply_to_building = true
44
+ else
45
+ runner.registerError("Script Error - argument not showing up as #{variableName}.")
46
+ return false
47
+ end
48
+ end # end of if construction.empty?
49
+
50
+ result = { 'modelObject' => modelObject, 'apply_to_building' => apply_to_building }
51
+ end # end of OsLib_HelperMethods.checkChoiceArgFromModelObjects
52
+
53
+ # check choice argument made from model objects
54
+ def self.checkOptionalChoiceArgFromModelObjects(object, variableName, to_ObjectType, runner, user_arguments)
55
+ apply_to_building = false
56
+ modelObject = nil
57
+ if object.empty?
58
+ handle = runner.getOptionalStringArgumentValue(variableName, user_arguments)
59
+ if handle.empty?
60
+ # do nothing, this is a valid option
61
+ modelObject = nil
62
+ apply_to_building = false
63
+ else
64
+ runner.registerError("The selected #{variableName} with handle '#{handle}' was not found in the model. It may have been removed by another measure.")
65
+ return false
66
+ end
67
+ else
68
+ if !eval("object.get.#{to_ObjectType}").empty?
69
+ modelObject = eval("object.get.#{to_ObjectType}").get
70
+ elsif !object.get.to_Building.empty?
71
+ apply_to_building = true
72
+ else
73
+ runner.registerError("Script Error - argument not showing up as #{variableName}.")
74
+ return false
75
+ end
76
+ end # end of if construction.empty?
77
+
78
+ result = { 'modelObject' => modelObject, 'apply_to_building' => apply_to_building }
79
+ end # end of OsLib_HelperMethods.checkChoiceArgFromModelObjects
80
+
81
+ # check value of double arguments
82
+ def self.checkDoubleArguments(runner, min, max, argumentHash)
83
+ # error flag
84
+ error = false
85
+
86
+ argumentHash.each do |display, argument|
87
+ if !min.nil?
88
+ if argument < min
89
+ runner.registerError("Please enter value between #{min} and #{max} for #{display}.") # add in argument display name
90
+ error = true
91
+ end
92
+ end
93
+ if !max.nil?
94
+ if argument > max
95
+ runner.registerError("Please enter value between #{min} and #{max} for #{display}.") # add in argument display name
96
+ error = true
97
+ end
98
+ end
99
+ end # end of argumentArray.each do
100
+
101
+ # check for any errors
102
+ if error
103
+ return false
104
+ else
105
+ return true
106
+ end
107
+ end # end of OsLib_HelperMethods.checkDoubleArguments
108
+
109
+ # OpenStudio has built in toNeatString method
110
+ # OpenStudio::toNeatString(double,2,true)# double,decimals, show commas
111
+
112
+ # OpenStudio has built in helper for unit conversion. That can be done using OpenStudio::convert() as shown below.
113
+ # OpenStudio::convert(double,"from unit string","to unit string").get
114
+ end
@@ -0,0 +1,99 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "#{File.dirname(__FILE__)}/OsLib_Schedules"
4
+
5
+ # load OpenStudio measure libraries
6
+ module OsLib_LightingAndEquipment
7
+ include OsLib_Schedules
8
+
9
+ # return min ans max from array
10
+ def self.getExteriorLightsValue(model)
11
+ facility = model.getFacility
12
+ starting_exterior_lights_power = 0
13
+ starting_exterior_lights = facility.exteriorLights
14
+ starting_exterior_lights.each do |starting_exterior_light|
15
+ starting_exterior_light_multiplier = starting_exterior_light.multiplier
16
+ starting_exterior_light_def = starting_exterior_light.exteriorLightsDefinition
17
+ starting_exterior_light_base_power = starting_exterior_light_def.designLevel
18
+ starting_exterior_lights_power += starting_exterior_light_base_power * starting_exterior_light_multiplier
19
+ end
20
+
21
+ result = { 'exteriorLightingPower' => starting_exterior_lights_power, 'exteriorLights' => starting_exterior_lights }
22
+ return result
23
+ end # end of OsLib_LightingAndEquipment.getExteriorLightsValue
24
+
25
+ # return min ans max from array
26
+ def self.removeAllExteriorLights(model, runner)
27
+ facility = model.getFacility
28
+ lightsRemoved = false
29
+ starting_exterior_lights = facility.exteriorLights
30
+ starting_exterior_lights.each do |starting_exterior_light|
31
+ runner.registerInfo("Removed exterior light named #{starting_exterior_light.name}.")
32
+ starting_exterior_light.remove
33
+ lightsRemoved = true
34
+ end
35
+
36
+ result = lightsRemoved
37
+ return result
38
+ end # end of OsLib_LightingAndEquipment.removeAllExteriorLights
39
+
40
+ # return min ans max from array
41
+ def self.addExteriorLights(model, runner, options = {})
42
+ # set defaults to use if user inputs not passed in
43
+ defaults = {
44
+ 'name' => 'Exterior Light',
45
+ 'power' => 0,
46
+ 'subCategory' => 'Exterior Lighting',
47
+ 'controlOption' => 'AstronomicalClock',
48
+ 'setbackStartTime' => 0,
49
+ 'setbackEndTime' => 0,
50
+ 'setbackFraction' => 0.25
51
+ }
52
+
53
+ # merge user inputs with defaults
54
+ options = defaults.merge(options)
55
+
56
+ ext_lights_def = OpenStudio::Model::ExteriorLightsDefinition.new(model)
57
+ ext_lights_def.setName("#{options['name']} Definition")
58
+ runner.registerInfo("Setting #{ext_lights_def.name} to a design power of #{options['power']} Watts")
59
+ ext_lights_def.setDesignLevel(options['power'])
60
+
61
+ # creating schedule type limits for the exterior lights schedule
62
+ ext_lights_sch_type_limits = OpenStudio::Model::ScheduleTypeLimits.new(model)
63
+ ext_lights_sch_type_limits.setName("#{options['name']} Fractional")
64
+ ext_lights_sch_type_limits.setLowerLimitValue(0)
65
+ ext_lights_sch_type_limits.setUpperLimitValue(1)
66
+ ext_lights_sch_type_limits.setNumericType('Continuous')
67
+
68
+ # prepare values for profile
69
+ if options['setbackStartTime'] == 24
70
+ profile = { options['setbackEndTime'] => options['setbackFraction'], 24.0 => 1.0 }
71
+ elsif options['setbackStartTime'] == 0
72
+ profile = { options['setbackEndTime'] => options['setbackFraction'], 24.0 => 1.0 }
73
+ elsif options['setbackStartTime'] > options['setbackEndTime']
74
+ profile = { options['setbackEndTime'] => options['setbackFraction'], options['setbackStartTime'] => 1.0, 24.0 => options['setbackFraction'] }
75
+ else
76
+ profile = { options['setbackStartTime'] => 1.0, options['setbackEndTime'] => options['setbackFraction'] }
77
+ end
78
+
79
+ # inputs
80
+ createSimpleSchedule_inputs = {
81
+ 'name' => options['name'],
82
+ 'winterTimeValuePairs' => profile,
83
+ 'summerTimeValuePairs' => profile,
84
+ 'defaultTimeValuePairs' => profile
85
+ }
86
+
87
+ # create a ruleset schedule with a basic profile
88
+ ext_lights_sch = OsLib_Schedules.createSimpleSchedule(model, createSimpleSchedule_inputs)
89
+
90
+ # creating exterior lights object
91
+ ext_lights = OpenStudio::Model::ExteriorLights.new(ext_lights_def, ext_lights_sch)
92
+ ext_lights.setName("#{options['power']} w Exterior Light")
93
+ ext_lights.setControlOption(options['controlOption'])
94
+ ext_lights.setEndUseSubcategory(options['subCategory'])
95
+
96
+ result = ext_lights
97
+ return result
98
+ end # end of OsLib_LightingAndEquipment.addExteriorLights
99
+ end
@@ -0,0 +1,142 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OsLib_Schedules
4
+ # create a ruleset schedule with a basic profile
5
+ def self.createSimpleSchedule(model, options = {})
6
+ defaults = {
7
+ 'name' => nil,
8
+ 'winterTimeValuePairs' => { 24.0 => 0.0 },
9
+ 'summerTimeValuePairs' => { 24.0 => 1.0 },
10
+ 'defaultTimeValuePairs' => { 24.0 => 1.0 }
11
+ }
12
+
13
+ # merge user inputs with defaults
14
+ options = defaults.merge(options)
15
+
16
+ # ScheduleRuleset
17
+ sch_ruleset = OpenStudio::Model::ScheduleRuleset.new(model)
18
+ if name
19
+ sch_ruleset.setName(options['name'])
20
+ end
21
+
22
+ # Winter Design Day
23
+ winter_dsn_day = OpenStudio::Model::ScheduleDay.new(model)
24
+ sch_ruleset.setWinterDesignDaySchedule(winter_dsn_day)
25
+ winter_dsn_day = sch_ruleset.winterDesignDaySchedule
26
+ winter_dsn_day.setName("#{sch_ruleset.name} Winter Design Day")
27
+ options['winterTimeValuePairs'].each do |k, v|
28
+ hour = k.truncate
29
+ min = ((k - hour) * 60).to_i
30
+ winter_dsn_day.addValue(OpenStudio::Time.new(0, hour, min, 0), v)
31
+ end
32
+
33
+ # Summer Design Day
34
+ summer_dsn_day = OpenStudio::Model::ScheduleDay.new(model)
35
+ sch_ruleset.setSummerDesignDaySchedule(summer_dsn_day)
36
+ summer_dsn_day = sch_ruleset.summerDesignDaySchedule
37
+ summer_dsn_day.setName("#{sch_ruleset.name} Summer Design Day")
38
+ options['summerTimeValuePairs'].each do |k, v|
39
+ hour = k.truncate
40
+ min = ((k - hour) * 60).to_i
41
+ summer_dsn_day.addValue(OpenStudio::Time.new(0, hour, min, 0), v)
42
+ end
43
+
44
+ # All Days
45
+ week_day = sch_ruleset.defaultDaySchedule
46
+ week_day.setName("#{sch_ruleset.name} Schedule Week Day")
47
+ options['defaultTimeValuePairs'].each do |k, v|
48
+ hour = k.truncate
49
+ min = ((k - hour) * 60).to_i
50
+ week_day.addValue(OpenStudio::Time.new(0, hour, min, 0), v)
51
+ end
52
+
53
+ result = sch_ruleset
54
+ return result
55
+ end # end of OsLib_Schedules.createSimpleSchedule
56
+
57
+ # create a complex ruleset schedule
58
+ def self.createComplexSchedule(model, options = {})
59
+ defaults = {
60
+ 'name' => nil,
61
+ 'default_day' => ['always_on', [24.0, 1.0]]
62
+ }
63
+
64
+ # merge user inputs with defaults
65
+ options = defaults.merge(options)
66
+
67
+ # ScheduleRuleset
68
+ sch_ruleset = OpenStudio::Model::ScheduleRuleset.new(model)
69
+ if name
70
+ sch_ruleset.setName(options['name'])
71
+ end
72
+
73
+ # Winter Design Day
74
+ unless options['winter_design_day'].nil?
75
+ winter_dsn_day = OpenStudio::Model::ScheduleDay.new(model)
76
+ sch_ruleset.setWinterDesignDaySchedule(winter_dsn_day)
77
+ winter_dsn_day = sch_ruleset.winterDesignDaySchedule
78
+ winter_dsn_day.setName("#{sch_ruleset.name} Winter Design Day")
79
+ options['winter_design_day'].each do |data_pair|
80
+ hour = data_pair[0].truncate
81
+ min = ((data_pair[0] - hour) * 60).to_i
82
+ winter_dsn_day.addValue(OpenStudio::Time.new(0, hour, min, 0), data_pair[1])
83
+ end
84
+ end
85
+
86
+ # Summer Design Day
87
+ unless options['summer_design_day'].nil?
88
+ summer_dsn_day = OpenStudio::Model::ScheduleDay.new(model)
89
+ sch_ruleset.setSummerDesignDaySchedule(summer_dsn_day)
90
+ summer_dsn_day = sch_ruleset.summerDesignDaySchedule
91
+ summer_dsn_day.setName("#{sch_ruleset.name} Summer Design Day")
92
+ options['summer_design_day'].each do |data_pair|
93
+ hour = data_pair[0].truncate
94
+ min = ((data_pair[0] - hour) * 60).to_i
95
+ summer_dsn_day.addValue(OpenStudio::Time.new(0, hour, min, 0), data_pair[1])
96
+ end
97
+ end
98
+
99
+ # Default Day
100
+ default_day = sch_ruleset.defaultDaySchedule
101
+ default_day.setName("#{sch_ruleset.name} #{options['default_day'][0]}")
102
+ default_data_array = options['default_day']
103
+ default_data_array.delete_at(0)
104
+ default_data_array.each do |data_pair|
105
+ hour = data_pair[0].truncate
106
+ min = ((data_pair[0] - hour) * 60).to_i
107
+ default_day.addValue(OpenStudio::Time.new(0, hour, min, 0), data_pair[1])
108
+ end
109
+
110
+ # Rules
111
+ options['rules']&.each do |data_array|
112
+ rule = OpenStudio::Model::ScheduleRule.new(sch_ruleset)
113
+ rule.setName("#{sch_ruleset.name} #{data_array[0]} Rule")
114
+ date_range = data_array[1].split('-')
115
+ start_date = date_range[0].split('/')
116
+ end_date = date_range[1].split('/')
117
+ rule.setStartDate(model.getYearDescription.makeDate(start_date[0].to_i, start_date[1].to_i))
118
+ rule.setEndDate(model.getYearDescription.makeDate(end_date[0].to_i, end_date[1].to_i))
119
+ days = data_array[2].split('/')
120
+ rule.setApplySunday(true) if days.include? 'Sun'
121
+ rule.setApplyMonday(true) if days.include? 'Mon'
122
+ rule.setApplyTuesday(true) if days.include? 'Tue'
123
+ rule.setApplyWednesday(true) if days.include? 'Wed'
124
+ rule.setApplyThursday(true) if days.include? 'Thu'
125
+ rule.setApplyFriday(true) if days.include? 'Fri'
126
+ rule.setApplySaturday(true) if days.include? 'Sat'
127
+ day_schedule = rule.daySchedule
128
+ day_schedule.setName("#{sch_ruleset.name} #{data_array[0]}")
129
+ data_array.delete_at(0)
130
+ data_array.delete_at(0)
131
+ data_array.delete_at(0)
132
+ data_array.each do |data_pair|
133
+ hour = data_pair[0].truncate
134
+ min = ((data_pair[0] - hour) * 60).to_i
135
+ day_schedule.addValue(OpenStudio::Time.new(0, hour, min, 0), data_pair[1])
136
+ end
137
+ end
138
+
139
+ result = sch_ruleset
140
+ return result
141
+ end # end of OsLib_Schedules.createComplexSchedule
142
+ end
@@ -37,6 +37,6 @@
37
37
 
38
38
  module OpenStudio
39
39
  module EeMeasures
40
- VERSION = '0.2.0'.freeze
40
+ VERSION = '0.2.1'
41
41
  end
42
42
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require 'openstudio/ee_measures/version'
@@ -12,10 +14,10 @@ Gem::Specification.new do |spec|
12
14
  spec.summary = 'Library and measures for OpenStudio for energy efficiency use cases'
13
15
  spec.description = 'Library and measures for OpenStudio for energy efficiency use cases'
14
16
  spec.metadata = {
15
- 'bug_tracker_uri' => 'https://github.com/NREL/openstudio-ee-gem/issues',
16
- 'changelog_uri' => 'https://github.com/NREL/openstudio-ee-gem/blob/develop/CHANGELOG.md',
17
- # 'documentation_uri' => 'https://www.rubydoc.info/gems/openstudio-ee-gem/#{gem.version}',
18
- 'source_code_uri' => "https://github.com/NREL/openstudio-ee-gem/tree/v#{spec.version}"
17
+ 'bug_tracker_uri' => 'https://github.com/NREL/openstudio-ee-gem/issues',
18
+ 'changelog_uri' => 'https://github.com/NREL/openstudio-ee-gem/blob/develop/CHANGELOG.md',
19
+ # 'documentation_uri' => 'https://www.rubydoc.info/gems/openstudio-ee-gem/#{gem.version}',
20
+ 'source_code_uri' => "https://github.com/NREL/openstudio-ee-gem/tree/v#{spec.version}"
19
21
  }
20
22
 
21
23
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
@@ -28,7 +30,7 @@ Gem::Specification.new do |spec|
28
30
  spec.required_ruby_version = '~> 2.5.0'
29
31
 
30
32
  spec.add_dependency 'bundler', '~> 2.1'
31
- spec.add_dependency 'openstudio-extension', '~> 0.2.3'
33
+ spec.add_dependency 'openstudio-extension', '~> 0.2.5'
32
34
  spec.add_dependency 'openstudio-standards', '~> 0.2.11'
33
35
 
34
36
  spec.add_development_dependency 'rake', '~> 13.0'
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openstudio-ee
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Goldwasser
8
8
  - Nicholas Long
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-05-12 00:00:00.000000000 Z
12
+ date: 2020-10-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 0.2.3
34
+ version: 0.2.5
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 0.2.3
41
+ version: 0.2.5
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: openstudio-standards
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -158,6 +158,8 @@ files:
158
158
  - lib/measures/ImproveFanBeltEfficiency/README.md.erb
159
159
  - lib/measures/ImproveFanBeltEfficiency/measure.rb
160
160
  - lib/measures/ImproveFanBeltEfficiency/measure.xml
161
+ - lib/measures/ImproveFanTotalEfficiencybyPercentage/measure.rb
162
+ - lib/measures/ImproveFanTotalEfficiencybyPercentage/measure.xml
161
163
  - lib/measures/ImproveMotorEfficiency/LICENSE.md
162
164
  - lib/measures/ImproveMotorEfficiency/README.md
163
165
  - lib/measures/ImproveMotorEfficiency/README.md.erb
@@ -203,6 +205,12 @@ files:
203
205
  - lib/measures/ReduceVentilationByPercentage/README.md.erb
204
206
  - lib/measures/ReduceVentilationByPercentage/measure.rb
205
207
  - lib/measures/ReduceVentilationByPercentage/measure.xml
208
+ - lib/measures/ReplaceFanTotalEfficiency/measure.rb
209
+ - lib/measures/ReplaceFanTotalEfficiency/measure.xml
210
+ - lib/measures/add_apszhp_to_each_zone/measure.rb
211
+ - lib/measures/add_apszhp_to_each_zone/measure.xml
212
+ - lib/measures/add_energy_recovery_ventilator/measure.rb
213
+ - lib/measures/add_energy_recovery_ventilator/measure.xml
206
214
  - lib/measures/add_variable_speed_rtu_control_logic/LICENSE.md
207
215
  - lib/measures/add_variable_speed_rtu_control_logic/README.md
208
216
  - lib/measures/add_variable_speed_rtu_control_logic/README.md.erb
@@ -219,16 +227,47 @@ files:
219
227
  - lib/measures/fan_assist_night_ventilation/measure.rb
220
228
  - lib/measures/fan_assist_night_ventilation/measure.xml
221
229
  - lib/measures/fan_assist_night_ventilation/resources/FanAssistNightVentilationMeasureGuide.pdf
230
+ - lib/measures/improve_simple_glazing_by_percentage/measure.rb
231
+ - lib/measures/improve_simple_glazing_by_percentage/measure.xml
222
232
  - lib/measures/nze_hvac/LICENSE.md
223
233
  - lib/measures/nze_hvac/README.md
224
234
  - lib/measures/nze_hvac/README.md.erb
225
235
  - lib/measures/nze_hvac/measure.rb
226
236
  - lib/measures/nze_hvac/measure.xml
237
+ - lib/measures/reduce_water_use_by_percentage/measure.rb
238
+ - lib/measures/reduce_water_use_by_percentage/measure.xml
239
+ - lib/measures/replace_hvac_with_gshp_and_doas/measure.rb
240
+ - lib/measures/replace_hvac_with_gshp_and_doas/measure.xml
241
+ - lib/measures/replace_hvac_with_gshp_and_doas/resources/OsLib_AedgMeasures.rb
242
+ - lib/measures/replace_hvac_with_gshp_and_doas/resources/OsLib_Constructions.rb
243
+ - lib/measures/replace_hvac_with_gshp_and_doas/resources/OsLib_Geometry.rb
244
+ - lib/measures/replace_hvac_with_gshp_and_doas/resources/OsLib_HVAC.rb
245
+ - lib/measures/replace_hvac_with_gshp_and_doas/resources/OsLib_HelperMethods.rb
246
+ - lib/measures/replace_hvac_with_gshp_and_doas/resources/OsLib_LightingAndEquipment.rb
247
+ - lib/measures/replace_hvac_with_gshp_and_doas/resources/OsLib_Schedules.rb
248
+ - lib/measures/replace_simple_glazing/measure.rb
249
+ - lib/measures/replace_simple_glazing/measure.xml
227
250
  - lib/measures/replace_water_heater_mixed_with_thermal_storage_chilled_water/LICENSE.md
228
251
  - lib/measures/replace_water_heater_mixed_with_thermal_storage_chilled_water/README.md
229
252
  - lib/measures/replace_water_heater_mixed_with_thermal_storage_chilled_water/README.md.erb
230
253
  - lib/measures/replace_water_heater_mixed_with_thermal_storage_chilled_water/measure.rb
231
254
  - lib/measures/replace_water_heater_mixed_with_thermal_storage_chilled_water/measure.xml
255
+ - lib/measures/set_boiler_thermal_efficiency/measure.rb
256
+ - lib/measures/set_boiler_thermal_efficiency/measure.xml
257
+ - lib/measures/set_water_heater_efficiency_heat_lossand_peak_water_flow_rate/measure.rb
258
+ - lib/measures/set_water_heater_efficiency_heat_lossand_peak_water_flow_rate/measure.xml
259
+ - lib/measures/tenant_star_internal_loads/measure.rb
260
+ - lib/measures/tenant_star_internal_loads/measure.xml
261
+ - lib/measures/tenant_star_internal_loads/resources/os_lib_helper_methods.rb
262
+ - lib/measures/vr_fwith_doas/measure.rb
263
+ - lib/measures/vr_fwith_doas/measure.xml
264
+ - lib/measures/vr_fwith_doas/resources/OsLib_AedgMeasures.rb
265
+ - lib/measures/vr_fwith_doas/resources/OsLib_Constructions.rb
266
+ - lib/measures/vr_fwith_doas/resources/OsLib_Geometry.rb
267
+ - lib/measures/vr_fwith_doas/resources/OsLib_HVAC.rb
268
+ - lib/measures/vr_fwith_doas/resources/OsLib_HelperMethods.rb
269
+ - lib/measures/vr_fwith_doas/resources/OsLib_LightingAndEquipment.rb
270
+ - lib/measures/vr_fwith_doas/resources/OsLib_Schedules.rb
232
271
  - lib/openstudio-ee-measures.rb
233
272
  - lib/openstudio/ee_measures.rb
234
273
  - lib/openstudio/ee_measures/extension.rb
@@ -239,8 +278,8 @@ licenses: []
239
278
  metadata:
240
279
  bug_tracker_uri: https://github.com/NREL/openstudio-ee-gem/issues
241
280
  changelog_uri: https://github.com/NREL/openstudio-ee-gem/blob/develop/CHANGELOG.md
242
- source_code_uri: https://github.com/NREL/openstudio-ee-gem/tree/v0.2.0
243
- post_install_message:
281
+ source_code_uri: https://github.com/NREL/openstudio-ee-gem/tree/v0.2.1
282
+ post_install_message:
244
283
  rdoc_options: []
245
284
  require_paths:
246
285
  - lib
@@ -255,9 +294,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
255
294
  - !ruby/object:Gem::Version
256
295
  version: '0'
257
296
  requirements: []
258
- rubyforge_project:
297
+ rubyforge_project:
259
298
  rubygems_version: 2.7.6.2
260
- signing_key:
299
+ signing_key:
261
300
  specification_version: 4
262
301
  summary: Library and measures for OpenStudio for energy efficiency use cases
263
302
  test_files: []