pvlib.pvarray.batzelis#

pvlib.pvarray.batzelis(effective_irradiance, temp_cell, v_mp, i_mp, v_oc, i_sc, alpha_sc, beta_voc)[source]#

Compute maximum power point, open circuit, and short circuit values using Batzelis’s method.

Batzelis’s method (described in Section III of [1]) is a fast method of computing the maximum power current and voltage. The calculations are rooted in the De Soto single-diode model, but require only typical datasheet information.

Parameters:
  • effective_irradiance (numeric, non-negative) – Effective irradiance incident on the PV module. [Wm⁻²]

  • temp_cell (numeric) – PV module operating temperature. [°C]

  • v_mp (float) – Maximum power point voltage at STC. [V]

  • i_mp (float) – Maximum power point current at STC. [A]

  • v_oc (float) – Open-circuit voltage at STC. [V]

  • i_sc (float) – Short-circuit current at STC. [A]

  • alpha_sc (float) – Short-circuit current temperature coefficient at STC. [A/K]

  • beta_voc (float) – Open-circuit voltage temperature coefficient at STC. [V/K]

Returns:

dict – The returned dict-like object contains the keys/columns:

  • p_mp - power at maximum power point. [W]

  • i_mp - current at maximum power point. [A]

  • v_mp - voltage at maximum power point. [V]

  • i_sc - short circuit current. [A]

  • v_oc - open circuit voltage. [V]

Notes

This method is the combination of three sub-methods for:

  1. estimating single-diode model parameters from datasheet information

  2. translating SDM parameters from STC to operating conditions (taken from the De Soto model)

  3. estimating the MPP, OC, and SC points on the resulting I-V curve.

At extremely low irradiance (e.g. 1e-10 Wm⁻²), this model can produce negative voltages. This function clips any negative voltages to zero.

References

Examples

>>> params = {'i_sc': 15.98, 'v_oc': 50.26, 'i_mp': 15.27, 'v_mp': 42.57,
...           'alpha_sc': 0.007351, 'beta_voc': -0.120624}
>>> batzelis(np.array([1000, 800]), np.array([25, 30]), **params)
{'p_mp': array([650.0439    , 512.99199048]),
 'i_mp': array([15.27      , 12.23049303]),
 'v_mp': array([42.57      , 41.94368856]),
 'i_sc': array([15.98    , 12.813404]),
 'v_oc': array([50.26      , 49.26532902])}