openstudio-extension 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +9 -0
  3. data/.rubocop.yml +9 -0
  4. data/Gemfile +3 -1
  5. data/Jenkinsfile +10 -0
  6. data/README.md +230 -12
  7. data/Rakefile +88 -3
  8. data/bin/console +3 -3
  9. data/doc_templates/LICENSE.md +27 -0
  10. data/doc_templates/README.md.erb +42 -0
  11. data/doc_templates/copyright_erb.txt +36 -0
  12. data/doc_templates/copyright_js.txt +4 -0
  13. data/doc_templates/copyright_ruby.txt +34 -0
  14. data/init_templates/README.md +37 -0
  15. data/init_templates/gemspec.txt +32 -0
  16. data/init_templates/openstudio_module.rb +50 -0
  17. data/init_templates/spec.rb +47 -0
  18. data/init_templates/spec_helper.rb +49 -0
  19. data/init_templates/template_gemfile.txt +17 -0
  20. data/init_templates/template_rakefile.txt +15 -0
  21. data/init_templates/version.rb +40 -0
  22. data/lib/files/openstudio-extension-gem-test.ddy +536 -0
  23. data/lib/files/openstudio-extension-gem-test.epw +8768 -0
  24. data/lib/files/openstudio-extension-gem-test.stat +554 -0
  25. data/lib/measures/openstudio_extension_test_measure/LICENSE.md +27 -0
  26. data/lib/measures/openstudio_extension_test_measure/README.md +26 -0
  27. data/lib/measures/openstudio_extension_test_measure/README.md.erb +42 -0
  28. data/lib/measures/openstudio_extension_test_measure/measure.rb +72 -0
  29. data/lib/measures/openstudio_extension_test_measure/measure.xml +83 -0
  30. data/lib/measures/openstudio_extension_test_measure/resources/os_lib_helper_methods.rb +399 -0
  31. data/lib/measures/openstudio_extension_test_measure/tests/OpenStudioExtensionTestMeasure_Test.rb +75 -0
  32. data/lib/openstudio/extension.rb +220 -0
  33. data/lib/openstudio/extension/core/CreateResults.rb +879 -0
  34. data/lib/openstudio/extension/core/check_air_sys_temps.rb +190 -0
  35. data/lib/openstudio/extension/core/check_calibration.rb +155 -0
  36. data/lib/openstudio/extension/core/check_cond_zns.rb +84 -0
  37. data/lib/openstudio/extension/core/check_domestic_hot_water.rb +334 -0
  38. data/lib/openstudio/extension/core/check_envelope_conductance.rb +453 -0
  39. data/lib/openstudio/extension/core/check_eui_by_end_use.rb +162 -0
  40. data/lib/openstudio/extension/core/check_eui_reasonableness.rb +135 -0
  41. data/lib/openstudio/extension/core/check_fan_pwr.rb +98 -0
  42. data/lib/openstudio/extension/core/check_internal_loads.rb +393 -0
  43. data/lib/openstudio/extension/core/check_mech_sys_capacity.rb +226 -0
  44. data/lib/openstudio/extension/core/check_mech_sys_efficiency.rb +326 -0
  45. data/lib/openstudio/extension/core/check_mech_sys_part_load_eff.rb +464 -0
  46. data/lib/openstudio/extension/core/check_mech_sys_type.rb +139 -0
  47. data/lib/openstudio/extension/core/check_part_loads.rb +451 -0
  48. data/lib/openstudio/extension/core/check_placeholder.rb +75 -0
  49. data/lib/openstudio/extension/core/check_plant_cap.rb +123 -0
  50. data/lib/openstudio/extension/core/check_plant_temps.rb +159 -0
  51. data/lib/openstudio/extension/core/check_plenum_loads.rb +87 -0
  52. data/lib/openstudio/extension/core/check_pump_pwr.rb +108 -0
  53. data/lib/openstudio/extension/core/check_sch_coord.rb +241 -0
  54. data/lib/openstudio/extension/core/check_schedules.rb +311 -0
  55. data/lib/openstudio/extension/core/check_simultaneous_heating_and_cooling.rb +158 -0
  56. data/lib/openstudio/extension/core/check_supply_air_and_thermostat_temp_difference.rb +148 -0
  57. data/lib/openstudio/extension/core/check_weather_files.rb +132 -0
  58. data/lib/openstudio/extension/core/deer_vintages.rb +311 -0
  59. data/lib/openstudio/extension/core/os_lib_aedg_measures.rb +491 -0
  60. data/lib/openstudio/extension/core/os_lib_cofee.rb +259 -0
  61. data/lib/openstudio/extension/core/os_lib_constructions.rb +378 -0
  62. data/lib/openstudio/extension/core/os_lib_geometry.rb +1022 -0
  63. data/lib/openstudio/extension/core/os_lib_helper_methods.rb +399 -0
  64. data/lib/openstudio/extension/core/os_lib_hvac.rb +2171 -0
  65. data/lib/openstudio/extension/core/os_lib_lighting_and_equipment.rb +214 -0
  66. data/lib/openstudio/extension/core/os_lib_model_generation.rb +817 -0
  67. data/lib/openstudio/extension/core/os_lib_model_simplification.rb +1049 -0
  68. data/lib/openstudio/extension/core/os_lib_outdoorair_and_infiltration.rb +165 -0
  69. data/lib/openstudio/extension/core/os_lib_reporting.rb +4652 -0
  70. data/lib/openstudio/extension/core/os_lib_reporting_qaqc.rb +200 -0
  71. data/lib/openstudio/extension/core/os_lib_schedules.rb +963 -0
  72. data/lib/openstudio/extension/rake_task.rb +149 -0
  73. data/lib/openstudio/extension/runner.rb +644 -0
  74. data/lib/openstudio/extension/version.rb +40 -0
  75. data/openstudio-extension.gemspec +20 -15
  76. metadata +150 -14
  77. data/.travis.yml +0 -7
  78. data/lib/OpenStudio/Extension/rake_task.rb +0 -84
  79. data/lib/OpenStudio/Extension/version.rb +0 -33
  80. data/lib/OpenStudio/extension.rb +0 -65
