question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Should we apply consistent plane-of-array irradiance for calculating cell temperature and effective irradiance?

See original GitHub issue

Hi 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:open
  • Created 3 years ago
  • Comments:10 (5 by maintainers)

github_iconTop GitHub Comments

3reactions
cwhansecommented, Sep 21, 2020

@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.

0reactions
FeiYao-Edinburghcommented, Sep 22, 2020

Do you see any other place where there’s a gap or snag in the calculation process?

No. I have just started learning and using pvlib-python.

The quantities between ‘poa_global’ and ‘effective_irradiance’ are possibilities for naming. I’ve seen “incident irradiance” used for the irradiance reaching the surface of a module, and “absorbed irradiance” for the irradiance reaching the cells prior to spectral adjustment.

This makes sense in that:

  • incident irradiance: the irradiance reaching the surface of a module, accounting for shading and/or soiling losses
  • absorbed irradiance: the irradiance reaching the cells, further accounting for reflection losses
  • effective irradiance: the irradiance reaching used by cells with spectral adjustment

Yes I agree that it might be enough to make a memo on this issue for the time being.

Thanks for the discussion.

Read more comments on GitHub >

github_iconTop Results From Across the Web

The Effect of Irradiance and Temperature on the Performance ...
Such consistent behaviour suggests that detailed tempera- ture-irradiance characterization may not be required for all mono-c-Si module models. Currently, the ...
Read more >
Weather-Corrected Performance Ratio - NREL
This resulting annual average cell temperature will be a constant for all further calculations. Because this averaged value is irradiance weighted, hours with ......
Read more >
Experimental Application of Methods to Compute Solar ... - NCBI
Solar irradiance and cell temperature are the most significant aspects ... The calculation of G using the Impp value is described in [34], ......
Read more >
Photovoltaic Array Performance Model - ESIG
When direct measurements of solar resource variables are used, then alternative procedures can be used for determining the effective irradiance, ...
Read more >
Measuring irradiance, temperature and angle of incidence ...
The results were consistent with our expectations based on existing literature. From this, we infer that the test-bed is effective at measuring module ......
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found