Skip to content

Commit 6154a8e

Browse files
committed
Add CEC inverter parameters fixture
1 parent 0a14b27 commit 6154a8e

File tree

3 files changed

+63
-61
lines changed

3 files changed

+63
-61
lines changed

pvlib/test/conftest.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,3 +149,31 @@ def has_numba():
149149

150150
requires_pvfactors = pytest.mark.skipif(not has_pvfactors,
151151
reason='requires pvfactors')
152+
153+
154+
@pytest.fixture(scope='function')
155+
def cec_inverter_parameters():
156+
"""
157+
Define some CEC inverter parameters for testing.
158+
159+
The scope of the fixture is set to ``'function'`` to allow tests to modify
160+
parameters if required without affecting other tests.
161+
"""
162+
parameters = {
163+
'Name': 'ABB: MICRO-0.25-I-OUTD-US-208 208V [CEC 2014]',
164+
'Vac': 208.0,
165+
'Paco': 250.0,
166+
'Pdco': 259.5220505,
167+
'Vdco': 40.24260317,
168+
'Pso': 1.771614224,
169+
'C0': -2.48e-5,
170+
'C1': -9.01e-5,
171+
'C2': 6.69e-4,
172+
'C3': -0.0189,
173+
'Pnt': 0.02,
174+
'Vdcmax': 65.0,
175+
'Idcmax': 10.0,
176+
'Mppt_low': 20.0,
177+
'Mppt_high': 50.0,
178+
}
179+
return parameters

pvlib/test/test_modelchain.py

Lines changed: 23 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -18,60 +18,54 @@
1818

1919

2020
@pytest.fixture
21-
def system(sam_data):
21+
def system(sam_data, cec_inverter_parameters):
2222
modules = sam_data['sandiamod']
2323
module = 'Canadian_Solar_CS5P_220M___2009_'
2424
module_parameters = modules[module].copy()
25-
inverters = sam_data['cecinverter']
26-
inverter = inverters['ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_'].copy()
2725
system = PVSystem(surface_tilt=32.2, surface_azimuth=180,
2826
module=module,
2927
module_parameters=module_parameters,
30-
inverter_parameters=inverter)
28+
inverter_parameters=cec_inverter_parameters)
3129
return system
3230

3331

3432
@pytest.fixture
35-
def cec_dc_snl_ac_system(sam_data):
33+
def cec_dc_snl_ac_system(sam_data, cec_inverter_parameters):
3634
modules = sam_data['cecmod']
3735
module = 'Canadian_Solar_CS5P_220M'
3836
module_parameters = modules[module].copy()
3937
module_parameters['b'] = 0.05
4038
module_parameters['EgRef'] = 1.121
4139
module_parameters['dEgdT'] = -0.0002677
42-
inverters = sam_data['cecinverter']
43-
inverter = inverters['ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_'].copy()
4440
system = PVSystem(surface_tilt=32.2, surface_azimuth=180,
4541
module=module,
4642
module_parameters=module_parameters,
47-
inverter_parameters=inverter)
43+
inverter_parameters=cec_inverter_parameters)
4844
return system
4945

5046

5147
@pytest.fixture
52-
def cec_dc_native_snl_ac_system(sam_data):
48+
def cec_dc_native_snl_ac_system(sam_data, cec_inverter_parameters):
5349
module = 'Canadian_Solar_CS5P_220M'
5450
module_parameters = sam_data['cecmod'][module].copy()
55-
inverters = sam_data['cecinverter']
56-
inverter = inverters['ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_'].copy()
5751
system = PVSystem(surface_tilt=32.2, surface_azimuth=180,
5852
module=module,
5953
module_parameters=module_parameters,
60-
inverter_parameters=inverter)
54+
inverter_parameters=cec_inverter_parameters)
6155
return system
6256

6357

6458
@pytest.fixture
65-
def pvsyst_dc_snl_ac_system(sam_data, pvsyst_module_params):
59+
def pvsyst_dc_snl_ac_system(
60+
sam_data, pvsyst_module_params, cec_inverter_parameters
61+
):
6662
module = 'PVsyst test module'
6763
module_parameters = pvsyst_module_params
6864
module_parameters['b'] = 0.05
69-
inverters = sam_data['cecinverter']
70-
inverter = inverters['ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_'].copy()
7165
system = PVSystem(surface_tilt=32.2, surface_azimuth=180,
7266
module=module,
7367
module_parameters=module_parameters,
74-
inverter_parameters=inverter)
68+
inverter_parameters=cec_inverter_parameters)
7569
return system
7670

