From b2b2cafb6b896ef3b70fb9ee4bbd6de503e15aff Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Wed, 18 Oct 2023 14:10:59 -0400 Subject: [PATCH 1/5] draft roadmap page --- docs/sphinx/source/user_guide/roadmap.rst | 149 ++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 docs/sphinx/source/user_guide/roadmap.rst diff --git a/docs/sphinx/source/user_guide/roadmap.rst b/docs/sphinx/source/user_guide/roadmap.rst new file mode 100644 index 0000000000..10c90b6f42 --- /dev/null +++ b/docs/sphinx/source/user_guide/roadmap.rst @@ -0,0 +1,149 @@ +.. _roadmap: + +pvlib Roadmap +============= + +**Last revision: October 2023** + +This document outlines a "wish list" for advancing pvlib-python, focusing +on gaps in functionality and other code-related areas of improvement. + +Achieving these improvements will depend on community contributions. +Therefore, it's not reasonable to set forth a timeline for this roadmap +to be completed. +For a more concrete plan of short-term additions to pvlib, please see +the `milestone page `_ +on GitHub. + +Additionally, an idea being listed here is no guarantee that it +will ever be added to pvlib, nor is omission from this page an +indication that an idea is not of interest. This roadmap is an update +of previous roadmaps based on requests from users: + +* `2023 pvlib-python user meeting notes + `_ +* `2022 pvlib development roadmap + `_ +* `2019 pvlib-python development roadmap + `_ + + +Core modeling capabilities +-------------------------- +The core functionality of pvlib is its library of model functions, +organized by the various conceptual steps of a PV system performance +simulation. pvlib has robust modeling capability in many of these topic +areas, but coverage in some areas is poor or nonexistent. Here is a +partial list of modeling areas that could be improved: + +* Improved inverter performance models (power factor, off-MPP operation, + thermal derating, MPPT voltage range) +* DC-DC optimizer performance models +* Transformer models +* Electrical mismatch functionality +* Improved snow loss models, in particular for bifacial and tracked systems +* Shade models +* Degradation +* More sophisticated single-axis tracker models +* Bifacial irradiance models +* Updated parameter libraries, e.g. the CEC PV Module database + +Note that published models may not exist for some of these enhancements, +models would need to be developed and published before pvlib can +provide a reference implementation. + + +Auxiliary modeling capabilities +------------------------------- +Increasingly, pvlib is gaining functionality outside of the typical +modeling workflow, for example parameter estimation/fitting, converting +parameters between similar models, and clear-sky detection. +These kinds of methods are not usually implemented in other +performance modeling software, meaning providing pvlib implementations +is of significant value. However, making progress here is also somewhat +constrained by the small number of existing published methods that can be +implemented. + + +System simulation +----------------- +pvlib's :py:class:`~pvlib.pvsystem.PVSystem` and +:py:class:`~pvlib.modelchain.ModelChain` classes connect the individual +model functions together to provide coherent system simulations. +However, not all of pvlib's models are accessible with these classes. +For example: + +* Bifacial irradiance models +* Internal, external, and horizon shading +* Soiling loss models + +In addition to more comprehensive integration of pvlib's model functions, +the scope of these high-level capabilities could be expanded: + +* Multi-inverter systems +* Geographic and electrical coordinate systems, to enable more detailed modeling +* "out-of-code" model specification (e.g. configuration files) + + +Data I/O +-------- +:py:mod:`pvlib.iotools` provides functions to import + weather datasets, horizon profiles, component specifications, +and other external data. Expanding this capability by +adding functions for additional data sources is of significant interest. +:py:mod:`pvlib.iotools` would also benefit from further standardization +(``map_variables``, etc) and more documentation. + +See :discuss:`1528` for a detailed plan for :py:mod:`pvlib.iotools`. + + +Speed improvements & benchmarking +--------------------------------- +The value of improved computation speed is growing over time +as pvlib is increasingly used in commercial APIs, large-scale +research studies, and high-resolution timeseries simulations. +However, benchmarking and improving the runtime of pvlib's codebase +has received only sporadic and unfocused attention so far. +Establishing a comprehensive set of speed (and potentially memory) +benchmarks would be a good place to start. Identified bottlenecks +should be reviewed and made more efficient if possible. If not, +then alternative models could be implemented for cases where +speed is the priority. + +As accelerator tools like Numba continue to mature, they should be +evaluated for potential use in pvlib. Although fast runtime speed is +desirable, it must be weighed against code maintainability and portability. + +For modeling topics where runtime can be significant (e.g. solar position), +the relevant User's Guide documentation section could include speed +comparisons. + + +Documentation +------------- +pvlib's documentation is overdue for a revision, with a focus on +strategic organization. See :issue:`329` for a specific proposal. + +Within that framework, better "getting started" tutorials are needed. +However, the scope should probably stick to pvlib usage. PV modeling in +general is better left to other projects like the +`PVPMC website `_ or the +`conference tutorials `_. + +The gallery of examples could be significantly expanded as well. +An aspirational goal could be for every public function to be used +in at least one gallery page. + +Additionally, it would be nice to have a project website (pvlib.org?) +with scope going beyond code documentation. + + +API cleanup +----------- +Some parts of pvlib's API should be cleaned up before version 1.0 +is eventually released. Examples of such cleanup include migrating some code +from :py:mod:`pvlib.pvsystem` to :py:mod:`pvlib.pvarray` and renaming +parameters with inconsistent names. + +Taking stock of changes needed before 1.0 is the first step. Then, +actually implementing the changes will likely require deprecation periods. From 4e3dae4e291f4732b07f09ce64aeef9e57db4157 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Thu, 19 Oct 2023 12:08:51 -0400 Subject: [PATCH 2/5] list roadmap page in user guide index --- docs/sphinx/source/user_guide/index.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/sphinx/source/user_guide/index.rst b/docs/sphinx/source/user_guide/index.rst index 3426880167..f0232fcfe5 100644 --- a/docs/sphinx/source/user_guide/index.rst +++ b/docs/sphinx/source/user_guide/index.rst @@ -17,4 +17,5 @@ User Guide comparison_pvlib_matlab variables_style_rules singlediode + roadmap faq From e93156518c6c332ec8317d82ebce2db32a5d2e63 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Thu, 19 Oct 2023 12:12:38 -0400 Subject: [PATCH 3/5] whatsnew --- docs/sphinx/source/whatsnew/v0.10.3.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/sphinx/source/whatsnew/v0.10.3.rst b/docs/sphinx/source/whatsnew/v0.10.3.rst index 0853254983..12ec42f124 100644 --- a/docs/sphinx/source/whatsnew/v0.10.3.rst +++ b/docs/sphinx/source/whatsnew/v0.10.3.rst @@ -24,6 +24,7 @@ Testing Documentation ~~~~~~~~~~~~~ +* Create :ref:`roadmap` page. (:pull:`1893`) Contributors From 0819efe2b4b6cdce6bfc50a65ce2184eb7acc094 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Thu, 19 Oct 2023 12:39:42 -0400 Subject: [PATCH 4/5] formatting fix --- docs/sphinx/source/user_guide/roadmap.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sphinx/source/user_guide/roadmap.rst b/docs/sphinx/source/user_guide/roadmap.rst index 10c90b6f42..ee4e508dce 100644 --- a/docs/sphinx/source/user_guide/roadmap.rst +++ b/docs/sphinx/source/user_guide/roadmap.rst @@ -88,7 +88,7 @@ the scope of these high-level capabilities could be expanded: Data I/O -------- :py:mod:`pvlib.iotools` provides functions to import - weather datasets, horizon profiles, component specifications, +weather datasets, horizon profiles, component specifications, and other external data. Expanding this capability by adding functions for additional data sources is of significant interest. :py:mod:`pvlib.iotools` would also benefit from further standardization From 7863d7a18173a0ad6a34cfee8c5c8fb8496b33f0 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Thu, 19 Oct 2023 14:07:37 -0400 Subject: [PATCH 5/5] Add some more detail --- docs/sphinx/source/user_guide/roadmap.rst | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/sphinx/source/user_guide/roadmap.rst b/docs/sphinx/source/user_guide/roadmap.rst index ee4e508dce..b25ab9aa06 100644 --- a/docs/sphinx/source/user_guide/roadmap.rst +++ b/docs/sphinx/source/user_guide/roadmap.rst @@ -42,10 +42,14 @@ partial list of modeling areas that could be improved: * Transformer models * Electrical mismatch functionality * Improved snow loss models, in particular for bifacial and tracked systems -* Shade models -* Degradation -* More sophisticated single-axis tracker models -* Bifacial irradiance models +* Shade models: row-to-row, external (e.g. trees), horizon +* Degradation: we can at least provide the trivial linear model, and + add more sophisticated predictive models as they become available. +* More sophisticated single-axis tracker models, e.g. split-boost backtracking, + rotation discretization, stow +* Bifacial irradiance modeling beyond the relatively basic models currently + available in pvlib. Irradiance nonuniformity, varied terrain and albedo, + racking shade, and other effects are not accounted for in the current models. * Updated parameter libraries, e.g. the CEC PV Module database Note that published models may not exist for some of these enhancements,