23
23
# rename newton and set keyword arguments
24
24
newton = partial (_array_newton , tol = 1e-6 , maxiter = 100 , fprime2 = None )
25
25
26
- VOLTAGE_BUILTIN = 0.9 # (V) intrinsic voltage for a:Si, CdTe, Mertens et al.
26
+ # intrinsic voltage per cell junction for a:Si, CdTe, Mertens et al.
27
+ VOLTAGE_BUILTIN = 0.9 # [V]
27
28
28
29
29
30
def estimate_voc (photocurrent , saturation_current , nNsVth ):
@@ -65,9 +66,8 @@ def estimate_voc(photocurrent, saturation_current, nNsVth):
65
66
66
67
67
68
def bishop88 (diode_voltage , photocurrent , saturation_current ,
68
- resistance_series , resistance_shunt , nNsVth , cells_in_series = None ,
69
- d2mutau = 0 , voltage_builtin = VOLTAGE_BUILTIN ,
70
- gradients = False ):
69
+ resistance_series , resistance_shunt , nNsVth , d2mutau = 0 ,
70
+ NsVbi = np .Inf , gradients = False ):
71
71
"""
72
72
Explicit calculation of points on the IV curve described by the single
73
73
diode equation [1]_.
@@ -76,9 +76,6 @@ def bishop88(diode_voltage, photocurrent, saturation_current,
76
76
* Do not use ``d2mutau`` with CEC coefficients.
77
77
* Usage of ``d2mutau`` with PVSyst coefficients is required for cadmium-
78
78
telluride (CdTe) and amorphous-silicon (a:Si) PV modules only.
79
- * For PVSyst CdTe and a:Si modules, the ``cells_in_series`` parameter
80
- must only account for a single parallel sub-string if the module has
81
- cells in parallel greater than 1.
82
79
83
80
Parameters
84
81
----------
@@ -95,18 +92,14 @@ def bishop88(diode_voltage, photocurrent, saturation_current,
95
92
nNsVth : numeric
96
93
product of thermal voltage ``Vth`` [V], diode ideality factor ``n``,
97
94
and number of series cells ``Ns``
98
- cells_in_series : None or int
99
- number of cells in series per parallel module sub-string, only required
100
- for PVSyst thin-film recombination loss, if unset default is ``None``
101
- which raises ``TypeError`` if ``d2mutau`` is set.
102
95
d2mutau : numeric
103
96
PVSyst thin-film recombination parameter that is the ratio of thickness
104
- of the intrinsic thin-film layer squared :math:`d^2` and the diffusion
105
- length of charge carriers :math:`\\ mu \\ tau`, in volts [V], defaults to
106
- 0[V]
107
- voltage_builtin : numeric
108
- PVSyst thin-film recombination parameter that is the builtin voltage of
109
- the intrinsic thin-film layer, in volts [V], defaults to 0.9[V]
97
+ of the intrinsic layer squared :math:`d^2` and the diffusion length of
98
+ charge carriers :math:`\\ mu \\ tau`, in volts [V], defaults to 0[V]
99
+ NsVbi : numeric
100
+ PVSyst thin-film recombination parameter that is the product of the PV
101
+ module number of series cells ``Ns`` and the builtin voltage ``Vbi`` of
102
+ the intrinsic layer, in volts [V], defaults to ``np.inf``
110
103
gradients : bool
111
104
False returns only I, V, and P. True also returns gradients
112
105
@@ -121,11 +114,13 @@ def bishop88(diode_voltage, photocurrent, saturation_current,
121
114
Notes
122
115
-----
123
116
The PVSyst thin-film recombination losses parameters ``d2mutau`` and
124
- ``voltage_builtin`` are only applied to cadmium-telluride (CdTe) and
125
- amorphous-silicon (a:Si) PV modules, [2]_, [3]_. The builtin voltage should
126
- account for all junctions. For example: tandem and triple junction cell
127
- would have builtin voltages of 1.8[V] and 2.7[V] respectively, based on the
128
- default of 0.9[V] for a single junction.
117
+ ``NsVbi`` are only applied to cadmium-telluride (CdTe) and amorphous-
118
+ silicon (a:Si) PV modules, [2]_, [3]_. The builtin voltage :math:`V_{bi}`
119
+ should account for all junctions. For example: tandem and triple junction
120
+ cells would have builtin voltages of 1.8[V] and 2.7[V] respectively, based
121
+ on the default of 0.9[V] for a single junction. The parameter ``NsVbi``
122
+ should only account for the number of series cells in a single parallel
123
+ sub-string if the module has cells in parallel greater than 1.
129
124
130
125
References
131
126
----------
@@ -145,9 +140,7 @@ def bishop88(diode_voltage, photocurrent, saturation_current,
145
140
"""
146
141
# calculate recombination loss current where d2mutau > 0
147
142
is_recomb = d2mutau > 0 # True where there is thin-film recombination loss
148
- v_recomb = np .where (is_recomb ,
149
- voltage_builtin * cells_in_series - diode_voltage ,
150
- np .inf )
143
+ v_recomb = np .where (is_recomb , NsVbi - diode_voltage , np .inf )
151
144
i_recomb = np .where (is_recomb , photocurrent * d2mutau / v_recomb , 0 )
152
145
# calculate temporary values to simplify calculations
153
146
v_star = diode_voltage / nNsVth # non-dimensional diode voltage
0 commit comments