@@ -708,19 +708,23 @@ def fuentes(poa_global, temp_air, wind_speed, noct_installed, module_height=5,
708708 return pd .Series (tmod_array - 273.15 , index = poa_global .index , name = 'tmod' )
709709
710710
711- def _adj_noct (x ):
712- return np .piecewise (x , [x < 0.5 , (x >= 0.5 ) & (x < 1.5 ),
713- (x >= 1.5 ) & (x < 2.5 ), (x >= 2.5 ) & (x < 3.5 ),
714- x >= 3.5 ], [18. , 11. , 6. , 2. , 0. ])
711+ def _adj_for_mounting_standoff (x ):
712+ # supports noct cell temperature model.
713+ # the exact division of the range of x into intervals is not specified
714+ # in the SAM code, except for the last interval x > 3.5.
715+ return np .piecewise (x , [x <= 0 , (x > 0 ) & (x < 0.5 ),
716+ (x >= 0.5 ) & (x < 1.5 ), (x >= 1.5 ) & (x < 2.5 ),
717+ (x >= 2.5 ) & (x <= 3.5 ), x > 3.5 ],
718+ [0. , 18. , 11. , 6. , 2. , 0. ])
715719
716720
717721def noct (poa_global , temp_air , wind_speed , noct , eta_m_ref ,
718722 effective_irradiance = None , transmittance_absorbtance = 0.9 ,
719- array_height = 1 , mount_standoff = 3.5 ):
723+ array_height = 1 , mount_standoff = 4 ):
720724 '''
721725 Cell temperature model from the System Advisor Model (SAM).
722726
723- The model is described in [1], Section 10.6.
727+ The model is described in [1]_ , Section 10.6.
724728
725729 Parameters
726730 ----------
@@ -756,7 +760,7 @@ def noct(poa_global, temp_air, wind_speed, noct, eta_m_ref,
756760 be either 1 or 2. For systems elevated less than one story, use 1.
757761 If system is elevated more than two stories, use 2.
758762
759- mount_standoff : numeric, default 3.5
763+ mount_standoff : numeric, default 4
760764 Distance between array mounting and mounting surface. Use default
761765 if system is ground-mounted. [inches]
762766
@@ -790,10 +794,12 @@ def noct(poa_global, temp_air, wind_speed, noct, eta_m_ref,
790794 raise ValueError (
791795 f'array_height must be 1 or 2, { array_height } was given' )
792796
793- noct_adj = noct + _adj_noct (mount_standoff )
797+ noct_adj = noct + _adj_for_mounting_standoff (mount_standoff )
794798 tau_alpha = transmittance_absorbtance * irr_ratio
795799
796- cell_temp_init = ross (poa_global , temp_air , noct_adj )
800+ # [1] Eq. 10.37 isn't clear on exactly what "G" is. SAM SSC code uses
801+ # poa_global where G appears
802+ cell_temp_init = poa_global / 800. * (noct_adj - 20. )
797803 heat_loss = 1 - eta_m_ref / tau_alpha
798804 wind_loss = 9.5 / (5.7 + 3.8 * wind_adj )
799- return cell_temp_init * heat_loss * wind_loss
805+ return temp_air + cell_temp_init * heat_loss * wind_loss
0 commit comments