Example #1
0
def get_modelchain(lat, lon, utc_offset, elevation, name, system,
                   degradation_loss, bifacial_losses, dc_losses, ac_capacity,
                   inverter_efficiency_peak, pmt_peak_loss, pmt_rating,
                   pmt_constant_loss, ac_collection, mpt_peak_loss,
                   mpt_bottom_rating, mpt_constant_loss, transmission_loss,
                   poi_capacity, plant_losses, time_step):
    '''
  Creates a ModelChain instance from PVlib which contains all project
  parameters, models, and model results
  
  Parameters:
  lat: float.
    decimal degrees latitude of PVSystem
  lon: float.
    decimal degrees longitude of PVSystem
  utc_offset: int.
    hours local timezone is offset from UTC
  elevation: int.
    meters above sea level
  name: string.
    name of the PV project
  system: pvlib.PVSystem
    PVSystem instance to be modeled with modelchain
  degradation_loss: float.
    percent loss of module performance due to degradation (2% = .02)
  bifacial_losses: float.
    percent loss of bifacial boost due to shading and mismatch
  dc_losses: float.
    percent loss of dc output
  ac_capacity: int or float.
    inverter capacity at site design temperature (Wac)
  inverter_efficiency_peak: float.
    percent of power successfully converted from Wdc to Wac
  pmt_peak_loss: float.
    padmount transformer peak loss factor used in transformer loss equation
  pmt_rating: int or float.
    padmount transformer capacity rating in W
  pmt_constant_loss: float.
    padmount transformer constant loss factor used in transformer loss equation
  ac_collection: float.
    percent losses due to AC collection resistance
  mpt_peak_loss: float.
    main power transformer peak loss factor used in transformer loss equation
  mpt_bottom_rating: float.
    main power transformer lower capacity rating in W
  mpt_constant_loss: float.
    main power transformer constant loss factor used in transformer loss eqn
  transmission_loss: float.
    percent loss due to transmission line resistance
  poi_capacity: int or float.
    max amount of power that can be injected into the point of interconnection W
  plant_losses: float.
    percent losses due to plant operating factors like grid curtailment or
    availability.  These aren't included in time series output but are included
    in results metrics like AEP and NCF
  time_step: int.
    minute resolution of time series.  used when calculating results metrics.
  
  Returns:
  pvlib.modelchain
  
  
  '''

    # ModelChain requires a PVSystem and Location and model parameters
    location = Location(lat, lon, utc_offset, elevation, name)

    # Implement custom losses model and not one in PVLib
    mc = ModelChain(system,
                    location,
                    spectral_model='no_loss',
                    losses_model='no_loss',
                    dc_model='pvwatts',
                    ac_model='pvwatts')

    # Save model parameters to allow the modelchain instance to be self-contained
    # lat, lon, altitude, tz, name are saved in mc$location
    mc.degradation_loss = degradation_loss
    mc.bifacial_losses = bifacial_losses
    mc.dc_losses = dc_losses
    mc.ac_capacity = ac_capacity
    mc.inverter_efficiency_peak = inverter_efficiency_peak
    mc.pmt_peak_loss = pmt_peak_loss
    mc.pmt_rating = pmt_rating
    mc.pmt_constant_loss = pmt_constant_loss
    mc.ac_collection = ac_collection
    mc.mpt_peak_loss = mpt_peak_loss
    mc.mpt_bottom_rating = mpt_bottom_rating
    mc.mpt_constant_loss = mpt_constant_loss
    mc.transmission_loss = transmission_loss
    mc.poi_capacity = poi_capacity
    mc.plant_losses = plant_losses
    mc.time_step = time_step
    # dc_capacity is input as a module_parameter per pvwatts requirements
    mc.dc_capacity = system.module_parameters['pdc0']

    return mc