Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add PVSPEC spectral correction factor model #2072

Merged
merged 79 commits into from
Jun 14, 2024
Merged
Changes from 2 commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
b006adb
Create test_pelland.py
RDaxini May 28, 2024
a5563e6
new spectral factor
RDaxini May 28, 2024
82d2892
Update __init__.py
RDaxini May 31, 2024
cb8a17a
Update mismatch.py
RDaxini May 31, 2024
fa555a7
Delete test_pelland.py
RDaxini May 31, 2024
6656fee
Update mismatch.py
RDaxini May 31, 2024
56c4628
Update mismatch.py
RDaxini May 31, 2024
acc3998
Update test_spectrum.py
RDaxini May 31, 2024
11b38bd
Update test_spectrum.py
RDaxini May 31, 2024
d36d3b0
correct function name
RDaxini May 31, 2024
486ff98
Update pvlib/spectrum/mismatch.py
RDaxini Jun 4, 2024
28e9339
Update pvlib/spectrum/mismatch.py
RDaxini Jun 4, 2024
b642d05
Update pvlib/spectrum/mismatch.py
RDaxini Jun 4, 2024
e430b27
Update pvlib/tests/test_spectrum.py
RDaxini Jun 4, 2024
83c1683
Update pvlib/spectrum/mismatch.py
RDaxini Jun 4, 2024
6812f51
Update spectrum.rst
RDaxini Jun 4, 2024
200aaed
Merge branch 'main' of https://github.com/RDaxini/pvlib-python
RDaxini Jun 4, 2024
b1ec78f
Update mismatch.py
RDaxini Jun 4, 2024
358a532
Update mismatch.py
RDaxini Jun 4, 2024
67299e3
Update mismatch.py
RDaxini Jun 6, 2024
d5c9725
Update mismatch.py
RDaxini Jun 7, 2024
0df61ed
Update mismatch.py
RDaxini Jun 7, 2024
0d41306
Update mismatch.py
RDaxini Jun 7, 2024
24e05b8
Update mismatch.py
RDaxini Jun 7, 2024
7b4f15d
Update mismatch.py
RDaxini Jun 7, 2024
3bd0b75
Update pvlib/spectrum/mismatch.py
RDaxini Jun 7, 2024
f0706de
Update pvlib/spectrum/mismatch.py
RDaxini Jun 7, 2024
6919364
Update pvlib/spectrum/mismatch.py
RDaxini Jun 7, 2024
ed13838
Update mismatch.py
RDaxini Jun 7, 2024
639fc75
Merge branch 'main' of https://github.com/RDaxini/pvlib-python
RDaxini Jun 7, 2024
7c50791
Update test_spectrum.py
RDaxini Jun 7, 2024
e7c032b
Update test_spectrum.py
RDaxini Jun 7, 2024
a7f9909
Update mismatch.py
RDaxini Jun 7, 2024
4616dc2
Update pvlib/spectrum/mismatch.py
RDaxini Jun 8, 2024
bd84537
Update mismatch.py
RDaxini Jun 8, 2024
f773ba7
Merge branch 'main' of https://github.com/RDaxini/pvlib-python
RDaxini Jun 8, 2024
b6a827b
Update mismatch.py
RDaxini Jun 8, 2024
3df83c3
Update pvlib/spectrum/mismatch.py
RDaxini Jun 8, 2024
f468db8
Update pvlib/tests/test_spectrum.py
RDaxini Jun 8, 2024
43727b7
Update pvlib/tests/test_spectrum.py
RDaxini Jun 8, 2024
9071dba
Merge branch 'main' of https://github.com/RDaxini/pvlib-python
RDaxini Jun 8, 2024
8e53d56
Update mismatch.py
RDaxini Jun 8, 2024
da1780f
Update pvlib/tests/test_spectrum.py
RDaxini Jun 8, 2024
15e328c
name change
RDaxini Jun 8, 2024
8925730
Update test_spectrum.py
RDaxini Jun 8, 2024
cc4a3d1
Update pvlib/spectrum/mismatch.py
RDaxini Jun 8, 2024
3d5eab6
Update test_spectrum.py
RDaxini Jun 8, 2024
f845adb
Merge branch 'main' of https://github.com/RDaxini/pvlib-python
RDaxini Jun 8, 2024
70f86c3
Update mismatch.py
RDaxini Jun 8, 2024
332fed5
Update test_spectrum.py
RDaxini Jun 8, 2024
974e098
Update test_spectrum.py
RDaxini Jun 8, 2024
cc05445
Update test_spectrum.py
RDaxini Jun 8, 2024
b36116d
Update test_spectrum.py
RDaxini Jun 8, 2024
c09e8b8
Update test_spectrum.py
RDaxini Jun 9, 2024
bd133ef
Update mismatch.py
RDaxini Jun 9, 2024
1a7416c
Update test_spectrum.py
RDaxini Jun 10, 2024
35b1411
Update pvlib/spectrum/mismatch.py
RDaxini Jun 11, 2024
b0385a1
Update mismatch.py
RDaxini Jun 11, 2024
e30694b
Update pvlib/spectrum/mismatch.py
RDaxini Jun 11, 2024
bcf8abc
Update mismatch.py
RDaxini Jun 11, 2024
ba7c34b
Update mismatch.py
RDaxini Jun 11, 2024
0f1bce0
Update mismatch.py
RDaxini Jun 11, 2024
7701d85
Update pvlib/spectrum/mismatch.py
RDaxini Jun 11, 2024
d5f0979
Update pvlib/spectrum/mismatch.py
RDaxini Jun 11, 2024
887faee
Update pvlib/spectrum/mismatch.py
RDaxini Jun 11, 2024
3c478d5
Update mismatch.py
RDaxini Jun 11, 2024
6203ca6
Merge remote-tracking branch 'upstream/main'
RDaxini Jun 11, 2024
9a4510c
Update mismatch.py
RDaxini Jun 11, 2024
8aeb8b5
Update mismatch.py
RDaxini Jun 11, 2024
7ba41ba
Update mismatch.py
RDaxini Jun 11, 2024
604e911
Update pvlib/spectrum/mismatch.py
RDaxini Jun 12, 2024
8897411
Update pvlib/spectrum/mismatch.py
RDaxini Jun 12, 2024
413cc04
Update pvlib/spectrum/mismatch.py
RDaxini Jun 12, 2024
4605d06
Update mismatch.py
RDaxini Jun 12, 2024
a772a94
test for output type
RDaxini Jun 13, 2024
55d34ed
Update mismatch.py
RDaxini Jun 13, 2024
38469cf
Update pvlib/tests/test_spectrum.py
RDaxini Jun 13, 2024
294eb8e
Update v0.11.0.rst
RDaxini Jun 14, 2024
bc37d49
Update docs/sphinx/source/whatsnew/v0.11.0.rst
RDaxini Jun 14, 2024
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
74 changes: 74 additions & 0 deletions pvlib/tests/test_pelland.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import numpy as np
from warnings import warn

