@@ -3037,6 +3037,7 @@ def nonuniform_irradiance_deline_power_loss(
3037
3037
model : Literal [
3038
3038
"fixed-tilt" , "single-axis-tracking"
3039
3039
] = "single-axis-tracking" ,
3040
+ fillfactor_ratio : float = None ,
3040
3041
):
3041
3042
r"""
3042
3043
Estimate the power loss due to irradiance non-uniformity.
@@ -3045,7 +3046,13 @@ def nonuniform_irradiance_deline_power_loss(
3045
3046
irradiance is less uniform due to mounting and site conditions.
3046
3047
3047
3048
Depending on the mounting type, the power loss is estimated with either
3048
- equation (11) or (12) of [1]_. Passing the polynomial is also valid.
3049
+ equation (11) or (12) of [1]_. Passing a custom polynomial is also valid.
3050
+
3051
+ Use ``fillfactor_ratio`` to account for different fill factors between the
3052
+ trained model and the module of interest. The fill factor used for
3053
+ developing the models ``"single-axis-tracking" and "fixed-tilt"`` is
3054
+ :math:`0.79`. For example, if the fill factor of the module of interest is
3055
+ :math:`0.65`, then set ``fillfactor_ratio = 0.65 / 0.79``.
3049
3056
3050
3057
.. versionadded:: 0.11.0
3051
3058
@@ -3063,11 +3070,18 @@ def nonuniform_irradiance_deline_power_loss(
3063
3070
* ``"fixed-tilt"``: Eq. (11) of [1]_.
3064
3071
* ``"single-axis-tracking"``: Eq. (12) of [1]_.
3065
3072
3066
- If a :py:`numpy.polynomial.Polynomial`, it is evaluated as is.
3073
+ If a :py:`numpy:numpy.polynomial.Polynomial`, it is evaluated as is.
3074
+
3075
+ If neither a string nor a ``Polynomial``, it must be a collection of
3076
+ the coefficients of the model, where the first element is the constant
3077
+ term and the last element is the highest order term. A
3078
+ :py:`numpy:numpy.polynomial.Polynomial` will be created internally.
3067
3079
3068
- If neither a string nor a polynomial, it must be the coefficients of
3069
- polynomial model, with the first element being the constant term and
3070
- the last element the highest order term.
3080
+ fillfactor_ratio : float, optional
3081
+ The ratio of the fill factor of the module of interest to the fill
3082
+ factor used for developing the models. Fill factor used for models
3083
+ ``"single-axis-tracking"`` and ``"fixed-tilt"`` is 0.79. For a module
3084
+ with fill factor 0.65, set ``fillfactor_ratio = 0.65 / 0.79``.
3071
3085
3072
3086
Returns
3073
3087
-------
@@ -3093,8 +3107,9 @@ def nonuniform_irradiance_deline_power_loss(
3093
3107
output power:
3094
3108
3095
3109
.. math::
3110
+ :eq: 1
3096
3111
3097
- M[\%] = 1 - \frac{P_{Array}}{\sum P_{Cells}}
3112
+ M[\%] = 1 - \frac{P_{Array}}{\sum P_{Cells}}
3098
3113
3099
3114
It is recommended to see the example
3100
3115
:ref:`sphx_glr_gallery_bifacial_plot_irradiance_nonuniformity_loss.py`
@@ -3109,6 +3124,7 @@ def nonuniform_irradiance_deline_power_loss(
3109
3124
Calculate the irradiance at different points of the module.
3110
3125
`bifacial_radiance <https://github.com/NREL/bifacial_radiance>`_
3111
3126
Calculate the irradiance at different points of the module.
3127
+
3112
3128
pvlib.pvsystem.combine_loss_factors
3113
3129
3114
3130
References
@@ -3135,6 +3151,11 @@ def nonuniform_irradiance_deline_power_loss(
3135
3151
)
3136
3152
elif isinstance (model , np .polynomial .Polynomial ):
3137
3153
model_polynom = model
3138
- else :
3154
+ else : # expect an iterable
3139
3155
model_polynom = np .polynomial .Polynomial (coef = model )
3156
+
3157
+ if fillfactor_ratio : # General fill factor ratio, so it's always used
3158
+ # Eq. (9), [1]
3159
+ model_polynom = model_polynom * fillfactor_ratio
3160
+
3140
3161
return model_polynom (rmad )
0 commit comments