99from pvlib ._deprecation import warn_deprecated
1010from pvlib .tools import _get_sample_intervals
1111import scipy
12+ import scipy .constants
1213import warnings
1314
1415
@@ -318,7 +319,7 @@ def pvsyst_cell(poa_global, temp_air, wind_speed=1.0, u_c=29.0, u_v=0.0,
318319 u_v : float, default 0.0
319320 Combined heat loss factor influenced by wind. Parameter :math:`U_{v}`
320321 in :eq:`pvsyst`.
321- :math:`\left[ \frac{\text{W}/\text{m}^2}{\text{C}\ \left( \text{m/s} \right)} \right]` # noQA: E501
322+ :math:`\left[ \frac{\text{W}/\text{m}^2}{\text{C}\ \left( \text{m/s} \right)} \right]`
322323
323324 eta_m : numeric, default None (deprecated, use module_efficiency instead)
324325
@@ -375,7 +376,7 @@ def pvsyst_cell(poa_global, temp_air, wind_speed=1.0, u_c=29.0, u_v=0.0,
375376 >>> params = TEMPERATURE_MODEL_PARAMETERS['pvsyst']['freestanding']
376377 >>> pvsyst_cell(1000, 10, **params)
377378 37.93103448275862
378- """
379+ """ # noQA: E501
379380
380381 if eta_m :
381382 warn_deprecated (
@@ -413,12 +414,14 @@ def faiman(poa_global, temp_air, wind_speed=1.0, u0=25.0, u1=6.84):
413414
414415 u0 : numeric, default 25.0
415416 Combined heat loss factor coefficient. The default value is one
416- determined by Faiman for 7 silicon modules.
417+ determined by Faiman for 7 silicon modules
418+ in the Negev desert on an open rack at 30.9° tilt.
417419 :math:`\left[\frac{\text{W}/{\text{m}^2}}{\text{C}}\right]`
418420
419421 u1 : numeric, default 6.84
420422 Combined heat loss factor influenced by wind. The default value is one
421- determined by Faiman for 7 silicon modules.
423+ determined by Faiman for 7 silicon modules
424+ in the Negev desert on an open rack at 30.9° tilt.
422425 :math:`\left[ \frac{\text{W}/\text{m}^2}{\text{C}\ \left( \text{m/s} \right)} \right]`
423426
424427 Returns
@@ -434,6 +437,7 @@ def faiman(poa_global, temp_air, wind_speed=1.0, u0=25.0, u1=6.84):
434437 ----------
435438 .. [1] Faiman, D. (2008). "Assessing the outdoor operating temperature of
436439 photovoltaic modules." Progress in Photovoltaics 16(4): 307-315.
440+ :doi:`10.1002/pip.813`
437441
438442 .. [2] "IEC 61853-2 Photovoltaic (PV) module performance testing and energy
439443 rating - Part 2: Spectral responsivity, incidence angle and module
@@ -442,7 +446,12 @@ def faiman(poa_global, temp_air, wind_speed=1.0, u0=25.0, u1=6.84):
442446 .. [3] "IEC 61853-3 Photovoltaic (PV) module performance testing and energy
443447 rating - Part 3: Energy rating of PV modules". IEC, Geneva, 2018.
444448
445- '''
449+ See also
450+ --------
451+ pvlib.temperature.faiman_rad
452+
453+ ''' # noQA: E501
454+
446455 # Contributed by Anton Driesse (@adriesse), PV Performance Labs. Dec., 2019
447456
448457 # The following lines may seem odd since u0 & u1 are probably scalar,
@@ -457,6 +466,115 @@ def faiman(poa_global, temp_air, wind_speed=1.0, u0=25.0, u1=6.84):
457466 return temp_air + temp_difference
458467
459468
469+ def faiman_rad (poa_global , temp_air , wind_speed = 1.0 , ir_down = None ,
470+ u0 = 25.0 , u1 = 6.84 , sky_view = 1.0 , emissivity = 0.88 ):
471+ r'''
472+ Calculate cell or module temperature using the Faiman model augmented
473+ with a radiative loss term.
474+
475+ The Faiman model uses an empirical heat loss factor model [1]_ and is
476+ adopted in the IEC 61853 standards [2]_ and [3]_. The radiative loss
477+ term was proposed and developed by Driesse [4]_.
478+
479+ The model can be used to represent cell or module temperature.
480+
481+ Parameters
482+ ----------
483+ poa_global : numeric
484+ Total incident irradiance [W/m^2].
485+
486+ temp_air : numeric
487+ Ambient dry bulb temperature [C].
488+
489+ wind_speed : numeric, default 1.0
490+ Wind speed measured at the same height for which the wind loss
491+ factor was determined. The default value 1.0 m/s is the wind
492+ speed at module height used to determine NOCT. [m/s]
493+
494+ ir_down : numeric, default 0.0
495+ Downwelling infrared radiation from the sky, measured on a horizontal
496+ surface. [W/m^2]
497+
498+ u0 : numeric, default 25.0
499+ Combined heat loss factor coefficient. The default value is one
500+ determined by Faiman for 7 silicon modules
501+ in the Negev desert on an open rack at 30.9° tilt.
502+ :math:`\left[\frac{\text{W}/{\text{m}^2}}{\text{C}}\right]`
503+
504+ u1 : numeric, default 6.84
505+ Combined heat loss factor influenced by wind. The default value is one
506+ determined by Faiman for 7 silicon modules
507+ in the Negev desert on an open rack at 30.9° tilt.
508+ :math:`\left[ \frac{\text{W}/\text{m}^2}{\text{C}\ \left( \text{m/s} \right)} \right]`
509+
510+ sky_view : numeric, default 1.0
511+ Effective view factor limiting the radiative exchange between the
512+ module and the sky. For a tilted array the expressions
513+ (1 + 3*cos(tilt)) / 4 can be used as a first estimate for sky_view
514+ as discussed in [4]_. The default value is for a horizontal module.
515+ [unitless]
516+
517+ emissivity : numeric, default 0.88
518+ Infrared emissivity of the module surface facing the sky. The default
519+ value represents the middle of a range of values found in the
520+ literature. [unitless]
521+
522+ Returns
523+ -------
524+ numeric, values in degrees Celsius
525+
526+ Notes
527+ -----
528+ All arguments may be scalars or vectors. If multiple arguments
529+ are vectors they must be the same length.
530+
531+ When only irradiance, air temperature and wind speed inputs are provided
532+ (`ir_down` is `None`) this function calculates the same device temperature
533+ as the original faiman model. When down-welling long-wave radiation data
534+ are provided as well (`ir_down` is not None) the default u0 and u1 values
535+ from the original model should not be used because a portion of the
536+ radiative losses would be double-counted.
537+
538+ References
539+ ----------
540+ .. [1] Faiman, D. (2008). "Assessing the outdoor operating temperature of
541+ photovoltaic modules." Progress in Photovoltaics 16(4): 307-315.
542+ :doi:`10.1002/pip.813`
543+
544+ .. [2] "IEC 61853-2 Photovoltaic (PV) module performance testing and energy
545+ rating - Part 2: Spectral responsivity, incidence angle and module
546+ operating temperature measurements". IEC, Geneva, 2018.
547+
548+ .. [3] "IEC 61853-3 Photovoltaic (PV) module performance testing and energy
549+ rating - Part 3: Energy rating of PV modules". IEC, Geneva, 2018.
550+
551+ .. [4] Driesse, A. et al (2022) "Improving Common PV Module Temperature
552+ Models by Incorporating Radiative Losses to the Sky". SAND2022-11604.
553+ :doi:`10.2172/1884890`
554+
555+ See also
556+ --------
557+ pvlib.temperature.faiman
558+
559+ ''' # noQA: E501
560+
561+ # Contributed by Anton Driesse (@adriesse), PV Performance Labs. Nov., 2022
562+
563+ abs_zero = - 273.15
564+ sigma = scipy .constants .Stefan_Boltzmann
565+
566+ if ir_down is None :
567+ qrad_sky = 0.0
568+ else :
569+ ir_up = sigma * ((temp_air - abs_zero )** 4 )
570+ qrad_sky = emissivity * sky_view * (ir_up - ir_down )
571+
572+ heat_input = poa_global - qrad_sky
573+ total_loss_factor = u0 + u1 * wind_speed
574+ temp_difference = heat_input / total_loss_factor
575+ return temp_air + temp_difference
576+
577+
460578def ross (poa_global , temp_air , noct ):
461579 r'''
462580 Calculate cell temperature using the Ross model.
0 commit comments