SolarArbiter / solarforecastarbiter-core

Core data gathering, validation, processing, and reporting package for the Solar Forecast Arbiter
https://solarforecastarbiter-core.readthedocs.io
MIT License
33 stars 21 forks source link

Add wind power modeling #790

Open dplarson opened 1 year ago

dplarson commented 1 year ago

Similar to the existing solarforecastarbiter.pvmodel, add code to automate wind power modeling within the Arbiter, possibly using an existing (open-source) wind power modeling library.

williamhobbs commented 1 year ago

windpowerlib seems like a popular tool (e.g., feedinlib uses pvlib for solar and windpowerlib for wind).

There's also the pysam Python wrapper around NREL SAM. It is significantly larger than windpowerlib, approximately 30 MB vs 60 kB, which is probably a consideration.

dplarson commented 1 year ago

We've had success using windpowerlib on some other projects and so it's probably a good way to start. The bigger question is what we should assume about the wind farm/turbines vs what we require as an input from users. For example, maybe the user inputs the turbine hub height and installed capacity, but then SFA uses a generic wind speed vs power profile.

dplarson commented 1 year ago

Since the goal for this functionality is being able to create reference data, I'm thinking a good starting point is using windpowerlib with the user providing location, installed capacity (MW) and hub height (m) of the wind farm/turbine. Then the SFA uses a generic wind speed vs power profile, which will likely be taken from the profiles included in windpowerlib, to do the resource-to-power modeling.

williamhobbs commented 1 year ago

Having the option to enter a project-specific power curve could be worthwhile, as different specific-power and other aspects can result in very different performance at "medium" wind speeds. It looks like defining a power curve for a turbine in windpowerlib is pretty simple, https://github.com/wind-python/windpowerlib#use-your-own-turbine-data. Just hub height, nameplate, and a series of wind speed/power pairs (CSV or dataframe, I think).