@@ -134,7 +134,7 @@ class PVSystem:
134
134
a single array is created from the other parameters (e.g.
135
135
`surface_tilt`, `surface_azimuth`). Must contain at least one Array,
136
136
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:
138
138
139
139
- `surface_tilt`
140
140
- `surface_azimuth`
@@ -157,13 +157,16 @@ class PVSystem:
157
157
North=0, East=90, South=180, West=270.
158
158
159
159
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.
163
166
164
167
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.
167
170
168
171
module : None or string, default None
169
172
The model name of the modules.
@@ -333,30 +336,32 @@ def get_aoi(self, solar_zenith, solar_azimuth):
333
336
334
337
@_unwrap_single_value
335
338
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 ):
338
341
"""
339
342
Uses the :py:func:`irradiance.get_total_irradiance` function to
340
343
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```.
343
345
344
346
Parameters
345
347
----------
346
- solar_zenith : float or Series.
348
+ solar_zenith : float or Series
347
349
Solar zenith angle.
348
- solar_azimuth : float or Series.
350
+ solar_azimuth : float or Series
349
351
Solar azimuth angle.
350
352
dni : float or Series or tuple of float or Series
351
- Direct Normal Irradiance
353
+ Direct Normal Irradiance. [W/m2]
352
354
ghi : float or Series or tuple of float or Series
353
- Global horizontal irradiance
355
+ Global horizontal irradiance. [W/m2]
354
356
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]
358
363
airmass : None, float or Series, default None
359
- Airmass
364
+ Airmass. [unitless]
360
365
model : String, default 'haydavies'
361
366
Irradiance model.
362
367
@@ -376,17 +381,26 @@ def get_irradiance(self, solar_zenith, solar_azimuth, dni, ghi, dhi,
376
381
poa_irradiance : DataFrame or tuple of DataFrame
377
382
Column names are: ``'poa_global', 'poa_direct', 'poa_diffuse',
378
383
'poa_sky_diffuse', 'poa_ground_diffuse'``.
384
+
385
+ See also
386
+ --------
387
+ :py:func:`pvlib.irradiance.get_total_irradiance`
379
388
"""
380
389
dni = self ._validate_per_array (dni , system_wide = True )
381
390
ghi = self ._validate_per_array (ghi , system_wide = True )
382
391
dhi = self ._validate_per_array (dhi , system_wide = True )
392
+
393
+ albedo = self ._validate_per_array (albedo , system_wide = True )
394
+
383
395
return tuple (
384
396
array .get_irradiance (solar_zenith , solar_azimuth ,
385
397
dni , ghi , dhi ,
386
- dni_extra , airmass , model ,
398
+ albedo = albedo ,
399
+ dni_extra = dni_extra , airmass = airmass ,
400
+ model = model ,
387
401
** 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
390
404
)
391
405
)
392
406
@@ -1258,14 +1272,14 @@ class Array:
1258
1272
If not provided, a FixedMount with zero tilt is used.
1259
1273
1260
1274
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.
1265
1279
1266
1280
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.
1269
1283
1270
1284
module : None or string, default None
1271
1285
The model name of the modules.
@@ -1425,15 +1439,14 @@ def get_aoi(self, solar_zenith, solar_azimuth):
1425
1439
solar_zenith , solar_azimuth )
1426
1440
1427
1441
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 ):
1430
1444
"""
1431
1445
Get plane of array irradiance components.
1432
1446
1433
1447
Uses the :py:func:`pvlib.irradiance.get_total_irradiance` function to
1434
1448
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``.
1437
1450
1438
1451
Parameters
1439
1452
----------
@@ -1442,15 +1455,17 @@ def get_irradiance(self, solar_zenith, solar_azimuth, dni, ghi, dhi,
1442
1455
solar_azimuth : float or Series.
1443
1456
Solar azimuth angle.
1444
1457
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]
1447
1460
Global horizontal irradiance
1448
1461
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]
1450
1465
dni_extra : None, float or Series, default None
1451
- Extraterrestrial direct normal irradiance
1466
+ Extraterrestrial direct normal irradiance. [W/m2]
1452
1467
airmass : None, float or Series, default None
1453
- Airmass
1468
+ Airmass. [unitless]
1454
1469
model : String, default 'haydavies'
1455
1470
Irradiance model.
1456
1471
@@ -1463,7 +1478,14 @@ def get_irradiance(self, solar_zenith, solar_azimuth, dni, ghi, dhi,
1463
1478
poa_irradiance : DataFrame
1464
1479
Column names are: ``'poa_global', 'poa_direct', 'poa_diffuse',
1465
1480
'poa_sky_diffuse', 'poa_ground_diffuse'``.
1481
+
1482
+ See also
1483
+ --------
1484
+ :py:func:`pvlib.irradiance.get_total_irradiance`
1466
1485
"""
1486
+ if albedo is None :
1487
+ albedo = self .albedo
1488
+
1467
1489
# not needed for all models, but this is easier
1468
1490
if dni_extra is None :
1469
1491
dni_extra = irradiance .get_extra_radiation (solar_zenith .index )
@@ -1476,10 +1498,10 @@ def get_irradiance(self, solar_zenith, solar_azimuth, dni, ghi, dhi,
1476
1498
orientation ['surface_azimuth' ],
1477
1499
solar_zenith , solar_azimuth ,
1478
1500
dni , ghi , dhi ,
1501
+ albedo = albedo ,
1479
1502
dni_extra = dni_extra ,
1480
1503
airmass = airmass ,
1481
1504
model = model ,
1482
- albedo = self .albedo ,
1483
1505
** kwargs )
1484
1506
1485
1507
def get_iam (self , aoi , iam_model = 'physical' ):
0 commit comments