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

Diffuse Irradiance Optimization for Single Axis Trackers

Open kurt-rhee opened this issue 2 years ago • 13 comments

Is your feature request related to a problem? Please describe. Some tracker manufacturers have implemented a diffuse irradiance optimization algorithm into their controls. The algorithm determines which angle the tracker should track to in order to maximize plane of array irradiance given the current irradiance conditions in terms of DHI and DNI.

Describe the solution you'd like I would like to model a generic diffuse irradiance optimization algorithm in pvlib.

Describe alternatives you've considered Instead of implementing this feature inside of the library, it could be posted as a user guide.

Additional context PlantPredict is about to release a new 2 parameter diffuse irradiance optimization algorithm in our next major version release. The two parameters are meant to reduce overestimation from irradiance optimization algorithms which are too ideal. I used pvlib in order to test the algorithm before having it implemented in C# and would be happy to contribute the code to pvlib (if there is any interest from the maintainers/community of course). The is no paper yet unfortunately. My hope is to publish at next year's PVSC.

There is some available documentation here:

https://terabase.atlassian.net/servicedesk/customer/portal/3/article/1260060675

High level notes:

  • For loop through all tracking angles from minimum rotation angle to maximum rotation angle with a step of 1 degree
  • Choose whichever angle gave the best plane of array irradiance
  • If a tracker rotation speed or a hesitation factor are != 0
  • Calculate what percentage of the timestep the tracker is in motion, what percentage of the timestep the tracker hesitates before beginning its movement towards the ideal tracker angle
  • Create a corrected angle which is the weighted average angle between the ideal tracker angle, the in transit tracker angle and the hesitation tracker angle.
  • If tracker rotation speed and hesitation factor are == 0
  • Diffuse optimization algorithm is ideal
  • Return the corrected angle

kurt-rhee avatar Mar 10 '23 19:03 kurt-rhee

I'm going to address this issue if no objections are made.

The high level notes section is the methodology used in order to create the optimization algorithm, right? I still have to read a few papers before a PR. But from the web page, a PVLIB implementation seems feasible.

echedey-ls avatar Jan 27 '24 19:01 echedey-ls

Hey @echedey-ls that is correct, if it is helpful, I can provide the C# code here as a comment.

kurt-rhee avatar Jan 27 '24 19:01 kurt-rhee

Glad to hear that @kurt-rhee !

I will have to write the tests and from a quick glance at the papers, I don't have a clue on where to start. So maybe checking against that could be an option? Maybe there's an easier path. I don't really see another reason to share them, but who knows.

If it's not a big deal for you then, please provide it. Anyways, thanks for the fast response!

echedey-ls avatar Jan 27 '24 19:01 echedey-ls

Of course! I would like to see if the maintainers are interested in including this feature in pvlib though before starting. Since there is no paper that specifies the algorithm, it may fall beneath the bar for inclusion.

kurt-rhee avatar Jan 27 '24 20:01 kurt-rhee

@kurt-rhee there is that Terabase link right in Atlassian, any way to upload that to zenodo?

mikofski avatar Jan 27 '24 21:01 mikofski

@mikofski absolutely, I'll shoot for having a copy up there in one week

kurt-rhee avatar Jan 27 '24 21:01 kurt-rhee

I think there is room for these kinds of models in pvlib. @kurt-rhee is a paper for this model in the works? I need to read that docs page in more detail, but on first glance I'm not sure its content is detailed enough to act as a reference for a pvlib implementation.

Also FYI I notice a minor inconsistency on that webpage: it says that $\mu$ and $\eta$ range from 0-100, but the equation for $\theta_c$ treats them as quantities from 0-1.

kandersolar avatar Jan 27 '24 23:01 kandersolar

@kandersolar thanks for pointing out that error in the documentation, I have corrected it.

As for the paper, I haven't started it, but I wouldn't mind writing one. I only have experience writing papers for the PVSC conferences, do you have any suggestions of where else I could submit it? We just passed the submission window for this year's PVSC.

kurt-rhee avatar Jan 28 '24 23:01 kurt-rhee

@mikofski

I wasn't able to get into Zenodo unfortunately, looks like they are having some issues with their login right now. I tried on firefox and chrome. Open issue on github (https://github.com/zenodo/zenodo/issues/2176)

kurt-rhee avatar Jan 29 '24 15:01 kurt-rhee

PVPMC would be a good reference - wish we could also share some validation data, maybe check with @williamhobbs or @abhisheksparikh

mikofski avatar Jan 29 '24 16:01 mikofski

I'd be glad to chat about possible validation data. I think folks can find my work email via LinkedIn, or personal email in the pvlib google group.

Outside of NREL arrays, the NIST demo site, etc., some relatively new public datasets options are:

  • DOE Solar Data Bounty Prize sites: see https://openei.org/wiki/PVDAQ, https://doi.org/10.25984/1846021 (and the upcoming DOE/NREL webinar)
  • EPRI SSRC: data here https://github.com/epri-dev/PV-Subhourly-Clipping, briefly discussed here https://github.com/pvlib/pvlib-python/discussions/1889#discussion-5743633. An EPRI report describing the dataset in more detail is pending, but I'd be glad to chat offline to fill in gaps.

williamhobbs avatar Jan 29 '24 17:01 williamhobbs

PVPMC would be a good reference

This is an open, unanswered question: #1898

adriesse avatar Jan 29 '24 20:01 adriesse

@mikofski I agree that some validation would be great. I won't be given time this year to work on a validation study, but if anybody here now or in the future is interested in studying it I can provide the code in python, C#, or a research license to PlantPredict

kurt-rhee avatar Jan 30 '24 21:01 kurt-rhee