Skip to content

patrickbrown4/pvvm_pvtos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

This repository includes python scripts associated with the following publication:

[1] Brown, P.R.; O'Sullivan, F. "Shaping photovoltaic array output to align with changing wholesale electricity price profiles." Applied Energy 2019. https://doi.org/10.1016/j.apenergy.2019.113734

Input/output data, including locational marginal electricity prices (LMPs) and simulation results, are included in the associated Zenodo repository at https://zenodo.org/record/3368397.

Some of the scripts and data are also used in the following working paper:

[2] Brown, P.R.; O'Sullivan, F. "Spatial and temporal variation in the value of solar power across United States Electricity Markets". Working Paper, MIT Center for Energy and Environmental Policy Research. 2019. http://ceepr.mit.edu/publications/working-papers/705

All code is in python 3 and relies on a number of dependencies that can be installed using pip or conda.

Contents

  • pvvm/*.py : Python module with functions for modeling PV generation, calculating PV revenues and capacity factors, and optimizing PV orientation.
  • notebooks/*.ipynb : Jupyter notebooks, including:
    • pvvm-pvtos-data.ipynb: Example scripts used to download and clean input LMP data, determine LMP node locations, and reproduce some figures in reference [1]
    • pvvm-pvtos-analysis.ipynb: Example scripts used to perform the calculations and reproduce some figures in reference [1]
    • pvvm-pvtos-plots.ipynb: Scripts used to produce additional figures in reference [1]
    • pvvm-example-generation.ipynb: Example scripts demonstrating the usage of the PV generation model and orientation optimization

Usage notes

  • To use the NSRDB download functions, you will need to modify the "settings.py" file to insert a valid NSRDB API key, which can be requested from https://developer.nrel.gov/signup/. Locations can be specified by passing latitude, longitude floats to pvvm.data.downloadNSRDBfile(), or by passing a string googlemaps query to pvvm.io.queryNSRDBfile(). To use the googlemaps functionality, you will need to request a googlemaps API key (https://developers.google.com/maps/documentation/javascript/get-api-key) and insert it in the "settings.py" file.
  • Many of the ISO websites have changed in the time since the functions in the pvvm.data module were written and the LMP data used in the above papers were downloaded. As such, the pvvm.data.download_lmps() function no longer works for all ISOs and years. We provide this function to illustrate the general procedure used, and do not intend to maintain it or keep it up to date with the changing ISO websites. Condensed dataframes of the LMP data used in the studies referenced above are available in the Zenodo repository (https://zenodo.org/record/3368397).

About

PV value mapping: temporal output shaping

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages