urbanopt-reporting 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +19 -0
  3. data/.github/ISSUE_TEMPLATE/feature_request.md +15 -0
  4. data/.github/pull_request_template.md +13 -0
  5. data/.rdoc_options +36 -0
  6. data/CHANGELOG.md +10 -0
  7. data/RDOC_MAIN.md +10 -0
  8. data/deploy_docs.sh +5 -0
  9. data/docs/.gitignore +3 -0
  10. data/docs/.vuepress/components/InnerJsonSchema.vue +76 -0
  11. data/docs/.vuepress/components/JsonSchema.vue +12 -0
  12. data/docs/.vuepress/components/ScenarioSchema.vue +12 -0
  13. data/docs/.vuepress/components/StaticLink.vue +8 -0
  14. data/docs/.vuepress/config.js +25 -0
  15. data/docs/.vuepress/highlight.js +8 -0
  16. data/docs/.vuepress/json-schema-deref-loader.js +22 -0
  17. data/docs/.vuepress/public/custom_rdoc_styles.css +78 -0
  18. data/docs/.vuepress/styles/palette.styl +1 -0
  19. data/docs/.vuepress/utils.js +17 -0
  20. data/docs/README.md +9 -0
  21. data/docs/package-lock.json +10018 -0
  22. data/docs/package.json +30 -0
  23. data/docs/schemas/scenario-schema.md +3 -0
  24. data/lib/measures/default_feature_reports/measure.rb +53 -44
  25. data/lib/urbanopt/reporting/default_reports/end_uses.rb +38 -38
  26. data/lib/urbanopt/reporting/default_reports/feature_report.rb +35 -19
  27. data/lib/urbanopt/reporting/default_reports/location.rb +11 -11
  28. data/lib/urbanopt/reporting/default_reports/program.rb +86 -86
  29. data/lib/urbanopt/reporting/default_reports/reporting_period.rb +78 -78
  30. data/lib/urbanopt/reporting/default_reports/schema/scenario_schema.json +80 -80
  31. data/lib/urbanopt/reporting/default_reports/thermal_storage.rb +10 -10
  32. data/lib/urbanopt/reporting/version.rb +1 -1
  33. data/urbanopt-reporting-gem.gemspec +4 -4
  34. metadata +35 -13
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "urbanopt-reporting-gem-docs",
3
+ "version": "0.0.1",
4
+ "description": "",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "dev": "vuepress dev",
8
+ "build": "vuepress build",
9
+ "deploy": "gh-pages -d .vuepress/dist"
10
+ },
11
+ "author": "NREL",
12
+ "dependencies": {
13
+ "highlight.js": "^10.3.1",
14
+ "json-schema-ref-parser": "^9.0.6",
15
+ "json-schema-view-js": "git+https://git@github.com/bgschiller/json-schema-view-js.git",
16
+ "vuepress": "^1.7.1",
17
+ "webpack-dev-middleware": "^3.6.0"
18
+ },
19
+ "devDependencies": {
20
+ "braces": "^3.0.2",
21
+ "dot-prop": "^5.3.0",
22
+ "gh-pages": "^3.1.0",
23
+ "js-yaml": "^3.14.0",
24
+ "minimist": ">=1.2.3",
25
+ "node-forge": ">=0.10.0",
26
+ "serialize-javascript": "^5.0.1",
27
+ "set-value": "^3.0.2",
28
+ "yargs-parser": "^20.2.3"
29
+ }
30
+ }
@@ -0,0 +1,3 @@
1
+ # Scenario Schema
2
+
3
+ <ScenarioSchema />
@@ -333,14 +333,14 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
333
333
  # get longitude from feature_location
334
334
  longitude = (feature_location.split(',')[1].delete! '[]').to_f
335
335
  # latitude
336
- feature_report.location.latitude = latitude
336
+ feature_report.location.latitude_deg = latitude
337
337
  # longitude
338
- feature_report.location.longitude = longitude
338
+ feature_report.location.longitude_deg = longitude
339
339
  end
340
340
 
341
341
  # surface_elevation
342
342
  elev = sql_query(runner, sql_file, 'InputVerificationandResultsSummary', "TableName='General' AND RowName='Elevation' AND ColumnName='Value'")
343
- feature_report.location.surface_elevation = elev
343
+ feature_report.location.surface_elevation_ft = elev
344
344
 
