sunpeek.components.types.Collector#

class sunpeek.components.types.Collector(test_reference_area, test_type, gross_length, collector_type, iam_method=None, concentration_ratio=None, name=None, manufacturer_name=None, product_name=None, test_report_id=None, licence_number=None, certificate_date_issued=None, certificate_lab=None, certificate_details=None, area_gr=None, area_ap=None, gross_width=None, gross_height=None, a1=None, a2=None, a5=None, a8=None, kd=None, eta0b=None, eta0hem=None, f_prime=None, **kwargs)#

Bases: AttrSetterMixin, Base

Implements a specific collector (product of some manufacturer), including all performance data acc. to data sheet.

Stores two different collector type parameters, referring to the two test procedures defined in `ISO 9806`_, either quasi-dynamic or steady-state test. The type of test procedure is available from the standard collector data sheet / Solar Keymark certificate and must be specified in test_type.

Test parameters may refer to either gross or aperture area. This must be specified in test_reference_area. The collector parameters stored in Collector _always_ refer to gross area.

IAM (incidence angle modifier) information may be given as an instance of the IAM_Method class. This holds several implementations where the IAM information can be given in either of these ways: - If only IAM information at an aoi of 50 degrees is given, use IAM_K50(k50). Internally, this uses the ASHRAE equation. - To use the ASHRAE IAM equation with a known parameter b, use IAM_ASHRAE(b). - To use the Ambrosetti IAM equation with a known parameter kappa, use IAM_Ambrosetti(kappa). - To use an IAM with given / known IAM values at given aoi angles, use IAM_Interpolated(). This requires a list of reference aoi’s, and either a) 1 list of IAM values or b) 2 lists with transversal and longitudinal IAM values.

Variables:
  • name (str) – Name of collector type. Must be unique within HarvestIT ‘collector’ database.

  • manufacturer_name (str, optional) – Manufacturer name. Example: “GREENoneTEC Solarindustrie GmbH”

  • product_name (str, optional) – Product name. Example: “GK 3133”

  • licence_number (str, optional) – Licence number (often also known as Registration number) of the Solar Keymark certificate.

  • test_report_id (str, optional) – “Test Report(s)” field on Solar Keymark certificate.

  • certificate_date_issued (datetime, optional) – “Date issued” field on Solar Keymark certificate.

  • certificate_lab (str, optional) – Laboratory / testing institution that issued the collector test certificate.

  • certificate_details (str, optional) – Details concerning the official collector test / Solar Keymark certificate, such as testing institution etc.

  • collector_type (CollectorTypes or str) – Construction type of the collector, as defined in Solar Keymark / ISO 9806. Main distinction is between flat plate and concentrating collectors.

  • test_type (str) – Type of collector test, according to `ISO 9806`_. Valid values: ‘QDT’ | ‘dynamic’ | ‘SST’ | ‘static’

  • test_reference_area (str) – Collector area to which the test data refer. Valid values: ‘area_ap | ‘aperture’ | ‘area_gr’ | ‘gross’.

  • area_gr (pint Quantity, optional) – Gross collector area. Mandatory if `test_reference_area`==’aperture’, optional otherwise.

  • area_ap (pint Quantity, optional) – Gross collector area. Mandatory if `test_reference_area`==’aperture’, optional otherwise.

  • gross_length (pint Quantity) – Gross length of one collector (collector side pointing upwards). Typical value around Q(2, ‘m’)

  • gross_width (pint Quantity) – Gross width of one collector (normal to gross_length, i.e. measured parallel to the ground). For large-area flat plate collectors, a typical value is Q(6.0, ‘m’).

  • gross_height (pint Quantity) – Gross height (‘thickness’) of one collector (from cover to backside). A typical value is Q(20, ‘cm’).

  • a1 (pint Quantity) – Linear heat loss coefficient, according to collector test data sheet of quasi dynamic or steady state test.

  • a2 (pint Quantity) – Quadratic heat loss coefficient, according to collector test data sheet of quasi dynamic or steady state test.

  • a5 (pint Quantity) – Effective thermal heat capacity, according to collector test data sheet of quasi dynamic or steady state test.

  • a8 (pint Quantity) – Radiative heat loss coefficient, according to collector test data sheet of quasi dynamic or steady state test.

  • kd (pint Quantity, optional) – Incidence angle modifier for diffuse radiation, according to collector test data sheet of quasi dynamic test. Mandatory if `test_type`==’QDT’.

  • eta0b (pint Quantity, optional) – Peak collector efficiency (= zero loss coefficient) based on beam irradiance, according to collector test data sheet of quasi dynamic test.

  • eta0hem (pint Quantity, optional) – Peak collector efficiency (= zero loss coefficient) based on hemispherical irradiance, according to collector test data sheet of steady state test (or calculated from quasi-dynamic test).

  • f_prime (pint Quantity) – Collector efficiency factor, i.e. ratio of heat transfer resistances of absorber to ambient vs. fluid to ambient.

  • concentration_ratio (pint Quantity) – Geometric concentration ratio: Factor by which solar irradiance is concentrated onto the collector’s absorbing surface. When applying a ISO 24194 Thermal Power Check, the concentration_ratio is used to determine which of the 3 formulae defined in ISO 24194 to apply.

  • calculation_info (dictionary) – Contains information about calculated collector parameters, where specific information was not given at instantiation of the object, e.g. because the Solar Keymark data sheet does not include a specific parameter. Some parameters can be calculated based on given ones, e.g. Kd (diffuse IAM) can be calculated based on given IAM information. Dictionary keys are the names of calculated parameters (e.g. kd), dictionary values hold information concerning specific calculation details (e.g. calculation method).

  • plant (None) – Not used, included for compatibility with other component types.

  • 9806 (.. _ISO) – https://www.iso.org/standard/67978.html

  • model (.. _ASHRAE) – https://pvlib-python.readthedocs.io/en/stable/generated/pvlib.iam.ashrae.html

Methods

__init__(test_reference_area, test_type, ...)

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

all_subclasses([c])

define_component_attrs()

get_component_attribute(name)

get_default_unit(name)

Return default unit of a class attribute defined as ComponentParam.

is_attrib_missing(attrib_name)

is_nonzero(param_name)

Return True if some collector parameter is greater than zero.

is_zero(param_name)

Return True if some collector parameter is zero.

register_callback(callback_type, func)

set_component_attribute(name, value, array_type)

update_parameters()

Check and set collector parameters.

classmethod get_default_unit(name)#

Return default unit of a class attribute defined as ComponentParam.

Return type:

str

is_nonzero(param_name)#

Return True if some collector parameter is greater than zero.

Return type:

bool

is_zero(param_name)#

Return True if some collector parameter is zero.

Return type:

bool

update_parameters()#

Check and set collector parameters. Convert parameters from aperture to gross are, if ref area is aperture.

Raises:

CollectorDefinitionException – If definition of collector parameters is incomplete or contradictory.

Return type:

None

Notes

  • This method checks that we have a complete and valid Collector definition, for both test_types ‘SST’ | ‘QDT’.

  • This method exists because parameters are interdependent, so setting collector parameters can’t be done

    per-attribute (in setter methods e.g.). Attributes that don’t depend on others are set in __init__ directly.

  • This methods sets the instance attributes, with reference to gross area “area_gr”, if params is sane.

  • Converts from aperture to gross area, if necessary. To do so, both “area_gr” and “area_ap” are required.

  • Either “eta0b” or “eta0hem” must be provided in params

  • For statically-tested collectors only: Estimates kd using calculate_kd_Hess_and_Hanby(), if necessary.