CALCPARAMS_PVSYST
This function converts PVsyst reference module parameters into the operating-condition coefficients required by the single-diode equation. It accounts for irradiance, cell temperature, the PVsyst diode-factor model, and the irradiance dependence of shunt resistance.
The thermal-voltage term returned by the model is based on the diode factor, cells in series, and cell temperature:
nN_sV_{th} = \gamma N_s \frac{k_B T_c}{q}
The five outputs are returned in the order photocurrent, saturation current, series resistance, shunt resistance, and nN_sV_{th}. These values are typically used as inputs to singlediode, max_power_point, or related IV-curve calculations.
Excel Usage
=CALCPARAMS_PVSYST(effective_irradiance, temp_cell, alpha_sc, gamma_ref, mu_gamma, I_L_ref, I_o_ref, R_sh_ref, R_sh_zero, R_s, cells_in_series, R_sh_exp, eg_ref, irrad_ref, temp_ref)
effective_irradiance(float, required): Irradiance converted to photocurrent (W/m^2).temp_cell(float, required): Average cell temperature (C).alpha_sc(float, required): Short-circuit current temp coefficient (A/C).gamma_ref(float, required): Diode ideality factor (unitless).mu_gamma(float, required): Temp coefficient for ideality factor (1/K).I_L_ref(float, required): Light-generated current at reference (A).I_o_ref(float, required): Diode saturation current at reference (A).R_sh_ref(float, required): Shunt resistance at reference (ohms).R_sh_zero(float, required): Shunt resistance at zero irradiance (ohms).R_s(float, required): Series resistance at reference (ohms).cells_in_series(int, required): Number of cells in series.R_sh_exp(float, optional, default: 5.5): Exponent for shunt resistance.eg_ref(float, optional, default: 1.121): Energy bandgap at reference temperature (eV).irrad_ref(float, optional, default: 1000): Reference irradiance (W/m^2).temp_ref(float, optional, default: 25): Reference cell temperature (C).
Returns (list[list]): 2D list containing [[photocurrent, saturation_current, resistance_series, resistance_shunt, nNsVth]], or an error string.
Example 1: PVsyst parameter calculation at standard conditions
Inputs:
| effective_irradiance | temp_cell | alpha_sc | gamma_ref | mu_gamma | I_L_ref | I_o_ref | R_sh_ref | R_sh_zero | R_s | cells_in_series | R_sh_exp | eg_ref | irrad_ref | temp_ref |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1000 | 25 | 0.005 | 1.1 | 0.001 | 6 | 1e-9 | 400 | 1000 | 0.3 | 60 | 5.5 | 1.121 | 1000 | 25 |
Excel formula:
=CALCPARAMS_PVSYST(1000, 25, 0.005, 1.1, 0.001, 6, 1e-9, 400, 1000, 0.3, 60, 5.5, 1.121, 1000, 25)
Expected output:
| Result | ||||
|---|---|---|---|---|
| 6 | 1e-9 | 0.3 | 400 | 1.69571 |
Example 2: Default optional PVsyst constants
Inputs:
| effective_irradiance | temp_cell | alpha_sc | gamma_ref | mu_gamma | I_L_ref | I_o_ref | R_sh_ref | R_sh_zero | R_s | cells_in_series |
|---|---|---|---|---|---|---|---|---|---|---|
| 1000 | 25 | 0.005 | 1.1 | 0.001 | 6 | 1e-9 | 400 | 1000 | 0.3 | 60 |
Excel formula:
=CALCPARAMS_PVSYST(1000, 25, 0.005, 1.1, 0.001, 6, 1e-9, 400, 1000, 0.3, 60)
Expected output:
| Result | ||||
|---|---|---|---|---|
| 6 | 1e-9 | 0.3 | 400 | 1.69571 |
Example 3: Warm cell with reduced irradiance
Inputs:
| effective_irradiance | temp_cell | alpha_sc | gamma_ref | mu_gamma | I_L_ref | I_o_ref | R_sh_ref | R_sh_zero | R_s | cells_in_series | R_sh_exp | eg_ref | irrad_ref | temp_ref |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 750 | 45 | 0.005 | 1.1 | 0.001 | 6 | 1e-9 | 400 | 1000 | 0.3 | 60 | 5.5 | 1.121 | 1000 | 25 |
Excel formula:
=CALCPARAMS_PVSYST(750, 45, 0.005, 1.1, 0.001, 6, 1e-9, 400, 1000, 0.3, 60, 5.5, 1.121, 1000, 25)
Expected output:
| Result | ||||
|---|---|---|---|---|
| 4.575 | 1.40654e-8 | 0.3 | 407.276 | 1.84236 |
Example 4: Cool cell at elevated irradiance
Inputs:
| effective_irradiance | temp_cell | alpha_sc | gamma_ref | mu_gamma | I_L_ref | I_o_ref | R_sh_ref | R_sh_zero | R_s | cells_in_series | R_sh_exp | eg_ref | irrad_ref | temp_ref |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1100 | 15 | 0.005 | 1.1 | 0.001 | 6 | 1e-9 | 400 | 1000 | 0.3 | 60 | 5.5 | 1.121 | 1000 | 25 |
Excel formula:
=CALCPARAMS_PVSYST(1100, 15, 0.005, 1.1, 0.001, 6, 1e-9, 400, 1000, 0.3, 60, 5.5, 1.121, 1000, 25)
Expected output:
| Result | ||||
|---|---|---|---|---|
| 6.545 | 2.25033e-10 | 0.3 | 398.958 | 1.62394 |
Python Code
Show Code
from pvlib.pvsystem import calcparams_pvsyst as result_func
def calcparams_pvsyst(effective_irradiance, temp_cell, alpha_sc, gamma_ref, mu_gamma, I_L_ref, I_o_ref, R_sh_ref, R_sh_zero, R_s, cells_in_series, R_sh_exp=5.5, eg_ref=1.121, irrad_ref=1000, temp_ref=25):
"""
Calculate five single-diode parameter values using the PVsyst v6 model.
See: https://pvlib-python.readthedocs.io/en/stable/reference/generated/pvlib.pvsystem.calcparams_pvsyst.html
This example function is provided as-is without any representation of accuracy.
Args:
effective_irradiance (float): Irradiance converted to photocurrent (W/m^2).
temp_cell (float): Average cell temperature (C).
alpha_sc (float): Short-circuit current temp coefficient (A/C).
gamma_ref (float): Diode ideality factor (unitless).
mu_gamma (float): Temp coefficient for ideality factor (1/K).
I_L_ref (float): Light-generated current at reference (A).
I_o_ref (float): Diode saturation current at reference (A).
R_sh_ref (float): Shunt resistance at reference (ohms).
R_sh_zero (float): Shunt resistance at zero irradiance (ohms).
R_s (float): Series resistance at reference (ohms).
cells_in_series (int): Number of cells in series.
R_sh_exp (float, optional): Exponent for shunt resistance. Default is 5.5.
eg_ref (float, optional): Energy bandgap at reference temperature (eV). Default is 1.121.
irrad_ref (float, optional): Reference irradiance (W/m^2). Default is 1000.
temp_ref (float, optional): Reference cell temperature (C). Default is 25.
Returns:
list[list]: 2D list containing [[photocurrent, saturation_current, resistance_series, resistance_shunt, nNsVth]], or an error string.
"""
try:
irrad = float(effective_irradiance)
tc = float(temp_cell)
asc = float(alpha_sc)
gr = float(gamma_ref)
mg = float(mu_gamma)
ilr = float(I_L_ref)
ior = float(I_o_ref)
rshr = float(R_sh_ref)
rs_v = float(R_s)
nc = int(cells_in_series)
rsh0 = float(R_sh_zero) if R_sh_zero is not None else 1000.0
rexp = float(R_sh_exp) if R_sh_exp is not None else 5.5
eg = float(eg_ref) if eg_ref is not None else 1.121
ir = float(irrad_ref) if irrad_ref is not None else 1000.0
tr = float(temp_ref) if temp_ref is not None else 25.0
res = result_func(
effective_irradiance=irrad,
temp_cell=tc,
alpha_sc=asc,
gamma_ref=gr,
mu_gamma=mg,
I_L_ref=ilr,
I_o_ref=ior,
R_sh_ref=rshr,
R_sh_0=rsh0,
R_s=rs_v,
cells_in_series=nc,
R_sh_exp=rexp,
EgRef=eg,
irrad_ref=ir,
temp_ref=tr
)
return [[float(v) for v in res]]
except Exception as e:
return f"Error: {str(e)}"