345
345
  ##########################################################################
346
346
  ##
@@ -350,18 +350,18 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
350
350
 
351
351
  # floor_area
352
352
  floor_area = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='Building Area' AND RowName='Total Building Area' AND ColumnName='Area'")
353
- feature_report.program.floor_area = convert_units(floor_area, 'm^2', 'ft^2')
353
+ feature_report.program.floor_area_sqft = convert_units(floor_area, 'm^2', 'ft^2')
354
354
 
355
355
  # conditioned_area
356
356
  conditioned_area = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='Building Area' AND RowName='Net Conditioned Building Area' AND ColumnName='Area'")
357
- feature_report.program.conditioned_area = convert_units(conditioned_area, 'm^2', 'ft^2')
357
+ feature_report.program.conditioned_area_sqft = convert_units(conditioned_area, 'm^2', 'ft^2')
358
358
 
359
359
  # unconditioned_area
360
360
  unconditioned_area = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='Building Area' AND RowName='Unconditioned Building Area' AND ColumnName='Area'")
361
- feature_report.program.unconditioned_area = convert_units(unconditioned_area, 'm^2', 'ft^2')
361
+ feature_report.program.unconditioned_area_sqft = convert_units(unconditioned_area, 'm^2', 'ft^2')
362
362
 
363
363
  # footprint_area
364
- feature_report.program.footprint_area = convert_units(floor_area, 'm^2', 'ft^2')
364
+ feature_report.program.footprint_area_sqft = convert_units(floor_area, 'm^2', 'ft^2')
365
365
 
366
366
  # maximum_number_of_stories
367
367
  number_of_stories = building.standardsNumberOfStories.get if building.standardsNumberOfStories.is_initialized
@@ -371,7 +371,7 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
371
371
  # maximum_roof_height
372
372
  floor_to_floor_height = building.nominalFloortoFloorHeight.to_f
373
373
  maximum_roof_height = number_of_stories * floor_to_floor_height
374
- feature_report.program.maximum_roof_height = maximum_roof_height
374
+ feature_report.program.maximum_roof_height_ft = maximum_roof_height
375
375
 
376
376
  # maximum_number_of_stories_above_ground
377
377
  number_of_stories_above_ground = building.standardsNumberOfAboveGroundStories.get if building.standardsNumberOfAboveGroundStories.is_initialized
@@ -432,36 +432,36 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
432
432
  ## window_area
433
433
  # north_window_area
434
434
  north_window_area = sql_query(runner, sql_file, 'InputVerificationandResultsSummary', "TableName='Window-Wall Ratio' AND RowName='Window Opening Area' AND ColumnName='North (315 to 45 deg)'").to_f
435
- feature_report.program.window_area[:north_window_area] = convert_units(north_window_area, 'm^2', 'ft^2')
435
+ feature_report.program.window_area_sqft[:north_window_area_sqft] = convert_units(north_window_area, 'm^2', 'ft^2')
436
436
  # south_window_area
437
437
  south_window_area = sql_query(runner, sql_file, 'InputVerificationandResultsSummary', "TableName='Window-Wall Ratio' AND RowName='Window Opening Area' AND ColumnName='South (135 to 225 deg)'").to_f
438
- feature_report.program.window_area[:south_window_area] = convert_units(south_window_area, 'm^2', 'ft^2')
438
+ feature_report.program.window_area_sqft[:south_window_area_sqft] = convert_units(south_window_area, 'm^2', 'ft^2')
439
439
  # east_window_area
440
440
  east_window_area = sql_query(runner, sql_file, 'InputVerificationandResultsSummary', "TableName='Window-Wall Ratio' AND RowName='Window Opening Area' AND ColumnName='East (45 to 135 deg)'").to_f
441
- feature_report.program.window_area[:east_window_area] = convert_units(east_window_area, 'm^2', 'ft^2')
441
+ feature_report.program.window_area_sqft[:east_window_area_sqft] = convert_units(east_window_area, 'm^2', 'ft^2')
442
442
  # west_window_area
443
443
  west_window_area = sql_query(runner, sql_file, 'InputVerificationandResultsSummary', "TableName='Window-Wall Ratio' AND RowName='Window Opening Area' AND ColumnName='West (225 to 315 deg)'").to_f
