SolarArbiter / solarforecastarbiter-core

Core data gathering, validation, processing, and reporting package for the Solar Forecast Arbiter
https://solarforecastarbiter-core.readthedocs.io
MIT License
33 stars 21 forks source link

Implement PV self-shade calculations #820

Open williamhobbs opened 1 year ago

williamhobbs commented 1 year ago

Plant geometry could be used to calculate shaded fraction for 1) truetracking thin film plants and 2) fixed tilt plants.

Shaded fraction could then be used to 1) flag periods with row-to-row self-shading, and/or 2) be part of self shade loss calculations in reference forecasts.

For thin film projects, shaded fraction and diffuse fraction (which can be assumed to be a fixed value, or calculated from other irradiance data) a linear shade loss model can be used, like in https://github.com/pvlib/pvlib-python/pull/1725. Here's an example of what shade correcting for a truetracking site can do, from https://pvpmc.sandia.gov/download/5431/, where the red points are a rough indicator of what the current reference forecasts would produce, and the green dots represent a linear shading correction:

image

For c-Si projects, pvlib.bifacial.infinite_sheds will soon have functions that return shaded fraction and diffuse fraction (see https://github.com/pvlib/pvlib-python/pull/1871). Then use @kandersolar's simple piece-wise shading model from https://www.nrel.gov/docs/fy20osti/76023.pdf (see also https://groups.google.com/g/pvlib-python/c/ru1KCnz_hkU/m/NslEU1nTDwAJ). See https://github.com/pvlib/pvlib-python/discussions/1880 for a related discussion, details, sample results, and sample code.

The green line here approximates what the reference forecasts would currently produce on a clear day, the red line is actual data from a real plant, and the blue line is what the simple piece-wise shading model produces:

image