pvlib.pvsystem.PVSystem

class pvlib.pvsystem.PVSystem(arrays=None, surface_tilt=0, surface_azimuth=180, albedo=None, surface_type=None, module=None, module_type=None, module_parameters=None, temperature_model_parameters=None, modules_per_string=1, strings_per_inverter=1, inverter=None, inverter_parameters=None, racking_model=None, losses_parameters=None, name=None)[source]

The PVSystem class defines a standard set of PV system attributes and modeling functions. This class describes the collection and interactions of PV system components rather than an installed system on the ground. It is typically used in combination with Location and ModelChain objects.

The class supports basic system topologies consisting of:

  • N total modules arranged in series (modules_per_string=N, strings_per_inverter=1).

  • M total modules arranged in parallel (modules_per_string=1, strings_per_inverter=M).

  • NxM total modules arranged in M strings of N modules each (modules_per_string=N, strings_per_inverter=M).

The class is complementary to the module-level functions.

The attributes should generally be things that don’t change about the system, such the type of module and the inverter. The instance methods accept arguments for things that do change, such as irradiance and temperature.

Parameters
  • arrays (iterable of Array, optional) –

    List of arrays that are part of the system. If not specified a single array is created from the other parameters (e.g. surface_tilt, surface_azimuth). Must contain at least one Array, if length of arrays is 0 a ValueError is raised. If arrays is specified the following parameters are ignored:

    • surface_tilt

    • surface_azimuth

    • albedo

    • surface_type

    • module

    • module_type

    • module_parameters

    • temperature_model_parameters

    • modules_per_string

    • strings_per_inverter

  • surface_tilt (float or array-like, default 0) – Surface tilt angles in decimal degrees. The tilt angle is defined as degrees from horizontal (e.g. surface facing up = 0, surface facing horizon = 90)

  • surface_azimuth (float or array-like, default 180) – Azimuth angle of the module surface. North=0, East=90, South=180, West=270.

  • albedo (None or float, default None) – The ground albedo. If None, will attempt to use surface_type and irradiance.SURFACE_ALBEDOS to lookup albedo.

  • surface_type (None or string, default None) – The ground surface type. See irradiance.SURFACE_ALBEDOS for valid values.

  • module (None or string, default None) – The model name of the modules. May be used to look up the module_parameters dictionary via some other method.

  • module_type (None or string, default 'glass_polymer') – Describes the module’s construction. Valid strings are ‘glass_polymer’ and ‘glass_glass’. Used for cell and module temperature calculations.

  • module_parameters (None, dict or Series, default None) – Module parameters as defined by the SAPM, CEC, or other.

  • temperature_model_parameters (None, dict or Series, default None.) – Temperature model parameters as required by one of the models in pvlib.temperature (excluding poa_global, temp_air and wind_speed).

  • modules_per_string (int or float, default 1) – See system topology discussion above.

  • strings_per_inverter (int or float, default 1) – See system topology discussion above.

  • inverter (None or string, default None) – The model name of the inverters. May be used to look up the inverter_parameters dictionary via some other method.

  • inverter_parameters (None, dict or Series, default None) – Inverter parameters as defined by the SAPM, CEC, or other.

  • racking_model (None or string, default 'open_rack') – Valid strings are ‘open_rack’, ‘close_mount’, and ‘insulated_back’. Used to identify a parameter set for the SAPM cell temperature model.

  • losses_parameters (None, dict or Series, default None) – Losses parameters as defined by PVWatts or other.

  • name (None or string, default None) –

  • **kwargs – Arbitrary keyword arguments. Included for compatibility, but not used.

Raises

ValueError – If arrays is not None and has length 0.

Methods

__init__([arrays, surface_tilt, …])

Initialize self.

adrinverter(v_dc, p_dc)

Deprecated since version 0.9.

calcparams_cec(effective_irradiance, temp_cell)

Use the calcparams_cec() function, the input parameters and self.module_parameters to calculate the module currents and resistances.

calcparams_desoto(effective_irradiance, …)

Use the calcparams_desoto() function, the input parameters and self.module_parameters to calculate the module currents and resistances.

calcparams_pvsyst(effective_irradiance, …)

Use the calcparams_pvsyst() function, the input parameters and self.module_parameters to calculate the module currents and resistances.

dc_ohms_from_percent()

Calculates the equivalent resistance of the wires for each array using pvlib.pvsystem.dc_ohms_from_percent()

faiman_celltemp(poa_global, temp_air[, …])

Deprecated since version 0.9.

first_solar_spectral_loss(pw, airmass_absolute)

Use pvlib.atmosphere.first_solar_spectral_correction() to calculate the spectral loss modifier.

fuentes_celltemp(poa_global, temp_air, …)

Deprecated since version 0.9.

get_ac(model, p_dc[, v_dc])

Calculates AC power from p_dc using the inverter model indicated by model and self.inverter_parameters.

get_aoi(solar_zenith, solar_azimuth)

Get the angle of incidence on the Array(s) in the system.

get_cell_temperature(poa_global, temp_air, …)

Determine cell temperature using the method specified by model.

get_iam(aoi[, iam_model])

Determine the incidence angle modifier using the method specified by iam_model.

get_irradiance(solar_zenith, solar_azimuth, …)

Uses the irradiance.get_total_irradiance() function to calculate the plane of array irradiance components on a tilted surface defined by self.surface_tilt, self.surface_azimuth, and self.albedo.

i_from_v(resistance_shunt, …)

Wrapper around the pvlib.pvsystem.i_from_v() function.

noct_sam_celltemp(poa_global, temp_air, …)

Deprecated since version 0.9.

pvsyst_celltemp(poa_global, temp_air[, …])

Deprecated since version 0.9.

pvwatts_ac(pdc)

Deprecated since version 0.9.

pvwatts_dc(g_poa_effective, temp_cell)

Calcuates DC power according to the PVWatts model using pvlib.pvsystem.pvwatts_dc(), self.module_parameters[‘pdc0’], and self.module_parameters[‘gamma_pdc’].

pvwatts_losses()

Calculates DC power losses according the PVwatts model using pvlib.pvsystem.pvwatts_losses() and self.losses_parameters.

sapm(effective_irradiance, temp_cell)

Use the sapm() function, the input parameters, and self.module_parameters to calculate Voc, Isc, Ix, Ixx, Vmp, and Imp.

sapm_celltemp(poa_global, temp_air, wind_speed)

Deprecated since version 0.9.

sapm_effective_irradiance(poa_direct, …[, …])

Use the sapm_effective_irradiance() function, the input parameters, and self.module_parameters to calculate effective irradiance.

sapm_spectral_loss(airmass_absolute)

Use the sapm_spectral_loss() function, the input parameters, and self.module_parameters to calculate F1.

scale_voltage_current_power(data)

Scales the voltage, current, and power of the data DataFrame by self.modules_per_string and self.strings_per_inverter.

singlediode(photocurrent, …[, ivcurve_pnts])

Wrapper around the pvlib.pvsystem.singlediode() function.

snlinverter(v_dc, p_dc)

Deprecated since version 0.9.

Attributes

albedo

module

module_parameters

module_type

modules_per_string

num_arrays

The number of Arrays in the system.

racking_model

strings_per_inverter

surface_azimuth

surface_tilt

temperature_model_parameters