diff --git a/docs/sphinx/source/forecasts.rst b/docs/sphinx/source/forecasts.rst index 2637f8d811..e477d00be2 100644 --- a/docs/sphinx/source/forecasts.rst +++ b/docs/sphinx/source/forecasts.rst @@ -4,17 +4,17 @@ Forecasting *********** -pvlib-python provides a set of functions and classes that make it easy +pvlib python provides a set of functions and classes that make it easy to obtain weather forecast data and convert that data into a PV power forecast. Users can retrieve standardized weather forecast data relevant to PV power modeling from NOAA/NCEP/NWS models including the GFS, NAM, RAP, HRRR, and the NDFD. A PV power forecast can then be obtained using the weather data as inputs to the comprehensive modeling capabilities of -PVLIB-Python. Standardized, open source, reference implementations of +pvlib python. Standardized, open source, reference implementations of forecast methods using publicly available data may help advance the state-of-the-art of solar power forecasting. -pvlib-python uses Unidata's `Siphon +pvlib python uses Unidata's `Siphon `_ library to simplify access to real-time forecast data hosted on the Unidata `THREDDS catalog `_. Siphon is great for @@ -24,7 +24,7 @@ to easily browse the catalog and become more familiar with its contents. We do not know of a similarly easy way to access archives of forecast data. -This document demonstrates how to use pvlib-python to create a PV power +This document demonstrates how to use pvlib python to create a PV power forecast using these tools. The `forecast `_ and `forecast_to_power @@ -62,8 +62,8 @@ while the NAM has a field named similar field in the HRRR is named ``Total_cloud_cover_entire_atmosphere``. -PVLIB-Python aims to simplify the access of the model fields relevant -for solar power forecasts. Model data accessed with PVLIB-Python is +pvlib python aims to simplify the access of the model fields relevant +for solar power forecasts. Model data accessed with pvlib python is returned as a pandas DataFrame with consistent column names: ``temp_air, wind_speed, total_clouds, low_clouds, mid_clouds, high_clouds, dni, dhi, ghi``. To accomplish this, we use an @@ -77,7 +77,7 @@ child model-specific classes (:py:class:`~pvlib.forecast.GFS`, map and process that specific model's data to the standardized fields. The code below demonstrates how simple it is to access and plot forecast -data using PVLIB-Python. First, we set up make the basic imports and +data using pvlib python. First, we set up make the basic imports and then set the location and time range data. .. ipython:: python @@ -204,13 +204,13 @@ poor solar position or radiative transfer algorithms. It is often more accurate to create empirically derived radiation forecasts from the weather models' cloud cover forecasts. -PVLIB-Python provides two basic ways to convert cloud cover forecasts to +pvlib python provides two basic ways to convert cloud cover forecasts to irradiance forecasts. One method assumes a linear relationship between cloud cover and GHI, applies the scaling to a clear sky climatology, and then uses the DISC model to calculate DNI. The second method assumes a linear relationship between cloud cover and atmospheric transmittance, -and then uses the Liu-Jordan [Liu60]_ model to calculate GHI, DNI, and -DHI. +and then uses the Campbell-Norman model to calculate GHI, DNI, and +DHI [Cam98]_. Campbell-Norman is an approximation of Liu-Jordan [Liu60]_. *Caveat emptor*: these algorithms are not rigorously verified! The purpose of the forecast module is to provide a few exceedingly simple @@ -251,7 +251,7 @@ irradiance conversion using the clear sky scaling algorithm. plt.close(); -The essential parts of the Liu-Jordan cloud cover to irradiance algorithm +The essential parts of the Campbell-Norman cloud cover to irradiance algorithm are as follows. .. code-block:: python @@ -259,19 +259,19 @@ are as follows. # cloud cover in percentage units here transmittance = ((100.0 - cloud_cover) / 100.0) * 0.75 # irrads is a DataFrame containing ghi, dni, dhi - irrads = liujordan(apparent_zenith, transmittance, airmass_absolute) + irrads = campbell_norman(apparent_zenith, transmittance) -The figure below shows the result of the Liu-Jordan total cloud cover to +The figure below shows the result of the Campbell-Norman total cloud cover to irradiance conversion. .. ipython:: python # plot irradiance data - irrads = model.cloud_cover_to_irradiance(data['total_clouds'], how='liujordan') + irrads = model.cloud_cover_to_irradiance(data['total_clouds'], how='campbell_norman') irrads.plot(); plt.ylabel('Irradiance ($W/m^2$)'); plt.xlabel('Forecast Time ({})'.format(tz)); - plt.title('GFS 0.5 deg forecast for lat={}, lon={} using "liujordan"' + plt.title('GFS 0.5 deg forecast for lat={}, lon={} using "campbell_norman"' .format(latitude, longitude)); @savefig gfs_irrad_lj.png width=6in plt.legend(); @@ -309,6 +309,9 @@ model processing to their liking. from photovoltaic plants in the American Southwest" Renewable Energy 91, 11-20 (2016). +.. [Cam98] Campbell, G. S., J. M. Norman (1998) An Introduction to + Environmental Biophysics. 2nd Ed. New York: Springer. + .. [Liu60] B. Y. Liu and R. C. Jordan, The interrelationship and characteristic distribution of direct, diffuse, and total solar radiation, *Solar Energy* **4**, 1 (1960).