@@ -134,7 +134,7 @@ class PVSystem:
134134 a single array is created from the other parameters (e.g.
135135 `surface_tilt`, `surface_azimuth`). Must contain at least one Array,
136136 if length of arrays is 0 a ValueError is raised. If `arrays` is
137- specified the following parameters are ignored:
137+ specified the following PVSystem parameters are ignored:
138138
139139 - `surface_tilt`
140140 - `surface_azimuth`
@@ -157,13 +157,16 @@ class PVSystem:
157157 North=0, East=90, South=180, West=270.
158158
159159 albedo : None or float, default None
160- The ground albedo. If ``None``, will attempt to use
161- ``surface_type`` and ``irradiance.SURFACE_ALBEDOS``
162- to lookup albedo.
160+ Ground surface albedo. If ``None``, then ``surface_type`` is used
161+ to look up a value in ``irradiance.SURFACE_ALBEDOS``.
162+ If ``surface_type`` is also None then a ground surface albedo
163+ of 0.25 is used. For time-dependent albedos, add ``'albedo'`` to
164+ the input ``'weather'`` DataFrame for
165+ :py:class:`pvlib.modelchain.ModelChain` methods.
163166
164167 surface_type : None or string, default None
165- The ground surface type. See ``irradiance.SURFACE_ALBEDOS``
166- for valid values.
168+ The ground surface type. See ``irradiance.SURFACE_ALBEDOS`` for
169+ valid values.
167170
168171 module : None or string, default None
169172 The model name of the modules.
@@ -333,30 +336,32 @@ def get_aoi(self, solar_zenith, solar_azimuth):
333336
334337 @_unwrap_single_value
335338 def get_irradiance (self , solar_zenith , solar_azimuth , dni , ghi , dhi ,
336- dni_extra = None , airmass = None , model = 'haydavies' ,
337- ** kwargs ):
339+ albedo = None , dni_extra = None , airmass = None ,
340+ model = 'haydavies' , ** kwargs ):
338341 """
339342 Uses the :py:func:`irradiance.get_total_irradiance` function to
340343 calculate the plane of array irradiance components on a tilted
341- surface defined by ``self.surface_tilt``,
342- ``self.surface_azimuth``, and ``self.albedo``.
344+ surface defined by ``self.surface_tilt`` and ``self.surface_azimuth```.
343345
344346 Parameters
345347 ----------
346- solar_zenith : float or Series.
348+ solar_zenith : float or Series
347349 Solar zenith angle.
348- solar_azimuth : float or Series.
350+ solar_azimuth : float or Series
349351 Solar azimuth angle.
350352 dni : float or Series or tuple of float or Series
351- Direct Normal Irradiance
353+ Direct Normal Irradiance. [W/m2]
352354 ghi : float or Series or tuple of float or Series
353- Global horizontal irradiance
355+ Global horizontal irradiance. [W/m2]
354356 dhi : float or Series or tuple of float or Series
355- Diffuse horizontal irradiance
356- dni_extra : None, float or Series, default None
357- Extraterrestrial direct normal irradiance
357+ Diffuse horizontal irradiance. [W/m2]
358+ albedo : None, float or Series, default None
359+ Ground surface albedo. [unitless]
360+ dni_extra : None, float, Series or tuple of float or Series,
361+ default None
362+ Extraterrestrial direct normal irradiance. [W/m2]
358363 airmass : None, float or Series, default None
359- Airmass
364+ Airmass. [unitless]
360365 model : String, default 'haydavies'
361366 Irradiance model.
362367
@@ -376,17 +381,26 @@ def get_irradiance(self, solar_zenith, solar_azimuth, dni, ghi, dhi,
376381 poa_irradiance : DataFrame or tuple of DataFrame
377382 Column names are: ``'poa_global', 'poa_direct', 'poa_diffuse',
378383 'poa_sky_diffuse', 'poa_ground_diffuse'``.
384+
385+ See also
386+ --------
387+ :py:func:`pvlib.irradiance.get_total_irradiance`
379388 """
380389 dni = self ._validate_per_array (dni , system_wide = True )
381390 ghi = self ._validate_per_array (ghi , system_wide = True )
382391 dhi = self ._validate_per_array (dhi , system_wide = True )
392+
393+ albedo = self ._validate_per_array (albedo , system_wide = True )
394+
383395 return tuple (
384396 array .get_irradiance (solar_zenith , solar_azimuth ,
385397 dni , ghi , dhi ,
386- dni_extra , airmass , model ,
398+ albedo = albedo ,
399+ dni_extra = dni_extra , airmass = airmass ,
400+ model = model ,
387401 ** kwargs )
388- for array , dni , ghi , dhi in zip (
389- self .arrays , dni , ghi , dhi
402+ for array , dni , ghi , dhi , albedo in zip (
403+ self .arrays , dni , ghi , dhi , albedo
390404 )
391405 )
392406
@@ -1258,14 +1272,14 @@ class Array:
12581272 If not provided, a FixedMount with zero tilt is used.
12591273
12601274 albedo : None or float, default None
1261- The ground albedo. If ``None``, will attempt to use
1262- ``surface_type`` to look up an albedo value in
1263- ``irradiance.SURFACE_ALBEDOS``. If a surface albedo
1264- cannot be found then 0.25 is used.
1275+ Ground surface albedo. If ``None``, then ``surface_type`` is used
1276+ to look up a value in ``irradiance.SURFACE_ALBEDOS``.
1277+ If ``surface_type`` is also None then a ground surface albedo
1278+ of 0.25 is used.
12651279
12661280 surface_type : None or string, default None
1267- The ground surface type. See ``irradiance.SURFACE_ALBEDOS``
1268- for valid values.
1281+ The ground surface type. See ``irradiance.SURFACE_ALBEDOS`` for valid
1282+ values.
12691283
12701284 module : None or string, default None
12711285 The model name of the modules.
@@ -1425,15 +1439,14 @@ def get_aoi(self, solar_zenith, solar_azimuth):
14251439 solar_zenith , solar_azimuth )
14261440
14271441 def get_irradiance (self , solar_zenith , solar_azimuth , dni , ghi , dhi ,
1428- dni_extra = None , airmass = None , model = 'haydavies' ,
1429- ** kwargs ):
1442+ albedo = None , dni_extra = None , airmass = None ,
1443+ model = 'haydavies' , ** kwargs ):
14301444 """
14311445 Get plane of array irradiance components.
14321446
14331447 Uses the :py:func:`pvlib.irradiance.get_total_irradiance` function to
14341448 calculate the plane of array irradiance components for a surface
1435- defined by ``self.surface_tilt`` and ``self.surface_azimuth`` with
1436- albedo ``self.albedo``.
1449+ defined by ``self.surface_tilt`` and ``self.surface_azimuth``.
14371450
14381451 Parameters
14391452 ----------
@@ -1442,15 +1455,17 @@ def get_irradiance(self, solar_zenith, solar_azimuth, dni, ghi, dhi,
14421455 solar_azimuth : float or Series.
14431456 Solar azimuth angle.
14441457 dni : float or Series
1445- Direct Normal Irradiance
1446- ghi : float or Series
1458+ Direct normal irradiance. [W/m2]
1459+ ghi : float or Series. [W/m2]
14471460 Global horizontal irradiance
14481461 dhi : float or Series
1449- Diffuse horizontal irradiance
1462+ Diffuse horizontal irradiance. [W/m2]
1463+ albedo : None, float or Series, default None
1464+ Ground surface albedo. [unitless]
14501465 dni_extra : None, float or Series, default None
1451- Extraterrestrial direct normal irradiance
1466+ Extraterrestrial direct normal irradiance. [W/m2]
14521467 airmass : None, float or Series, default None
1453- Airmass
1468+ Airmass. [unitless]
14541469 model : String, default 'haydavies'
14551470 Irradiance model.
14561471
@@ -1463,7 +1478,14 @@ def get_irradiance(self, solar_zenith, solar_azimuth, dni, ghi, dhi,
14631478 poa_irradiance : DataFrame
14641479 Column names are: ``'poa_global', 'poa_direct', 'poa_diffuse',
14651480 'poa_sky_diffuse', 'poa_ground_diffuse'``.
1481+
1482+ See also
1483+ --------
1484+ :py:func:`pvlib.irradiance.get_total_irradiance`
14661485 """
1486+ if albedo is None :
1487+ albedo = self .albedo
1488+
14671489 # not needed for all models, but this is easier
14681490 if dni_extra is None :
14691491 dni_extra = irradiance .get_extra_radiation (solar_zenith .index )
@@ -1476,10 +1498,10 @@ def get_irradiance(self, solar_zenith, solar_azimuth, dni, ghi, dhi,
14761498 orientation ['surface_azimuth' ],
14771499 solar_zenith , solar_azimuth ,
14781500 dni , ghi , dhi ,
1501+ albedo = albedo ,
14791502 dni_extra = dni_extra ,
14801503 airmass = airmass ,
14811504 model = model ,
1482- albedo = self .albedo ,
14831505 ** kwargs )
14841506
14851507 def get_iam (self , aoi , iam_model = 'physical' ):
0 commit comments