Search code examples
pvlib

Simplifying PVsystem class parameters for high-level study


I intend to use PVlib for a high-level urban study. (Being an architect I am now learning this world's terminology - apologies for any technical mistakes)

I manage to get a very detailed output from the library using the various tutorials, however, the emphasis is in the study is simplification and I would be happy to compromise the preciseness of the analysis results set. i.e, the ability to perfectly anticipate PV gains is not of crucial-importance for the work and more generic outcome is required.

is there a way to receive a more generic analysis relying on a very basic input?

For example, given a location and desired system size in kWp, the output would be a reasonable set of hourly generation values. I do not wish to go into the specifics of modules and inverters, as the user may wish to simulate situations where a specific kit would make no sense or be invalid.


Solution

  • For this application, I'd specify the PVSystem using PVWatts parameters and I'd use ModelChain. See the last couple paragraphs of the modelchain documentation for an example (code reproduced below).

    In [30]: pvwatts_system = PVSystem(module_parameters={'pdc0': 240, 'gamma_pdc': -0.004})
    
    In [31]: mc = ModelChain(pvwatts_system, location,
       ....:                 aoi_model='physical', spectral_model='no_loss')
    
    In [32]: print(mc)
    ModelChain: 
      name: None
      orientation_strategy: None
      clearsky_model: ineichen
      transposition_model: haydavies
      solar_position_method: nrel_numpy
      airmass_model: kastenyoung1989
      dc_model: pvwatts_dc
      ac_model: pvwatts_inverter
      aoi_model: physical_aoi_loss
      spectral_model: no_spectral_loss
      temp_model: sapm_temp
      losses_model: no_extra_losses
    
    In [33]: mc.run_model(times=weather.index, weather=weather);
    
    In [34]: mc.ac
    Out[34]: 
    2017-04-01 12:00:00-07:00    198.519999
    dtype: float64