Skip to content

Commit 9b4af46

Browse files
MLEEFSwholmgren
authored andcommitted
Added coefficients for CIGS and a-Si modules types. (#308)
* Added coefficients for CIGS and a-Si modules types. Provided references to document with Spectral Reponses (SRs) of CIGS and a-Si modules. Reference also includes additional testing and field validation of the model. * Added CIGS and aSi to unit testing.Cleaned up spacing on first_solar_spectral_correction. * Replaced tab with spaces in the First Solar Spectral Correction Function. * Added new test results for Cdte, monosi, and polysi, for the function test_first_solar_spectral_correction.
1 parent 3d42536 commit 9b4af46

File tree

2 files changed

+30
-11
lines changed

2 files changed

+30
-11
lines changed

pvlib/atmosphere.py

+13-2
Original file line numberDiff line numberDiff line change
@@ -374,10 +374,13 @@ def first_solar_spectral_correction(pw, airmass_absolute, module_type=None,
374374
* 'cdte' - First Solar Series 4-2 CdTe modules.
375375
* 'monosi', 'xsi' - First Solar TetraSun modules.
376376
* 'multisi', 'polysi' - multi-crystalline silicon modules.
377+
* 'cigs' - anonymous copper indium gallium selenide PV module
378+
* 'asi' - anonymous amorphous silicon PV module
377379
378380
The module used to calculate the spectral correction
379381
coefficients corresponds to the Mult-crystalline silicon
380-
Manufacturer 2 Model C from [3]_.
382+
Manufacturer 2 Model C from [3]_. Spectral Response (SR) of CIGS
383+
and a-Si modules used to derive coefficients can be found in [4]_
381384
382385
coefficients : array-like
383386
allows for entry of user defined spectral correction
@@ -409,6 +412,10 @@ def first_solar_spectral_correction(pw, airmass_absolute, module_type=None,
409412
.. [3] Marion, William F., et al. User's Manual for Data for Validating
410413
Models for PV Module Performance. National Renewable Energy
411414
Laboratory, 2014. http://www.nrel.gov/docs/fy14osti/61610.pdf
415+
.. [4] Schweiger, M. and Hermann, W, Influence of Spectral Effects
416+
on Energy Yield of Different PV Modules: Comparison of Pwat and
417+
MMF Approach, TUV Rheinland Energy GmbH report 21237296.003,
418+
January 2017
412419
"""
413420

414421
# --- Screen Input Data ---
@@ -443,13 +450,17 @@ def first_solar_spectral_correction(pw, airmass_absolute, module_type=None,
443450

444451
_coefficients = {}
445452
_coefficients['cdte'] = (
446-
0.86273, -0.038948, -0.012506, 0.098871, 0.084658, -0.0042948)
453+
0.86273, -0.038948, -0.012506, 0.098871, 0.084658, -0.0042948)
447454
_coefficients['monosi'] = (
448455
0.85914, -0.020880, -0.0058853, 0.12029, 0.026814, -0.0017810)
449456
_coefficients['xsi'] = _coefficients['monosi']
450457
_coefficients['polysi'] = (
451458
0.84090, -0.027539, -0.0079224, 0.13570, 0.038024, -0.0021218)
452459
_coefficients['multisi'] = _coefficients['polysi']
460+
_coefficients['cigs'] = (
461+
0.85252, -0.022314, -0.0047216, 0.13666, 0.013342, -0.0008945)
462+
_coefficients['asi'] = (
463+
1.12094, -0.047620, -0.0083627, -0.10443, 0.098382,-0.0033818)
453464

454465
if module_type is not None and coefficients is None:
455466
coefficients = _coefficients[module_type.lower()]

pvlib/test/test_atmosphere.py

+17-9
Original file line numberDiff line numberDiff line change
@@ -79,17 +79,25 @@ def test_gueymard94_pw():
7979

8080
@pytest.mark.parametrize("module_type,expect", [
8181
('cdte', np.array(
82-
[[ 0.99134828, 0.97701063, 0.93975103],
83-
[ 1.02852847, 1.01874908, 0.98604776],
84-
[ 1.04722476, 1.03835703, 1.00656735]])),
82+
[[ 0.9905102 , 0.9764032 , 0.93975028],
83+
[ 1.02928735, 1.01881074, 0.98578821],
84+
[ 1.04750335, 1.03814456, 1.00623986]])),
8585
('monosi', np.array(
86-
[[ 0.9782842 , 1.02092726, 1.03602157],
87-
[ 0.9859024 , 1.0302268 , 1.04700244],
88-
[ 0.98885429, 1.03351495, 1.05062687]])),
86+
[[ 0.9776977 , 1.02043409, 1.03574032],
87+
[ 0.98630905, 1.03055092, 1.04736262],
88+
[ 0.98828494, 1.03299036, 1.05026561]])),
8989
('polysi', np.array(
90-
[[ 0.9774921 , 1.01757872, 1.02649543],
91-
[ 0.98947361, 1.0314545 , 1.04226547],
92-
[ 0.99403107, 1.03639082, 1.04758064]]))
90+
[[ 0.9770408 , 1.01705849, 1.02613202],
91+
[ 0.98992828, 1.03173953, 1.04260662],
92+
[ 0.99352435, 1.03588785, 1.04730718]])),
93+
('cigs', np.array(
94+
[[ 0.9745919 , 1.02821696, 1.05067895],
95+
[ 0.97529378, 1.02967497, 1.05289307],
96+
[ 0.97269159, 1.02730558, 1.05075651]])),
97+
('asi', np.array(
98+
[[ 1.0555275 , 0.87707583, 0.72243772],
99+
[ 1.11225204, 0.93665901, 0.78487953],
100+
[ 1.14555295, 0.97084011, 0.81994083]]))
93101
])
94102
def test_first_solar_spectral_correction(module_type, expect):
95103
ams = np.array([1, 3, 5])

0 commit comments

Comments
 (0)