444
- feature_report.program.window_area[:west_window_area] = convert_units(west_window_area, 'm^2', 'ft^2')
444
+ feature_report.program.window_area_sqft[:west_window_area_sqft] = convert_units(west_window_area, 'm^2', 'ft^2')
445
445
  # total_window_area
446
446
  total_window_area = north_window_area + south_window_area + east_window_area + west_window_area
447
- feature_report.program.window_area[:total_window_area] = convert_units(total_window_area, 'm^2', 'ft^2')
447
+ feature_report.program.window_area_sqft[:total_window_area_sqft] = convert_units(total_window_area, 'm^2', 'ft^2')
448
448
 
449
449
  ## wall_area
450
450
  # north_wall_area
451
451
  north_wall_area = sql_query(runner, sql_file, 'InputVerificationandResultsSummary', "TableName='Window-Wall Ratio' AND RowName='Gross Wall Area' AND ColumnName='North (315 to 45 deg)'").to_f
452
- feature_report.program.wall_area[:north_wall_area] = convert_units(north_wall_area, 'm^2', 'ft^2')
452
+ feature_report.program.wall_area_sqft[:north_wall_area_sqft] = convert_units(north_wall_area, 'm^2', 'ft^2')
453
453
  # south_wall_area
454
454
  south_wall_area = sql_query(runner, sql_file, 'InputVerificationandResultsSummary', "TableName='Window-Wall Ratio' AND RowName='Gross Wall Area' AND ColumnName='South (135 to 225 deg)'").to_f
455
- feature_report.program.wall_area[:south_wall_area] = convert_units(south_wall_area, 'm^2', 'ft^2')
455
+ feature_report.program.wall_area_sqft[:south_wall_area_sqft] = convert_units(south_wall_area, 'm^2', 'ft^2')
456
456
  # east_wall_area
457
457
  east_wall_area = sql_query(runner, sql_file, 'InputVerificationandResultsSummary', "TableName='Window-Wall Ratio' AND RowName='Gross Wall Area' AND ColumnName='East (45 to 135 deg)'").to_f
458
- feature_report.program.wall_area[:east_wall_area] = convert_units(east_wall_area, 'm^2', 'ft^2')
458
+ feature_report.program.wall_area_sqft[:east_wall_area_sqft] = convert_units(east_wall_area, 'm^2', 'ft^2')
459
459
  # west_wall_area
460
460
  west_wall_area = sql_query(runner, sql_file, 'InputVerificationandResultsSummary', "TableName='Window-Wall Ratio' AND RowName='Gross Wall Area' AND ColumnName='West (225 to 315 deg)'").to_f
461
- feature_report.program.wall_area[:west_wall_area] = convert_units(west_wall_area, 'm^2', 'ft^2')
461
+ feature_report.program.wall_area_sqft[:west_wall_area_sqft] = convert_units(west_wall_area, 'm^2', 'ft^2')
462
462
  # total_wall_area
463
463
  total_wall_area = north_wall_area + south_wall_area + east_wall_area + west_wall_area
464
- feature_report.program.wall_area[:total_wall_area] = convert_units(total_wall_area, 'm^2', 'ft^2')
464
+ feature_report.program.wall_area_sqft[:total_wall_area_sqft] = convert_units(total_wall_area, 'm^2', 'ft^2')
465
465
 
466
466
  # total_roof_area
467
467
  total_roof_area = 0.0
@@ -470,12 +470,12 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
470
470
  total_roof_area += surface.netArea
471
471
  end
472
472
  end
473
- feature_report.program.roof_area[:total_roof_area] = convert_units(total_roof_area, 'm^2', 'ft^2')
473
+ feature_report.program.roof_area_sqft[:total_roof_area_sqft] = convert_units(total_roof_area, 'm^2', 'ft^2')
474
474
 
475
475
  # orientation
476
476
  # RK: a more robust method should be implemented to find orientation(finding main axis of the building using aspect ratio)
477
477
  building_rotation = model.getBuilding.northAxis
478
- feature_report.program.orientation = building_rotation
478
+ feature_report.program.orientation_deg = building_rotation
479
479
 
480
480
  # aspect_ratio
481
481
  north_wall_area = sql_query(runner, sql_file, 'InputVerificationandResultsSummary', "TableName='Window-Wall Ratio' AND RowName='Gross Wall Area' AND ColumnName='North (315 to 45 deg)'")
@@ -486,7 +486,7 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
486
486
 
