- flexmeasures-entsoe: ENTSO-E data plugin - flexmeasures-weather: Weather data plugin - USEF Flex Trading Protocol PDF (2.4MB) - Cariflex simulator (publishes to Redis) - Dashboard Grafana updated with correct InfluxDB queries - All tools extracted in /tools/
38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
from datetime import datetime
|
||
|
||
import pandas as pd
|
||
from pvlib.location import Location
|
||
|
||
|
||
def compute_irradiance(
|
||
latitude: float, longitude: float, dt: datetime, cloud_coverage: float
|
||
) -> float:
|
||
"""Compute the irradiance received on a location at a specific time.
|
||
This uses pvlib to
|
||
1) compute clear-sky irradiance as Global Horizontal Irradiance (GHI),
|
||
which includes both Direct Normal Irradiance (DNI)
|
||
and Diffuse Horizontal Irradiance (DHI).
|
||
2) adjust the GHI for cloud coverage
|
||
"""
|
||
site = Location(latitude, longitude, tz=dt.tzinfo)
|
||
solpos = site.get_solarposition(pd.DatetimeIndex([dt]))
|
||
ghi_clear = site.get_clearsky(pd.DatetimeIndex([dt]), solar_position=solpos).loc[
|
||
dt
|
||
]["ghi"]
|
||
return ghi_clear_to_ghi(ghi_clear, cloud_coverage)
|
||
|
||
|
||
def ghi_clear_to_ghi(ghi_clear: float, cloud_coverage: float) -> float:
|
||
"""Compute global horizontal irradiance (GHI) from clear-sky GHI, given a cloud coverage between 0 and 1.
|
||
|
||
References
|
||
----------
|
||
Perez, R., Moore, K., Wilcox, S., Renne, D., Zelenka, A., 2007.
|
||
Forecasting solar radiation – preliminary evaluation of an
|
||
approach based upon the national forecast database. Solar Energy
|
||
81, 809–812.
|
||
"""
|
||
if cloud_coverage < 0 or cloud_coverage > 1:
|
||
raise ValueError("cloud_coverage should lie in the interval [0, 1]")
|
||
return (1 - 0.87 * cloud_coverage**1.9) * ghi_clear
|