urbanopt-reporting 0.3.0 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +44 -2
  3. data/docs/package-lock.json +3 -3
  4. data/docs/package.json +1 -1
  5. data/lib/measures/default_feature_reports/measure.rb +70 -15
  6. data/lib/measures/default_feature_reports/measure.xml +3 -3
  7. data/lib/measures/export_modelica_loads/LICENSE.md +27 -0
  8. data/lib/measures/export_modelica_loads/README.md +26 -0
  9. data/lib/measures/export_modelica_loads/README.md.erb +42 -0
  10. data/lib/measures/export_modelica_loads/docs/.gitkeep +0 -0
  11. data/lib/measures/export_modelica_loads/measure.rb +375 -0
  12. data/lib/measures/export_modelica_loads/measure.xml +92 -0
  13. data/lib/measures/export_modelica_loads/resources/report.html.in +13 -0
  14. data/lib/measures/export_time_series_modelica/LICENSE.md +1 -0
  15. data/lib/measures/export_time_series_modelica/README.md +59 -0
  16. data/lib/measures/export_time_series_modelica/README.md.erb +42 -0
  17. data/lib/measures/export_time_series_modelica/docs/.gitkeep +0 -0
  18. data/lib/measures/export_time_series_modelica/measure.rb +430 -0
  19. data/lib/measures/export_time_series_modelica/measure.xml +147 -0
  20. data/lib/measures/export_time_series_modelica/resources/os_lib_helper_methods.rb +399 -0
  21. data/lib/measures/export_time_series_modelica/resources/report.html.in +13 -0
  22. data/lib/urbanopt/reporting/default_reports/end_use.rb +39 -17
  23. data/lib/urbanopt/reporting/default_reports/feature_report.rb +62 -5
  24. data/lib/urbanopt/reporting/default_reports/reporting_period.rb +14 -2
  25. data/lib/urbanopt/reporting/default_reports/scenario_report.rb +10 -5
  26. data/lib/urbanopt/reporting/default_reports/schema/scenario_csv_columns.txt +1 -0
  27. data/lib/urbanopt/reporting/default_reports/schema/scenario_schema.json +27 -12
  28. data/lib/urbanopt/reporting/version.rb +1 -1
  29. data/urbanopt-reporting-gem.gemspec +1 -1
  30. metadata +19 -4
@@ -0,0 +1,13 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>ReportingMeasure</title>
6
+ <link href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap.min.css" rel="stylesheet">
7
+ <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
8
+ <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/d3/3.3.9/d3.min.js"></script>
9
+ </head>
10
+ <body>
11
+ <%= output %>
12
+ </body>
13
+ </html>
@@ -38,7 +38,7 @@ module URBANopt
38
38
  # Enduse class all enduse energy consumption results.
39
39
  ##
40
40
  class EndUse
41
- attr_accessor :heating, :cooling, :interior_lighting, :exterior_lighting, :interior_equipment, :exterior_equipment,
41
+ attr_accessor :heating, :cooling, :interior_lighting, :exterior_lighting, :interior_equipment, :exterior_equipment, :electric_vehicles,
42
42
  :fans, :pumps, :heat_rejection, :humidification, :heat_recovery, :water_systems, :refrigeration, :generators # :nodoc:
43
43
 
44
44
  ##
@@ -59,6 +59,7 @@ module URBANopt
59
59
  @exterior_lighting = hash[:exterior_lighting]
60
60
  @interior_equipment = hash[:interior_equipment]
61
61
  @exterior_equipment = hash[:exterior_equipment]
62
+ @electric_vehicles = hash[:electric_vehicles]
62
63
  @fans = hash[:fans]
63
64
  @pumps = hash[:pumps]
64
65
  @heat_rejection = hash[:heat_rejection]
@@ -85,6 +86,7 @@ module URBANopt
85
86
  hash[:exterior_lighting] = nil
86
87
  hash[:interior_equipment] = nil
87
88
  hash[:exterior_equipment] = nil
89
+ hash[:electric_vehicles] = nil
88
90
  hash[:fans] = nil
89
91
  hash[:pumps] = nil
90
92
  hash[:heat_rejection] = nil
@@ -112,6 +114,7 @@ module URBANopt
112
114
  result[:exterior_lighting] = @exterior_lighting
113
115
  result[:interior_equipment] = @interior_equipment
114
116
  result[:exterior_equipment] = @exterior_equipment
117
+ result[:electric_vehicles] = @electric_vehicles
115
118
  result[:fans] = @fans
116
119
  result[:pumps] = @pumps
117
120
  result[:heat_rejection] = @heat_rejection
@@ -129,27 +132,46 @@ module URBANopt
129
132
  return result
130
133
  end
131
134
 
135
+ ##
136
+ # Adds up +existing_value+ and +new_values+ if not nill.
137
+ ##
138
+ # [parameter:]
139
+ # +existing_value+ - _Float_ - A value corresponding to a EndUse attribute.
140
+ ##
141
+ # +new_value+ - _Float_ - A value corresponding to a EndUse attribute.
142
+ ##
143
+ def add_values(existing_value, new_value)
144
+ if existing_value && new_value
145
+ existing_value += new_value
146
+ elsif new_value
147
+ existing_value = new_value
148
+ end
149
+ return existing_value
150
+ end
151
+
132
152
  ##
133
153
  # Aggregate values of each EndUse attribute.
134
154
  ##
135
155
  # [Parameters:]
136
- # +new_end_use+ - _EndUse_ - An object of EndUse class.
156
+ # +other+ - _EndUse_ - An object of EndUse class.
137
157
  ##
138
- def merge_end_use!(new_end_use)
139
- @heating += new_end_use.heating if new_end_use.heating
140
- @cooling += new_end_use.cooling if new_end_use.cooling
141
- @interior_lighting += new_end_use.interior_lighting if new_end_use.interior_lighting
142
- @exterior_lighting += new_end_use.exterior_lighting if new_end_use.exterior_lighting
143
- @interior_equipment += new_end_use.interior_equipment if new_end_use.interior_equipment
144
- @exterior_equipment += new_end_use.exterior_equipment if new_end_use.exterior_equipment
145
- @fans += new_end_use.fans if new_end_use.fans
146
- @pumps += new_end_use.pumps if new_end_use.pumps
147
- @heat_rejection += new_end_use.heat_rejection if new_end_use.heat_rejection
148
- @humidification += new_end_use.humidification if new_end_use.humidification
149
- @heat_recovery += new_end_use.heat_recovery if new_end_use.heat_recovery
150
- @water_systems += new_end_use.water_systems if new_end_use.water_systems
151
- @refrigeration += new_end_use.refrigeration if new_end_use.refrigeration
152
- @generators += new_end_use.generators if new_end_use.generators
158
+ def merge_end_use!(other)
159
+
160
+ @heating = add_values(@heating, other.heating)
161
+ @cooling = add_values(@cooling, other.cooling)
162
+ @interior_lighting = add_values(@interior_lighting, other.interior_lighting)
163
+ @exterior_lighting = add_values(@exterior_lighting, other.exterior_lighting)
164
+ @interior_equipment = add_values(@interior_equipment, other.interior_equipment)
165
+ @exterior_equipment = add_values(@exterior_equipment, other.exterior_equipment)
166
+ @electric_vehicles = add_values(@electric_vehicles, other.electric_vehicles)
167
+ @fans = add_values(@fans, other.fans)
168
+ @pumps = add_values(@pumps, other.pumps)
169
+ @heat_rejection = add_values(@heat_rejection, other.heat_rejection)
170
+ @humidification = add_values(@humidification, other.humidification)
171
+ @heat_recovery = add_values(@heat_recovery, other.heat_recovery)
172
+ @water_systems = add_values(@water_systems, other.water_systems)
173
+ @refrigeration = add_values(@refrigeration, other.refrigeration)
174
+ @generators = add_values(@generators, other.generators)
153
175
 
154
176
  return self
155
177
  end
@@ -40,6 +40,7 @@ require_relative 'thermal_storage'
40
40
 
41
41
  require 'json-schema'
42
42
  require 'json'
43
+ require 'fileutils'
43
44
 
44
45
  module URBANopt
45
46
  module Reporting
@@ -223,6 +224,66 @@ module URBANopt
223
224
  return result
224
225
  end
225
226
 
227
+ ##
228
+ # Saves the 'default_feature_report.json' and 'default_feature_report.csv' files
229
+ ##
230
+ # [parameters]:
231
+ # +file_name+ - _String_ - Assign a name to the saved feature results file without an extension
232
+ def save(file_name = 'default_feature_report')
233
+ # reassign the initialize local variable @file_name to the file name input.
234
+ @file_name = file_name
235
+
236
+ # save the feature reports csv and json data
237
+ old_timeseries_path = nil
238
+ if !@timeseries_csv.path.nil?
239
+ old_timeseries_path = @timeseries_csv.path
240
+ end
241
+
242
+ # define the results_dir_path
243
+ results_dir_path = File.join(@directory_name, 'feature_reports')
244
+ # create feature reports directory
245
+ Dir.mkdir(results_dir_path) unless Dir.exist?(File.join(@directory_name, 'feature_reports'))
246
+
247
+ @timeseries_csv.path = File.join(@directory_name, 'feature_reports', file_name + '.csv')
248
+ FileUtils.mkdir_p File.dirname(@timeseries_csv.path)
249
+ @timeseries_csv.save_data
250
+
251
+ ## save json rport
252
+ # feature_hash
253
+ feature_hash = to_hash
254
+
255
+ json_name_path = File.join(results_dir_path, file_name + '.json')
256
+
257
+ File.open(json_name_path, 'w') do |f|
258
+ f.puts JSON.pretty_generate(feature_hash)
259
+ # make sure data is written to the disk one way or the other
260
+ begin
261
+ f.fsync
262
+ rescue StandardError
263
+ f.flush
264
+ end
265
+ end
266
+
267
+ if !old_timeseries_path.nil?
268
+ @timeseries_csv.path = old_timeseries_path
269
+ else
270
+ @timeseries_csv.path = File.join(@directory_name, file_name + '.csv')
271
+ end
272
+
273
+ return true
274
+ end
275
+
276
+ ##
277
+ # Calls the individual functions to save 'default_feature_report.json' and 'default_feature_report.csv'
278
+ # For backward compatibility and ease of use
279
+ ##
280
+ # [parameters]:
281
+ # +file_name+ - _String_ - Assign a name to the saved feature report file without an extension
282
+ def save_feature_report(file_name = 'default_feature_report')
283
+ save_json_report(file_name)
284
+ save_csv_report(file_name)
285
+ end
286
+
226
287
  ##
227
288
  # Saves the 'default_feature_report.json' file to the results directory
228
289
  ##
@@ -252,7 +313,6 @@ module URBANopt
252
313
  f.flush
253
314
  end
254
315
  end
255
-
256
316
  end
257
317
 
258
318
  ##
@@ -275,13 +335,10 @@ module URBANopt
275
335
  # copy the CSV report to the new feature_reports folder
276
336
  directory_folders.each do |f|
277
337
  if f.include? '_default_feature_reports'
278
- FileUtils.cp(File.join(f, 'default_feature_reports.csv'), File.join(results_dir_path, @file_name +'.csv'))
338
+ FileUtils.cp(File.join(f, 'default_feature_reports.csv'), File.join(results_dir_path, @file_name + '.csv'))
279
339
  end
280
340
  end
281
341
  end
282
-
283
-
284
-
285
342
  end
286
343
  end
287
344
  end
@@ -43,13 +43,13 @@ module URBANopt
43
43
  # ReportingPeriod includes all the results of a specific reporting period.
44
44
  ##
45
45
  class ReportingPeriod
46
- attr_accessor :id, :name, :multiplier, :start_date, :end_date, :month, :day_of_month, :year, :total_site_energy_kwh, :total_source_energy_kwh,
46
+ attr_accessor :id, :name, :multiplier, :start_date, :end_date, :month, :day_of_month, :year, :total_site_energy_kwh, :total_source_energy_kwh, :site_EUI_kwh_per_m2, :site_EUI_kbtu_per_ft2, :source_EUI_kwh_per_m2, :source_EUI_kbtu_per_ft2,
47
47
  :net_site_energy_kwh, :net_source_energy_kwh, :total_utility_cost_dollar, :net_utility_cost_dollar, :utility_costs_dollar, :electricity_kwh, :natural_gas_kwh, :propane_kwh, :fuel_oil_kwh, :other_fuels_kwh, :district_cooling_kwh,