487
487
  # total_construction_cost
488
488
  total_construction_cost = sql_query(runner, sql_file, 'Life-Cycle Cost Report', "TableName='Present Value for Recurring, Nonrecurring and Energy Costs (Before Tax)' AND RowName='LCC_MAT - BUILDING - LIFE CYCLE COSTS' AND ColumnName='Cost'")
489
- feature_report.program.total_construction_cost = total_construction_cost
489
+ feature_report.program.total_construction_cost_dollar = total_construction_cost
490
490
 
491
491
  # packaged thermal storage capacities by cooling coil
492
492
  ptes_keys = sql_file.availableKeyValues('RUN Period 1', 'Zone Timestep', 'Cooling Coil Ice Thermal Storage End Fraction')
@@ -504,7 +504,7 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
504
504
  runner.registerWarning('Query ptes_size.get failed')
505
505
  end
506
506
  end
507
- feature_report.thermal_storage.ptes_size = ptes_size
507
+ feature_report.thermal_storage.ptes_size_kwh = ptes_size
508
508
 
509
509
  # get the central tank thermal storage capacity
510
510
  its_size = nil
@@ -519,7 +519,7 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
519
519
  runner.registerWarning('Query its_size.get failed')
520
520
  end
521
521
  end
522
- feature_report.thermal_storage.its_size = its_size
522
+ feature_report.thermal_storage.its_size_kwh = its_size
523
523
 
524
524
  ############################################################################
525
525
  ##
@@ -550,48 +550,48 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
550
550
 
551
551
  # total_site_energy
552
552
  total_site_energy = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='Site and Source Energy' AND RowName='Total Site Energy' AND ColumnName='Total Energy'")
553
- feature_report.reporting_periods[0].total_site_energy = convert_units(total_site_energy, 'GJ', 'kBtu')
553
+ feature_report.reporting_periods[0].total_site_energy_kwh = convert_units(total_site_energy, 'GJ', 'kWh')
554
554
 
555
555
  # total_source_energy
556
556
  total_source_energy = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='Site and Source Energy' AND RowName='Total Source Energy' AND ColumnName='Total Energy'")
557
- feature_report.reporting_periods[0].total_source_energy = convert_units(total_source_energy, 'GJ', 'kBtu')
557
+ feature_report.reporting_periods[0].total_source_energy_kwh = convert_units(total_source_energy, 'GJ', 'kWh')
558
558
 
559
559
  # net_site_energy
560
560
  net_site_energy = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='Site and Source Energy' AND RowName='Net Site Energy' AND ColumnName='Total Energy'")
561
- feature_report.reporting_periods[0].net_site_energy = convert_units(net_site_energy, 'GJ', 'kBtu')
561
+ feature_report.reporting_periods[0].net_site_energy_kwh = convert_units(net_site_energy, 'GJ', 'kWh')
562
562
 
563
563
  # net_source_energy
564
564
  net_source_energy = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='Site and Source Energy' AND RowName='Net Source Energy' AND ColumnName='Total Energy'")
565
- feature_report.reporting_periods[0].net_source_energy = convert_units(net_source_energy, 'GJ', 'kBtu')
565
+ feature_report.reporting_periods[0].net_source_energy_kwh = convert_units(net_source_energy, 'GJ', 'kWh')
566
566
 
567
567
  # electricity
568
568
  electricity = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='End Uses' AND RowName='Total End Uses' AND ColumnName='Electricity'")
569
- feature_report.reporting_periods[0].electricity = convert_units(electricity, 'GJ', 'kBtu')
569
+ feature_report.reporting_periods[0].electricity_kwh = convert_units(electricity, 'GJ', 'kWh')
570
570
 
571
571
  # natural_gas
572
572
  natural_gas = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='End Uses' AND RowName='Total End Uses' AND ColumnName='Natural Gas'")
573
- feature_report.reporting_periods[0].natural_gas = convert_units(natural_gas, 'GJ', 'kBtu')
573
+ feature_report.reporting_periods[0].natural_gas_kwh = convert_units(natural_gas, 'GJ', 'kWh')
574
574
 
575
575
  # additional_fuel
576
576
  additional_fuel = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='End Uses' AND RowName='Total End Uses' AND ColumnName='Additional Fuel'")
