Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/sphinx/source/api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,7 @@ PV temperature models
temperature.pvsyst_cell
temperature.faiman
temperature.fuentes
temperature.ross

Temperature Model Parameters
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand Down
2 changes: 2 additions & 0 deletions docs/sphinx/source/whatsnew/v0.8.0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ Enhancements
* Add :py:func:`pvlib.pvsystem.combine_loss_factors` as general purpose
function to combine loss factors with a common index.
Partialy addresses :issue:`988`. Contributed by Brock Taute :ghuser:`btaute`
* Added :py:func:`pvlib.temperature.ross` for cell temperature modeling using
only NOCT. (:pull:`1045`)

Bug fixes
~~~~~~~~~
Expand Down
51 changes: 48 additions & 3 deletions pvlib/temperature.py
Original file line number Diff line number Diff line change
Expand Up @@ -377,9 +377,10 @@ def pvsyst_cell(poa_global, temp_air, wind_speed=1.0, u_c=29.0, u_v=0.0,

def faiman(poa_global, temp_air, wind_speed=1.0, u0=25.0, u1=6.84):
r'''
Calculate cell or module temperature using the Faiman model. The Faiman
model uses an empirical heat loss factor model [1]_ and is adopted in the
IEC 61853 standards [2]_ and [3]_.
Calculate cell or module temperature using the Faiman model.

The Faiman model uses an empirical heat loss factor model [1]_ and is
adopted in the IEC 61853 standards [2]_ and [3]_.

Usage of this model in the IEC 61853 standard does not distinguish
between cell and module temperature.
Expand Down Expand Up @@ -443,6 +444,50 @@ def faiman(poa_global, temp_air, wind_speed=1.0, u0=25.0, u1=6.84):
return temp_air + temp_difference


def ross(poa_global, temp_air, noct):
r'''
Calculate cell temperature using the Ross model.

The Ross model [1]_ assumes that cell temperature is proportional to the
plane of array irradiance, and ignores the effects of wind.

Parameters
----------
poa_global : numeric
Total incident irradiance [W/m^2].

temp_air : numeric
Ambient dry bulb temperature [C].

noct : numeric
Nominal operating cell temperature, determiend at conditions of
800 W/m^2 irradiance, 20C ambient air temperature and 1 m/s wind.

Returns
-------
numeric, values in degrees Celsius

Notes
-----
The Ross model for cell temperature :math:`T_{C}` is given in [1]_ as

.. math::
:label: pvsyst

T_{C} = T_{a} + \frac{NOCT - 20}{80} S

where :math:`S` is the plane of array irradiance in mW/{cm}^2.

References
----------
.. [1] Ross, R. G. Jr., (1981). "Design Techniques for Flat-Plate
Photovoltaic Arrays". 15th IEEE Photovoltaic Specialist Conference,
Orlando, FL.
'''
# factor of 0.1 converts irradiance from W/m2 to mW/cm2
return temp_air + (noct - 20.) / 80. * poa_global * 0.1


def _fuentes_hconv(tave, windmod, tinoct, temp_delta, xlen, tilt,
check_reynold):
# Calculate the convective coefficient as in Fuentes 1987 -- a mixture of
Expand Down
8 changes: 8 additions & 0 deletions pvlib/tests/test_temperature.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,14 @@ def test_faiman_ndarray():
assert_allclose(expected, result, 3)


def test_ross():
result = temperature.ross(np.array([1000., 600., 1000.]),
np.array([20., 40., 60.]),
np.array([40., 100., 20.]))
expected = np.array([45., 100., 60.])
assert_allclose(expected, result)


def test_faiman_series():
times = pd.date_range(start="2015-01-01", end="2015-01-02", freq="12H")
temps = pd.Series([0, 10, 5], index=times)
Expand Down