11.. _singlediode :
22
3- Single Diode Equation
4- =====================
3+ Single diode models
4+ ===================
5+
6+ Single-diode models are a popular means of simulating the electrical output
7+ of a PV module under any given irradiance and temperature conditions.
8+ A single-diode model (SDM) pairs the single-diode equation (SDE) with a set of
9+ auxiliary equations that predict the SDE parameters at any given irradiance
10+ and temperature. All SDMs use the SDE, but their auxiliary equations differ.
11+ For more background on SDMs, see the `PVPMC website
12+ <https://pvpmc.sandia.gov/modeling-guide/2-dc-module-iv/single-diode-equivalent-circuit-models/> `_.
13+
14+ Three SDMs are currently available in pvlib: the CEC SDM, the PVsyst SDM,
15+ and the De Soto SDM. pvlib splits these models into two steps. The first
16+ is to compute the auxiliary equations using one of the following functions:
17+
18+ * CEC SDM: :py:func: `~pvlib.pvsystem.calcparams_cec `
19+ * PVsyst SDM: :py:func: `~pvlib.pvsystem.calcparams_pvsyst `
20+ * De Soto SDM: :py:func: `~pvlib.pvsystem.calcparams_desoto `
21+
22+ The second step is to use the output of these functions to compute points on
23+ the SDE's I-V curve. Three points on the SDE I-V curve are typically of special
24+ interest for PV modeling: the maximum power (MP), open circuit (OC), and
25+ short circuit (SC) points. The most convenient function for computing these
26+ points is :py:func: `pvlib.pvsystem.singlediode `. It provides several methods
27+ for solving the SDE:
28+
29+ +------------------+------------+-----------+-------------------------+
30+ | Method | Type | Speed | Guaranteed convergence? |
31+ +==================+============+===========+=========================+
32+ | ``newton `` | iterative | fast | no |
33+ +------------------+------------+-----------+-------------------------+
34+ | ``brentq `` | iterative | slow | yes |
35+ +------------------+------------+-----------+-------------------------+
36+ | ``chandrupatla `` | iterative | fast | yes |
37+ +------------------+------------+-----------+-------------------------+
38+ | ``lambertw `` | explicit | medium | yes |
39+ +------------------+------------+-----------+-------------------------+
40+
41+
42+
43+ Computing full I-V curves
44+ -------------------------
45+
46+ Full I-V curves can be computed using
47+ :py:func: `pvlib.pvsystem.i_from_v ` and :py:func: `pvlib.pvsystem.v_from_i `, which
48+ calculate either current or voltage from the other, with the methods listed
49+ above. It is often useful to
50+ first compute the open-circuit or short-circuit values using
51+ :py:func: `pvlib.pvsystem.singlediode ` and then compute a range
52+ of voltages/currents from zero to those extreme points. This range can then
53+ be used with the above functions to compute the I-V curve.
54+
55+
56+ IV curves in reverse bias
57+ -------------------------
58+
59+ The standard SDE does not account for diode breakdown at reverse bias. The
60+ following functions can optionally include an extra term for modeling it:
61+ :py:func: `pvlib.pvsystem.max_power_point `,
62+ :py:func: `pvlib.singlediode.bishop88_i_from_v `,
63+ and :py:func: `pvlib.singlediode.bishop88_v_from_i `.
64+
65+
66+ Recombination current for thin film cells
67+ -----------------------------------------
68+
69+ The PVsyst SDM optionally modifies the SDE to better represent recombination
70+ current in CdTe and a-Si modules. The modified SDE requires two additional
71+ parameters. pvlib functions can compute the key points or full I-V curves using
72+ the modified SDE:
73+ :py:func: `pvlib.pvsystem.max_power_point `,
74+ :py:func: `pvlib.singlediode.bishop88_i_from_v `,
75+ and :py:func: `pvlib.singlediode.bishop88_v_from_i `.
76+
77+ Model parameter values
78+ ----------------------
79+
80+ Despite some models having parameters with similar names, parameter values are
81+ specific to each model and thus must be produced with the intended model in mind.
82+ For some models, sets of parameter values can be read from external sources,
83+ for example:
84+
85+ * CEC SDM parameter database can be read using :py:func: `~pvlib.pvsystem.retrieve_sam `
86+ * PAN files, which can be read using :py:func: `~pvlib.iotools.read_panond `
87+
88+ pvlib also provides a set of functions that can estimate SDM parameter values
89+ from various datasources:
90+
91+ +---------------------------------------------------------------+---------+--------------------+
92+ | Function | SDM | Inputs |
93+ +===============================================================+=========+====================+
94+ | :py:func: `~pvlib.ivtools.sdm.fit_cec_sam ` | CEC | datasheet |
95+ +---------------------------------------------------------------+---------+--------------------+
96+ | :py:func: `~pvlib.ivtools.sdm.fit_desoto ` | De Soto | datasheet |
97+ +---------------------------------------------------------------+---------+--------------------+
98+ | :py:func: `~pvlib.ivtools.sdm.fit_desoto_sandia ` | De Soto | I-V curves |
99+ +---------------------------------------------------------------+---------+--------------------+
100+ | :py:func: `~pvlib.ivtools.sdm.fit_pvsyst_sandia ` | PVsyst | I-V curves |
101+ +---------------------------------------------------------------+---------+--------------------+
102+ | :py:func: `~pvlib.ivtools.sdm.fit_pvsyst_iec61853_sandia_2025 ` | PVsyst | IEC 61853-1 matrix |
103+ +---------------------------------------------------------------+---------+--------------------+
104+
105+
106+ Single-diode equation
107+ ---------------------
5108
6109This section reviews the solutions to the single diode equation used in
7110pvlib-python to generate an IV curve of a PV module.
@@ -15,7 +118,7 @@ The :func:`pvlib.pvsystem.singlediode` function allows the user to choose the
15118method using the ``method `` keyword.
16119
17120Lambert W-Function
18- ------------------
121+ ******************
19122When ``method='lambertw' ``, the Lambert W-function is used as previously shown
20123by Jain, Kapoor [1, 2] and Hansen [3]. The following algorithm can be found on
21124`Wikipedia: Theory of Solar Cells
@@ -50,7 +153,7 @@ Then the module current can be solved using the Lambert W-function,
50153
51154
52155 Bishop's Algorithm
53- ------------------
156+ ******************
54157The function :func: `pvlib.singlediode.bishop88 ` uses an explicit solution [4]
55158that finds points on the IV curve by first solving for pairs :math: `(V_d, I)`
56159where :math: `V_d` is the diode voltage :math: `V_d = V + I*Rs`. Then the voltage
0 commit comments