577
- feature_report.reporting_periods[0].additional_fuel = convert_units(additional_fuel, 'GJ', 'kBtu')
577
+ feature_report.reporting_periods[0].additional_fuel_kwh = convert_units(additional_fuel, 'GJ', 'kWh')
578
578
 
579
579
  # district_cooling
580
580
  district_cooling = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='End Uses' AND RowName='Total End Uses' AND ColumnName='District Cooling'")
581
- feature_report.reporting_periods[0].district_cooling = convert_units(district_cooling, 'GJ', 'kBtu')
581
+ feature_report.reporting_periods[0].district_cooling_kwh = convert_units(district_cooling, 'GJ', 'kWh')
582
582
 
583
583
  # district_heating
584
584
  district_heating = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='End Uses' AND RowName='Total End Uses' AND ColumnName='District Heating'")
585
- feature_report.reporting_periods[0].district_heating = convert_units(district_heating, 'GJ', 'kBtu')
585
+ feature_report.reporting_periods[0].district_heating_kwh = convert_units(district_heating, 'GJ', 'kWh')
586
586
 
587
587
  # water
588
588
  water = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='End Uses' AND RowName='Total End Uses' AND ColumnName='Water'")
589
589
  # feature_report.reporting_periods[0].water = convert_units(water, 'm3', 'ft3')
590
- feature_report.reporting_periods[0].water = water
590
+ feature_report.reporting_periods[0].water_qbft = water
591
591
 
592
592
  # electricity_produced
593
593
  electricity_produced = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='Electric Loads Satisfied' AND RowName='Total On-Site and Utility Electric Sources' AND ColumnName='Electricity'")
594
- feature_report.reporting_periods[0].electricity_produced = convert_units(electricity_produced, 'GJ', 'kBtu')
594
+ feature_report.reporting_periods[0].electricity_produced_kwh = convert_units(electricity_produced, 'GJ', 'kWh')
595
595
 
596
596
  ## end_uses
597
597
 
@@ -610,17 +610,26 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
610
610
  # report each query in its corresponding feature report obeject
611
611
  if ft.include? ' '
612
612
  x = ft.tr(' ', '_').downcase
613
- m = feature_report.reporting_periods[0].end_uses.send(x)
613
+ if x.include? 'water'
614
+ x_u = x + '_qbft'
615
+ else
616
+ x_u = x + '_kwh'
617
+ end
618
+ m = feature_report.reporting_periods[0].end_uses.send(x_u)
614
619
  else
615
- m = feature_report.reporting_periods[0].end_uses.send(ft.downcase)
616
-
620
+ if ft.downcase.include? 'water'
621
+ ft_u = ft + '_qbft'
622
+ else
623
+ ft_u = ft + '_kwh'
624
+ end
625
+ m = feature_report.reporting_periods[0].end_uses.send(ft_u.downcase)
617
626
  end
618
627
 
619
628
  if eu.include? ' '
620
629
  y = eu.tr(' ', '_').downcase
621
- m.send("#{y}=", convert_units(sql_r, 'GJ', 'kBtu'))
630
+ m.send("#{y}=", convert_units(sql_r, 'GJ', 'kWh'))
622
631
  else
623
- m.send("#{eu.downcase}=", convert_units(sql_r, 'GJ', 'kBtu'))
632
+ m.send("#{eu.downcase}=", convert_units(sql_r, 'GJ', 'kWh'))
624
633
  end
625
634
  end
626
635
  end
@@ -629,20 +638,20 @@ class DefaultFeatureReports < OpenStudio::Measure::ReportingMeasure
629
638
  ## electricity_produced
630
639
  # photovoltaic
631
640
  photovoltaic_power = sql_query(runner, sql_file, 'AnnualBuildingUtilityPerformanceSummary', "TableName='Electric Loads Satisfied' AND RowName='Photovoltaic Power' AND ColumnName='Electricity'")
632
- feature_report.reporting_periods[0].energy_production[:electricity_produced][:photovoltaic] = convert_units(photovoltaic_power, 'GJ', 'kBtu')
641
+ feature_report.reporting_periods[0].energy_production_kwh[:electricity_produced][:photovoltaic] = convert_units(photovoltaic_power, 'GJ', 'kWh')
633
642
 
634
643
  ## Total utility cost
635
644
  total_utility_cost = sql_query(runner, sql_file, 'Economics Results Summary Report', "TableName='Annual Cost' AND RowName='Cost' AND ColumnName='Total'")
