pvlib-python icon indicating copy to clipboard operation
pvlib-python copied to clipboard

Update default transposition model

Open AdamRJensen opened this issue 1 year ago • 7 comments

Having the default transposition model be isotropic seems like a very poor choice. Isotropic models are known to have very large biases and should only be used in very specific use cases (generally not be new users).

I did a brief survey of commercial software and found that the vast majority only offer the Hay-Davirs and Perez model, with the 1990 Perez model seeming to be favored as the default model.

It would seem to make sense to have the same default model used in pvlib.modelchain.ModelChain.

https://github.com/pvlib/pvlib-python/blob/cb4c1355712255c27ec5211a3cd9d93f12518613/pvlib/irradiance.py#L305-L310

AdamRJensen avatar Sep 15 '23 21:09 AdamRJensen

I suppose this would seen as a "breaking change" and would have to wait until 0.11.0 if we choose to do this.

AdamRJensen avatar Sep 15 '23 21:09 AdamRJensen

I agree with changing the default. IIRC there is some work by Matt Lave that showed Hay-Davies was mildly better when one starts with satellite-based GHI, and Perez better if starting with ground measured GHI. Either is OK with me as a better default.

cwhanse avatar Sep 18 '23 14:09 cwhanse

It would be great if get_total_irradiance could still be run with the current minimal set of inputs, even if the default model is changed to something more sophisticated. #1225 got us halfway there by automatically calculating airmass for Perez, but left ET DNI alone since there is not always a datetime index available to calculate it. Maybe we could examine the inputs to see if a datetime index is available and only raise the error if not?

kandersolar avatar Sep 18 '23 14:09 kandersolar

I’m fine with using a solar constant as default for ET DNI. For example either 1367[Wm-2] or 1400[Wm-2] would be fine as a placeholder for a more exact value imo

mikofski avatar Sep 18 '23 15:09 mikofski

It would be great if get_total_irradiance could still be run with the current minimal set of inputs, even if the default model is changed to something more sophisticated. ... Maybe we could examine the inputs to see if a datetime index is available and only raise the error if not?

This seems like a good approach to me. I suppose it should be incorporated here: https://github.com/pvlib/pvlib-python/blob/46851d91bb70e9b5521feb7ec119b057ec3d7f70/pvlib/irradiance.py#L454-L455

What would be the best way of assessing if the index is datetime? Something like this:

isinstance(d.index, pd.DatetimeIndex)

AdamRJensen avatar Oct 05 '23 08:10 AdamRJensen

I would like to throw my vote in the hat for Perez as the default transposition model, about 90% of predictions run in PlantPredict use the Perez model (this is without regard to the source of the meteorological data). This is an imperfect measure of true usage industry wide, but I think it is a nice data point.

kurt-rhee avatar Jan 04 '24 01:01 kurt-rhee

I suppose this would seen as a "breaking change" and would have to wait until 0.11.0 if we choose to do this.

Seems like we can and should do a deprecation period for this first. That can be implemented any time, so I've removed the v0.11.0 milestone from this issue.

kandersolar avatar Jun 17 '24 16:06 kandersolar