Skip to content

Commit d6a474d

Browse files
committed
documentation and function input modification
1 parent 404b79a commit d6a474d

File tree

3 files changed

+464
-0
lines changed

3 files changed

+464
-0
lines changed

pvlib_python/pvl_calcparams_desoto.py

Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
1+
'''
2+
PVL_CALCPARAMS_DESOTO Applies temperature and irradiance corrections to reference parameters per [1]
3+
4+
Syntax
5+
[IL, I0, Rs, Rsh, nNsVth] = pvl_calcparams_desoto(S, Tcell, alpha_isc, ModuleParameters, EgRef, dEgdt)
6+
[IL, I0, Rs, Rsh, nNsVth] = pvl_calcparams_desoto(S, Tcell, alpha_isc, ModuleParameters, EgRef, dEgdt, M)
7+
[IL, I0, Rs, Rsh, nNsVth] = pvl_calcparams_desoto(S, Tcell, alpha_isc, ModuleParameters, EgRef, dEgdt, M, Sref)
8+
[IL, I0, Rs, Rsh, nNsVth] = pvl_calcparams_desoto(S, Tcell, alpha_isc, ModuleParameters, EgRef, dEgdt, M, Sref, Tref)
9+
10+
Description
11+
Applies the temperature and irradiance corrections to the IL, I0,
12+
Rs, Rsh, and a parameters at reference conditions (IL_ref, I0_ref,
13+
etc.) according to the De Soto et. al description given in [1]. The
14+
results of this correction procedure may be used in a single diode
15+
model to determine IV curves at irradiance = S, cell temperature =
16+
Tcell.
17+
18+
Input Parameters:
19+
S - The irradiance (in W/m^2) absorbed by the module. S must be >= 0.
20+
May be a vector of irradiances, but must be the same size as all
21+
other input vectors. Due to a division by S in the script, any S
22+
value equal to 0 will be set to 1E-10.
23+
Tcell - The average cell temperature of cells within a module in C.
24+
Tcell must be >= -273.15. May be a vector of cell temperatures, but
25+
must be the same size as all other input vectors.
26+
alpha_isc - The short-circuit current temperature coefficient of the
27+
module in units of 1/C.
28+
ModuleParameters - a struct with parameters describing PV module
29+
performance at reference conditions according to DeSoto's paper. A
30+
Parameters may be generated or found by lookup. For ease of use, PVL_RETREIVESAM
31+
can automatically generate a struct based on the most recent SAM CEC module
32+
database. The ModuleParameters struct must contain (at least) the
33+
following 5 fields:
34+
ModuleParameters.a_ref - modified diode ideality factor parameter at
35+
reference conditions (units of eV), a_ref can be calculated from the
36+
usual diode ideality factor (n), number of cells in series (Ns),
37+
and cell temperature (Tcell) per equation (2) in [1].
38+
ModuleParameters.IL_ref - Light-generated current (or photocurrent)
39+
in amperes at reference conditions. This value is referred to
40+
as Iph in some literature.
41+
ModuleParameters.I0_ref - diode reverse saturation current in amperes,
42+
under reference conditions.
43+
ModuleParameters.Rsh_ref - shunt resistance under reference conditions (ohms)
44+
ModuleParameters.Rs_ref - series resistance under reference conditions (ohms)
45+
EgRef - The energy bandgap at reference temperature (in eV). 1.121 eV
46+
for silicon. EgRef must be >0.
47+
dEgdT - The temperature dependence of the energy bandgap at SRC (in 1/C).
48+
May be either a scalar value (e.g. -0.0002677 as in [1]) or a
49+
vector of dEgdT values corresponding to each input condition (this
50+
may be useful if dEgdT is a function of temperature).
51+
M - An optional airmass modifier, if omitted, M is given a value of 1,
52+
which assumes absolute (pressure corrected) airmass = 1.5. In this
53+
code, M is equal to M/Mref as described in [1] (i.e. Mref is assumed
54+
to be 1). Source [1] suggests that an appropriate value for M
55+
as a function absolute airmass (AMa) may be:
56+
M = polyval([-0.000126, 0.002816, -0.024459, 0.086257, 0.918093], AMa)
57+
M may be a vector, but must be of the same size as all other input
58+
vectors.
59+
Sref - Optional reference irradiance in W/m^2. If omitted, a value of
60+
1000 is used.
61+
Tref - Optional reference cell temperature in C. If omitted, a value of
62+
25 C is used.
63+
64+
Output:
65+
IL - Light-generated current in amperes at irradiance=S and
66+
cell temperature=Tcell.
67+
I0 - Diode saturation curent in amperes at irradiance S and cell temperature Tcell.
68+
Rs - Series resistance in ohms at irradiance S and cell temperature Tcell.
69+
Rsh - Shunt resistance in ohms at irradiance S and cell temperature Tcell.
70+
nNsVth - modified diode ideality factor at irradiance S and cell temperature
71+
Tcell. Note that in source [1] nNsVth = a (equation 2). nNsVth is the
72+
product of the usual diode ideality factor (n), the number of
73+
series-connected cells in the module (Ns), and the thermal voltage
74+
of a cell in the module (Vth) at a cell temperature of Tcell.
75+
76+
Notes:
77+
If the reference parameters in the ModuleParameters struct are read
78+
from a database or library of parameters (e.g. System Advisor Model),
79+
it is important to use the same EgRef and dEgdT values that
80+
were used to generate the reference parameters, regardless of the
81+
actual bandgap characteristics of the semiconductor. For example, in
82+
the case of the System Advisor Model library, created as described in
83+
[3], EgRef and dEgdT for all modules were 1.121 and -0.0002677,
84+
respectively.
85+
86+
Sources:
87+
88+
[1] W. De Soto et al., "Improvement and validation of a model for
89+
photovoltaic array performance", Solar Energy, vol 80, pp. 78-88,
90+
2006.
91+
92+
[2] System Advisor Model web page. https://sam.nrel.gov.
93+
94+
[3] A. Dobos, "An Improved Coefficient Calculator for the California
95+
Energy Commission 6 Parameter Photovoltaic Module Model", Journal of
96+
Solar Energy Engineering, vol 134, 2012.
97+
98+
[4] O. Madelung, "Semiconductors: Data Handbook, 3rd ed." ISBN
99+
3-540-40488-0
100+
101+
See also
102+
PVL_SAPM PVL_SAPMCELLTEMP PVL_SINGLEDIODE
103+
PVL_SAMLIBRARYREADER_CECMODULES
104+
105+
106+
This table of reference bandgap energies (EgRef), bandgap energy
107+
temperature dependence (dEgdT), and "typical" airmass response (M) is
108+
provided purely as reference to those who may generate their own
109+
reference module parameters (a_ref, IL_ref, I0_ref, etc.) based upon the
110+
various PV semiconductors. Again, we stress the importance of
111+
using identical EgRef and dEgdT when generation reference
112+
parameters and modifying the reference parameters (for irradiance,
113+
temperature, and airmass) per DeSoto's equations.
114+
-----------------------------------------------------------------------
115+
116+
Silicon (Si):
117+
EgRef = 1.121
118+
dEgdT = -0.0002677
119+
M = polyval([-0.000126 0.002816 -0.024459 0.086257 0.918093], AMa)
120+
Source = Reference 1
121+
Cadmium Telluride (CdTe):
122+
EgRef = 1.475
123+
dEgdT = -0.0003
124+
M = polyval([-2.46E-5 9.607E-4 -0.0134 0.0716 0.9196], AMa)
125+
Source = Reference 4
126+
Copper Indium diSelenide (CIS):
127+
EgRef = 1.010
128+
dEgdT = -0.00011
129+
M = polyval([-3.74E-5 0.00125 -0.01462 0.0718 0.9210], AMa)
130+
Source = Reference 4
131+
Copper Indium Gallium diSelenide (CIGS):
132+
EgRef = 1.15
133+
dEgdT = ????
134+
M = polyval([-9.07E-5 0.0022 -0.0202 0.0652 0.9417], AMa)
135+
Source = Wikipedia
136+
Gallium Arsenide (GaAs):
137+
EgRef = 1.424
138+
dEgdT = -0.000433
139+
M = unknown
140+
Source = Reference 4
141+
'''
142+
143+
import pandas as pd
144+
import pvl_tools
145+
import numpy as np
146+
147+
148+
def pvl_calcparams_desoto(S,Tcell,alpha_isc,ModuleParameters,EgRef,dEgdT,M=1,Sref=1000,Tref=25):
149+
150+
Vars=locals()
151+
152+
Expect={'S':('x >= 0') ,
153+
'Tcell':('x >= - 273.15') ,
154+
'alpha_isc': (''),
155+
'ModuleParameters': (''),
156+
'EgRef': ('x > 0'),
157+
'dEgdT': (''),
158+
'M': ('num','default','default=1'),
159+
'Sref':('default','default=1000'),
160+
'Tref':('default','default=25')
161+
}
162+
163+
var=pvl_tools.Parse(Vars,Expect)
164+
165+
var.M=np.max(var.M,0)
166+
a_ref=var.ModuleParameters.A_ref
167+
IL_ref=var.ModuleParameters.I_l_ref
168+
I0_ref=var.ModuleParameters.I_o_ref
169+
Rsh_ref=var.ModuleParameters.R_sh_ref
170+
Rs_ref=var.ModuleParameters.R_s
171+
172+
173+
k=8.617332478e-05
174+
Tref_K=var.Tref + 273.15
175+
Tcell_K=var.Tcell + 273.15
176+
177+
var.S[var.S == 0]=1e-10
178+
E_g=var.EgRef * ((1 + var.dEgdT*((Tcell_K - Tref_K))))
179+
180+
nNsVth=a_ref*((Tcell_K / Tref_K))
181+
182+
IL=var.S / var.Sref *(var.M) *((IL_ref + var.alpha_isc * ((Tcell_K - Tref_K))))
183+
I0=I0_ref * (((Tcell_K / Tref_K) ** 3)) * (np.exp((var.EgRef / (k*(Tref_K))) - (E_g / (k*(Tcell_K)))))
184+
Rsh=Rsh_ref * ((var.Sref / var.S))
185+
Rs=Rs_ref
186+
187+
return IL,I0,Rs,Rsh,nNsVth

0 commit comments

Comments
 (0)