@@ -618,7 +618,7 @@ def faiman_rad(poa_global, temp_air, wind_speed=1.0, ir_down=None,
618618 return temp_air + temp_difference
619619
620620
621- def ross (poa_global , temp_air , noct ):
621+ def ross (poa_global , temp_air , noct = None , k = None ):
622622 r'''
623623 Calculate cell temperature using the Ross model.
624624
@@ -630,14 +630,19 @@ def ross(poa_global, temp_air, noct):
630630 Parameters
631631 ----------
632632 poa_global : numeric
633- Total incident irradiance. [W/m^2 ]
633+ Total incident irradiance. [W/m⁻² ]
634634
635635 temp_air : numeric
636636 Ambient dry bulb temperature. [C]
637637
638- noct : numeric
638+ noct : numeric, optional
639639 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.
641646
642647 Returns
643648 -------
@@ -650,19 +655,62 @@ def ross(poa_global, temp_air, noct):
650655
651656 .. math::
652657
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.
657690
658691 References
659692 ----------
660693 .. [1] Ross, R. G. Jr., (1981). "Design Techniques for Flat-Plate
661694 Photovoltaic Arrays". 15th IEEE Photovoltaic Specialist Conference,
662695 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.
663703 '''
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
666714
667715
668716def _fuentes_hconv (tave , windmod , tinoct , temp_delta , xlen , tilt ,
0 commit comments