Skip to content

Pvlib vs PVsyst mismatch using identical hourly weather input #2652

Closed

Description

@eilon-voltify

Summary

I’m comparing pvlib (ModelChain + PVWatts) to PVsyst UI while using the exact same imported hourly weather file.
Even after refining my pvlib configuration, there is still a clear difference in total energy produced over the same simulation period.

PVsyst UI produces lower total energy than pvlib(17,224 kWh vs 15,800 kWh) in 7 days run, despite identical weather input and equivalent system setup.

Description of the issue

The goal is to reproduce PVsyst UI hourly AC output as closely as possible using pvlib.

I am loading the same hourly weather CSV (GHI, DNI, DHI, ambient temperature, wind speed) that was imported into PVsyst, and using equivalent system parameters (site location, DC size, AC size, tilt, azimuth, losses, and temperature model).

While the overall production profile looks similar, the integrated energy over the full period is consistently higher in pvlib than in PVsyst.

I’m trying to understand whether this type of discrepancy is expected when comparing pvlib’s ModelChain (PVWatts-based) to PVsyst UI, or whether there are specific modeling aspects in pvlib that should be handled differently when aiming to align with PVsyst results.

What I’m looking for

I would appreciate guidance on:

How pvlib users typically approach comparisons against PVsyst UI

Whether differences of this type are considered normal between the two tools

If possible, I would appreciate any feedback after reviewing the attached PVsyst report PDF and the pvlib configuration, in case there is a configuration or modeling detail I may be missing.

Attachments

PVsyst simulation report (PDF)

Hourly weather CSV used by both PVsyst and pvlib

Full pvlib script (attached)

trona_weather_20251211_131729.csv

trona_forecast.py

1_PDFsam_TRONA.South.imported.weather.1.pdf

Activity

  1. cwhanse commented on Jan 11, 2026

    @cwhanse
    Member

    pvlib tries to provide functions consistent with PVsyst documentation. However, there are many details of PVsyst that are not documented sufficiently to be confident about a pvlib function, for example, the application of losses, and the internal calculation of module and inverter parameters. So any comparison between PVsyst results and pvlib scripts should keep that in mind.

    I don't think the weather is the same in both simulations. Although the same weather file is supplied, it appears to me that PVsyst is doing some filtering, or perhaps applying the Unavailability loss by zeroing out weather periods instead of a fractional reduction in the DC power. Running your script I get

    mc.results.total_irrad['poa_global'].sum()
    Out[19]: np.float64(25668.000984175153)
    
    mc.results.weather['ghi'].sum()
    Out[20]: np.float64(17785.47)
    

    The PDF report gives GlobHor (GHI) as 13.94 kWhr/m2, and GlobInc (poa_global) as 21.09 kWhr/m2, consistently lower and in the same range as the difference in AC power you cite. I would start by getting the pvlib script to produce irradiance much closer to the PVsyst report.

  2. locked and limited conversation to collaborators on Jan 13, 2026
  3. converted this issue into a discussion #2654 on Jan 13, 2026
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