Open toddkarin opened 4 years ago
I tend to agree that beta_voc
and other temperature coefficients are usually assumed to be at reference condition. Do you recall where the beta_voc_ref
term originated?
The idea was that we have variables like voc
and voc_ref
referring to the open-circuit voltage and the open-circuit voltage at reference conditions respectively. Similarly, there is also a temperature coefficient of Voc in general conditions (our beta_voc
) and then another one at reference conditions (beta_voc_ref
). In practice the PV community almost never uses needs a general term for beta_voc
at any conditions.
I'm in favor of getting rid of _ref
and letting it be implied.
Along the same lines, I think most people use the normalized versions of coefficient and things like beta_voc_ref_normalized
become unwieldy for the thing most folks are wanting to use. I would advocate for all temperature coefficients to take the form beta_voc
or similar and for that to imply normalized at standard conditions. If people need the less common thing we can add beta_voc_nonref_nonnormalized
Sounds good, we will remove _ref
from these variables.
@mdeceglie: regarding normalization, we discussed this at length, and it seems like pvlib is almost exclusively uses non-normalized values for the temperature coefficients beta_voc
. See fit_sdm_desoto and ivtools. I also believe @cwhanse had a strong preference for this non-normalized temperature coefficients.
What do you think about resistance_series
vs. resistance_series_ref
? In principle series resistance could depend on e.g. temperature, but in practice it is generally assumed not to, so this could be another good place to remove _ref
. Note that resistance_shunt_ref
and resistance_shunt
are both necessary since shunt resistance often is assumed to have an irradiance dependence.
Regarding _normalized
, I see that in pvwatts_dc, the normalized version of the power temperature coefficient is used and called gamma_pdc
Temperature coefficients are usually reported in normalized form on data sheets which makes it the natural choice for me.
My issue with normalized temperature coefficients is that the value doesn't stand on it's own - you also need the reference value (e.g. Voc at STC). The SAPM function uses normalized temperature coefficients for current, and I wish it didn't. It does because the legacy database of model parameters has values in 1/C, we could code around that but haven't.
resistance_series_ref
is appropriate, in case a performance model includes a temperature or irradiance dependence of series resistance. For pvlib, not appending the series resistance model parameter with _ref
or 0
has been called out as inconsistent several times.
I prefer normalised temperature coefficients because the value is easy to check if it's of the right order (e.g. -0.0045/K) and it stays the same in cells, modules or strings. We also use the equivalent of beta_voc_ref for the data sheet value and the equivalent of beta_voc_meas from fitting of the measurement data so we can compare with what it "should" be. Measured Resistance_shunt certainly varies with irradiance and often with time as the module may degrade. Measured Resistance_series usually has a small temperature dependence to (negative dRs/dTmod for thin films because of the TCO and positive for crystalline as it's dominated by the tabbing metal) - it too changes as the module degrades.
Here's a concrete example, in pvlib.singlediode.calcparams_desoto
there is a line for calculating the photocurrent:
IL = effective_irradiance / irrad_ref * (I_L_ref + alpha_sc * (Tcell_K - Tref_K))
alpha_sc
(units of A/C), is not the coefficient of short-circuit current that would be on a datasheet. For a module with non-negligible series and shunt resistance in short-circuit conditions, there is some voltage across the diode. So the photocurrent is not exactly equal to the short-circuit current, and also the temperature dependence of isc
is not exactly equal to the alpha_sc
in the equation above.
I just ran a calculation across the CEC database, and the difference between alpha_sc
calculated with series/shunt resistance vs. without is on average 0.05%, pretty small.
This is just one parameter, but I think this illustrates another issue: the alpha_isc
used in the single diode model is not exactly the same as the value quoted on the datasheet.
Incidentally, pvsyst also defines the temperature coefficent muIsc
in units of A/C.
So, to conform to the existing main pv software packages, I would vote for non-normalized temperature coefficients. @steve-ransome , it is pretty straightforward to divide to check if the value is on the right order of magnitude.
It is a little strange to use
beta_voc_ref
for the temperature coefficient. Most people would prefer to usebeta_voc
to mean the temperature coefficient of Voc near reference conditions. Shall we remove the_ref
suffix for these variables that are generally understood to be at reference conditions?@cwhanse, @mdeceglie let me know what you think.