48
48
  :district_heating_kwh, :water_qbft, :electricity_produced_kwh, :end_uses, :energy_production_kwh, :photovoltaic,
49
49
  :fuel_type, :total_cost_dollar, :usage_cost_dollar, :demand_cost_dollar, :comfort_result, :time_setpoint_not_met_during_occupied_cooling,
50
50
  :time_setpoint_not_met_during_occupied_heating, :time_setpoint_not_met_during_occupied_hours, :hours_out_of_comfort_bounds_PMV, :hours_out_of_comfort_bounds_PPD #:nodoc:
51
51
  # ReportingPeriod class initializes the reporting period attributes:
52
- # +:id+ , +:name+ , +:multiplier+ , +:start_date+ , +:end_date+ , +:month+ , +:day_of_month+ , +:year+ , +:total_site_energy_kwh+ , +:total_source_energy_kwh+ ,
52
+ # +:id+ , +:name+ , +:multiplier+ , +:start_date+ , +:end_date+ , +:month+ , +:day_of_month+ , +:year+ , +:total_site_energy_kwh+ , +:total_source_energy_kwh+ , +:site_EUI_kwh_per_m2+, +:site_EUI_kbtu_per_ft2+, +:source_EUI_kwh_per_m2+, +:source_EUI_kbtu_per_ft2+,
53
53
  # +:net_site_energy_kwh+ , +:net_source_energy_kwh+ , +:total_utility_cost_dollar , +:net_utility_cost_dollar+ , +:utility_costs_dollar+ , +:electricity_kwh+ , +:natural_gas_kwh+ , +:propane_kwh+ , +:fuel_oil_kwh+ , +:other_fuels_kwh+ , +:district_cooling_kwh+ ,
54
54
  # +:district_heating_kwh+ , +:water_qbft+ , +:electricity_produced_kwh+ , +:end_uses+ , +:energy_production_kwh+ , +:photovoltaic_kwh+ ,
55
55
  # +:fuel_type+ , +:total_cost_dollar+ , +:usage_cost_dollar+ , +:demand_cost_dollar+ , +:comfort_result+ , +:time_setpoint_not_met_during_occupied_cooling+ ,
@@ -70,6 +70,10 @@ module URBANopt
70
70
 
71
71
  @total_site_energy_kwh = hash[:total_site_energy_kwh]
72
72
  @total_source_energy_kwh = hash[:total_source_energy_kwh]
73
+ @site_EUI_kwh_per_m2 = hash[:site_EUI_kwh_per_m2]
74
+ @site_EUI_kbtu_per_ft2 = hash[:site_EUI_kbtu_per_ft2]
75
+ @source_EUI_kwh_per_m2 = hash[:source_EUI_kwh_per_m2]
76
+ @source_EUI_kbtu_per_ft2 = hash[:source_EUI_kbtu_per_ft2]
73
77
  @net_site_energy_kwh = hash[:net_site_energy_kwh]
74
78
  @net_source_energy_kwh = hash[:net_source_energy_kwh]
75
79
  @net_utility_cost_dollar = hash[:net_utility_cost_dollar]
@@ -110,6 +114,10 @@ module URBANopt
110
114
 
111
115
  hash[:total_site_energy_kwh] = nil
112
116
  hash[:total_source_energy_kwh] = nil
117
+ hash[:site_EUI_kwh_per_m2] = nil
118
+ hash[:site_EUI_kbtu_per_ft2] = nil
119
+ hash[:source_EUI_kwh_per_m2] = nil
120
+ hash[:source_EUI_kbtu_per_ft2] = nil
113
121
  hash[:net_site_energy_kwh] = nil
114
122
  hash[:net_source_energy_kwh] = nil
115
123
  hash[:net_utility_cost_dollar] = nil