7771

@@ -93,13 +87,11 @@ def cec_dc_adr_ac_system(sam_data):
9387

9488

9589
@pytest.fixture
96-
def pvwatts_dc_snl_ac_system(sam_data):
90+
def pvwatts_dc_snl_ac_system(sam_data, cec_inverter_parameters):
9791
module_parameters = {'pdc0': 220, 'gamma_pdc': -0.003}
98-
inverters = sam_data['cecinverter']
99-
inverter = inverters['ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_'].copy()
10092
system = PVSystem(surface_tilt=32.2, surface_azimuth=180,
10193
module_parameters=module_parameters,
102-
inverter_parameters=inverter)
94+
inverter_parameters=cec_inverter_parameters)
10395
return system
10496

10597

@@ -504,25 +496,23 @@ def test_deprecated_clearsky_07():
504496

505497

506498
@requires_scipy
507-
def test_basic_chain_required(sam_data):
499+
def test_basic_chain_required(sam_data, cec_inverter_parameters):
508500
times = pd.date_range(start='20160101 1200-0700',
509501
end='20160101 1800-0700', freq='6H')
510502
latitude = 32
511503
longitude = -111
512504
altitude = 700
513505
modules = sam_data['sandiamod']
514506
module_parameters = modules['Canadian_Solar_CS5P_220M___2009_']
515-
inverters = sam_data['cecinverter']
516-
inverter_parameters = inverters[
517-
'ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_']
518507
with pytest.raises(ValueError):
519-
dc, ac = modelchain.basic_chain(times, latitude, longitude,
520-
module_parameters, inverter_parameters,
521-
altitude=altitude)
508+
dc, ac = modelchain.basic_chain(
509+
times, latitude, longitude, module_parameters,
510+
cec_inverter_parameters, altitude=altitude
511+
)
522512

523513

524514
@requires_scipy
525-
def test_basic_chain_alt_az(sam_data):
515+
def test_basic_chain_alt_az(sam_data, cec_inverter_parameters):
526516
times = pd.date_range(start='20160101 1200-0700',
527517
end='20160101 1800-0700', freq='6H')
528518
latitude = 32.2
@@ -531,12 +521,9 @@ def test_basic_chain_alt_az(sam_data):
531521
surface_azimuth = 0
532522
modules = sam_data['sandiamod']
533523
module_parameters = modules['Canadian_Solar_CS5P_220M___2009_']
534-
inverters = sam_data['cecinverter']
535-
inverter_parameters = inverters[
536-
'ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_']
537524

538525
dc, ac = modelchain.basic_chain(times, latitude, longitude,
539-
module_parameters, inverter_parameters,
526+
module_parameters, cec_inverter_parameters,
540527
surface_tilt=surface_tilt,
541528
surface_azimuth=surface_azimuth)
542529

@@ -546,20 +533,17 @@ def test_basic_chain_alt_az(sam_data):
546533

547534

548535
@requires_scipy
549-
def test_basic_chain_strategy(sam_data):
536+
def test_basic_chain_strategy(sam_data, cec_inverter_parameters):
550537
times = pd.date_range(start='20160101 1200-0700',
551538
end='20160101 1800-0700', freq='6H')
552539
latitude = 32.2
553540
longitude = -111
554541
altitude = 700
555542
modules = sam_data['sandiamod']
556543
module_parameters = modules['Canadian_Solar_CS5P_220M___2009_']
557-
inverters = sam_data['cecinverter']
558-
inverter_parameters = inverters[
559-
'ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_']
560544

561545
dc, ac = modelchain.basic_chain(
562-
times, latitude, longitude, module_parameters, inverter_parameters,
546+
times, latitude, longitude, module_parameters, cec_inverter_parameters,
563547
orientation_strategy='south_at_latitude_tilt', altitude=altitude)
564548