636
- feature_report.reporting_periods[0].total_utility_cost = total_utility_cost
645
+ feature_report.reporting_periods[0].total_utility_cost_dollar = total_utility_cost
637
646
 
638
647
  ## Utility Costs
639
648
  # electricity utility cost
640
649
  elec_utility_cost = sql_query(runner, sql_file, 'Economics Results Summary Report', "TableName='Annual Cost' AND RowName='Cost' AND ColumnName='Electric'")
641
- feature_report.reporting_periods[0].utility_costs[0][:fuel_type] = 'Electricity'
642
- feature_report.reporting_periods[0].utility_costs[0][:total_cost] = elec_utility_cost
650
+ feature_report.reporting_periods[0].utility_costs_dollar[0][:fuel_type] = 'Electricity'
651
+ feature_report.reporting_periods[0].utility_costs_dollar[0][:total_cost] = elec_utility_cost
643
652
  # gas utility cost
644
653
  gas_utility_cost = sql_query(runner, sql_file, 'Economics Results Summary Report', "TableName='Annual Cost' AND RowName='Cost' AND ColumnName='Gas'")
645
- feature_report.reporting_periods[0].utility_costs << { fuel_type: 'Natural Gas', total_cost: gas_utility_cost }
654
+ feature_report.reporting_periods[0].utility_costs_dollar << { fuel_type: 'Natural Gas', total_cost: gas_utility_cost }
646
655
 
647
656
  ## comfort_result
648
657
  # time_setpoint_not_met_during_occupied_cooling
@@ -39,10 +39,10 @@ module URBANopt
39
39
  # Enduses class inlclude results for each fuel type.
40
40
  ##
41
41
  class EndUses
42
- attr_accessor :electricity, :natural_gas, :additional_fuel, :district_cooling, :district_heating, :water # :nodoc:
42
+ attr_accessor :electricity_kwh, :natural_gas_kwh, :additional_fuel_kwh, :district_cooling_kwh, :district_heating_kwh, :water_qbft # :nodoc:
43
43
  ##
44
- # EndUses class intialize end_uses(fuel type) attributes: +:electricity+ , +:natural_gas+ , +:additional_fuel+ ,
45
- # +:district_cooling+ , +:district_heating+ , +:water+
44
+ # EndUses class intialize end_uses(fuel type) attributes: +:electricity_kwh+ , +:natural_gas_kwh+ , +:additional_fuel_kwh+ ,
45
+ # +:district_cooling_kwh+ , +:district_heating_kwh+ , +:water_qbft+
46
46
  ##
47
47
  # [parameters:]
48
48
  # +hash+ - _Hash_ - A hash which may contain a deserialized end_uses.
@@ -51,12 +51,12 @@ module URBANopt
51
51
  hash.delete_if { |k, v| v.nil? }
52
52
  hash = defaults.merge(hash)
53
53
 
54
- @electricity = EndUse.new(hash[:electricity])
55
- @natural_gas = EndUse.new(hash[:natural_gas])
56
- @additional_fuel = EndUse.new(hash[:additional_fuel])
57
- @district_cooling = EndUse.new(hash[:district_cooling])
58
- @district_heating = EndUse.new(hash[:district_heating])
59
- @water = EndUse.new(hash[:water])
54
+ @electricity_kwh = EndUse.new(hash[:electricity_kwh])
55
+ @natural_gas_kwh = EndUse.new(hash[:natural_gas_kwh])
56
+ @additional_fuel_kwh = EndUse.new(hash[:additional_fuel_kwh])
57
+ @district_cooling_kwh = EndUse.new(hash[:district_cooling_kwh])
58
+ @district_heating_kwh = EndUse.new(hash[:district_heating_kwh])
59
+ @water_qbft = EndUse.new(hash[:water_qbft])
60
60
 
61
61
  # initialize class variables @@validator and @@schema
62
62
  @@validator ||= Validator.new
@@ -72,29 +72,29 @@ module URBANopt
72
72
  def to_hash
73
73
  result = {}
74
74
 
75
- electricity_hash = @electricity.to_hash if @electricity.to_hash
76
- electricity_hash.delete_if { |k, v| v.nil? }
77
- result[:electricity] = electricity_hash if @electricity
75
+ electricity_kwh_hash = @electricity_kwh.to_hash if @electricity_kwh.to_hash
76
+ electricity_kwh_hash.delete_if { |k, v| v.nil? }
77
+ result[:electricity_kwh] = electricity_kwh_hash if @electricity_kwh
78
78
 
79
- natural_gas_hash = @natural_gas.to_hash if @natural_gas
80
- natural_gas_hash.delete_if { |k, v| v.nil? }
81
- result[:natural_gas] = natural_gas_hash if @natural_gas
79
+ natural_gas_kwh_hash = @natural_gas_kwh.to_hash if @natural_gas_kwh
80
+ natural_gas_kwh_hash.delete_if { |k, v| v.nil? }
81
+ result[:natural_gas_kwh] = natural_gas_kwh_hash if @natural_gas_kwh
82
82
 
83
- additional_fuel_hash = @additional_fuel.to_hash if @additional_fuel
84
- additional_fuel_hash.delete_if { |k, v| v.nil? }
85
- result[:additional_fuel] = additional_fuel_hash if @additional_fuel
83
+ additional_fuel_kwh_hash = @additional_fuel_kwh.to_hash if @additional_fuel_kwh
84
+ additional_fuel_kwh_hash.delete_if { |k, v| v.nil? }
85
+ result[:additional_fuel_kwh] = additional_fuel_kwh_hash if @additional_fuel_kwh
86
86
 
87
- district_cooling_hash = @district_cooling.to_hash if @district_cooling
88
- district_cooling_hash.delete_if { |k, v| v.nil? }
89
- result[:district_cooling] = district_cooling_hash if @district_cooling
87
+ district_cooling_kwh_hash = @district_cooling_kwh.to_hash if @district_cooling_kwh
88
+ district_cooling_kwh_hash.delete_if { |k, v| v.nil? }
89
+ result[:district_cooling_kwh] = district_cooling_kwh_hash if @district_cooling_kwh
90
90
 
91
- district_heating_hash = @district_heating.to_hash if @district_heating
92
- district_heating_hash.delete_if { |k, v| v.nil? }
93
- result[:district_heating] = district_heating_hash if @district_heating
91
+ district_heating_kwh_hash = @district_heating_kwh.to_hash if @district_heating_kwh
92
+ district_heating_kwh_hash.delete_if { |k, v| v.nil? }
93
+ result[:district_heating_kwh] = district_heating_kwh_hash if @district_heating_kwh
94
94
 
95
- water_hash = @water.to_hash if @water
96
- water_hash.delete_if { |k, v| v.nil? }
97
- result[:water] = water_hash if @water
95
+ water_qbft_hash = @water_qbft.to_hash if @water_qbft
96
+ water_qbft_hash.delete_if { |k, v| v.nil? }
97
+ result[:water_qbft] = water_qbft_hash if @water_qbft
98
98
 
99
99
  # validate end_uses properties against schema
100
100
  if @@validator.validate(@@schema[:definitions][:EndUses][:properties], result).any?
@@ -109,12 +109,12 @@ module URBANopt
109
109
  ##
110
110
  def defaults
111
111
  hash = {}
112
- hash[:electricity] = EndUse.new.to_hash
113
- hash[:natural_gas] = EndUse.new.to_hash
114
- hash[:additional_fuel] = EndUse.new.to_hash
115
- hash[:district_cooling] = EndUse.new.to_hash
116
- hash[:district_heating] = EndUse.new.to_hash
117
- hash[:water] = EndUse.new.to_hash
112
+ hash[:electricity_kwh] = EndUse.new.to_hash
113
+ hash[:natural_gas_kwh] = EndUse.new.to_hash
114
+ hash[:additional_fuel_kwh] = EndUse.new.to_hash
115
+ hash[:district_cooling_kwh] = EndUse.new.to_hash
116
+ hash[:district_heating_kwh] = EndUse.new.to_hash
117
+ hash[:water_qbft] = EndUse.new.to_hash
118
118
 
119
119
  return hash
120
120
  end
@@ -127,11 +127,11 @@ module URBANopt
127
127
  ##
128
128
  def merge_end_uses!(new_end_uses)
129
129
  # modify the existing_period by summing up the results ; # sum results only if they exist
