Skip to content

Commit ad30ffe

Browse files
committed
initial code for noct cell temperature function
1 parent 8b98768 commit ad30ffe

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

pvlib/temperature.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -706,3 +706,78 @@ def fuentes(poa_global, temp_air, wind_speed, noct_installed, module_height=5,
706706
sun0 = sun
707707

708708
return pd.Series(tmod_array - 273.15, index=poa_global.index, name='tmod')
709+
710+
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.])
715+
716+
717+
def noct(poa_global, temp_air, wind_speed, noct, eta_m_ref,
718+
effective_irradiance=None, transmittance_absorbtance=0.9,
719+
array_height=1, mount_standoff=3.5):
720+
'''
721+
Parameters
722+
----------
723+
poa_global : numeric
724+
Total incident irradiance. [W/m^2]
725+
726+
temp_air : numeric
727+
Ambient dry bulb temperature. [C]
728+
729+
wind_speed : numeric, default 1.0
730+
Wind speed in m/s measured at the same height for which the wind loss
731+
factor was determined. The default value 1.0 m/s is the wind
732+
speed at module height used to determine NOCT. [m/s]
733+
734+
noct : numeric
735+
Nominal operating cell temperature [C], determined at conditions of
736+
800 W/m^2 irradiance, 20 C ambient air temperature and 1 m/s wind.
737+
738+
effective_irradiance : numeric, default None.
739+
The irradiance that is converted to photocurrent. If None,
740+
assumed equal to poa_global. [W/m^2]
741+
742+
eta_m_ref : numeric
743+
Module external efficiency at reference conditions of 1000 W/m^2 and
744+
20C. Calculate as P_mp (V_mp x I_mp) divided by 1000 W/m^2. [unitless]
745+
746+
transmittance_absorptance : numeric, default 0.9
747+
Coefficient for combined transmittance and absorptance effects.
748+
[unitless]
749+
750+
array_height : int, default 1
751+
Height of array above ground in stories (one story is about 3m). Must
752+
be either 1 or 2. For systems elevated less than one story, use 1.
753+
If system is elevated more than two stories, use 2. [unitless]
754+
755+
mount_standoff : numeric, default 3.5
756+
Distance between array mounting and mounting surface. Use default
757+
if system is ground-mounted. [inches]
758+
759+
Returns
760+
-------
761+
cell_temperature : numeric
762+
Cell temperature. [C]
763+
764+
'''
765+
if effective_irradiance is None:
766+
irr_ratio = 1.
767+
else:
768+
irr_ratio = effective_irradiance / poa_global
769+
770+
if array_height == 1:
771+
wind_adj = 0.51 * wind_speed
772+
elif array_height == 2:
773+
wind_adj = 0.61 * wind_speed
774+
else:
775+
raise ValueError()
776+
777+
noct_adj = noct + _adj_noct(mount_standoff)
778+
tau_alpha = transmittance_absorbtance * irr_ratio
779+
780+
cell_temp_init = ross(poa_global, temp_air, noct_adj)
781+
heat_loss = 1 - eta_m_ref / tau_alpha
782+
wind_loss = 9.5 / (5.7 + 3.8 * wind_adj)
783+
return cell_temp_init * heat_loss * wind_loss

0 commit comments

Comments
 (0)