Skip to content

Consider allowing return_components in all transposition model functions #1553

Open
@kandersolar

Description

@kandersolar

Access to sky diffuse irradiance in component form (typically, isotropic + circumsolar + horizon) is needed for diffuse IAM and shading/view factor loss modeling. pvlib.irradiance.perez has the ability to return separate in-plane sky diffuse components in addition to the combined quantity sky_diffuse, but currently perez is the only transposition function with that ability. Adding this return_components option to more models was briefly discussed in #434 but it was decided to limit it to perez at that time. I'd like to pick up that discussion in the context of pvlib's current and future expanded capabilities regarding diffuse IAM and shade modeling.

As I understand them, the isotropic, haydavies, klucher, and reindl models can all be considered as fitting naturally into the same isotropic/circumsolar/horizon organization as perez (though the simpler models might have one or two of those components equal to zero). I'm not sure about the king model. So, with the possible exception of king, it seems that there is no conceptual barrier to extending the other models with a return_components option to return the same components as perez does.

In addition to making the function level of pvlib more useful on its own, a uniform interface for diffuse components across all (or most) transposition functions would enable improvements to the higher-level constructs ModelChain and infinite_sheds:

  • infinite_sheds could be generalized to make use of anisotropic transposition models (Hay and Davies Modification for infinite_sheds #1551)
  • ModelChain could apply the same IAM to the circumsolar component that it does to poa_direct, as well as make use of other component-specific IAMs from e.g. marion_diffuse

One concern about extending return_components to all models in #434 was the API (returning a DataFrame, e.g.). I think I'm okay with what is currently used in perez, but bring it up for discussion here.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions