Simple models for nonlinear relationship between irradiance and DC power

75 views
Skip to first unread message

Will Hobbs

unread,
Aug 11, 2025, 5:23:42 PMAug 11
to pvlib-python
I've been using pvlib.pvsystem.pvwatts_dc and appreciate the fact that it is simple and that I can specify gamma_pdc without needing to find or fit a bunch of other coefficients. 

I'm considering whether I need to account for the nonlinear relationship between irradiance and DC power (or efficiency). Is there a commonly used model/method for this?

I would prefer to keep temperature effects separate, I can't always get existing coefficients (e.g., CEC), and I think I'd rather not fit too many coefficients to field data due concerns over things like pyranometer calibration. 

So far, I have found:
1. The PVWatts V1 correction for irradiance below 125 W/m^2 [1], but it didn't seem to work too well [2] 
2. The Marion 2008/2010 correction [3] [4] that uses a 4th power term below 200 W/m^2 and a linear adjustment above 200, and an irradiance correction factor "k" that is the relative reduction in efficiency at 200 W/m^2. (see extra footnote about a possible typo in [3] and [4])

Is there anything else that I'm missing?

Thanks for any pointers.

Will


[extra footnote] I think there is a mistake in the equation for Ee > 200 in Fig 5 in [3]. I think "(Ee-200)" should be "(E0-200)", like in Eq. 10. This is repeated in [4] and at https://pvpmc.sandia.gov/modeling-guide/2-dc-module-iv/point-value-models/pvwatts/improvements-to-pvwatts/.

Mark Campanelli

unread,
Aug 11, 2025, 9:10:31 PMAug 11
to Will Hobbs, pvlib-python
Hi Will,

  Are you mostly/solely concerned with LOW-irradiance nonlinearity? (Cf. high-irradiance “roll off” occurring more noticeably with higher series resistance.)



--
You received this message because you are subscribed to the Google Groups "pvlib-python" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pvlib-python...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/pvlib-python/de1e4d11-04ce-4fe1-88cb-ef72f7230e4bn%40googlegroups.com.

cwh...@sandia.gov

unread,
Aug 11, 2025, 9:15:19 PMAug 11
to pvlib-python
I haven't come across something like PVWatts + one more term. To me [3] is a step towards something like Huld's model, which you also don't want because you'd need to fit an equation.

I agree with you errors in [3]. But I think Eq. 10 is also incorrect: should be -k * (Ee - 1000)/(1000 - 200). As is, power would always be subtracted and not added at 200W/m2.

Cliff

Will Hobbs

unread,
Aug 12, 2025, 12:09:32 AMAug 12
to pvlib-python
Mark - yes, I’m mostly thinking about reduced efficiency at low irradiance. 

Cliff - I was actually looking at Huld, and then realized I couldn’t change the temperature coefficient without refitting everything. At least, it doesn’t appear that would work. 

I think Eq. 10 looked correct when I ran a quick test. But maybe I flipped something. I’ll have to double check when I get a chance. 

Thanks to both of you. 

Will

--
You received this message because you are subscribed to the Google Groups "pvlib-python" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pvlib-python...@googlegroups.com.

Anton Driesse

unread,
Aug 12, 2025, 7:52:43 AMAug 12
to pvlib-...@googlegroups.com

Hi Will,

There is some discussion about such models in this report: https://doi.org/10.2172/1615179.  Two of the models have separate temperature equations and some parameter values are given in the appendix.

I think the bigger problem is that PV modules have significantly different low-light characteristics, so any model--simple or complex--is going be of limited use without some parameter fitting (which is of course hard if the manufacturer doesn't supply the data you would need for fitting).

Anton

To view this discussion visit https://groups.google.com/d/msgid/pvlib-python/CAJDvdRpkFjpVvYy2o33np_wt01ajsp7Xv6ipxQ2sQgxYff198Q%40mail.gmail.com.
-- 
PV Performance Labs
Emmy-Noether-Str. 2
79110 Freiburg
Germany

+49-761-8973-5603 (Office, daytime)
+49-174-532-7677 (Mobile)

www.pvperformancelabs.com

Will Hobbs

unread,
Aug 12, 2025, 11:02:03 AMAug 12
to pvlib-python
Thanks, Anton. 

I've attached a chart with the relative efficiencies from the nine test matrices here [5] (direct link to xlsx download: [6]), plus a manually entered FSLR module eye-balled from Fig. 1 here [7] (it's the line in my chart with the highest value at 400 W/m^2), all at 25 deg C. 

I also added two of the MotherPV fits from [8] and two corrections from Marion 2008 [3] with arbitrary k values. 

Anton - you noted that any model is going to be of limited use without parameter fitting. It seems to me that, assuming the test matrices from CFV are reasonably representative of what could be installed (big assumption), I would be better off at least using something like the MotherPV LG fit correction than doing no correction at all. 



Picture1.png


Mark Campanelli

unread,
Aug 12, 2025, 11:29:01 AMAug 12
to Will Hobbs, pvlib-python
Hi Again Will,

  Would you be willing to share the IEC matrix data along with some example time-series data for a deployed system, as well as the goal(s) of your modeling effort?

  If the stars align here, then I'd be interested in extending PVfit's algorithms to deployed systems that only have, say, DC-side system-level power, ambient temperature and wind speed, and a POA pyranometer.

Anton Driesse

