Class: URBANopt::Scenario::DISCOPostProcessor

Inherits:
Object
  • Object
show all
Defined in:
lib/urbanopt/scenario/scenario_post_processor_disco.rb

Instance Method Summary collapse

Constructor Details

#initialize(scenario_report, disco_results_dir_name = 'disco') ⇒ DISCOPostProcessor

DISCOPostProcessor post-processes DISCO results to selected DISCO results and integrate them in scenario and feature reports.

parameters:
  • scenaro_report - ScenarioBase - An object of Scenario_report class.

  • disco_results_dir_name - _directory name of disco results



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/urbanopt/scenario/scenario_post_processor_disco.rb', line 22

def initialize(scenario_report, disco_results_dir_name = 'disco')
  if !scenario_report.nil?
    @scenario_report = scenario_report
    @disco_results_dir = File.join(@scenario_report.directory_name, disco_results_dir_name)
  else
    raise 'scenario_report is not valid'
  end

  # initialize disco data
  @disco_data = {}

  # initialize disco json results
  @disco_json_results = {}

  # initialize logger
  @@logger ||= URBANopt::Reporting::DefaultReports.logger
end

Instance Method Details

#load_dataObject

load disco data



50
51
52
53
# File 'lib/urbanopt/scenario/scenario_post_processor_disco.rb', line 50

def load_data
  # load selected disco data
  load_disco_data
end

#load_disco_dataObject

load disco data (if exists)



41
42
43
44
45
46
47
# File 'lib/urbanopt/scenario/scenario_post_processor_disco.rb', line 41

def load_disco_data
  # load disco upgrade summary
  disco_json_filename = File.join(@disco_results_dir, 'upgrade_summary.json')
  if File.exist?(disco_json_filename)
    @disco_json_results = JSON.parse(File.read(disco_json_filename))
  end
end

#runObject

run disco post_processor



102
103
104
105
106
107
108
109
110
111
112
# File 'lib/urbanopt/scenario/scenario_post_processor_disco.rb', line 102

def run
  # load data
  load_data
  # save additional global disco fields
  save_disco_scenario

  # save the updated scenario reports
  # set save_feature_reports to false since only the scenario reports should be saved
  # now, set save csv reports to false
  @scenario_report.save(file_name = 'scenario_report_disco', save_feature_reports = false, save_csv_reports = false)
end

#save_disco_scenarioObject

save disco scenario fields



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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
# File 'lib/urbanopt/scenario/scenario_post_processor_disco.rb', line 58

def save_disco_scenario
  @scenario_report.scenario_power_distribution_cost = URBANopt::Reporting::DefaultReports::ScenarioPowerDistributionCost.new

  # RESULTS

  res = []
  # read result from JSON report
  res = @disco_json_results['results']
  @scenario_report.scenario_power_distribution_cost.results = res

  # OUTPUTS

  out = {}
  # read result from JSON report
  out[:log_file] = @disco_json_results['outputs']['log_file']
  out[:jobs] = []
  @disco_json_results['outputs']['jobs'].each do |job|
    out[:jobs] << job
  end
  @scenario_report.scenario_power_distribution_cost.outputs = out

  # VIOLATION SUMMARY

  vio = []
  # read result from JSON report
  vio = @disco_json_results['violation_summary']
  @scenario_report.scenario_power_distribution_cost.violation_summary = vio

  # COSTS PER EQUIPMENT
  cos = []
  # read result from JSON report
  cos = @disco_json_results['costs_per_equipment']
  @scenario_report.scenario_power_distribution_cost.costs_per_equipment = cos

  # EQUIPMENT
  equ = []
  # read result from JSON report
  equ = @disco_json_results['equipment']
  @scenario_report.scenario_power_distribution_cost.equipment = equ
end