@@ -2910,6 +2910,85 @@ def pvwatts_dc(effective_irradiance, temp_cell, pdc0, gamma_pdc, temp_ref=25.):
29102910 return pdc
29112911
29122912
2913+ def pvwatts_dc_marion (effective_irradiance , temp_cell , pdc0 , gamma_pdc ,
2914+ k = 0.005 , temp_ref = 25. ):
2915+ r"""
2916+ Implements a modified version of NREL's PVWatts Version 5 DC power model
2917+ [1]_ that adjusts for a reduction in module efficiency that often occurs at
2918+ low irradiance. Based on based on [2]_. An irradiance correction factor,
2919+ `k`, is used for a piece-wise adjustment to power based on irradiance,
2920+ where `k` is the reduction in actual power at 200 W/m^2 relative to ideal
2921+ power calculated linearly from standard test conditions, normalized to
2922+ nameplate power at standard test conditions.
2923+
2924+ .. math::
2925+
2926+ k=\frac{0.2P_{dc0}-P_{200}}{P_{dc0}}
2927+
2928+ For example, a 500 W module that produces 95 W at 200 W/m^2 (a 5% relative
2929+ reduction in efficiency) would have a value of `k` = 0.01.
2930+
2931+ Note that ``pdc0`` is also used as a symbol in
2932+ :py:func:`pvlib.inverter.pvwatts`. ``pdc0`` in this function refers to the DC
2933+ power of the modules at reference conditions. ``pdc0`` in
2934+ :py:func:`pvlib.inverter.pvwatts` refers to the DC power input limit of
2935+ the inverter.
2936+
2937+ Parameters
2938+ ----------
2939+ effective_irradiance: numeric
2940+ Irradiance transmitted to the PV cells. To be
2941+ fully consistent with PVWatts, the user must have already
2942+ applied angle of incidence losses, but not soiling, spectral,
2943+ etc. [W/m^2]
2944+ temp_cell: numeric
2945+ Cell temperature [C].
2946+ pdc0: numeric
2947+ Power of the modules at 1000 W/m^2 and cell reference temperature. [W]
2948+ gamma_pdc: numeric
2949+ The temperature coefficient of power. Typically -0.002 to
2950+ -0.005 per degree C. [1/C]
2951+ k: numeric, default 0.005
2952+ Irradiance correction factor, defined in [2]_. [unitless]
2953+ temp_ref: numeric, default 25.0
2954+ Cell reference temperature. PVWatts defines it to be 25 C and
2955+ is included here for flexibility. [C]
2956+
2957+ Returns
2958+ -------
2959+ pdc: numeric
2960+ DC power. [W]
2961+
2962+ References
2963+ ----------
2964+ .. [1] A. P. Dobos, "PVWatts Version 5 Manual"
2965+ http://pvwatts.nrel.gov/downloads/pvwattsv5.pdf
2966+ (2014).
2967+ .. [2] B. Marion, "Comparison of Predictive Models for
2968+ Photovoltaic Module Performance,"
2969+ https://doi.org/10.1109/PVSC.2008.4922586,
2970+ https://docs.nrel.gov/docs/fy08osti/42511.pdf
2971+ (2008).
2972+
2973+ See Also
2974+ --------
2975+ pvwatts_dc
2976+ """ # noqa: E501
2977+
2978+ pdc_unscaled = (effective_irradiance * 0.001 * pdc0 *
2979+ (1 + gamma_pdc * (temp_cell - temp_ref )))
2980+
2981+ err_1 = (k * (1 - (1 - effective_irradiance / 200 )** 4 ) /
2982+ (effective_irradiance / 1000 ))
2983+ err_2 = (k * (1000 - effective_irradiance ) / (1000 - 200 ))
2984+
2985+ pdc = np .where (effective_irradiance <= 200 ,
2986+ pdc_unscaled * (1 - err_1 ),
2987+ pdc_unscaled * (1 - err_2 ))
2988+
2989+ return pdc
2990+
2991+
29132992def pvwatts_losses (soiling = 2 , shading = 3 , snow = 0 , mismatch = 2 , wiring = 2 ,
29142993 connections = 0.5 , lid = 1.5 , nameplate_rating = 1 , age = 0 ,
29152994 availability = 3 ):
0 commit comments