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