This repository contains an analysis of the energy production of an installed solar system. A probabilistic model for energy output is inverted using (Py)Stan.
All figures are clickable links to higher quality versions.
- 16 x Hyundai HiE-S400VG panels (400W).
- Fronius Primo GEN24 5.0 Inverter (5kW). Connected as two strings: one for the 4 east facing panels, and the other for the 12 north facing panels (wired as two parallel sets of 6 panels).
- Fronius Ohmpilot (connected to 3kW element).
- Installed in Dunedin, NZ.
The average monthly output (as compared to the predictions as quoted) are tabulated below, as well as a plot of the recorded daily output.
Month | Predicted (kWh) | Observed (kWh) |
---|---|---|
Jan | 805 | 987 |
Feb | 731 | 824 |
Mar | 568 | 714 |
Apr | 401 | 504 |
May | 251 | 360 |
Jun | 183 | 289 |
Jul | 238 | 319 |
Aug | 330 | 502 |
Sep | 516 | 611 |
Oct | 687 | 782 |
Nov | 827 | 836 |
Dec | 786 | 889 |
Figure: Recorded energy production over the life of the system.
The model assumes that the maximum available energy generation varies sinusoidally over the course of the year, with each day's realised production being a random fraction of this (i.e. dependent on the weather). The below is a sketch of the key components of the model:
-
Instantaneous phase:
$\phi(t) = 2 \pi p(t) + \delta$ , where$p(t)$ represents the proportion of the current year that has passed and the phase$\delta$ represents the offset between the start of the year and the date of peak energy generation. -
Seasonal oscillation:
$s(t) = (\cos(\phi(t) + \beta_{c1}\cos(\phi(t)) + \beta_{s1}\sin(\phi(t))) + 1) / 2$ . This is a dimensionless representation of the fluctuation in available energy over the year. The sinusoidal basis and$\beta$ terms allow the shape of the underlying sinusoidal oscillation to be tweaked. -
Available energy:
$E_{avail}(t) = a + b s(t)$ where$a$ represents the maximum possible energy production from the panels on the shortest day of the year, and$b$ represents the amplitude of the seasonal oscillation in kWh. The maximum achievable production will be less than this due to the limit to the power output from the inverter. -
Weather effect:
$w(t)$ represents the proportion of the theoretical optimal available energy that actually reaches the panels. This takes a prior which is a mixture of gamma distributions, to capture clear sunny days separately from those with cloud cover. -
Realised production:
$E(t) = \mathop{\text{sat}}(w(t) E_{avail}(t))$ . The actual amount of energy generated is lower than the theoretical limit due to both the weather effect and the inverter clipping power output. The latter is modelled as$\mathop{\text{sat}}(e) = (-1 / \tau) \mathop{\text{LSE}}(- \tau e, - \tau \gamma)$ where the LogSumExp function is used as a softmin of the incident energy and a hard upper limit on production$\gamma$ . The sharpness of the transition between the linear and saturating regimes is governed by$\tau$ . -
Optimal production:
$E_{opt}(t) = \mathop{\text{sat}}(E_{avail}(t))$ is a convenience representation of the above. It illustrates what production would be achievable per day without weather effects.
The plots below show the distributions over the key parameters.
Figure: Distribution of the theoretical maximum daily energy production
(
Figure: Annual variation in available energy. This illustrates the fluctuation in the theoretical limits to production over the year.
Figure: Parameters controlling the optimal production curve
(
Figure: Impact of the weather effect (
Figure: Structure of the posterior over the weather effect terms.
Top: Posterior distribution of the weather effect (