pvlib.singlediode.bishop88_mpp(photocurrent, saturation_current, resistance_series, resistance_shunt, nNsVth, d2mutau=0, NsVbi=inf, breakdown_factor=0.0, breakdown_voltage=- 5.5, breakdown_exp=3.28, method='newton', method_kwargs=None)[source]#

Find max power point.

  • photocurrent (numeric) – photogenerated current (Iph or IL) [A]

  • saturation_current (numeric) – diode dark or saturation current (Io or Isat) [A]

  • resistance_series (numeric) – series resistance (Rs) in [Ohm]

  • resistance_shunt (numeric) – shunt resistance (Rsh) [Ohm]

  • nNsVth (numeric) – product of diode ideality factor (n), number of series cells (Ns), and thermal voltage (Vth = k_b * T / q_e) in volts [V]

  • d2mutau (numeric, default 0) – PVsyst parameter for cadmium-telluride (CdTe) and amorphous-silicon (a-Si) modules that accounts for recombination current in the intrinsic layer. The value is the ratio of intrinsic layer thickness squared \(d^2\) to the diffusion length of charge carriers \(\mu \tau\). [V]

  • NsVbi (numeric, default np.inf) – PVsyst parameter for cadmium-telluride (CdTe) and amorphous-silicon (a-Si) modules that is the product of the PV module number of series cells Ns and the builtin voltage Vbi of the intrinsic layer. [V].

  • breakdown_factor (numeric, default 0) – fraction of ohmic current involved in avalanche breakdown \(a\). Default of 0 excludes the reverse bias term from the model. [unitless]

  • breakdown_voltage (numeric, default -5.5) – reverse breakdown voltage of the photovoltaic junction \(V_{br}\) [V]

  • breakdown_exp (numeric, default 3.28) – avalanche breakdown exponent \(m\) [unitless]

  • method (str, default 'newton') – Either 'newton' or 'brentq'. ‘’method’’ must be 'newton' if breakdown_factor is not 0.

  • method_kwargs (dict, optional) – Keyword arguments passed to root finder method. See scipy.optimize.brentq() and scipy.optimize.newton() parameters. 'full_output': True is allowed, and optimizer_output would be returned. See examples section.


  • tuple – max power current i_mp [A], max power voltage v_mp [V], and max power p_mp [W]

  • optimizer_output (tuple, optional, if specified in method_kwargs) – see root finder documentation for selected method. Found root is diode voltage in 1.


Using the following arguments that may come from any calcparams_.* function in pvlib.pvsystem:

>>> args = {'photocurrent': 1., 'saturation_current': 9e-10, 'nNsVth': 4.,
...         'resistance_series': 4., 'resistance_shunt': 5000.0}

Use default values:

>>> i_mp, v_mp, p_mp = bishop88_mpp(**args)

Specify tolerances and maximum number of iterations:

>>> i_mp, v_mp, p_mp = bishop88_mpp(**args, method='newton',
...     method_kwargs={'tol': 1e-3, 'rtol': 1e-3, 'maxiter': 20})

Retrieve full output from the root finder:

>>> (i_mp, v_mp, p_mp), method_output = bishop88_mpp(**args,
...     method='newton', method_kwargs={'full_output': True})



“Computer simulation of the effects of electrical mismatches in photovoltaic cell interconnection circuits” JW Bishop, Solar Cell (1988) DOI: 10.1016/0379-6787(88)90059-2