Skip to content

Tutorial 3. A look at interdependence in 'the model'

Example 3 takes a more detailed look at the uncertainty in ‘the model’, which typically refers to the PVsyst model that converts the weather into AC yield, but which does not extend to operational losses like availability, curtailment and degradation.

In many yield forecasts, the ‘model error’ is set to a Gaussian with a standard deviation of, say σ = 0.02 or 0.03, and is combined with other uncertainties using the analytical sum-of-squares approach.

Is this appropriate?

This example does not address the magnitude of the model uncertainty (which will depend strongly on the site and knowledge of the inputs), but instead illustrates an approach to determining that model error. It also addresses the issue of interdependencies, which is signficant for model errors, and which is neglected by the standard sum-of-squares approach.

Example 3 does not include all sources of uncertainty but focuses on several major sources related to the model. As well as the uncertainty in the GHI (indentical to Examples 1 and 2), it introduces uncertainty into three other aspects of the weather:

  1. the wind speed, which is much more variable than GHI and which impacts thermal behaviour;

  2. the diffuse fraction, i.e., the fraction of the irradiance that is diffuse (DHI/GHI); and

  3. the uncertainty in the circumsolar fraction, which is effectively the error in the HayDavies or Perez transposition models.

Example 3 also introduce uncertainty into two variables related to the thermal model: Uc & Uv. These are the coefficients that dictate how the temperature of the PV modules depends on the weather conditions. Their values can vary substationally from location to location and for different system types, and their uncertainty is high.

Finally, the example retains the uncertainty in the module nameplate power and adds uncertainty in the electrical mismatch, which arises due to non-uniform irradiance.

SourceValue95% confidence intervalGHI, variable, ±5% relDiffuse fraction, variable, ±10% relCircumsolar fraction, variable, ±10% relWind speed, variable, ±50% relModule nameplate power, 460 W, ±20 WUc, 25 W/m²/K, ±10 W/m²/KUv, 2.0 W∙s/m³/K, ±1.5 W∙s/m³/KElectrical mismatch, 2%, ±2% rel

Like Examples 1 and 2, we calculate the standard deviations to be a half of the relative uncertainty, σ = (absolute uncertainty/value) / 2. And therefore the input values and Gaussian distributions are defined as follows:

InputValuex₀σGHI, in weather file, 1, 0.025DiffuseFraction, in weather file, 1, 0.05CircumsolarFraction, in weather file, 1, 0.05WindSpeed, in weather file, 1, 0.25ModulePower, 460 W, 1, 0.02174Uc, 25 W/m²/K, 1, 0.2Uv, 2.0 W∙s/m³/K, 1, 0.375CellToCellMismatch, 0.02, 1, 0.5

In this example (and in reality), the uncertainty in all of these new variables is signficiantly higher than the uncertainty in the GHI and the nameplate power. For example the uncertainty in the wind speed (σ = 0.25) is ten times higher than the uncertainty in the GHI (σ = 0.025).

But unlike the GHI and the nameplate power, the yield does not depend strongly on these other parameters. That is, while the yield roughly doubles when the GHI or nameplate power doubles, it does not roughly double when the windspeed doubles or Uc is halved.

The dependence of yield uncertainty on the uncertainty in parameters like the diffuse fraction, the circumsolar fraction, the windspeed, Uc and Uv, is much more complicated and difficult to calculate analytically. The complications arise because the yield does not depend linearly or independentaly on these parameters.

For example, if the windspeed is lower than expected, the module runs cooler and becomes more efficient, and therefore it produces more electricity under the same irradiance than expected. The relative change in yield, however, does not just depend on the relative change in wind speed, but also on other parameters like Uc, Uv, ambient temperature. Those co-dependencies make it difficult to compute the uncertainty in the yield by the sum-of-squares method.

We now run the simulations to demonstrate this effect.

Load the inputs by copying this text block into Step 3:

# Set uncertainty simulation constants
simulation_options = build_simulation_options(
number_of_years=1,
number_of_simulations=20000
)
# Load weather: sydney.pvw file is an example weather file
weather_file_path = "Data/sydney.pvw"
weather_data = load_weather_data_from_pvw_file(weather_file_path)
# Assign system inputs
electrical_settings = build_electrical_settings(
inverter_efficiency = 1,
)
thermal_settings = build_thermal_settings(
uc = 25,
uv = 2.0,
)
module_info = build_module_info(
power_at_stc=460,
cell_to_cell_mismatch=0.02,
)
#Otherwise use all defaults
system_info = build_system_info()
optical_settings = build_optical_settings()
operational_settings = build_operational_settings()
# Set output options
result_options = build_result_options(
bin_min=0.85,
bin_delta=0.01,
p_values=[1, 5, 10, 25, 75, 90, 95, 99]
)

Load the distributions by copying this text block into Step 6:

distribution_list = [
create_distribution(DistributionInput.GHI, simToSim=["Gaussian", 1, 0.025]),
create_distribution(DistributionInput.ModulePower, simToSim=["Gaussian", 1, 0.02174]),
create_distribution(DistributionInput.DiffuseFraction, simToSim=["Gaussian", 1, 0.05]),
create_distribution(DistributionInput.CircumsolarFraction, simToSim=["Gaussian", 1, 0.05]),
create_distribution(DistributionInput.WindSpeed, simToSim=["Gaussian", 1, 0.25]),
create_distribution(DistributionInput.Uc, simToSim=["Gaussian", 1, 0.2]),
create_distribution(DistributionInput.Uv, simToSim=["Gaussian", 1, 0.375]),
create_distribution(DistributionInput.CellToCellMismatch, simToSim=["Gaussian", 1, 0.5]),
]
print("Distribution list created.")

To assess the yield model and demonstrate the contribution of dependencies, we first plot the histogram of Example 3 when the uncertainty due to GHI and module power are omitted (i.e., when their σ is zero.)

The histogram has a little asymmetry — notice the downside tail is a little stronger than the upside tail — but we can adequately represent it as a Gaussian distribution with σ = 0.0125, as plotted by the line.

Output uncertainty

Thus, in this example, the aspects of the model that account for uncertainty due to diffuse fraction, circumsolar, wind, thermal, and electrical mismtach are well represented by a Gaussian with σ = 0.0125. That would have been difficult to predict without applying the Monte Carlo approach in SunSolve P90 (i.e., running the yield simulation 1000s of times), because the yield has a very non-linear dependence on the uncertainties of these model parameters; despite their very high uncertainty, their impact on the yield uncertainty is weak. Nevertheless, in our example, their combined effect is still significant, giving σ = 0.0125.

Now let’s reintroduce the uncertinaty in GHI and module power. If there were no interdependencies between the uncertainties, one could combine them via the sum-of-squares approach, giving a Gaussian yield uncertainty with σ = 3.5 (equal to sqrt(0.025² + 0.217² + 0.0125²)). Is that approach accurate?

The histogram below plots the results of SunSolve P90. It shows that the Monte Carlo distribution determined by SunSolve P90 is significantly tighter than the analytical sum-of-squares approach described above.

We find that the best-fit Gaussian to our histogram has σ = 3.0, and that the P90 and P95 ratios of 0.96 and 0.95.

By contrast, the analytical approach, which neglected the interdependencies, had σ = 3.5 and P90 and P95 ratios of 0.95 and 0.94.

Output uncertainty

The purpose of Example 3 was to demonstrate two benefits of using the Monte Carlo approach taken by SunSolve P90:

  • the quantification of weather and model error from the uncertainty in wind speed, thermal constants and other aspects of the PVsyst model; and
  • the accouting of interdependencies within the weather and model components of a yield forecast.