Pvlib for Julia?

Hi,

I have been happily using Julia for a year or so now after being a python user for many more years.

The only thing I am really missing is a substitute for pvlib. pvlib is a popular toolbox for photovoltaic systems modelling. Given all the other modelling tools available in Julia it seems like the perfect activity to do in Julia, yet nothing exists (as far as I have found).

Ofcourse I could use PyCall.jl or some other kind of glue layer but to the honest, the python package began development in 2013 by Sandia National Laboratories and even though it is still in active development its API feels quite dated.

So that brings me to my question. Is there any interest from the Julia community to build a new library for modelling solar systems in native Julia? I imagine (or hope) this is something many scientists and engineers working in energy would be interested in.

3 Likes

I wonder if NREL might have developed something similar in Julia? Haven’t seen anything on their GitHub org though

I checked out their repositories but I don’t see anything specific to photovoltaics modelling. However, given NREL’s involvement with pvlib I’m sure they have thought about it.

1 Like

I am more into wind energy, but writing something like pvlib in Julia should be straightforward. If you find a student who wants to do it I could supervise him or her (I am electrical engineer by training with a focus on renewable energies, now postdoc).

4 Likes

If you’re going to write a new library in this space, I would definitely try to make it differentiable by AD. (A colleague of mine supervised a student who did a differentiable PV simulator of this sort, albeit in Python; it’s not that hard to set up if you plan for it from the beginning.)

4 Likes

Happy to assist with any AD or ImplicitDifferentiation.jl needs, since there seems to be a mention of the implicit function theorem

2 Likes

That’s a great idea. It’s really impressive to see differentiable solar cell simulations. Do you know of any such work at the module level?