Hello,
I'm comparing the tracking angles from a simple PVSyst simulation with the tracking angles given by pvlib.tracking.singleaxis(), and I expect a very similar result between them. I do get a near-perfect match during the middle of the day, however I see the angles deviate significantly during backtracking times. The angles match only when I slightly modify the GCR in the pvlib function (from 50% to 50.25%), which suggests to me that the backtracking GCR in PVSyst may not be what I set myself (50%). Am I setting up the PVSyst simulation properly to compare with the pvlib function? I understand that there are "hidden parameters", but I haven't found one that changes the backtracking angles.
My PVSyst setup is as follows:
- 5 single-axis trackers defined on flat ground, 150 modules total, 1P orientation
- module length: 2000mm, module width: 1000mm
- unlimited trackers, pitch: 4m, GCR: 50%
My pvlib inputs are:
pvlib_tracking = tracking.singleaxis(
apparent_zenith=90 - df["HSol"],
apparent_azimuth=df["AzSol"] + 180,
axis_tilt=0,
axis_azimuth=180,
cross_axis_tilt=0,
max_angle=60,
backtrack=True,
gcr=0.5,
)
I compare pvlib's "tracker_theta" output with PVSyst's "PhiAng" output. The plot below shows the yearly differences (up to 5-6 degrees during backtracking times):
When I change the pvlib GCR to 0.5025 (corresponds to a ~0.02m difference in the pitch), the discrepancy goes away:
To better match the pvlib function at GCR=50% I tried setting PVSyst hidden parameters such as "Shed field default frame margin" to zero, but I didn't see a change in the resulting angles.