130
- @electricity.merge_end_use!(new_end_uses.electricity)
131
- @natural_gas.merge_end_use!(new_end_uses.natural_gas)
132
- @additional_fuel.merge_end_use!(new_end_uses.additional_fuel)
133
- @district_cooling.merge_end_use!(new_end_uses.district_cooling)
134
- @district_heating.merge_end_use!(new_end_uses.district_heating)
130
+ @electricity_kwh.merge_end_use!(new_end_uses.electricity_kwh)
131
+ @natural_gas_kwh.merge_end_use!(new_end_uses.natural_gas_kwh)
132
+ @additional_fuel_kwh.merge_end_use!(new_end_uses.additional_fuel_kwh)
133
+ @district_cooling_kwh.merge_end_use!(new_end_uses.district_cooling_kwh)
134
+ @district_heating_kwh.merge_end_use!(new_end_uses.district_heating_kwh)
135
135
  return self
136
136
  end
137
137
  end
@@ -224,30 +224,24 @@ module URBANopt
224
224
  end
225
225
 
226
226
  ##
227
- # Saves the 'default_feature_report.json' and 'default_feature_report.csv' files
227
+ # Saves the 'default_feature_report.json' file to the results directory
228
228
  ##
229
229
  # [parameters]:
230
- # +file_name+ - _String_ - Assign a name to the saved feature report results file without an extension
231
- def save_feature_report(file_name = 'default_feature_report')
230
+ # +file_name+ - _String_ - Assign a name to the saved feature report file without an extension
231
+ def save_json_report(file_name = 'default_feature_report')
232
232
  # reassign the initialize local variable @file_name to the file name input.
233
233
  @file_name = file_name
234
234
 
235
+ # define the results_dir_path
236
+ results_dir_path = File.join(@directory_name, 'feature_reports')
235
237
  # create feature reports directory
236
- Dir.mkdir(File.join(@directory_name, 'feature_reports')) unless Dir.exist?(File.join(@directory_name, 'feature_reports'))
237
-
238
- # save the csv data
239
- old_timeseries_path = nil
240
- if !@timeseries_csv.path.nil?
241
- old_timeseries_path = @timeseries_csv.path
242
- end
243
-
244
- @timeseries_csv.path = File.join(@directory_name, 'feature_reports', file_name + '.csv')
245
- @timeseries_csv.save_data
238
+ Dir.mkdir(results_dir_path) unless Dir.exist?(File.join(@directory_name, 'feature_reports'))
246
239
 
240
+ ## save json rport
247
241
  # feature_hash
248
242
  feature_hash = to_hash
249
243
 
250
- json_name_path = File.join(@directory_name, 'feature_reports', file_name + '.json')
244
+ json_name_path = File.join(results_dir_path, file_name + '.json')
251
245
 
252
246
  File.open(json_name_path, 'w') do |f|
253
247
  f.puts JSON.pretty_generate(feature_hash)
@@ -259,13 +253,35 @@ module URBANopt
259
253
  end
260
254
  end
261
255
 
262
- if !old_timeseries_path.nil?
263
- @timeseries_csv.path = old_timeseries_path
264
- else
265
- @timeseries_csv.path = File.join(@directory_name, 'feature_reports', file_name + '.csv')
256
+ end
257
+
258
+ ##
259
+ # Saves the 'default_feature_report.csv' file to the results directory
260
+ ##
261
+ # [parameters]:
262
+ # +file_name+ - _String_ - Assign a name to the saved feature report file without an extension
263
+ def save_csv_report(file_name = 'default_feature_report')
264
+ # reassign the initialize local variable @file_name to the file name input.
265
+ @file_name = file_name
266
+
267
+ # define the results_dir_path
268
+ results_dir_path = File.join(@directory_name, 'feature_reports')
269
+ # create feature reports directory
270
+ Dir.mkdir(results_dir_path) unless Dir.exist?(File.join(@directory_name, 'feature_reports'))
271
+
272
+ ## copy CSV report to the new feature_reports folder
273
+ # get all folder names in the feature diectory
274
+ directory_folders = Dir.glob "#{@directory_name}/*/"
275
+ # copy the CSV report to the new feature_reports folder
276
+ directory_folders.each do |f|
277
+ if f.include? '_default_feature_reports'
278
+ FileUtils.cp(File.join(f, 'default_feature_reports.csv'), File.join(results_dir_path, @file_name +'.csv'))
279
+ end
266
280
  end
267
- return true
268
281
  end
282
+
283
+
284
+
269
285
  end
270
286
  end
271
287
  end