@@ -618,7 +618,7 @@ def faiman_rad(poa_global, temp_air, wind_speed=1.0, ir_down=None,
618
618
return temp_air + temp_difference
619
619
620
620
621
- def ross (poa_global , temp_air , noct ):
621
+ def ross (poa_global , temp_air , noct = None , k = None ):
622
622
r'''
623
623
Calculate cell temperature using the Ross model.
624
624
@@ -630,14 +630,19 @@ def ross(poa_global, temp_air, noct):
630
630
Parameters
631
631
----------
632
632
poa_global : numeric
633
- Total incident irradiance. [W/m^2 ]
633
+ Total incident irradiance. [W/m⁻² ]
634
634
635
635
temp_air : numeric
636
636
Ambient dry bulb temperature. [C]
637
637
638
- noct : numeric
638
+ noct : numeric, optional
639
639
Nominal operating cell temperature [C], determined at conditions of
640
- 800 W/m^2 irradiance, 20 C ambient air temperature and 1 m/s wind.
640
+ 800 W/m⁻² irradiance, 20 C ambient air temperature and 1 m/s wind.
641
+ If ``noct`` is not provided, ``k`` is required.
642
+ k: numeric, optional
643
+ Ross coefficient [Km²W⁻¹], which is an alternative to employing
644
+ NOCT in Ross's equation. If ``k`` is not provided, ``noct`` is
645
+ required.
641
646
642
647
Returns
643
648
-------
@@ -650,19 +655,62 @@ def ross(poa_global, temp_air, noct):
650
655
651
656
.. math::
652
657
653
- T_{C} = T_{a} + \frac{NOCT - 20}{80} S
654
-
655
- where :math:`S` is the plane of array irradiance in :math:`mW/{cm}^2`.
656
- This function expects irradiance in :math:`W/m^2`.
658
+ T_{C} = T_{a} + \frac{NOCT - 20}{80} S = T_{a} + k × S
659
+
660
+ where :math:`S` is the plane of array irradiance in mWcm⁻².
661
+ This function expects irradiance in Wm⁻².
662
+
663
+ Representative values for k are provided in [2]_, covering different types
664
+ of mounting and degrees of back ventialtion. The naming designations,
665
+ however, are adapted from [3]_ to enhance clarity and usability.
666
+
667
+ +--------------------------------------+-----------+
668
+ | Mounting | :math:`k` |
669
+ +======================================+===========+
670
+ | Sloped roof, well ventilated | 0.02 |
671
+ +--------------------------------------+-----------+
672
+ | Free-standing system | 0.0208 |
673
+ +--------------------------------------+-----------+
674
+ | Flat roof, well ventilated | 0.026 |
675
+ +--------------------------------------+-----------+
676
+ | Sloped roof, poorly ventilated | 0.0342 |
677
+ +--------------------------------------+-----------+
678
+ | Facade integrated, semi-ventilated | 0.0455 |
679
+ +--------------------------------------+-----------+
680
+ | Facade integrated, poorly ventilated | 0.0538 |
681
+ +--------------------------------------+-----------+
682
+ | Sloped roof, non-ventilated | 0.0563 |
683
+ +--------------------------------------+-----------+
684
+
685
+ It is also worth noting that the semi-ventilated facade case refers to
686
+ partly transparent compound glass insulation modules, while the non-
687
+ ventilated case corresponds to opaque, insulated PV-cladding elements.
688
+ However, the emphasis in [3]_ appears to be on ventilation conditions
689
+ rather than module construction.
657
690
658
691
References
659
692
----------
660
693
.. [1] Ross, R. G. Jr., (1981). "Design Techniques for Flat-Plate
661
694
Photovoltaic Arrays". 15th IEEE Photovoltaic Specialist Conference,
662
695
Orlando, FL.
696
+ .. [2] E. Skoplaki and J. A. Palyvos, "Operating temperature of
697
+ photovoltaic modules: A survey of pertinent correlations," Renewable
698
+ Energy, vol. 34, no. 1, pp. 23–29, Jan. 2009,
699
+ :doi:`10.1016/j.renene.2008.04.009`
700
+ .. [3] T. Nordmann and L. Clavadetscher, "Understanding temperature
701
+ effects on PV system performance," Proceedings of 3rd World Conference
702
+ on Photovoltaic Energy Conversion, May 2003.
663
703
'''
664
- # factor of 0.1 converts irradiance from W/m2 to mW/cm2
665
- return temp_air + (noct - 20. ) / 80. * poa_global * 0.1
704
+ if (noct is None ) & (k is None ):
705
+ raise ValueError ("Either noct or k is required." )
706
+ elif (noct is not None ) & (k is not None ):
707
+ raise ValueError ("Provide only one of noct or k, not both." )
708
+ elif k is None :
709
+ # factor of 0.1 converts irradiance from W/m2 to mW/cm2
710
+ return temp_air + (noct - 20. ) / 80. * poa_global * 0.1
711
+ elif noct is None :
712
+ # k assumes irradiance in W.m-2, dismissing 0.1 factor
713
+ return temp_air + k * poa_global
666
714
667
715
668
716
def _fuentes_hconv (tave , windmod , tinoct , temp_delta , xlen , tilt ,
0 commit comments