@@ -148,6 +156,10 @@ module URBANopt
148
156
  result[:end_date] = @end_date.to_hash if @end_date
149
157
  result[:total_site_energy_kwh] = @total_site_energy_kwh if @total_site_energy_kwh
150
158
  result[:total_source_energy_kwh] = @total_source_energy_kwh if @total_source_energy_kwh
159
+ result[:site_EUI_kwh_per_m2] = @site_EUI_kwh_per_m2 if @site_EUI_kwh_per_m2
160
+ result[:site_EUI_kbtu_per_ft2] = @site_EUI_kbtu_per_ft2 if @site_EUI_kbtu_per_ft2
161
+ result[:source_EUI_kwh_per_m2] = @source_EUI_kwh_per_m2 if @source_EUI_kwh_per_m2
162
+ result[:source_EUI_kbtu_per_ft2] = @source_EUI_kbtu_per_ft2 if @source_EUI_kbtu_per_ft2
151
163
  result[:net_site_energy_kwh] = @net_site_energy_kwh if @net_site_energy_kwh
152
164
  result[:net_source_energy_kwh] = @net_source_energy_kwh if @net_source_energy_kwh
153
165
  result[:net_utility_cost_dollar] = @net_utility_cost_dollar if @net_utility_cost_dollar
@@ -147,7 +147,7 @@ module URBANopt
147
147
  ##
148
148
  # [parameters]:
149
149
  # +file_name+ - _String_ - Assign a name to the saved scenario results file without an extension
150
- def save(file_name = 'default_scenario_report')
150
+ def save(file_name = 'default_scenario_report', save_feature_reports = true)
151
151
  # reassign the initialize local variable @file_name to the file name input.
152
152
  @file_name = file_name
153
153
 
@@ -185,10 +185,15 @@ module URBANopt
185
185
  @timeseries_csv.path = File.join(@directory_name, file_name + '.csv')
186
186
  end
187
187
 
188
- # save the feature reports csv and json data
189
- # @feature_reports.each do |feature_report|
190
- # feature_report.save_feature_report()
191
- # end
188
+ if save_feature_reports
189
+ if file_name == 'default_scenario_report'
190
+ file_name = 'default_feature_report'
191
+ end
192
+ #save the feature reports csv and json data
193
+ @feature_reports.each do |feature_report|
194
+ feature_report.save file_name
195
+ end
196
+ end
192
197
 
193
198
  return true
194
199
  end
@@ -10,6 +10,7 @@ Heating:Electricity
10
10
  InteriorLights:Electricity
11
11
  ExteriorLights:Electricity
12
12
  InteriorEquipment:Electricity
13
+ ExteriorEquipment:Electricity
13
14
  Fans:Electricity
14
15
  Pumps:Electricity
15
16
  WaterSystems:Electricity
@@ -271,6 +271,18 @@
271
271
  "description": "Total source energy used, does not include generation (kWh)",
272
272
  "type": "number"
273
273
  },
274
+ "site_EUI_kwh_per_m2": {
275
+ "type": "number"
276
+ },
277
+ "site_EUI_kBtu_per_ft2": {
278
+ "type": "number"
279
+ },
280
+ "source_EUI_kwh_per_m2": {
281
+ "type": "number"
282
+ },
283
+ "source_EUI_kBtu_per_ft2": {
284
+ "type": "number"
285
+ },
274
286
  "net_site_energy_kwh": {
275
287
  "description": "Net site energy (kWh)",
276
288
  "type": "number"
@@ -301,14 +313,14 @@
301
313
  "description": "Sum of all natural gas end uses consumption (kWh)",
302
314
  "type": "number"
303
315
  },
304
- "propane_kwh": {
316
+ "propane_kwh": {
305
317
  "description": "Sum of all propane end uses consumption (kWh)",
306
318
  "type": "number"
307
- },
308
- "fuel_oil_kwh": {
319
+ },
320
+ "fuel_oil_kwh": {
309
321
  "description": "Sum of all fuel oil #2 end uses consumption (kWh)",
310
322
  "type": "number"
311
- },
323
+ },
312
324
  "other_fuels_kwh": {
313
325
  "description": "Sum of all other (fuel oil #1, diesel, gasoline, coal, steam) fuel end uses consumption (kWh)",
314
326
  "type": "number"
@@ -379,12 +391,12 @@
379
391
  "natural_gas_kwh": {
380
392
  "$ref": "#/definitions/EndUse"
381
393
  },
382
- "propane_kwh": {
383
- "$ref": "#/definitions/EndUse"
384
- },
385
- "fuel_oil_kwh": {
386
- "$ref": "#/definitions/EndUse"
387
- },
394
+ "propane_kwh": {
395
+ "$ref": "#/definitions/EndUse"
396
+ },
397
+ "fuel_oil_kwh": {
398
+ "$ref": "#/definitions/EndUse"
399
+ },
388
400
  "other_fuels_kwh": {
389
401
  "$ref": "#/definitions/EndUse"
390
402
  },
@@ -421,6 +433,9 @@
421
433
  "exterior_equipment": {
422
434
  "type": "number"
423
435
  },
436
+ "electric_vehicles": {
437
+ "type": "number"
438
+ },
424
439
  "fans": {
425
440
  "type": "number"
426
441
  },
@@ -536,8 +551,8 @@
536
551
  "enum": [
537
552
  "Electricity",
538
553
  "Natural Gas",
539
- "Propane",
540
- "Fuel Oil",
554
+ "Propane",
555
+ "Fuel Oil",
541
556
  "District Cooling",
542
557
  "District Heating",
543
558
  "Other Fuels",
@@ -30,6 +30,6 @@
30
30
 
31
31
  module URBANopt
32
32
  module Reporting
33
- VERSION = '0.3.0'.freeze
33
+ VERSION = '0.3.5'.freeze
34
34
  end
35
35
  end
@@ -29,5 +29,5 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency 'rspec', '~> 3.7'
30
30
  spec.add_runtime_dependency 'json-schema', '~> 2.8'
31
31
  spec.add_runtime_dependency 'json_pure', '~> 2.3'
32
- spec.add_runtime_dependency 'openstudio-extension', '~> 0.3.1'
32
+ spec.add_runtime_dependency 'openstudio-extension', '~> 0.3.2'
33
33
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: urbanopt-reporting
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rawad El Kontar
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-12-02 00:00:00.000000000 Z
12
+ date: 2021-02-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -87,14 +87,14 @@ dependencies:
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: 0.3.1
90
+ version: 0.3.2
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: 0.3.1
97
+ version: 0.3.2
98
98
  description: Library include scenario default reporting measure and scenario defaults
99
99
  reports schema and classes
100
100
  email:
@@ -144,6 +144,21 @@ files:
144
144
  - lib/measures/default_feature_reports/README.md.erb
145
145
  - lib/measures/default_feature_reports/measure.rb
146
146
  - lib/measures/default_feature_reports/measure.xml
147
+ - lib/measures/export_modelica_loads/LICENSE.md
148
+ - lib/measures/export_modelica_loads/README.md
149
+ - lib/measures/export_modelica_loads/README.md.erb
150
+ - lib/measures/export_modelica_loads/docs/.gitkeep
151
+ - lib/measures/export_modelica_loads/measure.rb
152
+ - lib/measures/export_modelica_loads/measure.xml
153
+ - lib/measures/export_modelica_loads/resources/report.html.in
154
+ - lib/measures/export_time_series_modelica/LICENSE.md
155
+ - lib/measures/export_time_series_modelica/README.md
156
+ - lib/measures/export_time_series_modelica/README.md.erb
157
+ - lib/measures/export_time_series_modelica/docs/.gitkeep
158
+ - lib/measures/export_time_series_modelica/measure.rb
159
+ - lib/measures/export_time_series_modelica/measure.xml
160
+ - lib/measures/export_time_series_modelica/resources/os_lib_helper_methods.rb
161
+ - lib/measures/export_time_series_modelica/resources/report.html.in
147
162
  - lib/urbanopt/reporting.rb
148
163
  - lib/urbanopt/reporting/default_reports.rb
149
164
  - lib/urbanopt/reporting/default_reports/construction_cost.rb