Skip to content

Allow arbitrary IAM function in pvlib.iam.marion_diffuse #2049

Open

Description

@markcampanelli

Is your feature request related to a problem? Please describe.
I am working on an application using pvlib.iam.marion_diffuse, and I would like to inject my own IAM function (from interpolated IEC 61853-2 data) as a parameter to pvlib.iam.marion_diffuse.

Describe the solution you'd like
Add the option for passing a callable to pvlib.iam.marion_diffuse instead of the existing strings for the builtin IAM model functions. (The existing strings would still be accepted.)

Also add a function to create IAM functions as a PCHIP interpolation of data such as from IEC 61853-2. Note that this solution can also be made to add support for passing the existing pvlib.iam.interp function (whose cubic option is slightly different that pchip) to pvlib.iam.marion_diffuse.

Describe alternatives you've considered
Rolling my own interpolant each time, and then calling the lower-level pvlib.iam.marion_integrate for each of the three components.

Additional context
This is a followup to #1980, but without any concern to improving the diffuse-horizontal integral.

image

Activity

  1. adriesse commented on May 13, 2024

    @adriesse
    Member

    Have you considered adding the pchip option into pvlib.iam.interp rather than creating a new function?

  2. markcampanelli commented on May 13, 2024

    @markcampanelli
    ContributorAuthor

    @adriesse

    Have you considered adding the pchip option into pvlib.iam.interp rather than creating a new function?

    I am open to this consolidation. Do you think folks would be open to pvlib.iam.interp returning a callable that could then be passed to the new pvlib.iam.marion_diffuse (or used for other calculations)?

    If I understand correctly, this avoids some overhead of recreating the interpolating function on each usage, although it would break the existing interface to pvlib.iam.interp.

  3. adriesse commented on May 14, 2024

    @adriesse
    Member

    @adriesse

    Have you considered adding the pchip option into pvlib.iam.interp rather than creating a new function?

    I am open to this consolidation. Do you think folks would be open to pvlib.iam.interp returning a callable that could then be passed to the new pvlib.iam.marion_diffuse (or used for other calculations)?

    If I understand correctly, this avoids some overhead of recreating the interpolating function on each usage, although it would break the existing interface to pvlib.iam.interp.

    I think Marion only has one call to the model.

  4. markcampanelli commented on Jul 1, 2024

    @markcampanelli
    ContributorAuthor

    I noticed that the builtin interp and schlick AOI modifiers didn't have full support in ModelChain like the other builtins, so I'm trying to add that here too.

  5. echedey-ls commented on Jul 1, 2024

    @echedey-ls
    Member

    Feel free to break down these issues into different PRs, doing too many things in one big PR makes the review process more time consuming - and reviewers more hesitant to review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions