pvlib.pvarray.huld#

pvlib.pvarray.huld(effective_irradiance, temp_mod, pdc0, k=None, cell_type=None)[source]#

Power (DC) using the Huld model.

The Huld model [1] is used by PVGIS and is given by

\[ \begin{align}\begin{aligned}P_{dc} &= G' ( P_{dc0} + k_1 \log(G') + k_2 \log^2 (G') + k_3 T' + k_4 T' \log(G') + k_5 T' \log^2 (G') + k_6 T'^2)\\G' &= \frac{G_{poa eff}}{1000}\\T' &= T_{mod} - 25^{\circ}C\end{aligned}\end{align} \]
Parameters:
  • effective_irradiance (numeric) – The irradiance that is converted to photocurrent. [\(W/m^2\)]

  • temp_mod (numeric) – Module back-surface temperature. [C]

  • pdc0 (numeric) – Power of the modules at reference conditions 1000 \(W/m^2\) and \(25^{\circ}C\). [W]

  • k (tuple, optional) – Empirical coefficients used in the power model. Length 6. If k is not provided, cell_type must be specified.

  • cell_type (str, optional) – If provided, must be one of 'cSi', 'CIS', or 'CdTe'. Used to look up default values for k if k is not specified.

Returns:

pdc (numeric) – DC power. [W]

Raises:

ValueError – If neither k nor cell_type are specified.

Notes

The equation for \(P_{dc}\) is from [1]. The expression used in PVGIS documentation differs by factoring \(P_{dc0}\) out of the polynomial:

\[P_{dc} = G' P_{dc0} (1 + k'_1 \log(G') + k'_2 \log^2 (G') + k'_3 T' + k'_4 T' \log(G') + k'_5 T' \log^2 (G') + k'_6 T'^2)\]

PVGIS documentation shows a table of default parameters \(k'\) for different cell types. The parameters \(k'\) differ from the parameters \(k\) for huld() by the factor pdc0, that is,

\[k = P_{dc0} k'\]

With default values for \(k\), at very low irradiance, i.e., \(G' < 20 W/m^2\), \(P_{dc}\) may be negative due to the terms involving \(\log(G')\).

huld() is a component of the PV performance model implemented in PVGIS. Among other components, the full PVGIS model includes:

The PVGIS API (see pvlib.iotools.get_pvgis_hourly()) returns broadband plane-of-array irradiance (poa_global) and DC power (P). poa_global is irradiance before applying the IAM and spectral adjustments. In contrast the effective_irradiance for huld() should have the IAM and spectral adjustments. Users comparing output of huld() to PVGIS’ P values should expect differences unless effective_irradiance is computed in the same way as done by PVGIS.

References