|
20 | 20 | from pvlib import temperature
|
21 | 21 | from pvlib._deprecation import pvlibDeprecationWarning
|
22 | 22 | from pvlib.tools import cosd
|
| 23 | +from pvlib.singlediode import VOLTAGE_BUILTIN |
| 24 | +from pvlib.tests.test_singlediode import get_pvsyst_fs_495 |
23 | 25 |
|
24 | 26 |
|
25 | 27 | @pytest.mark.parametrize('iam_model,model_params', [
|
@@ -1246,6 +1248,43 @@ def test_mpp_floats():
|
1246 | 1248 | assert np.isclose(v, expected[k])
|
1247 | 1249 |
|
1248 | 1250 |
|
| 1251 | +def test_mpp_recombination(): |
| 1252 | + """test max_power_point""" |
| 1253 | + pvsyst_fs_495 = get_pvsyst_fs_495() |
| 1254 | + IL, I0, Rs, Rsh, nNsVth = pvsystem.calcparams_pvsyst( |
| 1255 | + effective_irradiance=pvsyst_fs_495['irrad_ref'], |
| 1256 | + temp_cell=pvsyst_fs_495['temp_ref'], |
| 1257 | + alpha_sc=pvsyst_fs_495['alpha_sc'], |
| 1258 | + gamma_ref=pvsyst_fs_495['gamma_ref'], |
| 1259 | + mu_gamma=pvsyst_fs_495['mu_gamma'], I_L_ref=pvsyst_fs_495['I_L_ref'], |
| 1260 | + I_o_ref=pvsyst_fs_495['I_o_ref'], R_sh_ref=pvsyst_fs_495['R_sh_ref'], |
| 1261 | + R_sh_0=pvsyst_fs_495['R_sh_0'], R_sh_exp=pvsyst_fs_495['R_sh_exp'], |
| 1262 | + R_s=pvsyst_fs_495['R_s'], |
| 1263 | + cells_in_series=pvsyst_fs_495['cells_in_series'], |
| 1264 | + EgRef=pvsyst_fs_495['EgRef']) |
| 1265 | + out = pvsystem.max_power_point( |
| 1266 | + IL, I0, Rs, Rsh, nNsVth, |
| 1267 | + d2mutau=pvsyst_fs_495['d2mutau'], |
| 1268 | + NsVbi=VOLTAGE_BUILTIN*pvsyst_fs_495['cells_in_series'], |
| 1269 | + method='brentq') |
| 1270 | + expected_imp = pvsyst_fs_495['I_mp_ref'] |
| 1271 | + expected_vmp = pvsyst_fs_495['V_mp_ref'] |
| 1272 | + expected_pmp = expected_imp*expected_vmp |
| 1273 | + expected = {'i_mp': expected_imp, |
| 1274 | + 'v_mp': expected_vmp, |
| 1275 | + 'p_mp': expected_pmp} |
| 1276 | + assert isinstance(out, dict) |
| 1277 | + for k, v in out.items(): |
| 1278 | + assert np.isclose(v, expected[k], 0.01) |
| 1279 | + out = pvsystem.max_power_point( |
| 1280 | + IL, I0, Rs, Rsh, nNsVth, |
| 1281 | + d2mutau=pvsyst_fs_495['d2mutau'], |
| 1282 | + NsVbi=VOLTAGE_BUILTIN*pvsyst_fs_495['cells_in_series'], |
| 1283 | + method='newton') |
| 1284 | + for k, v in out.items(): |
| 1285 | + assert np.isclose(v, expected[k], 0.01) |
| 1286 | + |
| 1287 | + |
1249 | 1288 | def test_mpp_array():
|
1250 | 1289 | """test max_power_point"""
|
1251 | 1290 | IL, I0, Rs, Rsh, nNsVth = (np.array([7, 7]), 6e-7, .1, 20, .5)
|
|
0 commit comments