Should we apply consistent plane-of-array irradiance for calculating cell temperature and effective irradiance?
See original GitHub issueHi there,
I have recently started working with pvlib-python (v0.8.0). I have gone through the basic A simple ModelChain example tutorial. It works well. But after exploring mc
attributes, I got myself confused with irradiance for calculating cell temperature and effective irradiance, which I really appreciate your help.
I found that cell temperature could be calculated as:
# equal to mc.cell_temperature
mc.total_irrad['poa_global'] \
* (np.exp(temperature_model_parameters['a']
+temperature_model_parameters['b']*weather['wind_speed'])) \
+ weather['temp_air'] \
+ mc.total_irrad['poa_global'] / 1000 * temperature_model_parameters['deltaT']
Hence cell temperature is based on EPOA without any reflection, shading, or soiling losses.
Then I found that effective irradiance could be calculated as:
# equal to mc.effective_irradiance
mc.spectral_modifier * (mc.aoi_modifier*mc.total_irrad['poa_direct']+mc.total_irrad['poa_diffuse'])
rather than:
# unequal to mc.effective_irradiance
mc.spectral_modifier * mc.total_irrad['poa_global']
Hence I believe that the reflection losses (i.e. AOI modifier) is taken into account in calculating effective irradiance.
This really bothers me despite small differences in results. I think that the only difference in calculating cell temperature and effective irradiance is that the later contains additional spectral losses? The two should be consistent in including/excluding reflection, shading, and soiling losses according to modeling steps described here or here?
Yours faithfully, Fei
Issue Analytics
- State:
- Created 3 years ago
- Comments:10 (5 by maintainers)
Top GitHub Comments
@FeiYao-Edinburgh,
I suppose the explanation depends on how ‘plane of array irradiance’ is defined. In pvlib-python, ‘poa_global’ is the broadband irradiance reaching the face of the module, i.e., reduced by shading and soiling but not adjusted for spectrum or reflections. The tutorial page is a little confusing in that it does not define either plane-of-array or effective irradiance irradiance. I think that page is meant as a general guide rather than a precise description.
In pvlib effective irradiance is the irradiance reaching a module’s cells, i.e., ‘poa_global’ adjusted for spectrum and reflection.
The challenge is with the temperature model coefficients. The values supplied with pvlib have been determined by regressing measured module backsheet temperatures to plane-of-array irradiance measured with an in-plane broadband pyranometer (and also to ambient air temperature and wind speed). As a consequence, the irradiance used to fit the model is not adjusted for reflection or spectral modifiers. That’s why pvlib uses ‘poa_global’ in the temperature functions.
However, IMO when ‘poa_global’ is not available (e.g., when irradiance is measured in-plane with a reference cell) it is acceptable to use effective irradiance instead of poa_global with the same model parameters. The difference in model output will be on the order of one degree C, which is similar to the uncertainty of the temperature models.
No. I have just started learning and using pvlib-python.
This makes sense in that:
Yes I agree that it might be enough to make a memo on this issue for the time being.
Thanks for the discussion.