From 535e3dc04c44eaf5bf313d254c0dd433d236d215 Mon Sep 17 00:00:00 2001 From: echedey-ls <80125792+echedey-ls@users.noreply.github.com> Date: Tue, 3 Dec 2024 23:01:03 +0000 Subject: [PATCH 1/8] Add - in front of dEgdT Co-Authored-By: Cliff Hansen <5393711+cwhanse@users.noreply.github.com> Co-Authored-By: Kevin Anderson <57452607+kandersolar@users.noreply.github.com> --- pvlib/ivtools/sdm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvlib/ivtools/sdm.py b/pvlib/ivtools/sdm.py index ebc63898bc..e0130b42f2 100644 --- a/pvlib/ivtools/sdm.py +++ b/pvlib/ivtools/sdm.py @@ -871,7 +871,7 @@ def fun_rsh(x, rshexp, ee, e0, rsh): params['R_sh_exp'] = R_sh_exp elif model == 'desoto': - dEgdT = 0.0002677 + dEgdT = -0.0002677 x_for_io = const['q'] / const['k'] * ( 1. / tok - 1. / tck[u] + dEgdT * (tc[u] - const['T0']) / tck[u]) From bea2159a92b792fb401702fe4ac78108bb0499b6 Mon Sep 17 00:00:00 2001 From: echedey-ls <80125792+echedey-ls@users.noreply.github.com> Date: Thu, 12 Dec 2024 10:33:37 +0000 Subject: [PATCH 2/8] assert np.allclose -> assert_allclose --- pvlib/tests/ivtools/test_sdm.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pvlib/tests/ivtools/test_sdm.py b/pvlib/tests/ivtools/test_sdm.py index 508591f9e9..1c50262271 100644 --- a/pvlib/tests/ivtools/test_sdm.py +++ b/pvlib/tests/ivtools/test_sdm.py @@ -138,8 +138,8 @@ def test_fit_desoto_sandia(cec_params_cansol_cs5p_220p): modeled['R_s'] = result['R_s'] modeled['R_sh_ref'] = result['R_sh_ref'] expected = pd.Series(params) - assert np.allclose(modeled[params.keys()].values, - expected[params.keys()].values, rtol=5e-2) + assert_allclose(modeled[params.keys()].values, + expected[params.keys()].values, rtol=5e-2) def _read_iv_curves_for_test(datafile, npts): From 5d3d067113e74458c88a100274ceb3b770fe8b45 Mon Sep 17 00:00:00 2001 From: echedey-ls <80125792+echedey-ls@users.noreply.github.com> Date: Thu, 12 Dec 2024 10:34:01 +0000 Subject: [PATCH 3/8] test scalar values --- pvlib/tests/ivtools/test_sdm.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pvlib/tests/ivtools/test_sdm.py b/pvlib/tests/ivtools/test_sdm.py index 1c50262271..216039305a 100644 --- a/pvlib/tests/ivtools/test_sdm.py +++ b/pvlib/tests/ivtools/test_sdm.py @@ -140,6 +140,9 @@ def test_fit_desoto_sandia(cec_params_cansol_cs5p_220p): expected = pd.Series(params) assert_allclose(modeled[params.keys()].values, expected[params.keys()].values, rtol=5e-2) + assert_allclose(result['dEgdT'], -0.0002677) + assert_allclose(result['EgRef'], 1.3112547292120638) + assert_allclose(result['cells_in_series'], specs['cells_in_series']) def _read_iv_curves_for_test(datafile, npts): From b045df214279d5472953b63c509d50f5dd5e9f6e Mon Sep 17 00:00:00 2001 From: echedey-ls <80125792+echedey-ls@users.noreply.github.com> Date: Thu, 12 Dec 2024 10:52:14 +0000 Subject: [PATCH 4/8] rtol unnecessary --- pvlib/tests/ivtools/test_sdm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pvlib/tests/ivtools/test_sdm.py b/pvlib/tests/ivtools/test_sdm.py index 216039305a..9c38660b64 100644 --- a/pvlib/tests/ivtools/test_sdm.py +++ b/pvlib/tests/ivtools/test_sdm.py @@ -139,7 +139,7 @@ def test_fit_desoto_sandia(cec_params_cansol_cs5p_220p): modeled['R_sh_ref'] = result['R_sh_ref'] expected = pd.Series(params) assert_allclose(modeled[params.keys()].values, - expected[params.keys()].values, rtol=5e-2) + expected[params.keys()].values) assert_allclose(result['dEgdT'], -0.0002677) assert_allclose(result['EgRef'], 1.3112547292120638) assert_allclose(result['cells_in_series'], specs['cells_in_series']) From 8cef078d116d563690f6a41db2b420829fae37c2 Mon Sep 17 00:00:00 2001 From: echedey-ls <80125792+echedey-ls@users.noreply.github.com> Date: Fri, 13 Dec 2024 15:36:22 +0000 Subject: [PATCH 5/8] revert back assert_allclose changes --- pvlib/tests/ivtools/test_sdm.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pvlib/tests/ivtools/test_sdm.py b/pvlib/tests/ivtools/test_sdm.py index 9c38660b64..e0def04621 100644 --- a/pvlib/tests/ivtools/test_sdm.py +++ b/pvlib/tests/ivtools/test_sdm.py @@ -138,8 +138,8 @@ def test_fit_desoto_sandia(cec_params_cansol_cs5p_220p): modeled['R_s'] = result['R_s'] modeled['R_sh_ref'] = result['R_sh_ref'] expected = pd.Series(params) - assert_allclose(modeled[params.keys()].values, - expected[params.keys()].values) + assert np.allclose(modeled[params.keys()].values, + expected[params.keys()].values, rtol=5e-2) assert_allclose(result['dEgdT'], -0.0002677) assert_allclose(result['EgRef'], 1.3112547292120638) assert_allclose(result['cells_in_series'], specs['cells_in_series']) From 40451a17cee42434793115822612bba1b6a3249d Mon Sep 17 00:00:00 2001 From: echedey-ls <80125792+echedey-ls@users.noreply.github.com> Date: Fri, 13 Dec 2024 15:45:41 +0000 Subject: [PATCH 6/8] document returned value `dEgdT` --- pvlib/ivtools/sdm.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pvlib/ivtools/sdm.py b/pvlib/ivtools/sdm.py index e0130b42f2..146fd1419e 100644 --- a/pvlib/ivtools/sdm.py +++ b/pvlib/ivtools/sdm.py @@ -567,6 +567,8 @@ def fit_desoto_sandia(ivcurves, specs, const=None, maxiter=5, eps1=1.e-3): dark current at STC [A] EgRef : float effective band gap at STC [eV] + dEgdT : float + temperature coefficient of Eg [1/K] R_s : float series resistance at STC [ohm] R_sh_ref : float From 7695520bd73468eaede459ca1e2cc9cff8966d85 Mon Sep 17 00:00:00 2001 From: echedey-ls <80125792+echedey-ls@users.noreply.github.com> Date: Fri, 13 Dec 2024 15:45:50 +0000 Subject: [PATCH 7/8] whatsnew --- docs/sphinx/source/whatsnew/v0.11.2.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/sphinx/source/whatsnew/v0.11.2.rst b/docs/sphinx/source/whatsnew/v0.11.2.rst index 51549dd205..0503178064 100644 --- a/docs/sphinx/source/whatsnew/v0.11.2.rst +++ b/docs/sphinx/source/whatsnew/v0.11.2.rst @@ -22,6 +22,8 @@ Bug fixes ~~~~~~~~~ * :py:func:`~pvlib.spa.julian_day_dt` now accounts for the 10 day difference between Julian and Gregorian calendars prior to the year 1582. (:issue:`2077`, :pull:`2249`) +* Corrected sign of temperature coefficient ``dEgdT`` in :py:func:`~pvlib.pvsystem.fit_desoto_sandia`. + Results may differ slightly from previous versions. (:issue:`2311`, :pull:`2322`) Documentation ~~~~~~~~~~~~~ From 8cb477c5d338cd96b85b4dad99091f4428f41c45 Mon Sep 17 00:00:00 2001 From: echedey-ls <80125792+echedey-ls@users.noreply.github.com> Date: Fri, 13 Dec 2024 15:49:42 +0000 Subject: [PATCH 8/8] Revert "document returned value `dEgdT`" This reverts commit 40451a17cee42434793115822612bba1b6a3249d. --- pvlib/ivtools/sdm.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pvlib/ivtools/sdm.py b/pvlib/ivtools/sdm.py index 146fd1419e..e0130b42f2 100644 --- a/pvlib/ivtools/sdm.py +++ b/pvlib/ivtools/sdm.py @@ -567,8 +567,6 @@ def fit_desoto_sandia(ivcurves, specs, const=None, maxiter=5, eps1=1.e-3): dark current at STC [A] EgRef : float effective band gap at STC [eV] - dEgdT : float - temperature coefficient of Eg [1/K] R_s : float series resistance at STC [ohm] R_sh_ref : float