class URBANopt::Reporting::DefaultReports::ScenarioPowerDistribution

scenario_power_distribution include eletrical power distribution systems information.

Attributes

capacitors[RW]
distribution_lines[RW]
substations[RW]

Public Class Methods

new(hash = {}) click to toggle source

ScenarioPowerDistribution class initialize all scenario_power_distribution attributes: :substations , :distribution_lines

parameters:

hash - Hash - A hash which may contain a deserialized power_distribution.

# File lib/urbanopt/reporting/default_reports/scenario_power_distribution.rb, line 27
def initialize(hash = {})
  hash.delete_if { |k, v| v.nil? }
  hash = defaults.merge(hash)

  @substations = hash[:substations]
  @distribution_lines = hash[:distribution_lines]
  @capacitors = hash[:capacitors]

  # initialize class variables @@validator and @@schema
  @@validator ||= Validator.new
  @@schema ||= @@validator.schema
end

Public Instance Methods

add_capacitor(hash = {}) click to toggle source

Add a capacitor

# File lib/urbanopt/reporting/default_reports/scenario_power_distribution.rb, line 102
def add_capacitor(hash = {})
  hash.delete_if { |k, v| v.nil? }
  hash = defaults.merge(hash)
  # fields: nominal_capacity
  cap = {}
  cap['nominal_capacity'] = hash[:nominal_capacity]
  cap
end
add_line(hash = {}) click to toggle source

Add a line

# File lib/urbanopt/reporting/default_reports/scenario_power_distribution.rb, line 87
def add_line(hash = {})
  hash.delete_if { |k, v| v.nil? }
  hash = defaults.merge(hash)
  # fields: length, ampacity, commercial_line_type
  line = {}
  line['length'] = hash[:length]
  line['ampacity'] = hash[:ampacity]
  line['commercial_line_type'] = hash[:commercial_line_type]

  @distribution_lines << line
end
add_substation(hash = {}) click to toggle source

Add a substation

# File lib/urbanopt/reporting/default_reports/scenario_power_distribution.rb, line 75
def add_substation(hash = {})
  hash.delete_if { |k, v| v.nil? }
  hash = defaults.merge(hash)
  # field: nominal_voltage
  substation = {}
  substation['nominal_voltage'] = hash[:nominal_voltage]
  @substations << substation
end
defaults() click to toggle source

Assigns default values if attribute values do not exist.

# File lib/urbanopt/reporting/default_reports/scenario_power_distribution.rb, line 43
def defaults
  hash = {}
  hash[:substations] = []
  hash[:distribution_lines] = []
  hash[:capacitors] = []

  return hash
end
to_hash() click to toggle source

Converts to a Hash equivalent for JSON serialization.

  • Exclude attributes with nil values.

  • Validate power_distribution hash properties against schema.

# File lib/urbanopt/reporting/default_reports/scenario_power_distribution.rb, line 58
def to_hash
  result = {}
  result[:substations] = @substations if @substations
  result[:distribution_lines] = @distribution_lines if @distribution_lines
  result[:capacitors] = @capacitors if @capacitors

  # validate power_distribution properties against schema
  if @@validator.validate(@@schema[:definitions][:ScenarioPowerDistribution][:properties], result).any?
    raise "scenario_power_distribution properties does not match schema: #{@@validator.validate(@@schema[:definitions][:ScenarioPowerDistribution][:properties], result)}"
  end

  return result
end