Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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))
Ejemplo n.º 3
0
        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