openstudio-common-measures 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +6 -3
  4. data/Rakefile +17 -3
  5. data/lib/measures/AddDaylightSensors/LICENSE.md +27 -0
  6. data/lib/measures/AddDaylightSensors/README.md +136 -0
  7. data/lib/measures/AddDaylightSensors/README.md.erb +42 -0
  8. data/lib/measures/AddDaylightSensors/measure.rb +521 -0
  9. data/lib/measures/AddDaylightSensors/measure.xml +233 -0
  10. data/lib/measures/EnableDemandControlledVentilation/LICENSE.md +27 -0
  11. data/lib/measures/EnableDemandControlledVentilation/README.md +32 -0
  12. data/lib/measures/EnableDemandControlledVentilation/README.md.erb +42 -0
  13. data/lib/measures/EnableDemandControlledVentilation/measure.rb +154 -0
  14. data/lib/measures/EnableDemandControlledVentilation/measure.xml +99 -0
  15. data/lib/measures/EnableEconomizerControl/LICENSE.md +27 -0
  16. data/lib/measures/EnableEconomizerControl/README.md +48 -0
  17. data/lib/measures/EnableEconomizerControl/README.md.erb +42 -0
  18. data/lib/measures/EnableEconomizerControl/measure.rb +172 -0
  19. data/lib/measures/EnableEconomizerControl/measure.xml +124 -0
  20. data/lib/measures/IncreaseInsulationRValueForExteriorWalls/LICENSE.md +27 -0
  21. data/lib/measures/IncreaseInsulationRValueForExteriorWalls/README.md +64 -0
  22. data/lib/measures/IncreaseInsulationRValueForExteriorWalls/README.md.erb +42 -0
  23. data/lib/measures/IncreaseInsulationRValueForExteriorWalls/measure.rb +422 -0
  24. data/lib/measures/IncreaseInsulationRValueForExteriorWalls/measure.xml +150 -0
  25. data/lib/measures/IncreaseInsulationRValueForRoofs/LICENSE.md +27 -0
  26. data/lib/measures/IncreaseInsulationRValueForRoofs/README.md +64 -0
  27. data/lib/measures/IncreaseInsulationRValueForRoofs/README.md.erb +42 -0
  28. data/lib/measures/IncreaseInsulationRValueForRoofs/measure.rb +422 -0
  29. data/lib/measures/IncreaseInsulationRValueForRoofs/measure.xml +143 -0
  30. data/lib/measures/ReduceElectricEquipmentLoadsByPercentage/LICENSE.md +27 -0
  31. data/lib/measures/ReduceElectricEquipmentLoadsByPercentage/README.md +97 -0
  32. data/lib/measures/ReduceElectricEquipmentLoadsByPercentage/README.md.erb +42 -0
  33. data/lib/measures/ReduceElectricEquipmentLoadsByPercentage/measure.rb +450 -0
  34. data/lib/measures/ReduceElectricEquipmentLoadsByPercentage/measure.xml +186 -0
  35. data/lib/measures/ReduceLightingLoadsByPercentage/LICENSE.md +27 -0
  36. data/lib/measures/ReduceLightingLoadsByPercentage/README.md +96 -0
  37. data/lib/measures/ReduceLightingLoadsByPercentage/README.md.erb +42 -0
  38. data/lib/measures/ReduceLightingLoadsByPercentage/measure.rb +513 -0
  39. data/lib/measures/ReduceLightingLoadsByPercentage/measure.xml +191 -0
  40. data/lib/measures/ReduceSpaceInfiltrationByPercentage/LICENSE.md +27 -0
  41. data/lib/measures/ReduceSpaceInfiltrationByPercentage/README.md +104 -0
  42. data/lib/measures/ReduceSpaceInfiltrationByPercentage/README.md.erb +42 -0
  43. data/lib/measures/ReduceSpaceInfiltrationByPercentage/measure.rb +349 -0
  44. data/lib/measures/ReduceSpaceInfiltrationByPercentage/measure.xml +181 -0
  45. data/lib/measures/ReduceVentilationByPercentage/LICENSE.md +27 -0
  46. data/lib/measures/ReduceVentilationByPercentage/README.md +40 -0
  47. data/lib/measures/ReduceVentilationByPercentage/README.md.erb +42 -0
  48. data/lib/measures/ReduceVentilationByPercentage/measure.rb +291 -0
  49. data/lib/measures/ReduceVentilationByPercentage/measure.xml +96 -0
  50. data/lib/measures/add_ems_to_control_ev_charging/{ReadMe.MD → README.md} +0 -0
  51. data/lib/measures/add_ev_load/{ReadMe.MD → README.md} +0 -0
  52. data/lib/measures/create_variable_speed_rtu/LICENSE.md +27 -0
  53. data/lib/measures/create_variable_speed_rtu/README.md +120 -0
  54. data/lib/measures/create_variable_speed_rtu/README.md.erb +42 -0
  55. data/lib/measures/create_variable_speed_rtu/measure.rb +539 -0
  56. data/lib/measures/create_variable_speed_rtu/measure.xml +207 -0
  57. data/lib/measures/generic_qaqc/measure.xml +14 -14
  58. data/lib/measures/generic_qaqc/resources/check_envelope_conductance.rb +7 -1
  59. data/lib/measures/generic_qaqc/resources/check_eui_by_end_use.rb +10 -11
  60. data/lib/measures/openstudio_results/README.md +5 -1
  61. data/lib/measures/openstudio_results/measure.rb +12 -8
  62. data/lib/measures/openstudio_results/measure.xml +56 -36
  63. data/lib/measures/openstudio_results/resources/os_lib_reporting.rb +115 -37
  64. data/lib/measures/openstudio_results/resources/os_lib_schedules.rb +27 -25
  65. data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/README.md +16 -0
  66. data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/measure.rb +32 -1
  67. data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/measure.xml +31 -12
  68. data/lib/measures/view_data/measure.xml +8 -8
  69. data/lib/measures/view_data/resources/va3c.rb +50 -46
  70. data/lib/measures/view_model/resources/va3c.rb +50 -46
  71. data/lib/openstudio/common_measures/version.rb +1 -1
  72. data/openstudio-common-measures.gemspec +2 -2
  73. metadata +59 -9
