DuraMAT / pv-terms

Standard Nomenclature for PV Systems
BSD 3-Clause "New" or "Revised" License
17 stars 3 forks source link

Temperature coefficient labels #25

Open toddkarin opened 4 years ago

toddkarin commented 4 years ago

It is a little strange to use beta_voc_ref for the temperature coefficient. Most people would prefer to use beta_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.

cwhanse commented 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?

toddkarin commented 4 years ago

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.

mdeceglie commented 4 years ago

I'm in favor of getting rid of _ref and letting it be implied.

mdeceglie commented 4 years ago

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

toddkarin commented 4 years ago

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.

toddkarin commented 4 years ago

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.

mdeceglie commented 4 years ago

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.

cwhanse commented 4 years ago

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.

steve-ransome commented 4 years ago

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.

toddkarin commented 4 years ago

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.