@@ -413,43 +413,45 @@ def fit_pvsyst_iec61853_sandia(effective_irradiance, temp_cell,
413
413
is_t_stc = temp_cell == 25
414
414
415
415
if alpha_sc is None :
416
- mu_i_sc = _fit_tempco (i_sc [is_g_stc ], temp_cell [is_g_stc ])
417
416
i_sc_ref = float (i_sc [is_g_stc & is_t_stc ])
417
+ mu_i_sc = _fit_tempco_pvsyst_iec61853_sandia (i_sc [is_g_stc ],
418
+ temp_cell [is_g_stc ])
418
419
alpha_sc = mu_i_sc * i_sc_ref
419
420
420
421
if beta_mp is None :
421
- beta_mp = _fit_tempco (v_mp [is_g_stc ], temp_cell [is_g_stc ])
422
+ beta_mp = _fit_tempco_pvsyst_iec61853_sandia (v_mp [is_g_stc ],
423
+ temp_cell [is_g_stc ])
422
424
423
- R_sh_ref , R_sh_0 , R_sh_exp = _fit_shunt_resistances (
425
+ R_sh_ref , R_sh_0 , R_sh_exp = _fit_shunt_resistances_pvsyst_iec61853_sandia (
424
426
i_sc , i_mp , v_mp , effective_irradiance , temp_cell , beta_mp ,
425
427
coeff = r_sh_coeff , min_irradiance = min_Rsh_irradiance
426
428
)
427
429
428
430
if R_s is None :
429
- R_s = _fit_series_resistance (sm , v_oc , i_mp , v_mp )
431
+ R_s = _fit_series_resistance_pvsyst_iec61853_sandia (sm , v_oc ,
432
+ i_mp , v_mp )
430
433
431
- gamma_ref , mu_gamma = _fit_diode_ideality_factor (
434
+ gamma_ref , mu_gamma = _fit_diode_ideality_factor_pvsyst_iec61853_sandia (
432
435
sm , i_sc [is_t_stc ], v_oc [is_t_stc ], i_mp [is_t_stc ], v_mp [is_t_stc ],
433
436
effective_irradiance [is_t_stc ], temp_cell [is_t_stc ],
434
437
R_sh_ref , R_sh_0 , R_sh_exp , R_s , cells_in_series
435
438
)
436
439
437
- I_o_ref = _fit_saturation_current (
440
+ I_o_ref = _fit_saturation_current_pvsyst_iec61853_sandia (
438
441
i_sc , v_oc , effective_irradiance , temp_cell , gamma_ref , mu_gamma ,
439
442
R_sh_ref , R_sh_0 , R_sh_exp , R_s , cells_in_series , EgRef
440
443
)
441
444
442
- I_L_ref = _fit_photocurrent (
445
+ I_L_ref = _fit_photocurrent_pvsyst_iec61853_sandia (
443
446
sm , i_sc , effective_irradiance , temp_cell , alpha_sc ,
444
447
gamma_ref , mu_gamma ,
445
448
I_o_ref , R_sh_ref , R_sh_0 , R_sh_exp , R_s , cells_in_series , EgRef
446
449
)
447
450
448
451
gamma_ref , mu_gamma = \
449
- _fit_diode_ideality_factor_post (sm , i_mp , v_mp , effective_irradiance ,
450
- temp_cell , alpha_sc , I_L_ref , I_o_ref ,
451
- R_sh_ref , R_sh_0 , R_sh_exp , R_s ,
452
- cells_in_series , EgRef )
452
+ _fit_diode_ideality_factor_post_pvsyst_iec61853_sandia (
453
+ sm , i_mp , v_mp , effective_irradiance , temp_cell , alpha_sc , I_L_ref ,
454
+ I_o_ref , R_sh_ref , R_sh_0 , R_sh_exp , R_s , cells_in_series , EgRef )
453
455
454
456
fitted_params = dict (
455
457
alpha_sc = alpha_sc ,
@@ -467,15 +469,16 @@ def fit_pvsyst_iec61853_sandia(effective_irradiance, temp_cell,
467
469
return fitted_params
468
470
469
471
470
- def _fit_tempco (values , temp_cell , temp_cell_ref = 25 ):
472
+ def _fit_tempco_pvsyst_iec61853_sandia (values , temp_cell , temp_cell_ref = 25 ):
471
473
fit = np .polynomial .polynomial .Polynomial .fit (temp_cell , values , deg = 1 )
472
474
intercept , slope = fit .convert ().coef
473
475
value_ref = intercept + slope * temp_cell_ref
474
476
return slope / value_ref
475
477
476
478
477
- def _fit_shunt_resistances (i_sc , i_mp , v_mp , effective_irradiance , temp_cell ,
478
- beta_v_mp , coeff = 0.2 , min_irradiance = None ):
479
+ def _fit_shunt_resistances_pvsyst_iec61853_sandia (
480
+ i_sc , i_mp , v_mp , effective_irradiance , temp_cell ,
481
+ beta_v_mp , coeff = 0.2 , min_irradiance = None ):
479
482
if min_irradiance is None :
480
483
min_irradiance = 0
481
484
@@ -509,7 +512,7 @@ def _fit_shunt_resistances(i_sc, i_mp, v_mp, effective_irradiance, temp_cell,
509
512
return Rshref , Rsh0 , Rshexp
510
513
511
514
512
- def _fit_series_resistance (sm , v_oc , i_mp , v_mp ):
515
+ def _fit_series_resistance_pvsyst_iec61853_sandia (sm , v_oc , i_mp , v_mp ):
513
516
# Stein et al 2014, https://doi.org/10.1109/PVSC.2014.6925326
514
517
515
518
# Eq 13
@@ -522,10 +525,9 @@ def _fit_series_resistance(sm, v_oc, i_mp, v_mp):
522
525
return R_s
523
526
524
527
525
- def _fit_diode_ideality_factor (sm , i_sc , v_oc , i_mp , v_mp ,
526
- effective_irradiance , temp_cell ,
527
- R_sh_ref , R_sh_0 , R_sh_exp , R_s ,
528
- cells_in_series ):
528
+ def _fit_diode_ideality_factor_pvsyst_iec61853_sandia (
529
+ sm , i_sc , v_oc , i_mp , v_mp , effective_irradiance , temp_cell ,
530
+ R_sh_ref , R_sh_0 , R_sh_exp , R_s , cells_in_series ):
529
531
530
532
NsVth = _pvsyst_nNsVth (temp_cell , gamma = 1 , cells_in_series = cells_in_series )
531
533
Rsh = _pvsyst_Rsh (effective_irradiance , R_sh_ref , R_sh_0 , R_sh_exp )
@@ -543,10 +545,9 @@ def _fit_diode_ideality_factor(sm, i_sc, v_oc, i_mp, v_mp,
543
545
return gamma_ref , 0
544
546
545
547
546
- def _fit_saturation_current (i_sc , v_oc , effective_irradiance , temp_cell ,
547
- gamma_ref , mu_gamma ,
548
- R_sh_ref , R_sh_0 , R_sh_exp , R_s ,
549
- cells_in_series , EgRef ):
548
+ def _fit_saturation_current_pvsyst_iec61853_sandia (
549
+ i_sc , v_oc , effective_irradiance , temp_cell , gamma_ref , mu_gamma ,
550
+ R_sh_ref , R_sh_0 , R_sh_exp , R_s , cells_in_series , EgRef ):
550
551
R_sh = _pvsyst_Rsh (effective_irradiance , R_sh_ref , R_sh_0 , R_sh_exp )
551
552
gamma = _pvsyst_gamma (temp_cell , gamma_ref , mu_gamma )
552
553
nNsVth = _pvsyst_nNsVth (temp_cell , gamma , cells_in_series )
@@ -562,10 +563,10 @@ def _fit_saturation_current(i_sc, v_oc, effective_irradiance, temp_cell,
562
563
return I_o_ref
563
564
564
565
565
- def _fit_photocurrent ( sm , i_sc , effective_irradiance , temp_cell ,
566
- alpha_sc , gamma_ref , mu_gamma , I_o_ref ,
567
- R_sh_ref , R_sh_0 , R_sh_exp , R_s ,
568
- cells_in_series , EgRef ):
566
+ def _fit_photocurrent_pvsyst_iec61853_sandia (
567
+ sm , i_sc , effective_irradiance , temp_cell , alpha_sc , gamma_ref ,
568
+ mu_gamma , I_o_ref , R_sh_ref , R_sh_0 , R_sh_exp , R_s , cells_in_series ,
569
+ EgRef ):
569
570
R_sh = _pvsyst_Rsh (effective_irradiance , R_sh_ref , R_sh_0 , R_sh_exp )
570
571
gamma = _pvsyst_gamma (temp_cell , gamma_ref , mu_gamma )
571
572
I_o = _pvsyst_Io (temp_cell , gamma , I_o_ref , EgRef )
@@ -582,10 +583,9 @@ def _fit_photocurrent(sm, i_sc, effective_irradiance, temp_cell,
582
583
return I_L_ref
583
584
584
585
585
- def _fit_diode_ideality_factor_post (sm , i_mp , v_mp , effective_irradiance ,
586
- temp_cell , alpha_sc , I_L_ref , I_o_ref ,
587
- R_sh_ref , R_sh_0 , R_sh_exp , R_s ,
588
- cells_in_series , EgRef ):
586
+ def _fit_diode_ideality_factor_post_pvsyst_iec61853_sandia (
587
+ sm , i_mp , v_mp , effective_irradiance , temp_cell , alpha_sc , I_L_ref ,
588
+ I_o_ref , R_sh_ref , R_sh_0 , R_sh_exp , R_s , cells_in_series , EgRef ):
589
589
590
590
Rsh = _pvsyst_Rsh (effective_irradiance , R_sh_ref , R_sh_0 , R_sh_exp )
591
591
I_L = _pvsyst_IL (effective_irradiance , temp_cell , I_L_ref , alpha_sc )
0 commit comments