@@ -0,0 +1,207 @@
1
+ <measure>
2
+ <schema_version>3.0</schema_version>
3
+ <name>create_variable_speed_rtu</name>
4
+ <uid>7fb36b3a-5591-4627-a2b0-7709fbeae593</uid>
5
+ <version_id>b4784727-b8f2-46e2-92ad-219ecd2e1c5a</version_id>
6
+ <version_modified>20200229T024317Z</version_modified>
7
+ <xml_checksum>A9D5932A</xml_checksum>
8
+ <class_name>CreateVariableSpeedRTU</class_name>
9
+ <display_name>Create Variable Speed RTU</display_name>
10
+ <description>This measure examines the existing HVAC system(s) present in the current OpenStudio model. If a constant-speed system is found, the user can opt to have the measure replace that system with a variable-speed RTU. 'Variable speed' in this case means that the compressor will be operated using either two or four stages (user's choice). The user can choose between using a gas heating coil, or a direct-expansion (DX) heating coil. Additionally, the user is able to enter the EER (cooling) and COP (heating) values for each DX stage. This measure allows users to easily identify the impact of improved part-load efficiency.</description>
11
+ <modeler_description>This measure loops through the existing airloops, looking for loops that have a constant speed fan. (Note that if an object such as an AirloopHVAC:UnitarySystem is present in the model, that the measure will NOT identify that loop as either constant- or variable-speed, since the fan is located inside the UnitarySystem object.) The user can designate which constant-speed airloop they'd like to apply the measure to, or opt to apply the measure to all airloops. The measure then replaces the supply components on the airloop with an AirloopHVAC:UnitarySystem object. Any DX coils added to the UnitarySystem object are of the type CoilCoolingDXMultiSpeed / CoilHeatingDXMultiSpeed, with the number of stages set to either two or four, depending on user input. If the user opts for a gas furnace, an 80% efficient CoilHeatingGas object is added. Fan properties (pressure rise and total efficiency) are transferred automatically from the existing (but deleted) constant speed fan to the new variable-speed fan. Currently, this measure is only applicable to the Standalone Retail DOE Prototype building model, but it has been structured to facilitate expansion to other models with a minimum of effort.</modeler_description>
12
+ <arguments>
13
+ <argument>
14
+ <name>object</name>
15
+ <display_name>Choose an Air Loop to change from CAV to VAV.</display_name>
16
+ <type>Choice</type>
17
+ <required>true</required>
18
+ <model_dependent>false</model_dependent>
19
+ <default_value>*All CAV Air Loops*</default_value>
20
+ <choices>
21
+ <choice>
22
+ <value>{42167619-c2eb-4812-a9e5-9b286d7beef8}</value>
23
+ <display_name>*All CAV Air Loops*</display_name>
24
+ </choice>
25
+ </choices>
26
+ </argument>
27
+ <argument>
28
+ <name>cooling_coil_type</name>
29
+ <display_name>Choose the type of cooling coil.</display_name>
30
+ <type>Choice</type>
31
+ <required>true</required>
32
+ <model_dependent>false</model_dependent>
33
+ <default_value>Two-Stage Compressor</default_value>
34
+ <choices>
35
+ <choice>
36
+ <value>Two-Stage Compressor</value>
37
+ <display_name>Two-Stage Compressor</display_name>
38
+ </choice>
39
+ <choice>
40
+ <value>Four-Stage Compressor</value>
41
+ <display_name>Four-Stage Compressor</display_name>
42
+ </choice>
43
+ </choices>
44
+ </argument>
45
+ <argument>
46
+ <name>rated_cc_eer</name>
47
+ <display_name>Rated Cooling Coil EER</display_name>
48
+ <type>Double</type>
49
+ <required>false</required>
50
+ <model_dependent>false</model_dependent>
51
+ </argument>
52
+ <argument>
53
+ <name>three_quarter_cc_eer</name>
54
+ <display_name>Cooling Coil EER at 75% Capacity</display_name>
55
+ <type>Double</type>
56
+ <required>false</required>
57
+ <model_dependent>false</model_dependent>
58
+ </argument>
59
+ <argument>
60
+ <name>half_cc_eer</name>
61
+ <display_name>Cooling Coil EER at 50% Capacity</display_name>
62
+ <type>Double</type>
63
+ <required>false</required>
64
+ <model_dependent>false</model_dependent>
65
+ </argument>
66
+ <argument>
67
+ <name>quarter_cc_eer</name>
68
+ <display_name>Cooling Coil EER at 25% Capacity</display_name>
69
+ <type>Double</type>
70
+ <required>false</required>
71
+ <model_dependent>false</model_dependent>
72
+ </argument>
73
+ <argument>
74
+ <name>heating_coil_type</name>
75
+ <display_name>Choose the type of heating coil.</display_name>
76
+ <type>Choice</type>
77
+ <required>true</required>
78
+ <model_dependent>false</model_dependent>
79
+ <default_value>Gas Heating Coil</default_value>
80
+ <choices>
81
+ <choice>
82
+ <value>Gas Heating Coil</value>
83
+ <display_name>Gas Heating Coil</display_name>
84
+ </choice>
85
+ <choice>
86
+ <value>Heat Pump</value>
87
+ <display_name>Heat Pump</display_name>
88
+ </choice>
89
+ </choices>
90
+ </argument>
91
+ <argument>
92
+ <name>rated_hc_gas_efficiency</name>
93
+ <display_name>Rated Gas Heating Coil Efficiency (0-1.00)</display_name>
94
+ <type>Double</type>
95
+ <required>false</required>
96
+ <model_dependent>false</model_dependent>
97
+ </argument>
98
+ <argument>
99
+ <name>rated_hc_cop</name>
100
+ <display_name>Rated Heating Coil COP</display_name>
101
+ <type>Double</type>
102
+ <required>false</required>
103
+ <model_dependent>false</model_dependent>
104
+ </argument>
105
+ <argument>
106
+ <name>three_quarter_hc_cop</name>
107
+ <display_name>Heating Coil COP at 75% Capacity</display_name>
108
+ <type>Double</type>
109
+ <required>false</required>
110
+ <model_dependent>false</model_dependent>
111
+ </argument>
112
+ <argument>
113
+ <name>half_hc_cop</name>
114
+ <display_name>Heating Coil COP at 50% Capacity</display_name>
115
+ <type>Double</type>
116
+ <required>false</required>
117
+ <model_dependent>false</model_dependent>
118
+ </argument>
119
+ <argument>
120
+ <name>quarter_hc_cop</name>
121
+ <display_name>Heating Coil COP at 25% Capacity</display_name>
122
+ <type>Double</type>
123
+ <required>false</required>
124
+ <model_dependent>false</model_dependent>
125
+ </argument>
126
+ </arguments>
127
+ <outputs/>
128
+ <provenances/>
129
+ <tags>
130
+ <tag>HVAC.Whole System</tag>
131
+ </tags>
132
+ <attributes>
133
+ <attribute>
134
+ <name>Measure Type</name>
135
+ <value>ModelMeasure</value>
136
+ <datatype>string</datatype>
137
+ </attribute>
138
+ <attribute>
139
+ <name>Intended Software Tool</name>
140
+ <value>Apply Measure Now</value>
141
+ <datatype>string</datatype>
142
+ </attribute>
143
+ <attribute>
144
+ <name>Intended Software Tool</name>
145
+ <value>OpenStudio Application</value>
146
+ <datatype>string</datatype>
147
+ </attribute>
148
+ <attribute>
149
+ <name>Intended Software Tool</name>
150
+ <value>Parametric Analysis Tool</value>
151
+ <datatype>string</datatype>
152
+ </attribute>
153
+ <attribute>
154
+ <name>Intended Use Case</name>
155
+ <value>Model Articulation</value>
156
+ <datatype>string</datatype>
157
+ </attribute>
158
+ <attribute>
159
+ <name>Intended Use Case</name>
160
+ <value>New Construction EE</value>
161
+ <datatype>string</datatype>
162
+ </attribute>
163
+ </attributes>
164
+ <files>
165
+ <file>
166
+ <filename>example_model.osm</filename>
167
+ <filetype>osm</filetype>
168
+ <usage_type>test</usage_type>
169
+ <checksum>69467654</checksum>
170
+ </file>
171
+ <file>
172
+ <filename>README.md</filename>
173
+ <filetype>md</filetype>
174
+ <usage_type>readme</usage_type>
175
+ <checksum>839520ED</checksum>
176
+ </file>
177
+ <file>
178
+ <filename>README.md.erb</filename>
179
+ <filetype>erb</filetype>
180
+ <usage_type>readmeerb</usage_type>
181
+ <checksum>703C9964</checksum>
182
+ </file>
183
+ <file>
184
+ <filename>LICENSE.md</filename>
185
+ <filetype>md</filetype>
186
+ <usage_type>license</usage_type>
187
+ <checksum>E0468DD6</checksum>
188
+ </file>
189
+ <file>
190
+ <filename>create_variable_speed_rtu_test.rb</filename>
191
+ <filetype>rb</filetype>
192
+ <usage_type>test</usage_type>
193
+ <checksum>B199E2FA</checksum>
194
+ </file>
195
+ <file>
196
+ <version>
197
+ <software_program>OpenStudio</software_program>
198
+ <identifier>1.12.2</identifier>
199
+ <min_compatible>2.7.0</min_compatible>
200
+ </version>
201
+ <filename>measure.rb</filename>
202
+ <filetype>rb</filetype>
203
+ <usage_type>script</usage_type>
204
+ <checksum>13C7C1EA</checksum>
205
+ </file>
206
+ </files>
207
+ </measure>
@@ -3,8 +3,8 @@
3
3
  <schema_version>3.0</schema_version>
4
4
  <name>generic_qaqc</name>
5
5
  <uid>d58d6b29-69ba-4915-b907-3c2c37ddb7c7</uid>
6
- <version_id>d5440237-cf84-4f6b-9369-611c253371a3</version_id>
7
- <version_modified>20200623T192456Z</version_modified>
6
+ <version_id>0adab61f-9365-42cd-b6ab-ce548fafff91</version_id>
7
+ <version_modified>20201001T054735Z</version_modified>
8
8
  <xml_checksum>0A3BF61C</xml_checksum>
9
9
  <class_name>GenericQAQC</class_name>
10
10
  <display_name>Generic QAQC</display_name>
@@ -527,12 +527,6 @@
527
527
  <usage_type>resource</usage_type>
528
528
  <checksum>A46F04B4</checksum>
529
529
  </file>
530
- <file>
531
- <filename>check_eui_by_end_use.rb</filename>
532
- <filetype>rb</filetype>
533
- <usage_type>resource</usage_type>
534
- <checksum>D81E33DD</checksum>
535
- </file>
536
530
  <file>
537
531
  <filename>check_mech_sys_part_load_eff.rb</filename>
538
532
  <filetype>rb</filetype>
@@ -623,12 +617,6 @@
623
617
  <usage_type>resource</usage_type>
624
618
  <checksum>E3D75A8F</checksum>
625
619
  </file>
626
- <file>
627
- <filename>check_envelope_conductance.rb</filename>
628
- <filetype>rb</filetype>
629
- <usage_type>resource</usage_type>
630
- <checksum>4F5626E2</checksum>
631
- </file>
632
620
  <file>
633
621
  <filename>check_weather_files.rb</filename>
634
622
  <filetype>rb</filetype>
@@ -682,5 +670,17 @@
682
670
  <usage_type>resource</usage_type>
683
671
  <checksum>AD451814</checksum>
684
672
  </file>
673
+ <file>
674
+ <filename>check_eui_by_end_use.rb</filename>
675
+ <filetype>rb</filetype>
676
+ <usage_type>resource</usage_type>
677
+ <checksum>504C5330</checksum>
678
+ </file>
679
+ <file>
680
+ <filename>check_envelope_conductance.rb</filename>
681
+ <filetype>rb</filetype>
682
+ <usage_type>resource</usage_type>
683
+ <checksum>7814F60A</checksum>
684
+ </file>
685
685
  </files>
686
686
  </measure>
@@ -389,7 +389,13 @@ module OsLib_QAQC
389
389
  if use_old_gem_code
390
390
  data = @model.get_construction_properties(target_standard, intended_surface_type, standards_construction_type)
391
391
  else
392
- data = std.model_get_construction_properties(@model, intended_surface_type, standards_construction_type)
392
+
393
+ # model_get_construction_properties takes additional arguments now, maybe standard should update to add default
394
+ building_type = std.model_get_standards_building_type(@model)
395
+ construction_set_data = std.model_get_construction_set(building_type)
396
+ building_type_category = construction_set_data['exterior_wall_building_category']
397
+
398
+ data = std.model_get_construction_properties(@model, intended_surface_type, standards_construction_type, building_type_category)
393
399
  end
394
400
 
395
401
  if data.nil?
@@ -92,17 +92,16 @@ module OsLib_QAQC
92
92
  OpenStudio::EndUseCategoryType.getValues.each do |end_use|
93
93
  # get end uses
94
94
  end_use = OpenStudio::EndUseCategoryType.new(end_use).valueDescription
95
- query_elec = "SELECT Value FROM tabulardatawithstrings WHERE ReportName='AnnualBuildingUtilityPerformanceSummary' and TableName='End Uses' and RowName= '#{end_use}' and ColumnName= 'Electricity'"
96
- query_gas = "SELECT Value FROM tabulardatawithstrings WHERE ReportName='AnnualBuildingUtilityPerformanceSummary' and TableName='End Uses' and RowName= '#{end_use}' and ColumnName= 'Natural Gas'"
97
- query_add = "SELECT Value FROM tabulardatawithstrings WHERE ReportName='AnnualBuildingUtilityPerformanceSummary' and TableName='End Uses' and RowName= '#{end_use}' and ColumnName= 'Additional Fuel'"
98
- query_dc = "SELECT Value FROM tabulardatawithstrings WHERE ReportName='AnnualBuildingUtilityPerformanceSummary' and TableName='End Uses' and RowName= '#{end_use}' and ColumnName= 'District Cooling'"
99
- query_dh = "SELECT Value FROM tabulardatawithstrings WHERE ReportName='AnnualBuildingUtilityPerformanceSummary' and TableName='End Uses' and RowName= '#{end_use}' and ColumnName= 'District Heating'"
100
- results_elec = @sql.execAndReturnFirstDouble(query_elec).get
101
- results_gas = @sql.execAndReturnFirstDouble(query_gas).get
102
- results_add = @sql.execAndReturnFirstDouble(query_add).get
103
- results_dc = @sql.execAndReturnFirstDouble(query_dc).get
104
- results_dh = @sql.execAndReturnFirstDouble(query_dh).get
105
- total_end_use = results_elec + results_gas + results_add + results_dc + results_dh
95
+
96
+ total_end_use = 0
97
+ OpenStudio::EndUseFuelType.getValues.each do |fuel_type|
98
+ # convert integer to string
99
+ fuel_name = OpenStudio::EndUseFuelType.new(fuel_type).valueDescription
100
+ next if fuel_name == 'Water'
101
+ query_fuel = "SELECT Value FROM tabulardatawithstrings WHERE ReportName='AnnualBuildingUtilityPerformanceSummary' and TableName='End Uses' and RowName= '#{end_use}' and ColumnName= '#{fuel_name}'"
102
+ results_fuel = @sql.execAndReturnFirstDouble(query_fuel).get
103
+ total_end_use += results_fuel
104
+ end
106
105
 
107
106
  # populate hash for actual end use normalized by area
108
107
  actual_eui_by_end_use[end_use] = total_end_use / energy_plus_area
@@ -246,7 +246,11 @@ This argument does not effect HTML file, instead it makes data from individal ce
246
246
 
247
247
 
248
248
 
249
- electricity_ip, natural_gas_ip, additional_fuel_ip, district_heating_ip, district_cooling_ip, total_site_eui, eui, net_site_energy, annual_peak_electric_demand, unmet_hours_during_occupied_cooling, unmet_hours_during_occupied_heating, first_year_capital_cost, annual_utility_cost, total_lifecycle_cost
249
+
250
+
251
+
252
+
253
+ electricity_ip, natural_gas_ip, additional_fuel_ip, district_heating_ip, district_cooling_ip, total_site_eui, eui, net_site_energy, annual_peak_electric_demand, unmet_hours_during_occupied_cooling, unmet_hours_during_occupied_heating, first_year_capital_cost, annual_utility_cost, total_lifecycle_cost, number_of_measures_with_warnings, number_warnings
250
254
 
251
255
 
252
256
  ## Contributors
@@ -112,7 +112,7 @@ class OpenStudioResults < OpenStudio::Measure::ReportingMeasure
112
112
  result << 'schedules_overview_section'
113
113
  # TODO: - clean up code to gather schedule profiles so I don't have to grab every 15 minutes
114
114
 
115
- # TODO: - add in section to report warnings for this and other measures
115
+ # add in section to report warnings for this and other measures
116
116
  result << 'measure_warning_section'
117
117
 
118
118
  # see the method below in os_lib_reporting.rb to see a simple example of code to make a section of tables
@@ -182,10 +182,12 @@ class OpenStudioResults < OpenStudio::Measure::ReportingMeasure
182
182
  category_str = OpenStudio::EndUseCategoryType.new(category_type).valueDescription
183
183
  category_strs << category_str
184
184
  end
185
- additional_fuel_types = ['FuelOil#1', 'FuelOil#2', 'PropaneGas', 'Coal', 'Diesel', 'Gasoline', 'OtherFuel1', 'OtherFuel2']
185
+
186
+ additional_fuel_types = ['FuelOilNo1', 'FuelOilNo2', 'PropaneGas', 'Coal', 'Diesel', 'Gasoline', 'OtherFuel1', 'OtherFuel2']
187
+ # additional_fuel_types = OsLib_Reporting.fuel_type_names # getting all fuels instead of additional until fixed in OS
186
188
  additional_fuel_types.each do |additional_fuel_type|
187
189
  monthly_array = ['Output:Table:Monthly']
188
- monthly_array << 'Building Energy Performance - FuelOil#1'
190
+ monthly_array << "Building Energy Performance - #{additional_fuel_type}"
189
191
  monthly_array << '2'
190
192
  category_strs.each do |category_string|
191
193
  monthly_array << "#{category_string}:#{additional_fuel_type}"
@@ -217,7 +219,9 @@ class OpenStudioResults < OpenStudio::Measure::ReportingMeasure
217
219
  result << OpenStudio::Measure::OSOutput.makeDoubleOutput('annual_utility_cost') # $
218
220
  result << OpenStudio::Measure::OSOutput.makeDoubleOutput('total_lifecycle_cost') # $
219
221
 
220
- # TODO: - add warning counts, but only if they will always be made.
222
+ # add warning counts
223
+ result << OpenStudio::Measure::OSOutput.makeDoubleOutput('number_of_measures_with_warnings')
224
+ result << OpenStudio::Measure::OSOutput.makeDoubleOutput('number_warnings')
221
225
 
222
226
  return result
223
227
  end
@@ -306,16 +310,16 @@ class OpenStudioResults < OpenStudio::Measure::ReportingMeasure
306
310
  rescue StandardError => e
307
311
  display_name = eval("OsLib_Reporting.#{method_name}(nil,nil,nil,true)[:title]")
308
312
  if display_name.nil? then display_name == method_name end
309
- runner.registerWarning("#{display_name} section failed and was skipped because: #{e}. Detail on error follows.")
310
- runner.registerWarning(e.backtrace.join("\n").to_s)
313
+ runner.registerWarning("#{display_name} section failed and was skipped because: #{e}. Detail on error follows: #{e.backtrace.join("\n")}")
311
314
 
312
315
  # add in section heading with message if section fails
313
316
  section = {}
314
317
  section[:title] = display_name.to_s
315
318
  section[:tables] = []
316
319
  section[:messages] = []
317
- section[:messages] << "#{display_name} section failed and was skipped because: #{e}. Detail on error follows."
318
- section[:messages] << [e.backtrace.join("\n").to_s]
320
+ section[:messages] << "#{display_name} section failed and was skipped because: #{e}. Detail on error is in Measure Warnings section, if enabled at the bottom of this report."
321
+ # backtrace is now in Measure Warning section and doesn't need to be in line with the report section.
322
+ # section[:messages] << [e.backtrace.join("\n").to_s]
319
323
  @sections << section
320
324
  end
321
325
 
@@ -3,8 +3,8 @@
3
3
  <schema_version>3.0</schema_version>
4
4
  <name>openstudio_results</name>
5
5
  <uid>a25386cd-60e4-46bc-8b11-c755f379d916</uid>
6
- <version_id>5d24f032-e2e4-407f-a20d-9f76e15d4ac1</version_id>
7
- <version_modified>20200626T221404Z</version_modified>
6
+ <version_id>f0fd2916-1c52-4c78-bf00-25b7c5e5ca3a</version_id>
7
+ <version_modified>20201001T065500Z</version_modified>
8
8
  <xml_checksum>557BF06F</xml_checksum>
9
9
  <class_name>OpenStudioResults</class_name>
10
10
  <display_name>OpenStudio Results</display_name>
@@ -544,6 +544,20 @@
544
544
  <type>Double</type>
545
545
  <model_dependent>false</model_dependent>
546
546
  </output>
547
+ <output>
548
+ <name>number_of_measures_with_warnings</name>
549
+ <display_name>number_of_measures_with_warnings</display_name>
550
+ <short_name>number_of_measures_with_warnings</short_name>
551
+ <type>Double</type>
552
+ <model_dependent>false</model_dependent>
553
+ </output>
554
+ <output>
555
+ <name>number_warnings</name>
556
+ <display_name>number_warnings</display_name>
557
+ <short_name>number_warnings</short_name>
558
+ <type>Double</type>
559
+ <model_dependent>false</model_dependent>
560
+ </output>
547
561
  </outputs>
548
562
  <provenances />
549
563
  <tags>
@@ -606,12 +620,6 @@
606
620
  <usage_type>test</usage_type>
607
621
  <checksum>C62949E8</checksum>
608
622
  </file>
609
- <file>
610
- <filename>PeriodInConstName.osm</filename>
611
- <filetype>osm</filetype>
612
- <usage_type>test</usage_type>
613
- <checksum>D67C186D</checksum>
614
- </file>
615
623
  <file>
616
624
  <filename>HeatingOnly.osm</filename>
617
625
  <filetype>osm</filetype>
@@ -630,18 +638,6 @@
630
638
  <usage_type>readmeerb</usage_type>
631
639
  <checksum>4F81E2EA</checksum>
632
640
  </file>
633
- <file>
634
- <filename>add_tariff.osw</filename>
635
- <filetype>osw</filetype>
636
- <usage_type>test</usage_type>
637
- <checksum>1F52F669</checksum>
638
- </file>
639
- <file>
640
- <filename>ExampleModel.osm</filename>
641
- <filetype>osm</filetype>
642
- <usage_type>test</usage_type>
643
- <checksum>F70DF221</checksum>
644
- </file>
645
641
  <file>
646
642
  <filename>LICENSE.md</filename>
647
643
  <filetype>md</filetype>
@@ -1392,12 +1388,6 @@
1392
1388
  <usage_type>resource</usage_type>
1393
1389
  <checksum>8A8CE353</checksum>
1394
1390
  </file>
1395
- <file>
1396
- <filename>OpenStudioResults_Test.rb</filename>
1397
- <filetype>rb</filetype>
1398
- <usage_type>test</usage_type>
1399
- <checksum>4DFBB60F</checksum>
1400
- </file>
1401
1391
  <file>
1402
1392
  <filename>Siz.HumidifierSteamElectric.rb</filename>
1403
1393
  <filetype>rb</filetype>
@@ -1434,34 +1424,64 @@
1434
1424
  <usage_type>resource</usage_type>
1435
1425
  <checksum>0169F9F8</checksum>
1436
1426
  </file>
1437
- <file>
1438
- <filename>os_lib_reporting.rb</filename>
1439
- <filetype>rb</filetype>
1440
- <usage_type>resource</usage_type>
1441
- <checksum>E15D2A3D</checksum>
1442
- </file>
1443
1427
  <file>
1444
1428
  <filename>os_lib_schedules.rb</filename>
1445
1429
  <filetype>rb</filetype>
1446
1430
  <usage_type>resource</usage_type>
1447
1431
  <checksum>C82D00CC</checksum>
1448
1432
  </file>
1433
+ <file>
1434
+ <filename>PeriodInConstName.osm</filename>
1435
+ <filetype>osm</filetype>
1436
+ <usage_type>test</usage_type>
1437
+ <checksum>E41FBCFF</checksum>
1438
+ </file>
1439
+ <file>
1440
+ <filename>add_tariff.osw</filename>
1441
+ <filetype>osw</filetype>
1442
+ <usage_type>test</usage_type>
1443
+ <checksum>BF680A60</checksum>
1444
+ </file>
1445
+ <file>
1446
+ <filename>os_results.osw</filename>
1447
+ <filetype>osw</filetype>
1448
+ <usage_type>test</usage_type>
1449
+ <checksum>8BE06CC3</checksum>
1450
+ </file>
1451
+ <file>
1452
+ <filename>ExampleModel.osm</filename>
1453
+ <filetype>osm</filetype>
1454
+ <usage_type>test</usage_type>
1455
+ <checksum>42C65747</checksum>
1456
+ </file>
1449
1457
  <file>
1450
1458
  <version>
1451
1459
  <software_program>OpenStudio</software_program>
1452
- <identifier>3.0.0</identifier>
1453
- <min_compatible>3.0.0</min_compatible>
1460
+ <identifier>3.1.0</identifier>
1461
+ <min_compatible>3.1.0</min_compatible>
1454
1462
  </version>
1455
1463
  <filename>measure.rb</filename>
1456
1464
  <filetype>rb</filetype>
1457
1465
  <usage_type>script</usage_type>
1458
- <checksum>CBB2420E</checksum>
1466
+ <checksum>CD87DF6C</checksum>
1467
+ </file>
1468
+ <file>
1469
+ <filename>OpenStudioResults_Test.rb</filename>
1470
+ <filetype>rb</filetype>
1471
+ <usage_type>test</usage_type>
1472
+ <checksum>B7FB7EB7</checksum>
1473
+ </file>
1474
+ <file>
1475
+ <filename>os_lib_reporting.rb</filename>
1476
+ <filetype>rb</filetype>
1477
+ <usage_type>resource</usage_type>
1478
+ <checksum>4A5657AB</checksum>
1459
1479
  </file>
1460
1480
  <file>
1461
1481
  <filename>README.md</filename>
1462
1482
  <filetype>md</filetype>
1463
1483
  <usage_type>readme</usage_type>
1464
- <checksum>F7DEA5C8</checksum>
1484
+ <checksum>42709140</checksum>
1465
1485
  </file>
1466
1486
  </files>
1467
1487
  </measure>