def spectral_factor_pelland(airmass_absolute, clearness_index,
RDaxini marked this conversation as resolved.
Show resolved Hide resolved
module_type = None, coefficients = None,
min_airmass_absolute = 0.58,
max_airmass_absolute = 10):
#0.58 -> same as spectral_factor_firstsolar
# =============================================================================
# model implemented: https://ieeexplore.ieee.org/document/9300932
# inputs: air mass, clearness index
# coefficients: six modules
# =============================================================================
# =============================================================================
# --- Screen Input Data ---
# =============================================================================
#kc
kc = np.atleast_1d(clearness_index)
kc = kc.astype('float64')
if np.min(kc) < 0:
raise ValueError('Clearness index cannot be less than 0')
if np.max(kc) > 1:
raise ValueError('Clearness index cannot be grater than 1')
#ama
if np.max(airmass_absolute) > max_airmass_absolute:
warn('High air mass values greater than 'f'{max_airmass_absolute} '+
'in dataset')
# Warn user about exceptionally low ama data
if np.min(airmass_absolute) < min_airmass_absolute:
airmass_absolute = np.maximum(airmass_absolute, min_airmass_absolute )
warn('Exceptionally low air mass: ' +
'model not intended for extra-terrestrial use')
# =============================================================================
# --- Default coefficients ---
# =============================================================================
_coefficients = {}
_coefficients['polysi'] = (
0.9847, -0.05237, 0.03034)
_coefficients['monosi'] = (
0.9845, -0.05169, 0.03034)
_coefficients['fs-2'] = (
1.002, -0.07108, 0.02465)
_coefficients['fs-4'] = (
0.9981, -0.05776, 0.02336)
_coefficients['cigs'] = (
0.9791, -0.03904, 0.03096)
_coefficients['asi'] = (
1.051, -0.1033, 0.009838)
_coefficients['multisi'] = _coefficients['polysi']
_coefficients['xsi'] = _coefficients['monosi']
# =============================================================================
# --- Check arguments ---
# =============================================================================
if module_type is not None and coefficients is None:
coefficients = _coefficients[module_type.lower()]
elif module_type is None and coefficients is not None:
pass
elif module_type is None and coefficients is None:
raise TypeError('No valid input provided, both module_type and ' +
'coefficients are None. module_type can be one of ' +
'poly-Si, monosi, fs-2, fs-4, cigs, or asi')
else:
raise TypeError('Cannot resolve input, must supply only one of ' +
'module_type and coefficients. module_type can be ' +
'one of poly-Si, monosi, fs-2, fs-4, cigs, or asi')
# =============================================================================
# --- Specral mismatch calculation ---
# =============================================================================
coeff = coefficients
ama = airmass_absolute
kc = clearness_index
modifier = coeff[0]*kc**(coeff[1])*ama**(coeff[2])

return modifier