@@ -310,14 +310,14 @@ def maxp(temp_cell, irrad_ref, alpha_sc, gamma_ref, mu_gamma, I_L_ref,
310
310
return gamma_pdc / pmp
311
311
312
312
313
- def fit_pvsyst_iec61853_sandia (effective_irradiance , temp_cell ,
314
- i_sc , v_oc , i_mp , v_mp ,
315
- cells_in_series , EgRef = 1.121 ,
316
- alpha_sc = None , beta_mp = None ,
317
- R_s = None , r_sh_coeff = 0.12 ,
318
- min_Rsh_irradiance = None ,
319
- irradiance_tolerance = 20 ,
320
- temperature_tolerance = 1 ):
313
+ def fit_pvsyst_iec61853_sandia_2025 (effective_irradiance , temp_cell ,
314
+ i_sc , v_oc , i_mp , v_mp ,
315
+ cells_in_series , EgRef = 1.121 ,
316
+ alpha_sc = None , beta_mp = None ,
317
+ R_s = None , r_sh_coeff = 0.12 ,
318
+ min_Rsh_irradiance = None ,
319
+ irradiance_tolerance = 20 ,
320
+ temperature_tolerance = 1 ):
321
321
"""
322
322
Estimate parameters for the PVsyst module performance model using
323
323
IEC 61853-1 matrix measurements.
@@ -420,42 +420,45 @@ def fit_pvsyst_iec61853_sandia(effective_irradiance, temp_cell,
420
420
atol = temperature_tolerance )
421
421
422
422
if alpha_sc is None :
423
- mu_i_sc = _fit_tempco_pvsyst_iec61853_sandia (i_sc [is_g_stc ],
424
- temp_cell [is_g_stc ])
423
+ mu_i_sc = _fit_tempco_pvsyst_iec61853_sandia_2025 (i_sc [is_g_stc ],
424
+ temp_cell [is_g_stc ])
425
425
i_sc_ref = float (i_sc [is_g_stc & is_t_stc ].item ())
426
426
alpha_sc = mu_i_sc * i_sc_ref
427
427
428
428
if beta_mp is None :
429
- beta_mp = _fit_tempco_pvsyst_iec61853_sandia (v_mp [is_g_stc ],
430
- temp_cell [is_g_stc ])
429
+ beta_mp = _fit_tempco_pvsyst_iec61853_sandia_2025 (v_mp [is_g_stc ],
430
+ temp_cell [is_g_stc ])
431
431
432
- R_sh_ref , R_sh_0 , R_sh_exp = _fit_shunt_resistances_pvsyst_iec61853_sandia (
433
- i_sc , i_mp , v_mp , effective_irradiance , temp_cell , beta_mp ,
434
- coeff = r_sh_coeff , min_irradiance = min_Rsh_irradiance
432
+ R_sh_ref , R_sh_0 , R_sh_exp = \
433
+ _fit_shunt_resistances_pvsyst_iec61853_sandia_2025 (
434
+ i_sc , i_mp , v_mp , effective_irradiance , temp_cell , beta_mp ,
435
+ coeff = r_sh_coeff , min_irradiance = min_Rsh_irradiance
435
436
)
436
437
437
438
if R_s is None :
438
- R_s = _fit_series_resistance_pvsyst_iec61853_sandia (v_oc , i_mp , v_mp )
439
+ R_s = _fit_series_resistance_pvsyst_iec61853_sandia_2025 (v_oc , i_mp ,
440
+ v_mp )
439
441
440
- gamma_ref , mu_gamma = _fit_diode_ideality_factor_pvsyst_iec61853_sandia (
441
- i_sc [is_t_stc ], v_oc [is_t_stc ], i_mp [is_t_stc ], v_mp [is_t_stc ],
442
- effective_irradiance [is_t_stc ], temp_cell [is_t_stc ],
443
- R_sh_ref , R_sh_0 , R_sh_exp , R_s , cells_in_series
442
+ gamma_ref , mu_gamma = \
443
+ _fit_diode_ideality_factor_pvsyst_iec61853_sandia_2025 (
444
+ i_sc [is_t_stc ], v_oc [is_t_stc ], i_mp [is_t_stc ], v_mp [is_t_stc ],
445
+ effective_irradiance [is_t_stc ], temp_cell [is_t_stc ],
446
+ R_sh_ref , R_sh_0 , R_sh_exp , R_s , cells_in_series
444
447
)
445
448
446
- I_o_ref = _fit_saturation_current_pvsyst_iec61853_sandia (
449
+ I_o_ref = _fit_saturation_current_pvsyst_iec61853_sandia_2025 (
447
450
i_sc , v_oc , effective_irradiance , temp_cell , gamma_ref , mu_gamma ,
448
451
R_sh_ref , R_sh_0 , R_sh_exp , R_s , cells_in_series , EgRef
449
452
)
450
453
451
- I_L_ref = _fit_photocurrent_pvsyst_iec61853_sandia (
454
+ I_L_ref = _fit_photocurrent_pvsyst_iec61853_sandia_2025 (
452
455
i_sc , effective_irradiance , temp_cell , alpha_sc ,
453
456
gamma_ref , mu_gamma ,
454
457
I_o_ref , R_sh_ref , R_sh_0 , R_sh_exp , R_s , cells_in_series , EgRef
455
458
)
456
459
457
460
gamma_ref , mu_gamma = \
458
- _fit_diode_ideality_factor_post_pvsyst_iec61853_sandia (
461
+ _fit_diode_ideality_factor_post_pvsyst_iec61853_sandia_2025 (
459
462
i_mp , v_mp , effective_irradiance , temp_cell , alpha_sc , I_L_ref ,
460
463
I_o_ref , R_sh_ref , R_sh_0 , R_sh_exp , R_s , cells_in_series , EgRef )
461
464
@@ -475,14 +478,15 @@ def fit_pvsyst_iec61853_sandia(effective_irradiance, temp_cell,
475
478
return fitted_params
476
479
477
480
478
- def _fit_tempco_pvsyst_iec61853_sandia (values , temp_cell , temp_cell_ref = 25 ):
481
+ def _fit_tempco_pvsyst_iec61853_sandia_2025 (values , temp_cell ,
482
+ temp_cell_ref = 25 ):
479
483
fit = np .polynomial .polynomial .Polynomial .fit (temp_cell , values , deg = 1 )
480
484
intercept , slope = fit .convert ().coef
481
485
value_ref = intercept + slope * temp_cell_ref
482
486
return slope / value_ref
483
487
484
488
485
- def _fit_shunt_resistances_pvsyst_iec61853_sandia (
489
+ def _fit_shunt_resistances_pvsyst_iec61853_sandia_2025 (
486
490
i_sc , i_mp , v_mp , effective_irradiance , temp_cell ,
487
491
beta_v_mp , coeff = 0.2 , min_irradiance = None ):
488
492
if min_irradiance is None :
@@ -518,7 +522,7 @@ def _fit_shunt_resistances_pvsyst_iec61853_sandia(
518
522
return Rshref , Rsh0 , Rshexp
519
523
520
524
521
- def _fit_series_resistance_pvsyst_iec61853_sandia (v_oc , i_mp , v_mp ):
525
+ def _fit_series_resistance_pvsyst_iec61853_sandia_2025 (v_oc , i_mp , v_mp ):
522
526
# Stein et al 2014, https://doi.org/10.1109/PVSC.2014.6925326
523
527
524
528
# Eq 13
@@ -530,7 +534,7 @@ def _fit_series_resistance_pvsyst_iec61853_sandia(v_oc, i_mp, v_mp):
530
534
return R_s
531
535
532
536
533
- def _fit_diode_ideality_factor_pvsyst_iec61853_sandia (
537
+ def _fit_diode_ideality_factor_pvsyst_iec61853_sandia_2025 (
534
538
i_sc , v_oc , i_mp , v_mp , effective_irradiance , temp_cell ,
535
539
R_sh_ref , R_sh_0 , R_sh_exp , R_s , cells_in_series ):
536
540
@@ -550,7 +554,7 @@ def _fit_diode_ideality_factor_pvsyst_iec61853_sandia(
550
554
return gamma_ref , 0
551
555
552
556
553
- def _fit_saturation_current_pvsyst_iec61853_sandia (
557
+ def _fit_saturation_current_pvsyst_iec61853_sandia_2025 (
554
558
i_sc , v_oc , effective_irradiance , temp_cell , gamma_ref , mu_gamma ,
555
559
R_sh_ref , R_sh_0 , R_sh_exp , R_s , cells_in_series , EgRef ):
556
560
R_sh = _pvsyst_Rsh (effective_irradiance , R_sh_ref , R_sh_0 , R_sh_exp )
@@ -568,7 +572,7 @@ def _fit_saturation_current_pvsyst_iec61853_sandia(
568
572
return I_o_ref
569
573
570
574
571
- def _fit_photocurrent_pvsyst_iec61853_sandia (
575
+ def _fit_photocurrent_pvsyst_iec61853_sandia_2025 (
572
576
i_sc , effective_irradiance , temp_cell , alpha_sc , gamma_ref ,
573
577
mu_gamma , I_o_ref , R_sh_ref , R_sh_0 , R_sh_exp , R_s , cells_in_series ,
574
578
EgRef ):
@@ -588,7 +592,7 @@ def _fit_photocurrent_pvsyst_iec61853_sandia(
588
592
return I_L_ref
589
593
590
594
591
- def _fit_diode_ideality_factor_post_pvsyst_iec61853_sandia (
595
+ def _fit_diode_ideality_factor_post_pvsyst_iec61853_sandia_2025 (
592
596
i_mp , v_mp , effective_irradiance , temp_cell , alpha_sc , I_L_ref ,
593
597
I_o_ref , R_sh_ref , R_sh_0 , R_sh_exp , R_s , cells_in_series , EgRef ):
594
598
0 commit comments