From 56abd8173491acbba8801d341065fbe92a246054 Mon Sep 17 00:00:00 2001 From: Kevin Anderson <57452607+kanderso-nrel@users.noreply.github.com> Date: Sun, 12 Jun 2022 13:44:12 -0400 Subject: [PATCH] Update test_spectrum.py --- pvlib/tests/test_spectrum.py | 100 ----------------------------------- 1 file changed, 100 deletions(-) diff --git a/pvlib/tests/test_spectrum.py b/pvlib/tests/test_spectrum.py index cfcd50d1fe..a0300b1ee7 100644 --- a/pvlib/tests/test_spectrum.py +++ b/pvlib/tests/test_spectrum.py @@ -6,103 +6,3 @@ from .conftest import DATA_DIR SPECTRL2_TEST_DATA = DATA_DIR / 'spectrl2_example_spectra.csv' - - -@pytest.fixture -def spectrl2_data(): - # reference spectra generated with solar_utils==0.3 - """ - expected = solar_utils.spectrl2( - units=1, - location=[40, -80, -5], - datetime=[2020, 3, 15, 10, 45, 59], - weather=[1013, 15], - orientation=[0, 180], - atmospheric_conditions=[1.14, 0.65, 0.344, 0.1, 1.42], - albedo=[0.3, 0.7, 0.8, 1.3, 2.5, 4.0] + [0.2]*6, - ) - """ - kwargs = { - 'surface_tilt': 0, - 'relative_airmass': 1.4899535986910446, - 'apparent_zenith': 47.912086486816406, - 'aoi': 47.91208648681641, - 'ground_albedo': 0.2, - 'surface_pressure': 101300, - 'ozone': 0.344, - 'precipitable_water': 1.42, - 'aerosol_turbidity_500nm': 0.1, - 'dayofyear': 75 - } - df = pd.read_csv(SPECTRL2_TEST_DATA) - # convert um to nm - df['wavelength'] *= 1000 - df[['specdif', 'specdir', 'specetr', 'specglo']] /= 1000 - return kwargs, df - - -def test_spectrl2(spectrl2_data): - # compare against output from solar_utils wrapper around NREL spectrl2_2.c - kwargs, expected = spectrl2_data - actual = spectrum.spectrl2(**kwargs) - assert_allclose(expected['wavelength'].values, actual['wavelength']) - assert_allclose(expected['specdif'].values, actual['dhi'].ravel(), - atol=7e-5) - assert_allclose(expected['specdir'].values, actual['dni'].ravel(), - atol=1.5e-4) - assert_allclose(expected['specetr'], actual['dni_extra'].ravel(), - atol=2e-4) - assert_allclose(expected['specglo'], actual['poa_global'].ravel(), - atol=1e-4) - - -def test_spectrl2_array(spectrl2_data): - # test that supplying arrays instead of scalars works - kwargs, expected = spectrl2_data - kwargs = {k: np.array([v, v, v]) for k, v in kwargs.items()} - actual = spectrum.spectrl2(**kwargs) - - assert actual['wavelength'].shape == (122,) - - keys = ['dni_extra', 'dhi', 'dni', 'poa_sky_diffuse', 'poa_ground_diffuse', - 'poa_direct', 'poa_global'] - for key in keys: - assert actual[key].shape == (122, 3) - - -def test_spectrl2_series(spectrl2_data): - # test that supplying Series instead of scalars works - kwargs, expected = spectrl2_data - kwargs.pop('dayofyear') - index = pd.to_datetime(['2020-03-15 10:45:59']*3) - kwargs = {k: pd.Series([v, v, v], index=index) for k, v in kwargs.items()} - actual = spectrum.spectrl2(**kwargs) - - assert actual['wavelength'].shape == (122,) - - keys = ['dni_extra', 'dhi', 'dni', 'poa_sky_diffuse', 'poa_ground_diffuse', - 'poa_direct', 'poa_global'] - for key in keys: - assert actual[key].shape == (122, 3) - - -def test_dayofyear_missing(spectrl2_data): - # test that not specifying dayofyear with non-pandas inputs raises error - kwargs, expected = spectrl2_data - kwargs.pop('dayofyear') - with pytest.raises(ValueError, match='dayofyear must be specified'): - _ = spectrum.spectrl2(**kwargs) - - -def test_aoi_gt_90(spectrl2_data): - # test that returned irradiance values are non-negative when aoi > 90 - # see GH #1348 - kwargs, _ = spectrl2_data - kwargs['apparent_zenith'] = 70 - kwargs['aoi'] = 130 - kwargs['surface_tilt'] = 60 - - spectra = spectrum.spectrl2(**kwargs) - for key in ['poa_direct', 'poa_global']: - message = f'{key} contains negative values for aoi>90' - assert np.all(spectra[key] >= 0), message