565549
expected = pd.Series(np.array([ 183.522449305, -2.00000000e-02]),
@@ -568,7 +552,7 @@ def test_basic_chain_strategy(sam_data):
568552

569553

570554
@requires_scipy
571-
def test_basic_chain_altitude_pressure(sam_data):
555+
def test_basic_chain_altitude_pressure(sam_data, cec_inverter_parameters):
572556
times = pd.date_range(start='20160101 1200-0700',
573557
end='20160101 1800-0700', freq='6H')
574558
latitude = 32.2
@@ -578,12 +562,9 @@ def test_basic_chain_altitude_pressure(sam_data):
578562
surface_azimuth = 0
579563
modules = sam_data['sandiamod']
580564
module_parameters = modules['Canadian_Solar_CS5P_220M___2009_']
581-
inverters = sam_data['cecinverter']
582-
inverter_parameters = inverters[
583-
'ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_']
584565

585566
dc, ac = modelchain.basic_chain(times, latitude, longitude,
586-
module_parameters, inverter_parameters,
567+
module_parameters, cec_inverter_parameters,
587568
surface_tilt=surface_tilt,
588569
surface_azimuth=surface_azimuth,
589570
pressure=93194)

pvlib/test/test_pvsystem.py

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,6 @@ def sam_data():
236236
data = {}
237237
data['cecmod'] = pvsystem.retrieve_sam('cecmod')
238238
data['sandiamod'] = pvsystem.retrieve_sam('sandiamod')
239-
data['cecinverter'] = pvsystem.retrieve_sam('cecinverter')
240239
data['adrinverter'] = pvsystem.retrieve_sam('adrinverter')
241240
return data
242241

@@ -1266,22 +1265,20 @@ def test_adrinverter_invalid_and_night(sam_data):
12661265
assert_allclose(pacs, np.array([np.nan, -0.25, np.nan, np.nan]))
12671266

12681267

1269-
def test_snlinverter(sam_data):
1270-
inverters = sam_data['cecinverter']
1271-
testinv = 'ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_'
1268+
def test_snlinverter(cec_inverter_parameters):
12721269
vdcs = pd.Series(np.linspace(0,50,3))
12731270
idcs = pd.Series(np.linspace(0,11,3))
12741271
pdcs = idcs * vdcs
12751272

1276-
pacs = pvsystem.snlinverter(vdcs, pdcs, inverters[testinv])
1273+
pacs = pvsystem.snlinverter(vdcs, pdcs, cec_inverter_parameters)
12771274
assert_series_equal(pacs, pd.Series([-0.020000, 132.004308, 250.000000]))
12781275

12791276

1280-
def test_PVSystem_snlinverter(sam_data):
1281-
inverters = sam_data['cecinverter']
1282-
testinv = 'ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_'
1283-
system = pvsystem.PVSystem(inverter=testinv,
1284-
inverter_parameters=inverters[testinv])
1277+
def test_PVSystem_snlinverter(cec_inverter_parameters):
1278+
system = pvsystem.PVSystem(
1279+
inverter=cec_inverter_parameters['Name'],
1280+
inverter_parameters=cec_inverter_parameters,
1281+
)
12851282
vdcs = pd.Series(np.linspace(0,50,3))
12861283
idcs = pd.Series(np.linspace(0,11,3))
12871284
pdcs = idcs * vdcs
@@ -1290,26 +1287,22 @@ def test_PVSystem_snlinverter(sam_data):
12901287
assert_series_equal(pacs, pd.Series([-0.020000, 132.004308, 250.000000]))
12911288

12921289

1293-
def test_snlinverter_float(sam_data):
1294-
inverters = sam_data['cecinverter']
1295-
testinv = 'ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_'
1290+
def test_snlinverter_float(cec_inverter_parameters):
12961291
vdcs = 25.
12971292
idcs = 5.5
12981293
pdcs = idcs * vdcs
12991294

1300-
pacs = pvsystem.snlinverter(vdcs, pdcs, inverters[testinv])
1295+
pacs = pvsystem.snlinverter(vdcs, pdcs, cec_inverter_parameters)
13011296
assert_allclose(pacs, 132.004278, 5)
13021297

13031298

1304-
def test_snlinverter_Pnt_micro(sam_data):
1305-
inverters = sam_data['cecinverter']
1306-
testinv = 'Enphase_Energy__M250_60_2LL_S2x___ZC____NA__208V_208V__CEC_2013_'
1299+
def test_snlinverter_Pnt_micro(cec_inverter_parameters):
13071300
vdcs = pd.Series(np.linspace(0,50,3))
13081301
idcs = pd.Series(np.linspace(0,11,3))
13091302
pdcs = idcs * vdcs
13101303

1311-
pacs = pvsystem.snlinverter(vdcs, pdcs, inverters[testinv])
1312-
assert_series_equal(pacs, pd.Series([-0.043000, 132.545914746, 240.000000]))
1304+
pacs = pvsystem.snlinverter(vdcs, pdcs, cec_inverter_parameters)
1305+
assert_series_equal(pacs, pd.Series([-0.02, 132.004278492, 250.0]))
13131306

13141307

13151308
def test_PVSystem_creation():

0 commit comments

Comments
 (0)