unread,
Aug 12, 2025, 3:49:13 PMAug 12
to pvlib-...@googlegroups.com

Hi Will,

I think what you are after (tell me if I am wrong) is not just a model, but a combination of a model and parameters that produces a curve that is more typical of actual modules than PVWatts and/or the Marion variations. 

If you had such a curve at 25C, it would be trivial to translate it to different temperatures using your favourite gamma_pdc value, and subsequently relatively easy to fit the original and translated curves using of the models from [8].

Going the other way, if you had any model from [8] with parameters that produce a curve you like at 25C (e.g. Jinko MotherPV), but you want to change gamma_pdc, you can just feed 25C into the model and follow up with a separate temperature correction.

With "limited use" I was thinking of a single set of parameters being suitable to a limited range of modules, but if the starting point for the "correction" is PVWatts, then I agree that any of the curves is probably better than none!

Hopefully some of this is useful!

Anton


On 2025-08-12 17:02, Will Hobbs wrote:
Thanks, Anton. 

I've attached a chart with the relative efficiencies from the nine test matrices here [5] (direct link to xlsx download: [6]), plus a manually entered FSLR module eye-balled from Fig. 1 here [7] (it's the line in my chart with the highest value at 400 W/m^2), all at 25 deg C. 

I also added two of the MotherPV fits from [8] and two corrections from Marion 2008 [3] with arbitrary k values. 

Anton - you noted that any model is going to be of limited use without parameter fitting. It seems to me that, assuming the test matrices from CFV are reasonably representative of what could be installed (big assumption), I would be better off at least using something like the MotherPV LG fit correction than doing no correction at all. 






-- 
PV Performance Labs
Emmy-Noether-Str. 2
79110 Freiburg
Germany

Anton Driesse

unread,
Aug 12, 2025, 3:49:32 PMAug 12
to pvlib-...@googlegroups.com

Hi Will,

I think what you are after (tell me if I am wrong) is not just a model, but a combination of a model and parameters that produces a curve that is more typical of actual modules than PVWatts and/or the Marion variations. 

If you had such a curve at 25C, it would be trivial to translate it to different temperatures using your favourite gamma_pdc value, and subsequently relatively easy to fit the original and translated curves using of the models from [8].

Going the other way, if you had any model from [8] with parameters that produce a curve you like at 25C (e.g. Jinko MotherPV), but you want to change gamma_pdc, you can just feed 25C into the model and follow up with a separate temperature correction.

With "limited use" I was thinking of a single set of parameters being suitable to a limited range of modules, but if the starting point for the "correction" is PVWatts, then I agree that any of the curves is probably better than none!

Hopefully some of this is useful!

Anton


On 2025-08-12 17:02, Will Hobbs wrote:
Thanks, Anton. 

I've attached a chart with the relative efficiencies from the nine test matrices here [5] (direct link to xlsx download: [6]), plus a manually entered FSLR module eye-balled from Fig. 1 here [7] (it's the line in my chart with the highest value at 400 W/m^2), all at 25 deg C. 

I also added two of the MotherPV fits from [8] and two corrections from Marion 2008 [3] with arbitrary k values. 

Anton - you noted that any model is going to be of limited use without parameter fitting. It seems to me that, assuming the test matrices from CFV are reasonably representative of what could be installed (big assumption), I would be better off at least using something like the MotherPV LG fit correction than doing no correction at all. 






-- 
PV Performance Labs
Emmy-Noether-Str. 2
79110 Freiburg
Germany

Will Hobbs

unread,
Aug 12, 2025, 4:55:11 PMAug 12
to pvlib-python
Anton,

It's possible that I don't know exactly what I'm looking for :). I think it's:
  • A relatively simple model (or model and parameters) that produces a curve more typical of actual modules than PVWatts 
  • Doesn't require me to have or fit many parameters/coefficients for each unique module I'm modeling
  • That lets me set gamma_pdc independently
  • Ideally follows "best practices" and (even more preferred) doesn't involve me "re-inventing the wheel"
So far, it doesn't look like there's an obvious solution, which is fine. I mostly wanted to make sure I wasn't missing something. 

The Marion 2008 adjustment to PVWatts may work for me. I'm curious if there's a reason it never made it into an official PVWatts version. 

I think picking one or a few sets of MotherPV fits would also work. And there's also working backwards like you describe (which I had not thought about) with something like Huld or ADR, since they are already in pvlib. 

So, I think I have some good options. Thanks!

Will

Will Hobbs

unread,
Aug 12, 2025, 5:00:46 PMAug 12
to pvlib-python
Mark,

I'll have to look into IEC matrix data. For timeseries data, there's the solar data bounty prize datasets (I was involved in one of them):
You might be able to infer which modules were used at some of the sites and then find public IEC matrix data. Or a request to NREL/DOE for semi-anonymized IEC matrix data might be able to be passed on to the plant owners. 

Regarding my goals, I think I laid them out fairly clearly in the email I just sent in response to Anton. I'm not sure my goals are very clear...

Will

Anton Driesse

unread,
Aug 13, 2025, 4:34:20 AMAug 13
to pvlib-...@googlegroups.com

Hi Will,

Since you mention the ADR model: it has a temperature coefficient that doesn't have the same value as gamma_pdc, but you can set it to zero or scale it up or down as you would for gamma_pdc.

Cheers,

Anton

Reply all
Reply to author
Forward
0 new messages