Skip to content

Commit 688287c

Browse files
committed
add pvwatts_dc_marion
1 parent 4089dd9 commit 688287c

1 file changed

Lines changed: 79 additions & 0 deletions

File tree

pvlib/pvsystem.py

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
29132992
def 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

Comments
 (0)