Module: OsLib_AedgMeasures

Defined in:
lib/openstudio/extension/core/os_lib_aedg_measures.rb

Overview

******************************************************************************* OpenStudio®, Copyright © Alliance for Sustainable Energy, LLC. See also openstudio.net/license *******************************************************************************

Class Method Summary collapse

Class Method Details

.getClimateZoneNumber(model, runner = nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/openstudio/extension/core/os_lib_aedg_measures.rb', line 7

def self.getClimateZoneNumber(model, runner = nil)
  # get ashrae climate zone from model
  ashraeClimateZone = ''
  climateZones = model.getClimateZones
  climateZones.climateZones.each do |climateZone|
    if climateZone.institution == 'ASHRAE'
      ashraeClimateZone = climateZone.value
      if !runner.nil?
        # runner.registerInfo("Using ASHRAE Climate zone #{ashraeClimateZone} for AEDG recommendations.")
      end
    end
  end

  if ashraeClimateZone == '' # should this be not applicable or error?
    if !runner.nil?
      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.")
    end
    return false # note - for this to work need to check for false in measure.rb and add return false there as well.
  else
    climateZoneNumber = ashraeClimateZone.split(//).first
  end

  # expected climate zone number should be 1 through 8
  if !['1', '2', '3', '4', '5', '6', '7', '8'].include? climateZoneNumber
    runner.registerWarning('ASHRAE climate zone number is not within expected range of 1 to 8.')
    # return false # note - for this to work need to check for false in measure.rb and add return false there as well.
  end

  result = climateZoneNumber
  # don't add return false here, need to catch errors above
end

.getK12TipsObject

hash of how to tips for K-12 school AEDG



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
# File 'lib/openstudio/extension/core/os_lib_aedg_measures.rb', line 73

def self.getK12Tips
  # envelope tips
  @aedgK12HowToTipHash = Hash.new('K-12 Schools AEDG How to Implement Recommendations')
  @aedgK12HowToTipHash['EN01'] = 'EN1 Cool Roofs'
  @aedgK12HowToTipHash['EN02'] = 'EN2 Roofs-Insulation Entirely above Deck'
  @aedgK12HowToTipHash['EN03'] = 'EN3 Roofs-Attics, and Other Roofs'
  @aedgK12HowToTipHash['EN04'] = 'EN4 Roofs-Metal Buildings'
  @aedgK12HowToTipHash['EN05'] = 'EN5 Walls-Mass'
  @aedgK12HowToTipHash['EN06'] = 'EN6 Walls-Steel Framed'
  @aedgK12HowToTipHash['EN07'] = 'EN7 Walls-Wood Frame and Other'
  @aedgK12HowToTipHash['EN08'] = 'EN8 Walls-Metal Building'
  @aedgK12HowToTipHash['EN09'] = 'EN9 Below-Grade Walls'
  @aedgK12HowToTipHash['EN10'] = 'EN10 Floors-Mass'
  @aedgK12HowToTipHash['EN11'] = 'EN11 Floors-Metal Joist or Wood Joist/Wood Frame'
  @aedgK12HowToTipHash['EN12'] = 'EN12 Slab-on-Grade Floors-Unheated'
  @aedgK12HowToTipHash['EN13'] = 'EN13 Slab-on-Grade Floors-Heated'
  @aedgK12HowToTipHash['EN14'] = 'EN14 Slab Edge Insulation'
  @aedgK12HowToTipHash['EN15'] = 'EN15 Doors-Opaque, Swinging'
  @aedgK12HowToTipHash['EN16'] = 'EN16 Doors-Opaque, Roll-Up, or Sliding'
  @aedgK12HowToTipHash['EN17'] = 'EN17 Air Infiltration Control'
  @aedgK12HowToTipHash['EN18'] = 'EN18 Vestibules'
  @aedgK12HowToTipHash['EN19'] = 'EN19 Alternative Constructions'
  @aedgK12HowToTipHash['EN20'] = 'EN20 Truss Heel Heights'
  @aedgK12HowToTipHash['EN21'] = 'EN21 Moisture Control'
  @aedgK12HowToTipHash['EN22'] = 'EN22 Thermal Bridging-Opaque Components'
  @aedgK12HowToTipHash['EN23'] = 'EN23 Thermal Bridging-Fenestration'
  @aedgK12HowToTipHash['EN24'] = 'EN24 Fenestration Descriptions'
  @aedgK12HowToTipHash['EN25'] = 'EN25 View Window-to Floor Area Ratio (VFR)'
  @aedgK12HowToTipHash['EN26'] = 'EN26 Unwanted Solar Heat Gain Is Most Effectively Controlled on the Outside of the Building'
  @aedgK12HowToTipHash['EN27'] = 'EN27 Operable versus Fixed Windows'
  @aedgK12HowToTipHash['EN28'] = 'EN28 Building Form and Window Orientation'
  @aedgK12HowToTipHash['EN29'] = 'EN29 Glazing'
  @aedgK12HowToTipHash['EN30'] = 'EN30 Obstructions and Planting'
  @aedgK12HowToTipHash['EN31'] = 'EN31 Window Orientation'
  @aedgK12HowToTipHash['EN32'] = 'EN32 Passive Solar'
  @aedgK12HowToTipHash['EN33'] = 'EN33 Glazing'

  # daylighting tips
  @aedgK12HowToTipHash['DL01'] = 'DL1 General Principles'
  @aedgK12HowToTipHash['DL02'] = 'DL2 Consider Daylighting Early in the Design Process'
  @aedgK12HowToTipHash['DL03'] = 'DL3 Space Types'
  @aedgK12HowToTipHash['DL04'] = 'DL4 How to Select Daylighting Strategies'
  @aedgK12HowToTipHash['DL05'] = 'DL5 Recommended Daylighting Fenestration-to-Floor Area Ratios'
  @aedgK12HowToTipHash['DL06'] = 'DL6 View Windows Separate from Daylighting Strategy'
  @aedgK12HowToTipHash['DL07'] = 'DL7 Lighting Design Criteria'
  @aedgK12HowToTipHash['DL08'] = 'DL8 Use Daylighting Analysis Tools to Optimize Design'
  @aedgK12HowToTipHash['DL09'] = 'DL9 Building Orientation'
  @aedgK12HowToTipHash['DL10'] = 'DL10 Ceiling Height'
  @aedgK12HowToTipHash['DL11'] = 'DL11 Outdoor Surface Reflectance'
  @aedgK12HowToTipHash['DL12'] = 'DL12 Eliminate Direct Beam Radiation'
  @aedgK12HowToTipHash['DL13'] = 'DL13 Daylighting Control for Audio-Visual (AV) Projection Activities'
  @aedgK12HowToTipHash['DL14'] = 'DL14 Interior Finishes for Daylighting'
  @aedgK12HowToTipHash['DL15'] = 'DL15 Calibration and Commissioning'
  @aedgK12HowToTipHash['DL16'] = 'DL16 Dimming Controls'
  @aedgK12HowToTipHash['DL17'] = 'DL17 Photosensor Placement and Lighting Layout'
  @aedgK12HowToTipHash['DL18'] = 'DL18 Photosensor Specifications'
  @aedgK12HowToTipHash['DL19'] = 'DL19 Select Compatible Light Fixtures'
  @aedgK12HowToTipHash['DL20'] = 'DL20 Sidelighting Patterns'
  @aedgK12HowToTipHash['DL21'] = 'DL21 South-Facing Classrooms-Configuration of Apertures'
  @aedgK12HowToTipHash['DL22'] = 'DL22 South-Facing Classrooms-Glazing Area and Fenestration Type'
  @aedgK12HowToTipHash['DL23'] = 'DL23 View Glazing and VTs'
  @aedgK12HowToTipHash['DL24'] = 'DL24 South-Facing Classrooms-Make Light Shelf Durable and Reflective'
  @aedgK12HowToTipHash['DL25'] = 'DL25 North-Facing Classroom-Configuration of Apertures'
  @aedgK12HowToTipHash['DL26'] = 'DL26 North-Facing Classroom-Glazing Area and Fenestration Type'
  @aedgK12HowToTipHash['DL27'] = 'DL27 South-and North-Facing Classrooms-Sloped Ceilings'
  @aedgK12HowToTipHash['DL28'] = 'DL28 South-and North-Facing Classrooms-Recognize the Limits of Side Daylighting'
  @aedgK12HowToTipHash['DL29'] = 'DL29 Classroom Toplighting Pattern'
  @aedgK12HowToTipHash['DL30'] = 'DL30 Sizing the Roof Monitors'
  @aedgK12HowToTipHash['DL31'] = 'DL31 Overhang for Roof Monitor'
  @aedgK12HowToTipHash['DL32'] = 'DL32 Use Light-Colored Roofing in Front of Monitors'
  @aedgK12HowToTipHash['DL33'] = 'DL33 Use Baffles to Block Direct Beam Radiation and Diffuse Light'
  @aedgK12HowToTipHash['DL34'] = 'DL34 Minimize Contrast at Well-Ceiling Intersection'
  @aedgK12HowToTipHash['DL35'] = 'DL35 Address the Monitor Design'
  @aedgK12HowToTipHash['DL36'] = 'DL36 Let the Heat Stratify'
  @aedgK12HowToTipHash['DL37'] = 'DL37 Minimize the Depth of the Ceiling Cavity'
  @aedgK12HowToTipHash['DL38'] = 'DL38 Classroom Sidelighting Plus Toplighting Pattern'
  @aedgK12HowToTipHash['DL39'] = 'DL39 Gym Toplighting Overview'
  @aedgK12HowToTipHash['DL40'] = 'DL40 Gym Toplighting Sizing'
  @aedgK12HowToTipHash['DL41'] = 'DL41 Gym Toplighting Using South-Facing Roof Monitors'
  @aedgK12HowToTipHash['DL42'] = 'DL42 Gym Toplighting in Combination with North-and South-Facing Sidelighting'

  # electric lighting tips
  @aedgK12HowToTipHash['EL01'] = 'EL1 Light-Colored Interior Finishes'
  @aedgK12HowToTipHash['EL02'] = 'EL2 Color Rendering Index'
  @aedgK12HowToTipHash['EL03'] = 'EL3 Color Temperature'
  @aedgK12HowToTipHash['EL04'] = 'EL4 Linear Fluorescent Lamps and Ballasts'
  @aedgK12HowToTipHash['EL05'] = 'EL5 Compact Fluorescent'
  @aedgK12HowToTipHash['EL06'] = 'EL6 Metal Halide'
  @aedgK12HowToTipHash['EL07'] = 'EL7 Light-Emitting Diode (LED) Lighting'
  @aedgK12HowToTipHash['EL08'] = 'EL8 Occupancy Sensors'
  @aedgK12HowToTipHash['EL09'] = 'EL9 Multilevel Switching or Dimming'
  @aedgK12HowToTipHash['EL10'] = 'EL10 Exit Signs'
  @aedgK12HowToTipHash['EL11'] = 'EL11 Circuiting and Switching'
  @aedgK12HowToTipHash['EL12'] = 'EL12 Electrical Lighting Design for Schools'
  @aedgK12HowToTipHash['EL13'] = 'EL13 Classroom Lighting'
  @aedgK12HowToTipHash['EL14'] = 'EL14 Gym Lighting'
  @aedgK12HowToTipHash['EL15'] = 'EL15 Lighting for a Multipurpose Room'
  @aedgK12HowToTipHash['EL16'] = 'EL16 Lighting for a Library or Media Center'
  @aedgK12HowToTipHash['EL17'] = 'EL17 Corridor Lighting'
  @aedgK12HowToTipHash['EL18'] = 'EL18 Lighting for Offices and Teacher Support Rooms'
  @aedgK12HowToTipHash['EL19'] = 'EL19 Lighting for Locker Areas and Restrooms'
  @aedgK12HowToTipHash['EL20'] = 'EL20 Twenty-Four Hour Lighting'
  @aedgK12HowToTipHash['EL21'] = 'EL21 Exterior Lighting Power-Parking Lots and Drives'
  @aedgK12HowToTipHash['EL22'] = 'EL22 Exterior Lighting Power-Walkways'
  @aedgK12HowToTipHash['EL23'] = 'EL23 Decorative Facade Lighting'
  @aedgK12HowToTipHash['EL24'] = 'EL24 Sources'
  @aedgK12HowToTipHash['EL25'] = 'EL25 Controls'

  # plug load tips
  @aedgK12HowToTipHash['PL01'] = 'PL1 General Guidance'
  @aedgK12HowToTipHash['PL02'] = 'PL2 Computer (Information Technology) Equipment'
  @aedgK12HowToTipHash['PL03'] = 'PL3 Staff and Occupant Equipment Control'
  @aedgK12HowToTipHash['PL04'] = 'PL4 Phantom/Parasitic Loads'
  @aedgK12HowToTipHash['PL05'] = 'PL5 ENERGY STAR Appliances/Equipment'
  @aedgK12HowToTipHash['PL06'] = 'PL6 Electrical Distribution System'

  # kitchen tips
  @aedgK12HowToTipHash['KE01'] = 'KE1 General Guidance'
  @aedgK12HowToTipHash['KE02'] = 'KE2 Energy-Efficient Kitchen Equipment'
  @aedgK12HowToTipHash['KE03'] = 'KE3 Exhaust and Ventilation Energy Use'
  @aedgK12HowToTipHash['KE04'] = 'KE4 Minimize Hot-Water Use'
  @aedgK12HowToTipHash['KE05'] = 'KE5 High-Efficiency Walk-in Refrigeration Systems'
  @aedgK12HowToTipHash['KE06'] = 'KE6 Position Hooded Appliances to Achieve Lower Exhaust Rates'
  @aedgK12HowToTipHash['KE07'] = 'KE7 Operating Considerations'

  # service water heating tips
  @aedgK12HowToTipHash['WH01'] = 'WH1 Service Water -Heating Types'
  @aedgK12HowToTipHash['WH02'] = 'WH2 System Descriptions'
  @aedgK12HowToTipHash['WH03'] = 'WH3 Sizing'
  @aedgK12HowToTipHash['WH04'] = 'WH4 Equipment Efficiency'
  @aedgK12HowToTipHash['WH05'] = 'WH5 Location'
  @aedgK12HowToTipHash['WH06'] = 'WH6 Pipe Insulation'
  @aedgK12HowToTipHash['WH07'] = 'WH7 Solar Hot-Water Systems'

  # hvac tips
  @aedgK12HowToTipHash['HV01'] = 'HV1 Ground-Source Heat Pump System'
  @aedgK12HowToTipHash['HV02'] = 'HV2 Fan-Coil System'
  @aedgK12HowToTipHash['HV03'] = 'HV3 Multiple-Zone, Variable-Air-Volume (VAV) Air Handlers'
  @aedgK12HowToTipHash['HV04'] = 'HV4 Dedicated Outdoor Air System (DOAS)'
  @aedgK12HowToTipHash['HV05'] = 'HV5 Exhaust Air Energy Recovery'
  @aedgK12HowToTipHash['HV06'] = 'HV6 Chilled-Water System'
  @aedgK12HowToTipHash['HV07'] = 'HV7 Water Heating System'
  @aedgK12HowToTipHash['HV08'] = 'HV8 Condenser-Water System for GSHPs'
  @aedgK12HowToTipHash['HV09'] = 'HV9 Cooling and Heating Load Calculations'
  @aedgK12HowToTipHash['HV10'] = 'HV10 Ventilation Air'
  @aedgK12HowToTipHash['HV11'] = 'HV11 Cooling and Heating Equipment Efficiencies'
  @aedgK12HowToTipHash['HV12'] = 'HV12 Fan Power and Motor Efficiencies'
  @aedgK12HowToTipHash['HV13'] = 'HV13 Part-Load Dehumidification'
  @aedgK12HowToTipHash['HV14'] = 'HV14 Economizer'
  @aedgK12HowToTipHash['HV15'] = 'HV15 Demand-Controlled Ventilation'
  @aedgK12HowToTipHash['HV16'] = 'HV16 System-Level Control Strategies'
  @aedgK12HowToTipHash['HV17'] = 'HV17 Thermal Zoning'
  @aedgK12HowToTipHash['HV18'] = 'HV18 Ductwork Design and Construction'
  @aedgK12HowToTipHash['HV19'] = 'HV19 Duct Insulation'
  @aedgK12HowToTipHash['HV20'] = 'HV20 Duct Sealing and Leakage Testing'
  @aedgK12HowToTipHash['HV21'] = 'HV21 Exhaust Air Systems'
  @aedgK12HowToTipHash['HV22'] = 'HV22 Testing, Adjusting, and Balancing'
  @aedgK12HowToTipHash['HV23'] = 'HV23 Air Cleaning'
  @aedgK12HowToTipHash['HV24'] = 'HV24 Relief versus Return Fans'
  @aedgK12HowToTipHash['HV25'] = 'HV25 Zone Temperature Control'
  @aedgK12HowToTipHash['HV26'] = 'HV26 Heating Sources'
  @aedgK12HowToTipHash['HV27'] = 'HV27 Noise Control'
  @aedgK12HowToTipHash['HV28'] = 'HV28 Proper Maintenance'
  # bonus hvac tips
  @aedgK12HowToTipHash['HV29'] = 'HV29 Natural Ventilation and Naturally Conditioned Spaces'
  @aedgK12HowToTipHash['HV30'] = 'HV30 Thermal Storage'
  @aedgK12HowToTipHash['HV31'] = 'HV31 Thermal Mass'
  @aedgK12HowToTipHash['HV32'] = 'HV32 Thermal Displacement Ventilation'
  @aedgK12HowToTipHash['HV33'] = 'HV33 ASHRAE Standard 62.1 IAQ Procedure'
  @aedgK12HowToTipHash['HV34'] = 'HV34 Evaporative Cooling'

  # commissioning tips
  @aedgK12HowToTipHash['QA01'] = 'QA1 Design and Construction Team'
  @aedgK12HowToTipHash['QA02'] = 'QA2 Owner\'s Project Requirements and Basis of Design'
  @aedgK12HowToTipHash['QA03'] = 'QA3 Selection of Quality Assurance Provider'
  @aedgK12HowToTipHash['QA04'] = 'QA4 Design and Construction Schedule'
  @aedgK12HowToTipHash['QA05'] = 'QA5 Design Review'
  @aedgK12HowToTipHash['QA06'] = 'QA6 Defining Quality Assurance at Pre-Bid'
  @aedgK12HowToTipHash['QA07'] = 'QA7 Verifying Building Envelope Construction'
  @aedgK12HowToTipHash['QA08'] = 'QA8 Verifying Lighting Construction'
  @aedgK12HowToTipHash['QA09'] = 'QA9 Verifying Electrical and HVAC Systems Construction'
  @aedgK12HowToTipHash['QA10'] = 'QA10 Functional Performance Testing'
  @aedgK12HowToTipHash['QA11'] = 'QA11 Substantial Completion'
  @aedgK12HowToTipHash['QA12'] = 'QA12 Final Acceptance'
  @aedgK12HowToTipHash['QA13'] = 'QA13 Establish Building Operation and Maintenance Program'
  @aedgK12HowToTipHash['QA14'] = 'QA14 Monitor Post-Occupancy Performance'
  @aedgK12HowToTipHash['QA15'] = 'QA15 M&V Electrical Panel Guidance'
  @aedgK12HowToTipHash['QA16'] = 'QA16 M&V Data Management and Access'
  @aedgK12HowToTipHash['QA17'] = 'QA17 M&V Benchmarking'
  @aedgK12HowToTipHash['QA18'] = 'QA18 The Building as a Teaching Tool'

  # renewable energy tips
  @aedgK12HowToTipHash['RE01'] = 'RE1 Photovoltaic (PV) Systems'
  @aedgK12HowToTipHash['RE02'] = 'RE2 Solar Hot Water Systems'
  @aedgK12HowToTipHash['RE03'] = 'RE3 Wind Turbine Power'

  result = @aedgK12HowToTipHash
  return result
end

.getLongHowToTips(guide, aedgTips, runner) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/openstudio/extension/core/os_lib_aedg_measures.rb', line 39

def self.getLongHowToTips(guide, aedgTips, runner)
  # get tips
  if guide == 'K12'
    hash = OsLib_AedgMeasures.getK12Tips
  elsif guide == 'SmMdOff'
    hash = OsLib_AedgMeasures.getSmMdOffTips
  else
    runner.registerError("#{guide} is an invalid value. Can't generate how to tip messages.")
    return false # note - for this to work need to check for false in measure.rb and add return false there as well.
    # this should only happen if measure writer passes bad values to getLongHowToTips
  end

  # array for info string
  string = []

  # create info messages
  aedgTips.each do |aedgtip|
    if hash[aedgtip] != hash[0]
      string << hash[aedgtip]
    else
      runner.registerWarning("#{aedgtip} is an invalid key for tip hash. Can't generate tip.")
    end
  end

  # see if expected number of messages created
  if aedgTips.size != string.size
    runner.registerWarning('One more more messages were not created.')
  end

  result = "#{hash[0]}: #{string.join(', ')}." # hash[0] bad key will return default value
  # don't add return false here, need to catch errors above
end

.getSmMdOffTipsObject

hash of how to tips for small to medium office buildings AEDG



274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
# File 'lib/openstudio/extension/core/os_lib_aedg_measures.rb', line 274

def self.getSmMdOffTips
  # envelope tips
  aedgSmMdOffHowToTipHash = Hash.new('Small and Medium Offices AEDG How to Implement Recommendations')
  aedgSmMdOffHowToTipHash['EN01'] = 'EN1 Cool Roofs'
  aedgSmMdOffHowToTipHash['EN02'] = 'EN2 Roofs-Insulation Entirely above Deck'
  aedgSmMdOffHowToTipHash['EN03'] = 'EN3 Roofs-Attics, and Other Roofs'
  aedgSmMdOffHowToTipHash['EN04'] = 'EN4 Roofs-Metal Buildings'
  aedgSmMdOffHowToTipHash['EN05'] = 'EN5 Walls-Mass'
  aedgSmMdOffHowToTipHash['EN06'] = 'EN6 Walls-Steel Framed'
  aedgSmMdOffHowToTipHash['EN07'] = 'EN7 Walls-Wood Frame and Other'
  aedgSmMdOffHowToTipHash['EN08'] = 'EN8 Walls-Metal Building'
  aedgSmMdOffHowToTipHash['EN09'] = 'EN9 Walls-Below-Grade'
  aedgSmMdOffHowToTipHash['EN10'] = 'EN10 Floors-Mass'
  aedgSmMdOffHowToTipHash['EN11'] = 'EN11 Floors-Metal Joist or Wood Joist/Wood Frame'
  aedgSmMdOffHowToTipHash['EN12'] = 'EN12 Slab-on-Grade Floors-Unheated'
  aedgSmMdOffHowToTipHash['EN13'] = 'EN13 Slab-on-Grade Floors-Heated'
  aedgSmMdOffHowToTipHash['EN14'] = 'EN14 Slab Edge Insulation'
  aedgSmMdOffHowToTipHash['EN15'] = 'EN15 Doors-Opaque, Swinging'
  aedgSmMdOffHowToTipHash['EN16'] = 'EN16 Doors-Opaque, Roll-Up, or Sliding'
  aedgSmMdOffHowToTipHash['EN17'] = 'EN17 Air Infiltration Control'
  aedgSmMdOffHowToTipHash['EN18'] = 'EN18 Vestibules'
  aedgSmMdOffHowToTipHash['EN19'] = 'EN19 Alternative Constructions'
  aedgSmMdOffHowToTipHash['EN20'] = 'EN20 Truss Heel Heights'
  aedgSmMdOffHowToTipHash['EN21'] = 'EN21 Moisture Control'
  aedgSmMdOffHowToTipHash['EN22'] = 'EN22 Thermal Bridging-Opaque Components'
  aedgSmMdOffHowToTipHash['EN23'] = 'EN23 Thermal Bridging-Fenestration'
  aedgSmMdOffHowToTipHash['EN24'] = 'EN24 Vertical Fenestration Descriptions'
  aedgSmMdOffHowToTipHash['EN25'] = 'EN25 Window-to-Wall Ratio (WWR)'
  aedgSmMdOffHowToTipHash['EN26'] = 'EN26 Unwanted Solar Heat Gain Is Most Effectively Controlled on the Outside of the Building'
  aedgSmMdOffHowToTipHash['EN27'] = 'EN27 Operable versus Fixed Windows'
  aedgSmMdOffHowToTipHash['EN28'] = 'EN28 Building Form and Window Orientation'
  aedgSmMdOffHowToTipHash['EN29'] = 'EN29 Glazing'
  aedgSmMdOffHowToTipHash['EN30'] = 'EN30 Obstructions and Planting'
  aedgSmMdOffHowToTipHash['EN31'] = 'EN31 Window Orientation'
  aedgSmMdOffHowToTipHash['EN32'] = 'EN32 Passive Solar'
  aedgSmMdOffHowToTipHash['EN33'] = 'EN33 Glazing'
  aedgSmMdOffHowToTipHash['EN34'] = 'EN34 Visible Transmittance (VT)'
  aedgSmMdOffHowToTipHash['EN35'] = 'EN35 Separating Views and Daylight'
  aedgSmMdOffHowToTipHash['EN36'] = 'EN36 Color-Neutral Glazing'
  aedgSmMdOffHowToTipHash['EN37'] = 'EN37 Reflectivity of Glass'
  aedgSmMdOffHowToTipHash['EN38'] = 'EN38 Light-to-Solar-Gain Ratio'
  aedgSmMdOffHowToTipHash['EN39'] = 'EN39 High Ceilings'
  aedgSmMdOffHowToTipHash['EN40'] = 'EN40 Light Shelves'

  # daylighting tips
  aedgSmMdOffHowToTipHash['DL01'] = 'DL1 Daylighting Early in the Design Process'
  aedgSmMdOffHowToTipHash['DL02'] = 'DL2 Daylighting Analysis Tools to Optimize Design'
  aedgSmMdOffHowToTipHash['DL03'] = 'DL3 Space Types, Layout, and Daylight'
  aedgSmMdOffHowToTipHash['DL04'] = 'DL4 Building Orientation and Daylight'
  aedgSmMdOffHowToTipHash['DL05'] = 'DL5 Building Shape and Daylight'
  aedgSmMdOffHowToTipHash['DL06'] = 'DL6 Window-to-Wall Ratio (WWR)'
  aedgSmMdOffHowToTipHash['DL07'] = 'DL7 Sidelighting-Ceiling and Window Height'
  aedgSmMdOffHowToTipHash['DL08'] = 'Sidelighting-Clerestory Windows'
  aedgSmMdOffHowToTipHash['DL09'] = 'DL9 Sidelighting-Borrowed Light'
  aedgSmMdOffHowToTipHash['DL10'] = 'DL10 Sidelighting-Wall-to-Wall Windows'
  aedgSmMdOffHowToTipHash['DL11'] = 'DL11 Sidelighting-Punched Windows'
  aedgSmMdOffHowToTipHash['DL12'] = 'DL12 Shading Systems to Eliminate Direct-Beam Radiation'
  aedgSmMdOffHowToTipHash['DL13'] = 'DL13 Daylighting Control for Audiovisual Activities'
  aedgSmMdOffHowToTipHash['DL14'] = 'DL14 Interior Finishes for Daylighting'
  aedgSmMdOffHowToTipHash['DL15'] = 'DL15 Outdoor Surface Reflectance'
  aedgSmMdOffHowToTipHash['DL16'] = 'DL16 Calibration and Commissioning'
  aedgSmMdOffHowToTipHash['DL17'] = 'DL17 Dimming Controls'
  aedgSmMdOffHowToTipHash['DL18'] = 'DL18 Photosensor Placement and Lighting Layout'
  aedgSmMdOffHowToTipHash['DL19'] = 'DL19 Photosensor Specifications'
  aedgSmMdOffHowToTipHash['DL20'] = 'DL20 Select Compatible Light Fixtures'
  # bonus daylighting tips
  aedgSmMdOffHowToTipHash['DL21'] = 'DL21 Toplighting'
  aedgSmMdOffHowToTipHash['DL22'] = 'DL22 Rooftop Monitors'
  aedgSmMdOffHowToTipHash['DL23'] = 'DL23 Rooftop Monitor Design'
  aedgSmMdOffHowToTipHash['DL24'] = 'DL24 Skylights'
  aedgSmMdOffHowToTipHash['DL25'] = 'DL25 Toplighting-Thermal Transmittance (Climate Zones 1-3)'
  aedgSmMdOffHowToTipHash['DL26'] = 'DL26 Toplighting-Thermal Transmittance (Climate Zones 4-8)'
  aedgSmMdOffHowToTipHash['DL27'] = 'DL27 Toplighting-Ceiling Height Differentials'

  # electric lighting tips
  aedgSmMdOffHowToTipHash['EL01'] = 'EL1 Savings and Occupant Acceptance'
  aedgSmMdOffHowToTipHash['EL02'] = 'EL2 Space Planning-Open Offices'
  aedgSmMdOffHowToTipHash['EL03'] = 'EL3 Space Planning-Private Offices, Conference Rooms, and Break Rooms'
  aedgSmMdOffHowToTipHash['EL04'] = 'EL4 Light-Colored Interior Finishes'
  aedgSmMdOffHowToTipHash['EL05'] = 'EL5 Task Lighting'
  aedgSmMdOffHowToTipHash['EL06'] = 'EL6 Color Rendering Index (CRI)'
  aedgSmMdOffHowToTipHash['EL07'] = 'EL7 Color Temperature'
  aedgSmMdOffHowToTipHash['EL08'] = 'EL8 Linear Fluorescent Lamps and Ballasts'
  aedgSmMdOffHowToTipHash['EL09'] = 'EL9 Occupancy Sensors'
  aedgSmMdOffHowToTipHash['EL10'] = 'EL10 Multilevel Switching'
  aedgSmMdOffHowToTipHash['EL11'] = 'EL11 Daylight-Responsive Controls'
  aedgSmMdOffHowToTipHash['EL12'] = 'EL12 Exit Signs'
  aedgSmMdOffHowToTipHash['EL13'] = 'EL13 Light Fixture Distribution'
  aedgSmMdOffHowToTipHash['EL14'] = 'EL14 Open-Plan Offices'
  aedgSmMdOffHowToTipHash['EL15'] = 'EL15 Private Offices'
  aedgSmMdOffHowToTipHash['EL16'] = 'EL16 Conference Rooms/Meeting Rooms'
  aedgSmMdOffHowToTipHash['EL17'] = 'EL17 Corridors'
  aedgSmMdOffHowToTipHash['EL18'] = 'EL18 Storage Areas'
  aedgSmMdOffHowToTipHash['EL19'] = 'EL19 Lobbies'
  aedgSmMdOffHowToTipHash['EL20'] = 'EL20 Twenty-Four Hour Lighting'
  aedgSmMdOffHowToTipHash['EL21'] = 'EL21 Exterior Lighting Power-Parking Lots and Drives'
  aedgSmMdOffHowToTipHash['EL22'] = 'EL22 Exterior Lighting Power-Walkways'
  aedgSmMdOffHowToTipHash['EL23'] = 'EL23 Decorative Facade Lighting'
  aedgSmMdOffHowToTipHash['EL24'] = 'EL24 Sources'
  aedgSmMdOffHowToTipHash['EL25'] = 'EL25 Controls'

  # plug load tips
  aedgSmMdOffHowToTipHash['PL01'] = 'PL1 Connected Wattage'
  aedgSmMdOffHowToTipHash['PL02'] = 'PL2 Laptop Computers'
  aedgSmMdOffHowToTipHash['PL03'] = 'PL3 Occupancy Controls'
  aedgSmMdOffHowToTipHash['PL04'] = 'PL4 Parasitic Loads'
  aedgSmMdOffHowToTipHash['PL05'] = 'PL5 Printing Equipment'
  aedgSmMdOffHowToTipHash['PL06'] = 'PL6 Unnecessary Equipment'

  # service water heating tips
  aedgSmMdOffHowToTipHash['WH01'] = 'WH1 Service Water Heating Types'
  aedgSmMdOffHowToTipHash['WH02'] = 'WH2 System Descriptions'
  aedgSmMdOffHowToTipHash['WH03'] = 'WH3 Sizing'
  aedgSmMdOffHowToTipHash['WH04'] = 'WH4 Equipment Efficiency'
  aedgSmMdOffHowToTipHash['WH05'] = 'WH5 Location'
  aedgSmMdOffHowToTipHash['WH06'] = 'WH6 Pipe Insulation'

  # hvac tips
  aedgSmMdOffHowToTipHash['HV01'] = 'HV1 Cooling and Heating Loads'
  aedgSmMdOffHowToTipHash['HV02'] = 'HV2 Certification of HVAC Equipment'
  aedgSmMdOffHowToTipHash['HV03'] = "HV3 Single-Zone, Packaged Air-Source Heat Pump Systems (or Split Heat Pump
Systems) with Electric Resistance Supplemental Heat and DOASs"
  aedgSmMdOffHowToTipHash['HV04'] = 'HV4 Water-Source Heat Pumps (WSHPs)'
  aedgSmMdOffHowToTipHash['HV05'] = 'HV5 Ground-Coupled Water-Source Heat Pump (WSHP) System'
  aedgSmMdOffHowToTipHash['HV06'] = "HV6 Multiple-Zone, VAV Packaged DX Rooftop Units with a Hot-Water Coil,
Indirect Gas Furnace, or Electric Resistance in the Rooftop Unit and
Convection Heat in the Spaces"
  aedgSmMdOffHowToTipHash['HV07'] = "HV7 Multiple-Zone, VAV Air-Handling Units with Packaged Air-Cooled Chiller and
Gas-Fired Boiler"
  aedgSmMdOffHowToTipHash['HV08'] = 'Fan-Coils'
  aedgSmMdOffHowToTipHash['HV09'] = 'HV9 Radiant Heating and Cooling and DOAS'
  aedgSmMdOffHowToTipHash['HV10'] = 'HV10 Dedicated Outdoor Air Systems (100% Outdoor Air Systems)'
  aedgSmMdOffHowToTipHash['HV11'] = 'HV11 Part-Load Dehumidification'
  aedgSmMdOffHowToTipHash['HV12'] = 'HV12 Exhaust Air Energy Recovery'
  aedgSmMdOffHowToTipHash['HV13'] = 'HV13 Indirect Evaporative Cooling'
  aedgSmMdOffHowToTipHash['HV14'] = 'HV14 Cooling and Heating Equipment Efficiencies'
  aedgSmMdOffHowToTipHash['HV15'] = 'HV15 Ventilation Air'
  aedgSmMdOffHowToTipHash['HV16'] = 'HV16 Economizer'
  aedgSmMdOffHowToTipHash['HV17'] = 'HV17 Demand-Controlled Ventilation (DCV)'
  aedgSmMdOffHowToTipHash['HV18'] = 'HV18 Carbon Dioxide (CO2 ) Sensors'
  aedgSmMdOffHowToTipHash['HV19'] = 'HV19 Exhaust Air Systems'
  aedgSmMdOffHowToTipHash['HV20'] = 'HV20 Ductwork Design and Construction'
  aedgSmMdOffHowToTipHash['HV21'] = 'HV21 Duct Insulation'
  aedgSmMdOffHowToTipHash['HV22'] = 'HV22 Duct Sealing and Leakage Testing'
  aedgSmMdOffHowToTipHash['HV23'] = 'HV23 Fan Motor Efficiencies'
  aedgSmMdOffHowToTipHash['HV24'] = 'HV24 Thermal Zoning'
  aedgSmMdOffHowToTipHash['HV25'] = 'HV25 System-Level Control Strategies'
  aedgSmMdOffHowToTipHash['HV26'] = 'HV26 Testing, Adjusting, and Balancing'
  aedgSmMdOffHowToTipHash['HV27'] = 'HV27 Commissioning (Cx)'
  aedgSmMdOffHowToTipHash['HV28'] = 'HV28 Filters'
  aedgSmMdOffHowToTipHash['HV29'] = 'HV29 Chilled-Water (CHW) System'
  aedgSmMdOffHowToTipHash['HV30'] = 'HV30 Water Heating Systems'
  aedgSmMdOffHowToTipHash['HV31'] = 'HV31 Relief versus Return Fans'
  aedgSmMdOffHowToTipHash['HV32'] = 'HV32 Heating Sources'
  aedgSmMdOffHowToTipHash['HV33'] = 'HV33 Noise Control'
  aedgSmMdOffHowToTipHash['HV34'] = 'HV34 Proper Maintenance'
  aedgSmMdOffHowToTipHash['HV35'] = 'HV35 Zone Temperature Control'
  aedgSmMdOffHowToTipHash['HV36'] = 'HV36 Evaporative Condensers on Rooftop Units'

  # commissioning tips
  aedgSmMdOffHowToTipHash['QA01'] = 'QA1 Selecting the Design and Construction Team'
  aedgSmMdOffHowToTipHash['QA02'] = 'QA2 Selecting the QA Provider'
  aedgSmMdOffHowToTipHash['QA03'] = 'QA3 Owner\'s Project Requirements (OPR) and Basis of Design (BoD)'
  aedgSmMdOffHowToTipHash['QA04'] = 'QA4 Design and Construction Schedule'
  aedgSmMdOffHowToTipHash['QA05'] = 'QA5 Design Review'
  aedgSmMdOffHowToTipHash['QA06'] = 'QA6 Defining QA at Pre-Bid'
  aedgSmMdOffHowToTipHash['QA07'] = 'QA7 Verifying Building Envelope Construction'
  aedgSmMdOffHowToTipHash['QA08'] = 'QA8 Verifying Lighting Construction'
  aedgSmMdOffHowToTipHash['QA09'] = 'QA9 Verifying Electrical and HVAC Systems Construction'
  aedgSmMdOffHowToTipHash['QA10'] = 'QA10 Performance Testing'
  aedgSmMdOffHowToTipHash['QA11'] = 'QA11 Substantial Completion'
  aedgSmMdOffHowToTipHash['QA12'] = 'QA12 Final Acceptance'
  aedgSmMdOffHowToTipHash['QA13'] = 'QA13 Establish a Building Operation and Maintenance (O&M) Program'
  aedgSmMdOffHowToTipHash['QA14'] = 'QA14 Monitor Post-Occupancy Performance'

  # natural ventilation tips
  aedgSmMdOffHowToTipHash['NV01'] = 'NV1 Natural Ventilation and Naturally Conditioned Spaces'

  # renewable energy tips
  aedgSmMdOffHowToTipHash['RE01'] = 'RE1 Photovoltaic (PV) Systems'
  aedgSmMdOffHowToTipHash['RE02'] = 'RE2 Wind Turbine Power'
  aedgSmMdOffHowToTipHash['RE03'] = 'RE3 Transpired Solar Collector'
  aedgSmMdOffHowToTipHash['RE04'] = 'RE4 Power Purchase Agreements'

  result = aedgSmMdOffHowToTipHash
  return result
end