class URBANopt::Scenario::DISCOPostProcessor

Public Class Methods

new(scenario_report, disco_results_dir_name = 'disco') click to toggle source

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

# 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

Public Instance Methods

load_data() click to toggle source

load disco data

# File lib/urbanopt/scenario/scenario_post_processor_disco.rb, line 52
def load_data
    # load selected disco data
    load_disco_data
end
load_disco_data() click to toggle source

load disco data (if exists)

# 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
run() click to toggle source

run disco post_processor

# File lib/urbanopt/scenario/scenario_post_processor_disco.rb, line 108
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_scenario() click to toggle source

save disco scenario fields

# File lib/urbanopt/scenario/scenario_post_processor_disco.rb, line 61
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