def test_fit_sandia_simple(get_test_iv_params, get_bad_iv_curves): test_params = get_test_iv_params testcurve = pvsystem.singlediode(photocurrent=test_params['IL'], saturation_current=test_params['I0'], resistance_shunt=test_params['Rsh'], resistance_series=test_params['Rs'], nNsVth=test_params['nNsVth'], ivcurve_pnts=300) expected = tuple(test_params[k] for k in ['IL', 'I0', 'Rs', 'Rsh', 'nNsVth']) result = sde.fit_sandia_simple(voltage=testcurve['v'], current=testcurve['i']) assert np.allclose(result, expected, rtol=5e-5) result = sde.fit_sandia_simple(voltage=testcurve['v'], current=testcurve['i'], v_oc=testcurve['v_oc'], i_sc=testcurve['i_sc']) assert np.allclose(result, expected, rtol=5e-5) result = sde.fit_sandia_simple(voltage=testcurve['v'], current=testcurve['i'], v_oc=testcurve['v_oc'], i_sc=testcurve['i_sc'], v_mp_i_mp=(testcurve['v_mp'], testcurve['i_mp'])) assert np.allclose(result, expected, rtol=5e-5) result = sde.fit_sandia_simple(voltage=testcurve['v'], current=testcurve['i'], vlim=0.1) assert np.allclose(result, expected, rtol=5e-5)
def test_fit_sandia_simple_bad_iv(get_bad_iv_curves): # bad IV curves for coverage of if/then in sde._sandia_simple_params v1, i1, v2, i2 = get_bad_iv_curves result = sde.fit_sandia_simple(voltage=v1, current=i1) assert np.allclose( result, (-2.4322856072799985, 8.826830831727355, 111.18558915546389, -63.56227601452038, -137.9965046659527)) result = sde.fit_sandia_simple(voltage=v2, current=i2) assert np.allclose(result, (2.62405311949227, 5.075520636620032, -65.652554411442, 110.35202827739991, 174.49362093001415))
power[np.logical_not(is_current_finite)] = 0 mpp_idx = np.argmax(power) v_oc = np.max(voltage[is_current_finite]) i_sc = current[0] # Plot IV curve. plt.plot(voltage, current) plt.plot(0, i_sc,'r.') plt.plot(v_oc,0,'r.') plt.show() v_mp_i_mp = (voltage[mpp_idx], current[mpp_idx]) out = fit_sandia_simple(voltage=voltage, current=current, v_mp_i_mp=v_mp_i_mp, v_oc=v_oc, i_sc=i_sc) break """ Traceback (most recent call last): File "/Users/toddkarin/opt/anaconda3/envs/pvpro/lib/python3.8/site-packages/IPython/core/interactiveshell.py", line 3441, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-2-0f850edcbc3d>", line 1, in <module> runfile('/Volumes/GoogleDrive/My Drive/LBL/projects/pvpro/examples/nist-iv03_process.py', wdir='/Volumes/GoogleDrive/My Drive/LBL/projects/pvpro/examples') File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/_pydev_bundle/pydev_umd.py", line 197, in runfile pydev_imports.execfile(filename, global_vars, local_vars) # execute the script File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile