9
9
from pvlib ._deprecation import warn_deprecated
10
10
from pvlib .tools import _get_sample_intervals
11
11
import scipy
12
+ import scipy .constants
12
13
import warnings
13
14
14
15
@@ -318,7 +319,7 @@ def pvsyst_cell(poa_global, temp_air, wind_speed=1.0, u_c=29.0, u_v=0.0,
318
319
u_v : float, default 0.0
319
320
Combined heat loss factor influenced by wind. Parameter :math:`U_{v}`
320
321
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]`
322
323
323
324
eta_m : numeric, default None (deprecated, use module_efficiency instead)
324
325
@@ -375,7 +376,7 @@ def pvsyst_cell(poa_global, temp_air, wind_speed=1.0, u_c=29.0, u_v=0.0,
375
376
>>> params = TEMPERATURE_MODEL_PARAMETERS['pvsyst']['freestanding']
376
377
>>> pvsyst_cell(1000, 10, **params)
377
378
37.93103448275862
378
- """
379
+ """ # noQA: E501
379
380
380
381
if eta_m :
381
382
warn_deprecated (
@@ -413,12 +414,14 @@ def faiman(poa_global, temp_air, wind_speed=1.0, u0=25.0, u1=6.84):
413
414
414
415
u0 : numeric, default 25.0
415
416
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.
417
419
:math:`\left[\frac{\text{W}/{\text{m}^2}}{\text{C}}\right]`
418
420
419
421
u1 : numeric, default 6.84
420
422
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.
422
425
:math:`\left[ \frac{\text{W}/\text{m}^2}{\text{C}\ \left( \text{m/s} \right)} \right]`
423
426
424
427
Returns
@@ -434,6 +437,7 @@ def faiman(poa_global, temp_air, wind_speed=1.0, u0=25.0, u1=6.84):
434
437
----------
435
438
.. [1] Faiman, D. (2008). "Assessing the outdoor operating temperature of
436
439
photovoltaic modules." Progress in Photovoltaics 16(4): 307-315.
440
+ :doi:`10.1002/pip.813`
437
441
438
442
.. [2] "IEC 61853-2 Photovoltaic (PV) module performance testing and energy
439
443
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):
442
446
.. [3] "IEC 61853-3 Photovoltaic (PV) module performance testing and energy
443
447
rating - Part 3: Energy rating of PV modules". IEC, Geneva, 2018.
444
448
445
- '''
449
+ See also
450
+ --------
451
+ pvlib.temperature.faiman_rad
452
+
453
+ ''' # noQA: E501
454
+
446
455
# Contributed by Anton Driesse (@adriesse), PV Performance Labs. Dec., 2019
447
456
448
457
# 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):
457
466
return temp_air + temp_difference
458
467
459
468
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
+
460
578
def ross (poa_global , temp_air , noct ):
461
579
r'''
462
580
Calculate cell temperature using the Ross model.
0 commit comments