@@ -0,0 +1,491 @@
1
+ # *******************************************************************************
2
+ # OpenStudio(R), Copyright (c) 2008-2019, Alliance for Sustainable Energy, LLC.
3
+ # All rights reserved.
4
+ # Redistribution and use in source and binary forms, with or without
5
+ # modification, are permitted provided that the following conditions are met:
6
+ #
7
+ # (1) Redistributions of source code must retain the above copyright notice,
8
+ # this list of conditions and the following disclaimer.
9
+ #
10
+ # (2) Redistributions in binary form must reproduce the above copyright notice,
11
+ # this list of conditions and the following disclaimer in the documentation
12
+ # and/or other materials provided with the distribution.
13
+ #
14
+ # (3) Neither the name of the copyright holder nor the names of any contributors
15
+ # may be used to endorse or promote products derived from this software without
16
+ # specific prior written permission from the respective party.
17
+ #
18
+ # (4) Other than as required in clauses (1) and (2), distributions in any form
19
+ # of modifications or other derivative works may not use the "OpenStudio"
20
+ # trademark, "OS", "os", or any other confusingly similar designation without
21
+ # specific prior written permission from Alliance for Sustainable Energy, LLC.
22
+ #
23
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS
24
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
25
+ # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE
27
+ # UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF
28
+ # THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
29
+ # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
30
+ # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
32
+ # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33
+ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
+ # *******************************************************************************
35
+
36
+ module OsLib_AedgMeasures
37
+ def self.getClimateZoneNumber(model, runner = nil)
38
+ # get ashrae climate zone from model
39
+ ashraeClimateZone = ''
40
+ climateZones = model.getClimateZones
41
+ climateZones.climateZones.each do |climateZone|
42
+ if climateZone.institution == 'ASHRAE'
43
+ ashraeClimateZone = climateZone.value
44
+ if !runner.nil?
45
+ # runner.registerInfo("Using ASHRAE Climate zone #{ashraeClimateZone} for AEDG recommendations.")
46
+ end
47
+ end
48
+ end
49
+
50
+ if ashraeClimateZone == '' # should this be not applicable or error?
51
+ if !runner.nil?
52
+ runner.registerError("Please assign an ASHRAE Climate Zone to your model using the site tab in the OpenStudio application. The measure can't make AEDG recommendations without this information.")
53
+ end
54
+ return false # note - for this to work need to check for false in measure.rb and add return false there as well.
55
+ else
56
+ climateZoneNumber = ashraeClimateZone.split(//).first
57
+ end
58
+
59
+ # expected climate zone number should be 1 through 8
60
+ if !['1', '2', '3', '4', '5', '6', '7', '8'].include? climateZoneNumber
61
+ runner.registerWarning('ASHRAE climate zone number is not within expected range of 1 to 8.')
62
+ # return false # note - for this to work need to check for false in measure.rb and add return false there as well.
63
+ end
64
+
65
+ result = climateZoneNumber
66
+ # don't add return false here, need to catch errors above
67
+ end
68
+
69
+ def self.getLongHowToTips(guide, aedgTips, runner)
70
+ # get tips
71
+ if guide == 'K12'
72
+ hash = OsLib_AedgMeasures.getK12Tips
73
+ elsif guide == 'SmMdOff'
74
+ hash = OsLib_AedgMeasures.getSmMdOffTips
75
+ else
76
+ runner.registerError("#{guide} is an invalid value. Can't generate how to tip messages.")
77
+ return false # note - for this to work need to check for false in measure.rb and add return false there as well.
78
+ # this should only happen if measure writer passes bad values to getLongHowToTips
79
+ end
80
+
81
+ # array for info string
82
+ string = []
83
+
84
+ # create info messages
85
+ aedgTips.each do |aedgtip|
86
+ if hash[aedgtip] != hash[0]
87
+ string << hash[aedgtip]
88
+ else
89
+ runner.registerWarning("#{aedgtip} is an invalid key for tip hash. Can't generate tip.")
90
+ end
91
+ end
92
+
93
+ # see if expected number of messages created
94
+ if aedgTips.size != string.size
95
+ runner.registerWarning('One more more messages were not created.')
96
+ end
97
+
98
+ result = "#{hash[0]}: #{string.join(', ')}." # hash[0] bad key will return default value
99
+ # don't add return false here, need to catch errors above
100
+ end
101
+
102
+ # hash of how to tips for K-12 school AEDG
103
+ def self.getK12Tips
104
+ # envelope tips
105
+ @aedgK12HowToTipHash = Hash.new('K-12 Schools AEDG How to Implement Recommendations')
106
+ @aedgK12HowToTipHash['EN01'] = 'EN1 Cool Roofs'
107
+ @aedgK12HowToTipHash['EN02'] = 'EN2 Roofs-Insulation Entirely above Deck'
108
+ @aedgK12HowToTipHash['EN03'] = 'EN3 Roofs-Attics, and Other Roofs'
109
+ @aedgK12HowToTipHash['EN04'] = 'EN4 Roofs-Metal Buildings'
110
+ @aedgK12HowToTipHash['EN05'] = 'EN5 Walls-Mass'
111
+ @aedgK12HowToTipHash['EN06'] = 'EN6 Walls-Steel Framed'
112
+ @aedgK12HowToTipHash['EN07'] = 'EN7 Walls-Wood Frame and Other'
113
+ @aedgK12HowToTipHash['EN08'] = 'EN8 Walls-Metal Building'
114
+ @aedgK12HowToTipHash['EN09'] = 'EN9 Below-Grade Walls'
115
+ @aedgK12HowToTipHash['EN10'] = 'EN10 Floors-Mass'
116
+ @aedgK12HowToTipHash['EN11'] = 'EN11 Floors-Metal Joist or Wood Joist/Wood Frame'
117
+ @aedgK12HowToTipHash['EN12'] = 'EN12 Slab-on-Grade Floors-Unheated'
118
+ @aedgK12HowToTipHash['EN13'] = 'EN13 Slab-on-Grade Floors-Heated'
119
+ @aedgK12HowToTipHash['EN14'] = 'EN14 Slab Edge Insulation'
120
+ @aedgK12HowToTipHash['EN15'] = 'EN15 Doors-Opaque, Swinging'
121
+ @aedgK12HowToTipHash['EN16'] = 'EN16 Doors-Opaque, Roll-Up, or Sliding'
122
+ @aedgK12HowToTipHash['EN17'] = 'EN17 Air Infiltration Control'
123
+ @aedgK12HowToTipHash['EN18'] = 'EN18 Vestibules'
124
+ @aedgK12HowToTipHash['EN19'] = 'EN19 Alternative Constructions'
125
+ @aedgK12HowToTipHash['EN20'] = 'EN20 Truss Heel Heights'
126
+ @aedgK12HowToTipHash['EN21'] = 'EN21 Moisture Control'
127
+ @aedgK12HowToTipHash['EN22'] = 'EN22 Thermal Bridging-Opaque Components'
128
+ @aedgK12HowToTipHash['EN23'] = 'EN23 Thermal Bridging-Fenestration'
129
+ @aedgK12HowToTipHash['EN24'] = 'EN24 Fenestration Descriptions'
130
+ @aedgK12HowToTipHash['EN25'] = 'EN25 View Window-to Floor Area Ratio (VFR)'
131
+ @aedgK12HowToTipHash['EN26'] = 'EN26 Unwanted Solar Heat Gain Is Most Effectively Controlled on the Outside of the Building'
132
+ @aedgK12HowToTipHash['EN27'] = 'EN27 Operable versus Fixed Windows'
133
+ @aedgK12HowToTipHash['EN28'] = 'EN28 Building Form and Window Orientation'
134
+ @aedgK12HowToTipHash['EN29'] = 'EN29 Glazing'
135
+ @aedgK12HowToTipHash['EN30'] = 'EN30 Obstructions and Planting'
136
+ @aedgK12HowToTipHash['EN31'] = 'EN31 Window Orientation'
137
+ @aedgK12HowToTipHash['EN32'] = 'EN32 Passive Solar'
138
+ @aedgK12HowToTipHash['EN33'] = 'EN33 Glazing'
139
+
140
+ # daylighting tips
141
+ @aedgK12HowToTipHash['DL01'] = 'DL1 General Principles'
142
+ @aedgK12HowToTipHash['DL02'] = 'DL2 Consider Daylighting Early in the Design Process'
143
+ @aedgK12HowToTipHash['DL03'] = 'DL3 Space Types'
144
+ @aedgK12HowToTipHash['DL04'] = 'DL4 How to Select Daylighting Strategies'
145
+ @aedgK12HowToTipHash['DL05'] = 'DL5 Recommended Daylighting Fenestration-to-Floor Area Ratios'
146
+ @aedgK12HowToTipHash['DL06'] = 'DL6 View Windows Separate from Daylighting Strategy'
147
+ @aedgK12HowToTipHash['DL07'] = 'DL7 Lighting Design Criteria'
148
+ @aedgK12HowToTipHash['DL08'] = 'DL8 Use Daylighting Analysis Tools to Optimize Design'
149
+ @aedgK12HowToTipHash['DL09'] = 'DL9 Building Orientation'
150
+ @aedgK12HowToTipHash['DL10'] = 'DL10 Ceiling Height'
151
+ @aedgK12HowToTipHash['DL11'] = 'DL11 Outdoor Surface Reflectance'
152
+ @aedgK12HowToTipHash['DL12'] = 'DL12 Eliminate Direct Beam Radiation'
153
+ @aedgK12HowToTipHash['DL13'] = 'DL13 Daylighting Control for Audio-Visual (AV) Projection Activities'
154
+ @aedgK12HowToTipHash['DL14'] = 'DL14 Interior Finishes for Daylighting'
155
+ @aedgK12HowToTipHash['DL15'] = 'DL15 Calibration and Commissioning'
156
+ @aedgK12HowToTipHash['DL16'] = 'DL16 Dimming Controls'
157
+ @aedgK12HowToTipHash['DL17'] = 'DL17 Photosensor Placement and Lighting Layout'
158
+ @aedgK12HowToTipHash['DL18'] = 'DL18 Photosensor Specifications'
159
+ @aedgK12HowToTipHash['DL19'] = 'DL19 Select Compatible Light Fixtures'
160
+ @aedgK12HowToTipHash['DL20'] = 'DL20 Sidelighting Patterns'
161
+ @aedgK12HowToTipHash['DL21'] = 'DL21 South-Facing Classrooms-Configuration of Apertures'
162
+ @aedgK12HowToTipHash['DL22'] = 'DL22 South-Facing Classrooms-Glazing Area and Fenestration Type'
163
+ @aedgK12HowToTipHash['DL23'] = 'DL23 View Glazing and VTs'
164
+ @aedgK12HowToTipHash['DL24'] = 'DL24 South-Facing Classrooms-Make Light Shelf Durable and Reflective'
165
+ @aedgK12HowToTipHash['DL25'] = 'DL25 North-Facing Classroom-Configuration of Apertures'
166
+ @aedgK12HowToTipHash['DL26'] = 'DL26 North-Facing Classroom-Glazing Area and Fenestration Type'
167
+ @aedgK12HowToTipHash['DL27'] = 'DL27 South-and North-Facing Classrooms-Sloped Ceilings'
168
+ @aedgK12HowToTipHash['DL28'] = 'DL28 South-and North-Facing Classrooms-Recognize the Limits of Side Daylighting'
169
+ @aedgK12HowToTipHash['DL29'] = 'DL29 Classroom Toplighting Pattern'
170
+ @aedgK12HowToTipHash['DL30'] = 'DL30 Sizing the Roof Monitors'
171
+ @aedgK12HowToTipHash['DL31'] = 'DL31 Overhang for Roof Monitor'
172
+ @aedgK12HowToTipHash['DL32'] = 'DL32 Use Light-Colored Roofing in Front of Monitors'
173
+ @aedgK12HowToTipHash['DL33'] = 'DL33 Use Baffles to Block Direct Beam Radiation and Diffuse Light'
174
+ @aedgK12HowToTipHash['DL34'] = 'DL34 Minimize Contrast at Well-Ceiling Intersection'
175
+ @aedgK12HowToTipHash['DL35'] = 'DL35 Address the Monitor Design'
176
+ @aedgK12HowToTipHash['DL36'] = 'DL36 Let the Heat Stratify'
177
+ @aedgK12HowToTipHash['DL37'] = 'DL37 Minimize the Depth of the Ceiling Cavity'
178
+ @aedgK12HowToTipHash['DL38'] = 'DL38 Classroom Sidelighting Plus Toplighting Pattern'
179
+ @aedgK12HowToTipHash['DL39'] = 'DL39 Gym Toplighting Overview'
180
+ @aedgK12HowToTipHash['DL40'] = 'DL40 Gym Toplighting Sizing'
181
+ @aedgK12HowToTipHash['DL41'] = 'DL41 Gym Toplighting Using South-Facing Roof Monitors'
182
+ @aedgK12HowToTipHash['DL42'] = 'DL42 Gym Toplighting in Combination with North-and South-Facing Sidelighting'
183
+
184
+ # electric lighting tips
185
+ @aedgK12HowToTipHash['EL01'] = 'EL1 Light-Colored Interior Finishes'
186
+ @aedgK12HowToTipHash['EL02'] = 'EL2 Color Rendering Index'
187
+ @aedgK12HowToTipHash['EL03'] = 'EL3 Color Temperature'
188
+ @aedgK12HowToTipHash['EL04'] = 'EL4 Linear Fluorescent Lamps and Ballasts'
189
+ @aedgK12HowToTipHash['EL05'] = 'EL5 Compact Fluorescent'
190
+ @aedgK12HowToTipHash['EL06'] = 'EL6 Metal Halide'
191
+ @aedgK12HowToTipHash['EL07'] = 'EL7 Light-Emitting Diode (LED) Lighting'
192
+ @aedgK12HowToTipHash['EL08'] = 'EL8 Occupancy Sensors'
193
+ @aedgK12HowToTipHash['EL09'] = 'EL9 Multilevel Switching or Dimming'
194
+ @aedgK12HowToTipHash['EL10'] = 'EL10 Exit Signs'
195
+ @aedgK12HowToTipHash['EL11'] = 'EL11 Circuiting and Switching'
196
+ @aedgK12HowToTipHash['EL12'] = 'EL12 Electrical Lighting Design for Schools'
197
+ @aedgK12HowToTipHash['EL13'] = 'EL13 Classroom Lighting'
198
+ @aedgK12HowToTipHash['EL14'] = 'EL14 Gym Lighting'
199
+ @aedgK12HowToTipHash['EL15'] = 'EL15 Lighting for a Multipurpose Room'
200
+ @aedgK12HowToTipHash['EL16'] = 'EL16 Lighting for a Library or Media Center'
201
+ @aedgK12HowToTipHash['EL17'] = 'EL17 Corridor Lighting'
202
+ @aedgK12HowToTipHash['EL18'] = 'EL18 Lighting for Offices and Teacher Support Rooms'
203
+ @aedgK12HowToTipHash['EL19'] = 'EL19 Lighting for Locker Areas and Restrooms'
204
+ @aedgK12HowToTipHash['EL20'] = 'EL20 Twenty-Four Hour Lighting'
205
+ @aedgK12HowToTipHash['EL21'] = 'EL21 Exterior Lighting Power-Parking Lots and Drives'
206
+ @aedgK12HowToTipHash['EL22'] = 'EL22 Exterior Lighting Power-Walkways'
207
+ @aedgK12HowToTipHash['EL23'] = 'EL23 Decorative Façade Lighting'
208
+ @aedgK12HowToTipHash['EL24'] = 'EL24 Sources'
209
+ @aedgK12HowToTipHash['EL25'] = 'EL25 Controls'
210
+
211
+ # plug load tips
212
+ @aedgK12HowToTipHash['PL01'] = 'PL1 General Guidance'
213
+ @aedgK12HowToTipHash['PL02'] = 'PL2 Computer (Information Technology) Equipment'
214
+ @aedgK12HowToTipHash['PL03'] = 'PL3 Staff and Occupant Equipment Control'
215
+ @aedgK12HowToTipHash['PL04'] = 'PL4 Phantom/Parasitic Loads'
216
+ @aedgK12HowToTipHash['PL05'] = 'PL5 ENERGY STAR Appliances/Equipment'
217
+ @aedgK12HowToTipHash['PL06'] = 'PL6 Electrical Distribution System'
218
+
219
+ # kitchen tips
220
+ @aedgK12HowToTipHash['KE01'] = 'KE1 General Guidance'
221
+ @aedgK12HowToTipHash['KE02'] = 'KE2 Energy-Efficient Kitchen Equipment'
222
+ @aedgK12HowToTipHash['KE03'] = 'KE3 Exhaust and Ventilation Energy Use'
223
+ @aedgK12HowToTipHash['KE04'] = 'KE4 Minimize Hot-Water Use'
224
+ @aedgK12HowToTipHash['KE05'] = 'KE5 High-Efficiency Walk-in Refrigeration Systems'
225
+ @aedgK12HowToTipHash['KE06'] = 'KE6 Position Hooded Appliances to Achieve Lower Exhaust Rates'
226
+ @aedgK12HowToTipHash['KE07'] = 'KE7 Operating Considerations'
227
+
228
+ # service water heating tips
229
+ @aedgK12HowToTipHash['WH01'] = 'WH1 Service Water -Heating Types'
230
+ @aedgK12HowToTipHash['WH02'] = 'WH2 System Descriptions'
231
+ @aedgK12HowToTipHash['WH03'] = 'WH3 Sizing'
232
+ @aedgK12HowToTipHash['WH04'] = 'WH4 Equipment Efficiency'
233
+ @aedgK12HowToTipHash['WH05'] = 'WH5 Location'
234
+ @aedgK12HowToTipHash['WH06'] = 'WH6 Pipe Insulation'
235
+ @aedgK12HowToTipHash['WH07'] = 'WH7 Solar Hot-Water Systems'
236
+
237
+ # hvac tips
238
+ @aedgK12HowToTipHash['HV01'] = 'HV1 Ground-Source Heat Pump System'
239
+ @aedgK12HowToTipHash['HV02'] = 'HV2 Fan-Coil System'
240
+ @aedgK12HowToTipHash['HV03'] = 'HV3 Multiple-Zone, Variable-Air-Volume (VAV) Air Handlers'
241
+ @aedgK12HowToTipHash['HV04'] = 'HV4 Dedicated Outdoor Air System (DOAS)'
242
+ @aedgK12HowToTipHash['HV05'] = 'HV5 Exhaust Air Energy Recovery'
243
+ @aedgK12HowToTipHash['HV06'] = 'HV6 Chilled-Water System'
244
+ @aedgK12HowToTipHash['HV07'] = 'HV7 Water Heating System'
245
+ @aedgK12HowToTipHash['HV08'] = 'HV8 Condenser-Water System for GSHPs'
246
+ @aedgK12HowToTipHash['HV09'] = 'HV9 Cooling and Heating Load Calculations'
247
+ @aedgK12HowToTipHash['HV10'] = 'HV10 Ventilation Air'
248
+ @aedgK12HowToTipHash['HV11'] = 'HV11 Cooling and Heating Equipment Efficiencies'
249
+ @aedgK12HowToTipHash['HV12'] = 'HV12 Fan Power and Motor Efficiencies'
250
+ @aedgK12HowToTipHash['HV13'] = 'HV13 Part-Load Dehumidification'
251
+ @aedgK12HowToTipHash['HV14'] = 'HV14 Economizer'
252
+ @aedgK12HowToTipHash['HV15'] = 'HV15 Demand-Controlled Ventilation'
253
+ @aedgK12HowToTipHash['HV16'] = 'HV16 System-Level Control Strategies'
254
+ @aedgK12HowToTipHash['HV17'] = 'HV17 Thermal Zoning'
255
+ @aedgK12HowToTipHash['HV18'] = 'HV18 Ductwork Design and Construction'
256
+ @aedgK12HowToTipHash['HV19'] = 'HV19 Duct Insulation'
257
+ @aedgK12HowToTipHash['HV20'] = 'HV20 Duct Sealing and Leakage Testing'
258
+ @aedgK12HowToTipHash['HV21'] = 'HV21 Exhaust Air Systems'
259
+ @aedgK12HowToTipHash['HV22'] = 'HV22 Testing, Adjusting, and Balancing'
260
+ @aedgK12HowToTipHash['HV23'] = 'HV23 Air Cleaning'
261
+ @aedgK12HowToTipHash['HV24'] = 'HV24 Relief versus Return Fans'
262
+ @aedgK12HowToTipHash['HV25'] = 'HV25 Zone Temperature Control'
263
+ @aedgK12HowToTipHash['HV26'] = 'HV26 Heating Sources'
264
+ @aedgK12HowToTipHash['HV27'] = 'HV27 Noise Control'
265
+ @aedgK12HowToTipHash['HV28'] = 'HV28 Proper Maintenance'
266
+ # bonus hvac tips
267
+ @aedgK12HowToTipHash['HV29'] = 'HV29 Natural Ventilation and Naturally Conditioned Spaces'
268
+ @aedgK12HowToTipHash['HV30'] = 'HV30 Thermal Storage'
269
+ @aedgK12HowToTipHash['HV31'] = 'HV31 Thermal Mass'
270
+ @aedgK12HowToTipHash['HV32'] = 'HV32 Thermal Displacement Ventilation'
271
+ @aedgK12HowToTipHash['HV33'] = 'HV33 ASHRAE Standard 62.1 IAQ Procedure'
272
+ @aedgK12HowToTipHash['HV34'] = 'HV34 Evaporative Cooling'
273
+
274
+ # commissioning tips
275
+ @aedgK12HowToTipHash['QA01'] = 'QA1 Design and Construction Team'
276
+ @aedgK12HowToTipHash['QA02'] = 'QA2 Owner’s Project Requirements and Basis of Design'
277
+ @aedgK12HowToTipHash['QA03'] = 'QA3 Selection of Quality Assurance Provider'
278
+ @aedgK12HowToTipHash['QA04'] = 'QA4 Design and Construction Schedule'
279
+ @aedgK12HowToTipHash['QA05'] = 'QA5 Design Review'
280
+ @aedgK12HowToTipHash['QA06'] = 'QA6 Defining Quality Assurance at Pre-Bid'
281
+ @aedgK12HowToTipHash['QA07'] = 'QA7 Verifying Building Envelope Construction'
282
+ @aedgK12HowToTipHash['QA08'] = 'QA8 Verifying Lighting Construction'
283
+ @aedgK12HowToTipHash['QA09'] = 'QA9 Verifying Electrical and HVAC Systems Construction'
284
+ @aedgK12HowToTipHash['QA10'] = 'QA10 Functional Performance Testing'
285
+ @aedgK12HowToTipHash['QA11'] = 'QA11 Substantial Completion'
286
+ @aedgK12HowToTipHash['QA12'] = 'QA12 Final Acceptance'
287
+ @aedgK12HowToTipHash['QA13'] = 'QA13 Establish Building Operation and Maintenance Program'
288
+ @aedgK12HowToTipHash['QA14'] = 'QA14 Monitor Post-Occupancy Performance'
289
+ @aedgK12HowToTipHash['QA15'] = 'QA15 M&V Electrical Panel Guidance'
290
+ @aedgK12HowToTipHash['QA16'] = 'QA16 M&V Data Management and Access'
291
+ @aedgK12HowToTipHash['QA17'] = 'QA17 M&V Benchmarking'
292
+ @aedgK12HowToTipHash['QA18'] = 'QA18 The Building as a Teaching Tool'
293
+
294
+ # renewable energy tips
295
+ @aedgK12HowToTipHash['RE01'] = 'RE1 Photovoltaic (PV) Systems'
296
+ @aedgK12HowToTipHash['RE02'] = 'RE2 Solar Hot Water Systems'
297
+ @aedgK12HowToTipHash['RE03'] = 'RE3 Wind Turbine Power'
298
+
299
+ result = @aedgK12HowToTipHash
300
+ return result
301
+ end
302
+
303
+ # hash of how to tips for small to medium office buildings AEDG
304
+ def self.getSmMdOffTips
305
+ # envelope tips
306
+ aedgSmMdOffHowToTipHash = Hash.new('Small and Medium Offices AEDG How to Implement Recommendations')
307
+ aedgSmMdOffHowToTipHash['EN01'] = 'EN1 Cool Roofs'
308
+ aedgSmMdOffHowToTipHash['EN02'] = 'EN2 Roofs-Insulation Entirely above Deck'
309
+ aedgSmMdOffHowToTipHash['EN03'] = 'EN3 Roofs-Attics, and Other Roofs'
310
+ aedgSmMdOffHowToTipHash['EN04'] = 'EN4 Roofs-Metal Buildings'
311
+ aedgSmMdOffHowToTipHash['EN05'] = 'EN5 Walls-Mass'
312
+ aedgSmMdOffHowToTipHash['EN06'] = 'EN6 Walls-Steel Framed'
313
+ aedgSmMdOffHowToTipHash['EN07'] = 'EN7 Walls-Wood Frame and Other'
314
+ aedgSmMdOffHowToTipHash['EN08'] = 'EN8 Walls-Metal Building'
315
+ aedgSmMdOffHowToTipHash['EN09'] = 'EN9 Walls-Below-Grade'
316
+ aedgSmMdOffHowToTipHash['EN10'] = 'EN10 Floors-Mass'
317
+ aedgSmMdOffHowToTipHash['EN11'] = 'EN11 Floors-Metal Joist or Wood Joist/Wood Frame'
318
+ aedgSmMdOffHowToTipHash['EN12'] = 'EN12 Slab-on-Grade Floors-Unheated'
319
+ aedgSmMdOffHowToTipHash['EN13'] = 'EN13 Slab-on-Grade Floors-Heated'
320
+ aedgSmMdOffHowToTipHash['EN14'] = 'EN14 Slab Edge Insulation'
321
+ aedgSmMdOffHowToTipHash['EN15'] = 'EN15 Doors-Opaque, Swinging'
322
+ aedgSmMdOffHowToTipHash['EN16'] = 'EN16 Doors-Opaque, Roll-Up, or Sliding'
323
+ aedgSmMdOffHowToTipHash['EN17'] = 'EN17 Air Infiltration Control'
324
+ aedgSmMdOffHowToTipHash['EN18'] = 'EN18 Vestibules'
325
+ aedgSmMdOffHowToTipHash['EN19'] = 'EN19 Alternative Constructions'
326
+ aedgSmMdOffHowToTipHash['EN20'] = 'EN20 Truss Heel Heights'
327
+ aedgSmMdOffHowToTipHash['EN21'] = 'EN21 Moisture Control'
328
+ aedgSmMdOffHowToTipHash['EN22'] = 'EN22 Thermal Bridging-Opaque Components'
329
+ aedgSmMdOffHowToTipHash['EN23'] = 'EN23 Thermal Bridging-Fenestration'
330
+ aedgSmMdOffHowToTipHash['EN24'] = 'EN24 Vertical Fenestration Descriptions'
331
+ aedgSmMdOffHowToTipHash['EN25'] = 'EN25 Window-to-Wall Ratio (WWR)'
332
+ aedgSmMdOffHowToTipHash['EN26'] = 'EN26 Unwanted Solar Heat Gain Is Most Effectively Controlled on the Outside of the Building'
333
+ aedgSmMdOffHowToTipHash['EN27'] = 'EN27 Operable versus Fixed Windows'
334
+ aedgSmMdOffHowToTipHash['EN28'] = 'EN28 Building Form and Window Orientation'
335
+ aedgSmMdOffHowToTipHash['EN29'] = 'EN29 Glazing'
336
+ aedgSmMdOffHowToTipHash['EN30'] = 'EN30 Obstructions and Planting'
337
+ aedgSmMdOffHowToTipHash['EN31'] = 'EN31 Window Orientation'
338
+ aedgSmMdOffHowToTipHash['EN32'] = 'EN32 Passive Solar'
339
+ aedgSmMdOffHowToTipHash['EN33'] = 'EN33 Glazing'
340
+ aedgSmMdOffHowToTipHash['EN34'] = 'EN34 Visible Transmittance (VT)'
341
+ aedgSmMdOffHowToTipHash['EN35'] = 'EN35 Separating Views and Daylight'
342
+ aedgSmMdOffHowToTipHash['EN36'] = 'EN36 Color-Neutral Glazing'
343
+ aedgSmMdOffHowToTipHash['EN37'] = 'EN37 Reflectivity of Glass'
344
+ aedgSmMdOffHowToTipHash['EN38'] = 'EN38 Light-to-Solar-Gain Ratio'
345
+ aedgSmMdOffHowToTipHash['EN39'] = 'EN39 High Ceilings'
346
+ aedgSmMdOffHowToTipHash['EN40'] = 'EN40 Light Shelves'
347
+
348
+ # daylighting tips
349
+ aedgSmMdOffHowToTipHash['DL01'] = 'DL1 Daylighting Early in the Design Process'
350
+ aedgSmMdOffHowToTipHash['DL02'] = 'DL2 Daylighting Analysis Tools to Optimize Design'
351
+ aedgSmMdOffHowToTipHash['DL03'] = 'DL3 Space Types, Layout, and Daylight'
352
+ aedgSmMdOffHowToTipHash['DL04'] = 'DL4 Building Orientation and Daylight'
353
+ aedgSmMdOffHowToTipHash['DL05'] = 'DL5 Building Shape and Daylight'
354
+ aedgSmMdOffHowToTipHash['DL06'] = 'DL6 Window-to-Wall Ratio (WWR)'
355
+ aedgSmMdOffHowToTipHash['DL07'] = 'DL7 Sidelighting-Ceiling and Window Height'
356
+ aedgSmMdOffHowToTipHash['DL08'] = 'Sidelighting-Clerestory Windows'
357
+ aedgSmMdOffHowToTipHash['DL09'] = 'DL9 Sidelighting-Borrowed Light'
358
+ aedgSmMdOffHowToTipHash['DL10'] = 'DL10 Sidelighting-Wall-to-Wall Windows'
359
+ aedgSmMdOffHowToTipHash['DL11'] = 'DL11 Sidelighting-Punched Windows'
360
+ aedgSmMdOffHowToTipHash['DL12'] = 'DL12 Shading Systems to Eliminate Direct-Beam Radiation'
361
+ aedgSmMdOffHowToTipHash['DL13'] = 'DL13 Daylighting Control for Audiovisual Activities'
362
+ aedgSmMdOffHowToTipHash['DL14'] = 'DL14 Interior Finishes for Daylighting'
363
+ aedgSmMdOffHowToTipHash['DL15'] = 'DL15 Outdoor Surface Reflectance'
364
+ aedgSmMdOffHowToTipHash['DL16'] = 'DL16 Calibration and Commissioning'
365
+ aedgSmMdOffHowToTipHash['DL17'] = 'DL17 Dimming Controls'
366
+ aedgSmMdOffHowToTipHash['DL18'] = 'DL18 Photosensor Placement and Lighting Layout'
367
+ aedgSmMdOffHowToTipHash['DL19'] = 'DL19 Photosensor Specifications'
368
+ aedgSmMdOffHowToTipHash['DL20'] = 'DL20 Select Compatible Light Fixtures'
369
+ # bonus daylighting tips
370
+ aedgSmMdOffHowToTipHash['DL21'] = 'DL21 Toplighting'
371
+ aedgSmMdOffHowToTipHash['DL22'] = 'DL22 Rooftop Monitors'
372
+ aedgSmMdOffHowToTipHash['DL23'] = 'DL23 Rooftop Monitor Design'
373
+ aedgSmMdOffHowToTipHash['DL24'] = 'DL24 Skylights'
374
+ aedgSmMdOffHowToTipHash['DL25'] = 'DL25 Toplighting-Thermal Transmittance (Climate Zones 1-3)'
375
+ aedgSmMdOffHowToTipHash['DL26'] = 'DL26 Toplighting-Thermal Transmittance (Climate Zones 4-8)'
376
+ aedgSmMdOffHowToTipHash['DL27'] = 'DL27 Toplighting-Ceiling Height Differentials'
377
+
378
+ # electric lighting tips
379
+ aedgSmMdOffHowToTipHash['EL01'] = 'EL1 Savings and Occupant Acceptance'
380
+ aedgSmMdOffHowToTipHash['EL02'] = 'EL2 Space Planning-Open Offices'
381
+ aedgSmMdOffHowToTipHash['EL03'] = 'EL3 Space Planning-Private Offices, Conference Rooms, and Break Rooms'
382
+ aedgSmMdOffHowToTipHash['EL04'] = 'EL4 Light-Colored Interior Finishes'
383
+ aedgSmMdOffHowToTipHash['EL05'] = 'EL5 Task Lighting'
384
+ aedgSmMdOffHowToTipHash['EL06'] = 'EL6 Color Rendering Index (CRI)'
385
+ aedgSmMdOffHowToTipHash['EL07'] = 'EL7 Color Temperature'
386
+ aedgSmMdOffHowToTipHash['EL08'] = 'EL8 Linear Fluorescent Lamps and Ballasts'
387
+ aedgSmMdOffHowToTipHash['EL09'] = 'EL9 Occupancy Sensors'
388
+ aedgSmMdOffHowToTipHash['EL10'] = 'EL10 Multilevel Switching'
389
+ aedgSmMdOffHowToTipHash['EL11'] = 'EL11 Daylight-Responsive Controls'
390
+ aedgSmMdOffHowToTipHash['EL12'] = 'EL12 Exit Signs'
391
+ aedgSmMdOffHowToTipHash['EL13'] = 'EL13 Light Fixture Distribution'
392
+ aedgSmMdOffHowToTipHash['EL14'] = 'EL14 Open-Plan Offices'
393
+ aedgSmMdOffHowToTipHash['EL15'] = 'EL15 Private Offices'
394
+ aedgSmMdOffHowToTipHash['EL16'] = 'EL16 Conference Rooms/Meeting Rooms'
395
+ aedgSmMdOffHowToTipHash['EL17'] = 'EL17 Corridors'
396
+ aedgSmMdOffHowToTipHash['EL18'] = 'EL18 Storage Areas'
397
+ aedgSmMdOffHowToTipHash['EL19'] = 'EL19 Lobbies'
398
+ aedgSmMdOffHowToTipHash['EL20'] = 'EL20 Twenty-Four Hour Lighting'
399
+ aedgSmMdOffHowToTipHash['EL21'] = 'EL21 Exterior Lighting Power-Parking Lots and Drives'
400
+ aedgSmMdOffHowToTipHash['EL22'] = 'EL22 Exterior Lighting Power-Walkways'
401
+ aedgSmMdOffHowToTipHash['EL23'] = 'EL23 Decorative Façade Lighting'
402
+ aedgSmMdOffHowToTipHash['EL24'] = 'EL24 Sources'
403
+ aedgSmMdOffHowToTipHash['EL25'] = 'EL25 Controls'
404
+
405
+ # plug load tips
406
+ aedgSmMdOffHowToTipHash['PL01'] = 'PL1 Connected Wattage'
407
+ aedgSmMdOffHowToTipHash['PL02'] = 'PL2 Laptop Computers'
408
+ aedgSmMdOffHowToTipHash['PL03'] = 'PL3 Occupancy Controls'
409
+ aedgSmMdOffHowToTipHash['PL04'] = 'PL4 Parasitic Loads'
410
+ aedgSmMdOffHowToTipHash['PL05'] = 'PL5 Printing Equipment'
411
+ aedgSmMdOffHowToTipHash['PL06'] = 'PL6 Unnecessary Equipment'
412
+
413
+ # service water heating tips
414
+ aedgSmMdOffHowToTipHash['WH01'] = 'WH1 Service Water Heating Types'
415
+ aedgSmMdOffHowToTipHash['WH02'] = 'WH2 System Descriptions'
416
+ aedgSmMdOffHowToTipHash['WH03'] = 'WH3 Sizing'
417
+ aedgSmMdOffHowToTipHash['WH04'] = 'WH4 Equipment Efficiency'
418
+ aedgSmMdOffHowToTipHash['WH05'] = 'WH5 Location'
419
+ aedgSmMdOffHowToTipHash['WH06'] = 'WH6 Pipe Insulation'
420
+
421
+ # hvac tips
422
+ aedgSmMdOffHowToTipHash['HV01'] = 'HV1 Cooling and Heating Loads'
423
+ aedgSmMdOffHowToTipHash['HV02'] = 'HV2 Certification of HVAC Equipment'
424
+ aedgSmMdOffHowToTipHash['HV03'] = "HV3 Single-Zone, Packaged Air-Source Heat Pump Systems (or Split Heat Pump
425
+ Systems) with Electric Resistance Supplemental Heat and DOASs"
426
+ aedgSmMdOffHowToTipHash['HV04'] = 'HV4 Water-Source Heat Pumps (WSHPs)'
427
+ aedgSmMdOffHowToTipHash['HV05'] = 'HV5 Ground-Coupled Water-Source Heat Pump (WSHP) System'
428
+ aedgSmMdOffHowToTipHash['HV06'] = "HV6 Multiple-Zone, VAV Packaged DX Rooftop Units with a Hot-Water Coil,
429
+ Indirect Gas Furnace, or Electric Resistance in the Rooftop Unit and
430
+ Convection Heat in the Spaces"
431
+ aedgSmMdOffHowToTipHash['HV07'] = "HV7 Multiple-Zone, VAV Air-Handling Units with Packaged Air-Cooled Chiller and
432
+ Gas-Fired Boiler"
433
+ aedgSmMdOffHowToTipHash['HV08'] = 'Fan-Coils'
434
+ aedgSmMdOffHowToTipHash['HV09'] = 'HV9 Radiant Heating and Cooling and DOAS'
435
+ aedgSmMdOffHowToTipHash['HV10'] = 'HV10 Dedicated Outdoor Air Systems (100% Outdoor Air Systems)'
436
+ aedgSmMdOffHowToTipHash['HV11'] = 'HV11 Part-Load Dehumidification'
437
+ aedgSmMdOffHowToTipHash['HV12'] = 'HV12 Exhaust Air Energy Recovery'
438
+ aedgSmMdOffHowToTipHash['HV13'] = 'HV13 Indirect Evaporative Cooling'
439
+ aedgSmMdOffHowToTipHash['HV14'] = 'HV14 Cooling and Heating Equipment Efficiencies'
440
+ aedgSmMdOffHowToTipHash['HV15'] = 'HV15 Ventilation Air'
441
+ aedgSmMdOffHowToTipHash['HV16'] = 'HV16 Economizer'
442
+ aedgSmMdOffHowToTipHash['HV17'] = 'HV17 Demand-Controlled Ventilation (DCV)'
443
+ aedgSmMdOffHowToTipHash['HV18'] = 'HV18 Carbon Dioxide (CO2 ) Sensors'
444
+ aedgSmMdOffHowToTipHash['HV19'] = 'HV19 Exhaust Air Systems'
445
+ aedgSmMdOffHowToTipHash['HV20'] = 'HV20 Ductwork Design and Construction'
446
+ aedgSmMdOffHowToTipHash['HV21'] = 'HV21 Duct Insulation'
447
+ aedgSmMdOffHowToTipHash['HV22'] = 'HV22 Duct Sealing and Leakage Testing'
448
+ aedgSmMdOffHowToTipHash['HV23'] = 'HV23 Fan Motor Efficiencies'
449
+ aedgSmMdOffHowToTipHash['HV24'] = 'HV24 Thermal Zoning'
450
+ aedgSmMdOffHowToTipHash['HV25'] = 'HV25 System-Level Control Strategies'
451
+ aedgSmMdOffHowToTipHash['HV26'] = 'HV26 Testing, Adjusting, and Balancing'
452
+ aedgSmMdOffHowToTipHash['HV27'] = 'HV27 Commissioning (Cx)'
453
+ aedgSmMdOffHowToTipHash['HV28'] = 'HV28 Filters'
454
+ aedgSmMdOffHowToTipHash['HV29'] = 'HV29 Chilled-Water (CHW) System'
455
+ aedgSmMdOffHowToTipHash['HV30'] = 'HV30 Water Heating Systems'
456
+ aedgSmMdOffHowToTipHash['HV31'] = 'HV31 Relief versus Return Fans'
457
+ aedgSmMdOffHowToTipHash['HV32'] = 'HV32 Heating Sources'
458
+ aedgSmMdOffHowToTipHash['HV33'] = 'HV33 Noise Control'
459
+ aedgSmMdOffHowToTipHash['HV34'] = 'HV34 Proper Maintenance'
460
+ aedgSmMdOffHowToTipHash['HV35'] = 'HV35 Zone Temperature Control'
461
+ aedgSmMdOffHowToTipHash['HV36'] = 'HV36 Evaporative Condensers on Rooftop Units'
462
+
463
+ # commissioning tips
464
+ aedgSmMdOffHowToTipHash['QA01'] = 'QA1 Selecting the Design and Construction Team'
465
+ aedgSmMdOffHowToTipHash['QA02'] = 'QA2 Selecting the QA Provider'
466
+ aedgSmMdOffHowToTipHash['QA03'] = 'QA3 Owner’s Project Requirements (OPR) and Basis of Design (BoD)'
467
+ aedgSmMdOffHowToTipHash['QA04'] = 'QA4 Design and Construction Schedule'
468
+ aedgSmMdOffHowToTipHash['QA05'] = 'QA5 Design Review'
469
+ aedgSmMdOffHowToTipHash['QA06'] = 'QA6 Defining QA at Pre-Bid'
470
+ aedgSmMdOffHowToTipHash['QA07'] = 'QA7 Verifying Building Envelope Construction'
471
+ aedgSmMdOffHowToTipHash['QA08'] = 'QA8 Verifying Lighting Construction'
472
+ aedgSmMdOffHowToTipHash['QA09'] = 'QA9 Verifying Electrical and HVAC Systems Construction'
473
+ aedgSmMdOffHowToTipHash['QA10'] = 'QA10 Performance Testing'
474
+ aedgSmMdOffHowToTipHash['QA11'] = 'QA11 Substantial Completion'
475
+ aedgSmMdOffHowToTipHash['QA12'] = 'QA12 Final Acceptance'
476
+ aedgSmMdOffHowToTipHash['QA13'] = 'QA13 Establish a Building Operation and Maintenance (O&M) Program'
477
+ aedgSmMdOffHowToTipHash['QA14'] = 'QA14 Monitor Post-Occupancy Performance'
478
+
479
+ # natural ventilation tips
480
+ aedgSmMdOffHowToTipHash['NV01'] = 'NV1 Natural Ventilation and Naturally Conditioned Spaces'
481
+
482
+ # renewable energy tips
483
+ aedgSmMdOffHowToTipHash['RE01'] = 'RE1 Photovoltaic (PV) Systems'
484
+ aedgSmMdOffHowToTipHash['RE02'] = 'RE2 Wind Turbine Power'
485
+ aedgSmMdOffHowToTipHash['RE03'] = 'RE3 Transpired Solar Collector'
486
+ aedgSmMdOffHowToTipHash['RE04'] = 'RE4 Power Purchase Agreements'
487
+
488
+ result = aedgSmMdOffHowToTipHash
489
+ return result
490
+ end
491
+ end