Skip to content

Commit 16bd076

Browse files
committed
use _lambertw_pvlib in ivtools
1 parent 5430705 commit 16bd076

2 files changed

Lines changed: 5 additions & 7 deletions

File tree

pvlib/ivtools/sdm/_fit_desoto_pvsyst_sandia.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@
55
import numpy as np
66

77
from scipy import optimize
8-
from scipy.special import lambertw
98

109
from pvlib.pvsystem import singlediode, v_from_i
11-
from pvlib.ivtools.utils import rectify_iv_curve, _numdiff
10+
from pvlib.ivtools.utils import rectify_iv_curve, _numdiff, _lambertw_pvlib
1211
from pvlib.pvsystem import _pvsyst_Rsh
1312

1413

@@ -535,7 +534,7 @@ def _calc_theta_phi_exact(vmp, imp, iph, io, rs, rsh, nnsvth):
535534
nnsvth == 0,
536535
np.nan,
537536
rsh * io / nnsvth * np.exp(rsh * (iph + io - imp) / nnsvth))
538-
phi = np.where(argw > 0, lambertw(argw).real, np.nan)
537+
phi = np.where(argw > 0, _lambertw_pvlib(argw), np.nan)
539538

540539
# NaN where argw overflows. Switch to log space to evaluate
541540
u = np.isinf(argw)
@@ -561,7 +560,7 @@ def _calc_theta_phi_exact(vmp, imp, iph, io, rs, rsh, nnsvth):
561560
np.nan,
562561
rsh / (rsh + rs) * rs * io / nnsvth * np.exp(
563562
rsh / (rsh + rs) * (rs * (iph + io) + vmp) / nnsvth))
564-
theta = np.where(argw > 0, lambertw(argw).real, np.nan)
563+
theta = np.where(argw > 0, _lambertw_pvlib(argw), np.nan)
565564

566565
# NaN where argw overflows. Switch to log space to evaluate
567566
u = np.isinf(argw)

pvlib/ivtools/sdm/desoto.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
from scipy import constants
44
from scipy import optimize
5-
from scipy.special import lambertw
65

7-
from pvlib.ivtools.utils import rectify_iv_curve
6+
from pvlib.ivtools.utils import rectify_iv_curve, _lambertw_pvlib
87
from pvlib.ivtools.sde import _fit_sandia_cocontent
98

109
from pvlib.ivtools.sdm._fit_desoto_pvsyst_sandia import (
@@ -454,7 +453,7 @@ def fit_desoto_batzelis(v_mp, i_mp, v_oc, i_sc, alpha_sc, beta_voc):
454453
# Equation numbers refer to [1]
455454
t0 = 298.15 # K
456455
del0 = (1 - beta_voc * t0) / (50.1 - alpha_sc * t0) # Eq 9
457-
w0 = np.real(lambertw(np.exp(1/del0 + 1)))
456+
w0 = _lambertw_pvlib(np.exp(1/del0 + 1))
458457

459458
# Eqs 11-15
460459
a0 = del0 * v_oc

0 commit comments

Comments
 (0)