From 2b08efb9c927a40a302174589270a4e0be23da03 Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Tue, 30 Jul 2024 12:01:52 -0400 Subject: [PATCH 01/22] added perez modelchain example --- .../use_perez_modelchain.py | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 docs/examples/irradiance-transposition/use_perez_modelchain.py diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py new file mode 100644 index 0000000000..c2f16bc51c --- /dev/null +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -0,0 +1,112 @@ +""" +Use different Perez coefficients with the ModelChain +================= + +This example demonstrates how to customize the ModelChain to use site-specifc Perez coefficients. +""" + +#%% +# The :py:class:`pvlib.modelchain.ModelChain` object provides a useful interface for easily constructing a model with a simple, unified interface. +# However, a user may want to customize their models in various ways. +# One such example is during the irradiance transposition step. +# The Perez models perform very well on field data, but they require a set of fitted coefficients from various sites. +# It has been noted that these coefficients can be specific to various climates, so users may see a boost in model performance when using the correct set of parameters. +# However, the base `pvlib.modelchain.ModelChain` only supports the default coefficients. +# This example shows how the `pvlib.modelchain.ModelChain` can be adjusted to use a different set of Perez coefficients. + +import pandas as pd +from pvlib.pvsystem import PVSystem +from pvlib.modelchain import ModelChain +from pvlib.temperature import TEMPERATURE_MODEL_PARAMETERS +from pvlib import iotools, location, irradiance +import pvlib +import os +import matplotlib.pyplot as plt + +# Define a system in Florida +lat, lon = 30.1702, -85.65963 +# weather_data, weather_meta = get_psm3(lat, lon, interval=30, names=2012, +# map_variables=True, leap_day=False) + +PVLIB_DIR = pvlib.__path__[0] +DATA_FILE = os.path.join(PVLIB_DIR, 'data', '723170TYA.CSV') + +tmy, metadata = iotools.read_tmy3(DATA_FILE, coerce_year=1990, + map_variables=True) + +weather_data = pd.DataFrame({'ghi': tmy['ghi'], 'dhi': tmy['dhi'], 'dni': tmy['dni'], + 'temp_air': tmy['temp_air'], + 'wind_speed': tmy['wind_speed'], + }) + +loc = location.Location.from_tmy(metadata) + +surface_tilt = metadata['latitude'] +surface_azimuth = 180 + +# define some parameters for the module and inverter +sandia_modules = pvlib.pvsystem.retrieve_sam('SandiaMod') + +cec_inverters = pvlib.pvsystem.retrieve_sam('cecinverter') + +sandia_module = sandia_modules['Canadian_Solar_CS5P_220M___2009_'] + +cec_inverter = cec_inverters['ABB__MICRO_0_25_I_OUTD_US_208__208V_'] + +temperature_model_parameters = TEMPERATURE_MODEL_PARAMETERS['sapm']['open_rack_glass_glass'] + +# define the system and ModelChain +system = PVSystem(arrays = None, + surface_tilt=surface_tilt, + surface_azimuth=surface_azimuth, + module_parameters=sandia_module, + inverter_parameters=cec_inverter, + temperature_model_parameters=temperature_model_parameters) + +mc = ModelChain(system, location=loc, + aoi_model="no_loss", spectral_model="no_loss") + +# since we're in FL, we'll likely want FL coefficients +model_perez = 'capecanaveral1988' + +solar_position = loc.get_solarposition(times=weather_data.index) +dni_extra = irradiance.get_extra_radiation(weather_data.index) + +POA_irradiance = irradiance.get_total_irradiance( + surface_tilt=surface_tilt, + surface_azimuth=surface_azimuth, + dni=weather_data['dni'], + ghi=weather_data['ghi'], + dhi=weather_data['dhi'], + solar_zenith=solar_position['apparent_zenith'], + solar_azimuth=solar_position['azimuth'], + model='perez', + dni_extra=dni_extra) + +POA_irradiance_new_perez = irradiance.get_total_irradiance( + surface_tilt=surface_tilt, + surface_azimuth=surface_azimuth, + dni=weather_data['dni'], + ghi=weather_data['ghi'], + dhi=weather_data['dhi'], + solar_zenith=solar_position['apparent_zenith'], + solar_azimuth=solar_position['azimuth'], + model='perez', + model_perez=model_perez, + dni_extra=dni_extra) + +mc.run_model_from_poa(POA_irradiance) +ac_power_default = mc.results.ac + +mc.run_model_from_poa(POA_irradiance_new_perez) +ac_power_new_perez = mc.results.ac + +start, stop = '1990-05-05 06:00:00', '1990-05-05 19:00:00' +plt.plot(ac_power_default.loc[start:stop], + label="Default Composite Perez Model") +plt.plot(ac_power_new_perez.loc[start:stop], + label="Cape Canaveral Perez Model") + +plt.xticks(rotation=90) +plt.ylabel("AC Power ($W$)") +plt.legend() \ No newline at end of file From d86441da8d72288d6745b9b032064c408fe9ade8 Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Tue, 30 Jul 2024 12:10:00 -0400 Subject: [PATCH 02/22] formatting --- .../use_perez_modelchain.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index c2f16bc51c..a46b99ac31 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -23,11 +23,7 @@ import os import matplotlib.pyplot as plt -# Define a system in Florida -lat, lon = 30.1702, -85.65963 -# weather_data, weather_meta = get_psm3(lat, lon, interval=30, names=2012, -# map_variables=True, leap_day=False) - +# load in TMY weather data from North Carolina included with pvlib PVLIB_DIR = pvlib.__path__[0] DATA_FILE = os.path.join(PVLIB_DIR, 'data', '723170TYA.CSV') @@ -44,19 +40,16 @@ surface_tilt = metadata['latitude'] surface_azimuth = 180 -# define some parameters for the module and inverter +# define an example module and inverter sandia_modules = pvlib.pvsystem.retrieve_sam('SandiaMod') - cec_inverters = pvlib.pvsystem.retrieve_sam('cecinverter') - sandia_module = sandia_modules['Canadian_Solar_CS5P_220M___2009_'] - cec_inverter = cec_inverters['ABB__MICRO_0_25_I_OUTD_US_208__208V_'] temperature_model_parameters = TEMPERATURE_MODEL_PARAMETERS['sapm']['open_rack_glass_glass'] # define the system and ModelChain -system = PVSystem(arrays = None, +system = PVSystem(arrays = None, surface_tilt=surface_tilt, surface_azimuth=surface_azimuth, module_parameters=sandia_module, @@ -66,7 +59,7 @@ mc = ModelChain(system, location=loc, aoi_model="no_loss", spectral_model="no_loss") -# since we're in FL, we'll likely want FL coefficients +# Cape Canaveral seems like the most likely match for climate model_perez = 'capecanaveral1988' solar_position = loc.get_solarposition(times=weather_data.index) @@ -109,4 +102,6 @@ plt.xticks(rotation=90) plt.ylabel("AC Power ($W$)") -plt.legend() \ No newline at end of file +plt.legend() +#%% +# Note that there is a small, but noticeable difference from the default coefficients that may add up over longer periods of time. \ No newline at end of file From a34e7970ce7373b9c3e261eaf944d81eff3f7462 Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Tue, 30 Jul 2024 12:20:01 -0400 Subject: [PATCH 03/22] cleaned up --- .../examples/irradiance-transposition/use_perez_modelchain.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index a46b99ac31..d91ca86fcd 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -56,8 +56,7 @@ inverter_parameters=cec_inverter, temperature_model_parameters=temperature_model_parameters) -mc = ModelChain(system, location=loc, - aoi_model="no_loss", spectral_model="no_loss") +mc = ModelChain(system, location=loc) # Cape Canaveral seems like the most likely match for climate model_perez = 'capecanaveral1988' @@ -99,7 +98,6 @@ label="Default Composite Perez Model") plt.plot(ac_power_new_perez.loc[start:stop], label="Cape Canaveral Perez Model") - plt.xticks(rotation=90) plt.ylabel("AC Power ($W$)") plt.legend() From 4196d54fc4df3be6465342ac4d4d472508597827 Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Tue, 30 Jul 2024 12:28:58 -0400 Subject: [PATCH 04/22] linter --- .../use_perez_modelchain.py | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index d91ca86fcd..33eff30931 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -2,17 +2,23 @@ Use different Perez coefficients with the ModelChain ================= -This example demonstrates how to customize the ModelChain to use site-specifc Perez coefficients. +This example demonstrates how to customize the ModelChain +to use site-specifc Perez coefficients. """ #%% -# The :py:class:`pvlib.modelchain.ModelChain` object provides a useful interface for easily constructing a model with a simple, unified interface. -# However, a user may want to customize their models in various ways. -# One such example is during the irradiance transposition step. -# The Perez models perform very well on field data, but they require a set of fitted coefficients from various sites. -# It has been noted that these coefficients can be specific to various climates, so users may see a boost in model performance when using the correct set of parameters. -# However, the base `pvlib.modelchain.ModelChain` only supports the default coefficients. -# This example shows how the `pvlib.modelchain.ModelChain` can be adjusted to use a different set of Perez coefficients. +# The :py:class:`pvlib.modelchain.ModelChain` object provides a useful interface +# for easily constructing a model with a simple, unified interface. +# However, a user may want to customize their models in various ways. +# One such example is during the irradiance transposition step. +# The Perez models perform very well on field data, but +# they require a set of fitted coefficients from various sites. +# It has been noted that these coefficients can be specific to +# various climates, so users may see a boost in model performance +# when using the correct set of parameters. +# However, the base `pvlib.modelchain.ModelChain` only supports the default coefficients. +# This example shows how the `pvlib.modelchain.ModelChain` can +# be adjusted to use a different set of Perez coefficients. import pandas as pd from pvlib.pvsystem import PVSystem @@ -58,7 +64,7 @@ mc = ModelChain(system, location=loc) -# Cape Canaveral seems like the most likely match for climate +# Cape Canaveral seems like the most likely match for climate model_perez = 'capecanaveral1988' solar_position = loc.get_solarposition(times=weather_data.index) @@ -94,7 +100,7 @@ ac_power_new_perez = mc.results.ac start, stop = '1990-05-05 06:00:00', '1990-05-05 19:00:00' -plt.plot(ac_power_default.loc[start:stop], +plt.plot(ac_power_default.loc[start:stop], label="Default Composite Perez Model") plt.plot(ac_power_new_perez.loc[start:stop], label="Cape Canaveral Perez Model") @@ -102,4 +108,5 @@ plt.ylabel("AC Power ($W$)") plt.legend() #%% -# Note that there is a small, but noticeable difference from the default coefficients that may add up over longer periods of time. \ No newline at end of file +# Note that there is a small, but noticeable difference from the default +# coefficients that may add up over longer periods of time. From 6b2f57c74891c6783684bbb7f54000d69836f8af Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Tue, 30 Jul 2024 12:38:40 -0400 Subject: [PATCH 05/22] linter 2 --- .../use_perez_modelchain.py | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index 33eff30931..353b58da6e 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -6,8 +6,8 @@ to use site-specifc Perez coefficients. """ -#%% -# The :py:class:`pvlib.modelchain.ModelChain` object provides a useful interface +# %% +# The :py:class:`pvlib.modelchain.ModelChain` object provides a useful method # for easily constructing a model with a simple, unified interface. # However, a user may want to customize their models in various ways. # One such example is during the irradiance transposition step. @@ -16,7 +16,8 @@ # It has been noted that these coefficients can be specific to # various climates, so users may see a boost in model performance # when using the correct set of parameters. -# However, the base `pvlib.modelchain.ModelChain` only supports the default coefficients. +# However, the base `pvlib.modelchain.ModelChain` +# only supports the default coefficients. # This example shows how the `pvlib.modelchain.ModelChain` can # be adjusted to use a different set of Perez coefficients. @@ -36,10 +37,10 @@ tmy, metadata = iotools.read_tmy3(DATA_FILE, coerce_year=1990, map_variables=True) -weather_data = pd.DataFrame({'ghi': tmy['ghi'], 'dhi': tmy['dhi'], 'dni': tmy['dni'], - 'temp_air': tmy['temp_air'], - 'wind_speed': tmy['wind_speed'], - }) +weather_data = pd.DataFrame({'ghi': tmy['ghi'], 'dhi': tmy['dhi'], + 'dni': tmy['dni'], + 'temp_air': tmy['temp_air'], + 'wind_speed': tmy['wind_speed']}) loc = location.Location.from_tmy(metadata) @@ -52,15 +53,15 @@ sandia_module = sandia_modules['Canadian_Solar_CS5P_220M___2009_'] cec_inverter = cec_inverters['ABB__MICRO_0_25_I_OUTD_US_208__208V_'] -temperature_model_parameters = TEMPERATURE_MODEL_PARAMETERS['sapm']['open_rack_glass_glass'] +temp_params = TEMPERATURE_MODEL_PARAMETERS['sapm']['open_rack_glass_glass'] # define the system and ModelChain -system = PVSystem(arrays = None, +system = PVSystem(arrays=None, surface_tilt=surface_tilt, surface_azimuth=surface_azimuth, module_parameters=sandia_module, inverter_parameters=cec_inverter, - temperature_model_parameters=temperature_model_parameters) + temperature_model_parameters=temp_params) mc = ModelChain(system, location=loc) @@ -107,6 +108,6 @@ plt.xticks(rotation=90) plt.ylabel("AC Power ($W$)") plt.legend() -#%% +# %% # Note that there is a small, but noticeable difference from the default # coefficients that may add up over longer periods of time. From 7aad3da6bf9a734f9c2edb93b50ffd2e0028630e Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Tue, 30 Jul 2024 12:43:33 -0400 Subject: [PATCH 06/22] added whatsnew --- docs/sphinx/source/whatsnew/v0.11.1.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/sphinx/source/whatsnew/v0.11.1.rst b/docs/sphinx/source/whatsnew/v0.11.1.rst index 4ccc9687c3..71b3e0c469 100644 --- a/docs/sphinx/source/whatsnew/v0.11.1.rst +++ b/docs/sphinx/source/whatsnew/v0.11.1.rst @@ -35,6 +35,11 @@ Documentation * Added gallery example on calculating cell temperature for floating PV. (:pull:`2110`) +* Added gallery example demonstrating how to use + different Perez coefficients in a ModelChain. + (:issue:`2127`, :pull:`2148`) + + Requirements ~~~~~~~~~~~~ @@ -45,4 +50,5 @@ Contributors * Leonardo Micheli (:ghuser:`lmicheli`) * Echedey Luis (:ghuser:`echedey-ls`) * Rajiv Daxini (:ghuser:`RDaxini`) +* Ben Pierce (:ghuser:`bgpierc`) From ef6ef604fa9210cb1b844b5b069d5e3da7b0d05a Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Thu, 1 Aug 2024 14:02:19 -0400 Subject: [PATCH 07/22] Update docs/examples/irradiance-transposition/use_perez_modelchain.py Co-authored-by: Kevin Anderson --- docs/examples/irradiance-transposition/use_perez_modelchain.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index 353b58da6e..2a3c83a3b3 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -1,6 +1,6 @@ """ Use different Perez coefficients with the ModelChain -================= +==================================================== This example demonstrates how to customize the ModelChain to use site-specifc Perez coefficients. From 7d8d6d365cfdbf32aa469a45fa923727bdea4671 Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Thu, 1 Aug 2024 14:02:28 -0400 Subject: [PATCH 08/22] Update docs/examples/irradiance-transposition/use_perez_modelchain.py Co-authored-by: Kevin Anderson --- docs/examples/irradiance-transposition/use_perez_modelchain.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index 2a3c83a3b3..7122537151 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -94,6 +94,9 @@ model_perez=model_perez, dni_extra=dni_extra) +# %% +# Now, run the ``ModelChain`` with both sets of irradiance data and compare: + mc.run_model_from_poa(POA_irradiance) ac_power_default = mc.results.ac From c7b472e1bcc2b5a2b9cdf49abd7a57ff8cb8d062 Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Thu, 1 Aug 2024 14:02:35 -0400 Subject: [PATCH 09/22] Update docs/examples/irradiance-transposition/use_perez_modelchain.py Co-authored-by: Kevin Anderson --- .../irradiance-transposition/use_perez_modelchain.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index 7122537151..f9e8784cd8 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -65,6 +65,11 @@ mc = ModelChain(system, location=loc) +# %% +# Now, let's calculate POA irradiance values outside of the ``ModelChain``. +# We do this for both the default Perez coefficients and the desired +# alternative Perez coefficients. This enables comparison at the end. + # Cape Canaveral seems like the most likely match for climate model_perez = 'capecanaveral1988' From dc670fd28024ee0dfebb16b1f89a8d9cb418449c Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Thu, 1 Aug 2024 14:02:42 -0400 Subject: [PATCH 10/22] Update docs/examples/irradiance-transposition/use_perez_modelchain.py Co-authored-by: Kevin Anderson --- .../examples/irradiance-transposition/use_perez_modelchain.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index f9e8784cd8..63980b1fd9 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -16,9 +16,9 @@ # It has been noted that these coefficients can be specific to # various climates, so users may see a boost in model performance # when using the correct set of parameters. -# However, the base `pvlib.modelchain.ModelChain` +# However, the base :py:class:`~pvlib.modelchain.ModelChain` # only supports the default coefficients. -# This example shows how the `pvlib.modelchain.ModelChain` can +# This example shows how the :py:class:`~pvlib.modelchain.ModelChain` can # be adjusted to use a different set of Perez coefficients. import pandas as pd From 814454dce8124f4e12af9c8c9f55b0a8ee6ba367 Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Thu, 1 Aug 2024 14:05:08 -0400 Subject: [PATCH 11/22] added plt tight layout --- docs/examples/irradiance-transposition/use_perez_modelchain.py | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index 63980b1fd9..e256f3bd21 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -116,6 +116,7 @@ plt.xticks(rotation=90) plt.ylabel("AC Power ($W$)") plt.legend() +plt.tight_layout() # %% # Note that there is a small, but noticeable difference from the default # coefficients that may add up over longer periods of time. From 8f8a937a52a351a6e6d893b6146825b93024cfb4 Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Thu, 1 Aug 2024 14:05:29 -0400 Subject: [PATCH 12/22] added plt tight layout --- docs/examples/irradiance-transposition/use_perez_modelchain.py | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index e256f3bd21..97ebc40806 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -117,6 +117,7 @@ plt.ylabel("AC Power ($W$)") plt.legend() plt.tight_layout() +plt.show() # %% # Note that there is a small, but noticeable difference from the default # coefficients that may add up over longer periods of time. From 6dbe66280592441ef401124497e0952548014130 Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Mon, 5 Aug 2024 09:57:06 -0400 Subject: [PATCH 13/22] Update docs/examples/irradiance-transposition/use_perez_modelchain.py Co-authored-by: Cliff Hansen --- docs/examples/irradiance-transposition/use_perez_modelchain.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index 97ebc40806..fcb9c69181 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -3,7 +3,7 @@ ==================================================== This example demonstrates how to customize the ModelChain -to use site-specifc Perez coefficients. +to use site-specific Perez coefficients. """ # %% From d29e8f57283fb0aa2bc4348b82d4495be0a1b277 Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Mon, 5 Aug 2024 09:57:12 -0400 Subject: [PATCH 14/22] Update docs/examples/irradiance-transposition/use_perez_modelchain.py Co-authored-by: Cliff Hansen --- .../examples/irradiance-transposition/use_perez_modelchain.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index fcb9c69181..ade8099187 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -8,8 +8,8 @@ # %% # The :py:class:`pvlib.modelchain.ModelChain` object provides a useful method -# for easily constructing a model with a simple, unified interface. -# However, a user may want to customize their models in various ways. +# for easily constructing a system model with a simple, unified interface. +# However, a user may want to customize the steps in the system model in various ways. # One such example is during the irradiance transposition step. # The Perez models perform very well on field data, but # they require a set of fitted coefficients from various sites. From a9653d2e00c3cd4532410d86ed84f18eed977d11 Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Mon, 5 Aug 2024 09:57:20 -0400 Subject: [PATCH 15/22] Update docs/examples/irradiance-transposition/use_perez_modelchain.py Co-authored-by: Cliff Hansen --- .../examples/irradiance-transposition/use_perez_modelchain.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index ade8099187..5275c60b0b 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -14,8 +14,8 @@ # The Perez models perform very well on field data, but # they require a set of fitted coefficients from various sites. # It has been noted that these coefficients can be specific to -# various climates, so users may see a boost in model performance -# when using the correct set of parameters. +# various climates, so users may see improved model accuracy +# when using a site-specific set of coefficients. # However, the base :py:class:`~pvlib.modelchain.ModelChain` # only supports the default coefficients. # This example shows how the :py:class:`~pvlib.modelchain.ModelChain` can From 156194c3f1e4543fcb481586b4092b9dfb7fe14b Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Mon, 5 Aug 2024 10:12:28 -0400 Subject: [PATCH 16/22] linter --- docs/examples/irradiance-transposition/use_perez_modelchain.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index 5275c60b0b..9a736ac804 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -9,7 +9,8 @@ # %% # The :py:class:`pvlib.modelchain.ModelChain` object provides a useful method # for easily constructing a system model with a simple, unified interface. -# However, a user may want to customize the steps in the system model in various ways. +# However, a user may want to customize the steps +# in the system model in various ways. # One such example is during the irradiance transposition step. # The Perez models perform very well on field data, but # they require a set of fitted coefficients from various sites. From 01c712564c037e7e360e6618adab96f00d7f6b21 Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Thu, 15 Aug 2024 11:41:35 -0400 Subject: [PATCH 17/22] Update docs/examples/irradiance-transposition/use_perez_modelchain.py Co-authored-by: Adam R. Jensen <39184289+AdamRJensen@users.noreply.github.com> --- docs/examples/irradiance-transposition/use_perez_modelchain.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index 9a736ac804..25aa0e9390 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -3,7 +3,7 @@ ==================================================== This example demonstrates how to customize the ModelChain -to use site-specific Perez coefficients. +to use site-specific Perez transposition coefficients. """ # %% From fa6169c31dfff80216dafe2bb7ec8ecba48efdd2 Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Thu, 15 Aug 2024 11:41:43 -0400 Subject: [PATCH 18/22] Update docs/examples/irradiance-transposition/use_perez_modelchain.py Co-authored-by: Adam R. Jensen <39184289+AdamRJensen@users.noreply.github.com> --- docs/examples/irradiance-transposition/use_perez_modelchain.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index 25aa0e9390..3cc070a159 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -8,7 +8,7 @@ # %% # The :py:class:`pvlib.modelchain.ModelChain` object provides a useful method -# for easily constructing a system model with a simple, unified interface. +# for easily constructing a PV system model with a simple, unified interface. # However, a user may want to customize the steps # in the system model in various ways. # One such example is during the irradiance transposition step. From 2e370e76f50d15c5b44d7550763e17260a0ca6e1 Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Thu, 15 Aug 2024 11:41:51 -0400 Subject: [PATCH 19/22] Update docs/examples/irradiance-transposition/use_perez_modelchain.py Co-authored-by: Adam R. Jensen <39184289+AdamRJensen@users.noreply.github.com> --- .../examples/irradiance-transposition/use_perez_modelchain.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index 3cc070a159..5cf113e36c 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -12,8 +12,8 @@ # However, a user may want to customize the steps # in the system model in various ways. # One such example is during the irradiance transposition step. -# The Perez models perform very well on field data, but -# they require a set of fitted coefficients from various sites. +# The Perez model perform very well on field data, but +# it requires a set of fitted coefficients from various sites. # It has been noted that these coefficients can be specific to # various climates, so users may see improved model accuracy # when using a site-specific set of coefficients. From c5cde3a1495f3daf534d81c945e559288a838b50 Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Thu, 15 Aug 2024 11:42:12 -0400 Subject: [PATCH 20/22] Update docs/examples/irradiance-transposition/use_perez_modelchain.py Co-authored-by: Adam R. Jensen <39184289+AdamRJensen@users.noreply.github.com> --- .../irradiance-transposition/use_perez_modelchain.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index 5cf113e36c..d7a9ab26f5 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -38,10 +38,7 @@ tmy, metadata = iotools.read_tmy3(DATA_FILE, coerce_year=1990, map_variables=True) -weather_data = pd.DataFrame({'ghi': tmy['ghi'], 'dhi': tmy['dhi'], - 'dni': tmy['dni'], - 'temp_air': tmy['temp_air'], - 'wind_speed': tmy['wind_speed']}) +weather_data = tmy[['ghi', 'dhi', 'dni', 'temp_air', 'wind_speed']] loc = location.Location.from_tmy(metadata) From 35cf150417b1435dd17005789d667e2fb2aa52db Mon Sep 17 00:00:00 2001 From: Ben Pierce Date: Thu, 15 Aug 2024 11:42:24 -0400 Subject: [PATCH 21/22] Update docs/examples/irradiance-transposition/use_perez_modelchain.py Co-authored-by: Adam R. Jensen <39184289+AdamRJensen@users.noreply.github.com> --- .../examples/irradiance-transposition/use_perez_modelchain.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index d7a9ab26f5..52f3275cb2 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -98,7 +98,9 @@ dni_extra=dni_extra) # %% -# Now, run the ``ModelChain`` with both sets of irradiance data and compare: +# Now, run the ``ModelChain`` with both sets of irradiance data and compare +# (note that to use POA irradiance as input to the ModelChain the method +# `.run_model_from_poa` is used): mc.run_model_from_poa(POA_irradiance) ac_power_default = mc.results.ac From 417053b289f8afa4692e26936342338fcbc49a42 Mon Sep 17 00:00:00 2001 From: bgpierce Date: Thu, 15 Aug 2024 12:56:14 -0400 Subject: [PATCH 22/22] broke up large code block --- docs/examples/irradiance-transposition/use_perez_modelchain.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/examples/irradiance-transposition/use_perez_modelchain.py b/docs/examples/irradiance-transposition/use_perez_modelchain.py index 52f3275cb2..dd0d12f2a5 100644 --- a/docs/examples/irradiance-transposition/use_perez_modelchain.py +++ b/docs/examples/irradiance-transposition/use_perez_modelchain.py @@ -42,6 +42,9 @@ loc = location.Location.from_tmy(metadata) +#%% +# Now, let's set up a standard PV model using the ``ModelChain`` + surface_tilt = metadata['latitude'] surface_azimuth = 180