sunpeek.components.physical.Array#

class sunpeek.components.physical.Array(name=None, plant=None, collector=None, area_gr=None, area_ap=None, azim=None, tilt=None, row_spacing=None, n_rows=None, ground_tilt=None, ground_azim=None, mounting_level=None, fluidvol_total=None, rho_ground=None, rho_colbackside=None, rho_colsurface=None, max_aoi_shadow=None, min_elevation_shadow=None, sensor_map=None, **kwargs)#

Bases: Component

Implements collector array with given area, homogeneous tilt and azimuth angles and exactly 1 collector.

Variables:
  • name (str) – Name of array. Must be unique within parent plant.

  • plant (Plant object) – Plant to which the array belongs.

  • collector – Collector used in this array. An array has exactly 1 collector.

  • area_gr (pint Quantity) – Total gross collector area of the collector array.

  • area_ap (pint Quantity, optional) – Total aperture collector area of the collector array.

  • azim (pint Quantity) – Azimuth angle of the array surface. An array has exactly 1 scalar azim. North=0, East=90, South=180, West=270. See surface_azimuth in `pvlib FixedMount`_

  • tilt (pint Quantity) – Tilt angle of the array, defined as angle from the horizontal. Examples: surface facing up / towards zenith: tilt=Q(0,’deg’), surface facing horizon: tilt=Q(90, ‘deg). An array has exactly 1 scalar tilt. See surface_tilt in `pvlib FixedMount`_

  • row_spacing (pint Quantity, optional) – The spacing between adjacent rows of collectors in the array, measured along the ground surface. If the ground is tilted, this is not the same as the horizontal distance (on the horizontal projection).

  • n_rows (pint Quantity) – Number of collector rows in the collector array.

  • ground_tilt (pint Quantity, optional) – Tilt angle of the ground or more generally of the plane on which the collector field is mounted; in the direction of the azimuth of the collector field; positive values increase the absolute tilt of the collectors.

  • ground_azim (pint Quantity, optional) – Azimuth angle of the ground or more generally of the plane on which the collector field is mounted; An array has exactly 1 scalar ground_azim. North=0, East=90, South=180, West=270.

  • mounting_level (pint Quantity, optional) – Distance of the lowest part of a collector from the ground (back edge).

  • fluidvol_total (pint Quantity, optional) – Total fluid content of the array (including all pipes and collectors etc).

  • rho_ground (pint Quantity, optional) – Ground reflectance coefficient used for solar irradiance calculations for collector arrays. Can be overridden by individual arrays.

  • rho_colbackside (pint Quantity, optional) – Reflectance coefficient of the collector backside.

  • rho_colsurface (pint Quantity, optional) – Reflectance coefficient of the collectors (usually close to zero).

  • max_aoi_shadow (pint Quantity, optional) – At times when the angle of incidence (aoi) is above max_aoi_shadow, the array is considered as shadowed in the virtual sensor array.is_shadowed.

  • min_elevation_shadow (pint Quantity, optional) – At times when the sun apparent elevation is below min_elevation_shadow, the array is considered as shadowed in the virtual sensor array.is_shadowed.

  • te_in (Sensor, optional) – Inlet / return temperature characteristic for this array.

  • te_out (Sensor, optional) – Outlet / flow / supply temperature characteristic for this array.

  • tp (Sensor, optional) – Thermal power of collector array.

  • vf (Sensor, optional) – Total volume flow of collector array.

  • mf (Sensor, optional) – Total mass flow of collector array.

  • is_shadowed (Sensor, optional, or virtual Sensor) – Boolean variable that describes whether at a particular timestamp the array is considered partly or completely shadowed (shadowed: value 1 or True, not shadowed: value 0 or False). A user can set is_shadowed as a real sensor to provide shadow information from external sources, e.g. from a calculation that takes horizon or the 3D surroundings of the array into account. If not provided by user, is_shadowed is calculated as a virtual sensor taking into account maximum angle of incidence, minimum sun elevation, no internal (row-to-row) shading.

  • aoi (virtual Sensor) – Angle of incidence of sun on plane of array, i.e. the angle between the solar vector and the array surface normal.

  • internal_shading_fraction (virtual Sensor) – Fraction of internal shading (row-to-row shading) of the array, a numeric value between 0 (no shading) and 1 (completely shaded).

  • rd_gti (virtual Sensor) – Global irradiance on array, calculated by a radiation conversion model following a chosen strategy (e.g. poa, feedthrough, detailed); see class RadiationConversionTilted for details. Radiation conversion uses input Sensors in_global, .in_beam .in_diffuse, .in_dni Optionally takes ground diffuse, beam shading and diffuse masking into account.

  • rd_bti (virtual Sensor) – Direct / beam irradiance on array, calculated by a radiation conversion model following a chosen strategy ( e.g. poa, feedthrough, detailed); see class RadiationConversionTilted for details. Radiation conversion uses input Sensors in_global, .in_beam, .in_diffuse, .in_dni Optionally takes ground diffuse, beam shading and diffuse masking into account.

  • rd_dti (virtual Sensor) – Diffuse irradiance on array, calculated by a radiation conversion model following a chosen strategy (e.g. poa, feedthrough, detailed); see class RadiationConversionTilted for details. Radiation conversion uses input Sensors in_global, .in_beam, .in_diffuse, .in_dni Optionally takes ground diffuse, beam shading and diffuse masking into account.

  • irradiances, (These radiation sensors starting with "in" are input sensors used to compute the proper array)

  • POA). (namely the Array virtual sensors rd_gti (POA hemispheric), rd_bti (beam in POA), rd_dti (diffuse in)

  • in_global (Sensor, optional) – Global radiation sensor to be used to calculate tilted radiation components for the array. The sensor may be installed at a non-zero tilt angle, in that case the horizontal radiation components will be calculated by a radiation model.

  • in_beam (Sensor, optional) – Direct / beam radiation sensor to be used to calculate tilted radiation components for the array. The sensor may be installed at a non-zero tilt angle, in that case the horizontal radiation components will be calculated by a radiation model.

  • in_diffuse (Sensor, optional) – Diffuse radiation sensor to be used to calculate tilted radiation components for the array. The sensor may be installed at a non-zero tilt angle, in that case the horizontal radiation components will be calculated by a radiation model.

  • in_dni (Sensor, optional) – Direct normal irradiance (DNI) sensor to be used to calculate tilted radiation components for the array.

  • Mount (.. _Fixed) – https://pvlib-python.readthedocs.io/en/stable/generated/pvlib.pvsystem.FixedMount.html#pvlib.pvsystem.FixedMount

Methods

__init__([name, plant, collector, area_gr, ...])

A simple constructor that allows initialization from kwargs.

add_component_attr(name[, unit, minimum, ...])

all_subclasses([c])

calc_area_gr_from_collector()

Set array.area_gr from area_ap and collector information, if None

define_component_attrs()

get_component_attribute(name)

get_default_unit(name)

Return default unit of a class attribute defined as ComponentParam.

get_raw_sensor(str_map[, raise_if_not_found])

get_real_slots()

Get component's slot names for (possibly or always) real (not virtual) sensors

has_orientation()

Returns True if array has tilt and azimuth well-defined.

has_virtual_slot_named(slot_name)

Assert component has a (possibly or always) virtual sensor slot named slot_name.

is_attrib_missing(attrib_name)

Return True if component attribute is None or not a ComponentParam holding a Quantity.

is_real_sensor_missing(slot_name, check_mode)

Like is_sensor_missing, but additionally checks if sensor in named slot is real (not virtual).

is_sensor_missing(slot_name, check_mode)

Return True if component slot has no sensor mapped or sensor is not ready for calculations.

map_sensor(sensor, slot_name)

Maps sensor to slot_name of given component, including some sanity checks.

map_vsensor(slot_name, feedback)

Create virtual Sensor and map it to component.slot_name, or map None if it cannot be calculated.

register_callback(callback_type, func)

set_component_attribute(name, value, array_type)

set_sensors(**kwargs)

Maps one or multiple sensors (by calling map_sensor()) and handles configuring virtual sensors.

update_sensors(is_remove)

calc_area_gr_from_collector()#

Set array.area_gr from area_ap and collector information, if None

classmethod get_default_unit(name)#

Return default unit of a class attribute defined as ComponentParam.

Return type:

str

classmethod get_real_slots()#

Get component’s slot names for (possibly or always) real (not virtual) sensors

has_orientation()#

Returns True if array has tilt and azimuth well-defined. Useful for radiation calculations.

has_virtual_slot_named(slot_name)#

Assert component has a (possibly or always) virtual sensor slot named slot_name.

is_attrib_missing(attrib_name)#

Return True if component attribute is None or not a ComponentParam holding a Quantity.

Return type:

bool

is_real_sensor_missing(slot_name, check_mode)#

Like is_sensor_missing, but additionally checks if sensor in named slot is real (not virtual).

Return type:

bool

is_sensor_missing(slot_name, check_mode)#

Return True if component slot has no sensor mapped or sensor is not ready for calculations.

Return type:

bool

map_sensor(sensor, slot_name)#

Maps sensor to slot_name of given component, including some sanity checks.

map_vsensor(slot_name, feedback)#

Create virtual Sensor and map it to component.slot_name, or map None if it cannot be calculated.

Parameters:
  • slot_name (str, slot / channel name of the component self to which the virtual sensor will be mapped.)

  • feedback (CoreMethodFeedback, problems reported at config time, prior to vsensor calculation.)

property orientation#

Return dictionary with array’s “tilt” and “azim” values converted to deg, for radiation calculations.

set_sensors(**kwargs)#

Maps one or multiple sensors (by calling map_sensor()) and handles configuring virtual sensors.