.. _collectors: ############################ Collectors ############################ This page explains how solar collectors work in SunPeek, including the available collector types, test methods, incidence angle modifiers (IAM), and how to add custom collectors. Overview ======== Solar collectors are characterized by their thermal performance parameters, which are determined through standardized testing according to `ISO 9806 `_. Collector performance data can mainly be found from the `Solar Keymark Database `_, the official European certification database, containing detailed collector data sheets. SunPeek uses these performance parameters to model collector behavior and calculate expected performance. SunPeek also offers the option to define custom collectors, either via the WebUI or programmatically using Python. See :ref:`add_collector_type` for details. Collector Parameters -------------------- The following table describes the key collector parameters used in SunPeek, as defined in `ISO 9806 `_: .. list-table:: Collector Performance Parameters :header-rows: 1 :widths: 15 70 15 * - Parameter - Description - Unit * - :math:`a_1` - First order heat loss coefficient at :math:`\vartheta_m - \vartheta_a = 0` K - W/(m²·K) * - :math:`a_2` - Second order heat loss coefficient (temperature dependence of heat loss) - W/(m²·K²) * - :math:`a_5` - Effective thermal capacity - kJ/(m²·K) * - :math:`a_8` - Fourth order heat loss coefficient (radiative losses dependence) - W/(m²·K⁴) * - :math:`\eta_{0,b}` - Peak collector efficiency based on beam irradiance :math:`G_b` (at :math:`\vartheta_m - \vartheta_a = 0` K) - – * - :math:`\eta_{0,hem}` - Peak collector efficiency based on hemispherical irradiance :math:`G_{hem}` (at :math:`\vartheta_m - \vartheta_a = 0` K) - – * - :math:`K_b` - Incidence angle modifier (IAM) for direct/beam solar irradiance - – * - :math:`K_d` - Incidence angle modifier for diffuse solar radiation - – * - :math:`K_{hem}` - Incidence angle modifier for hemispherical solar radiation - – The following figure shows where to find these parameters on a Solar Keymark certificate: .. figure:: /_static/collector_explanations__QDT_aperture.png :alt: Solar Keymark certificate with annotations showing collector parameters :align: center Annotated Solar Keymark certificate showing where to find collector parameters for QDT-tested collectors. Here is an example of how to programmatically create a QDT-tested collector in SunPeek. This is taken from the Python example `script_demo_custom.py `_. .. code-block:: python from sunpeek.components import CollectorQDT, CollectorTypes, IAM_Interpolated from sunpeek.common.unit_uncertainty import Q collector = CollectorQDT( name='my collector', manufacturer_name='xyz', product_name='abc', collector_type=CollectorTypes.flat_plate, test_reference_area='gross', area_gr=Q(12, 'm**2'), gross_length=Q(2400, 'mm'), gross_width=Q(5000, 'mm'), gross_height=Q(150, 'mm'), # Performance parameters from Solar Keymark certificate eta0b=Q(0.75, ''), a1=Q(2.3, 'W m**-2 K**-1'), a2=Q(0.01, 'W m**-2 K**-2'), a5=Q(7.5, 'kJ m**-2 K**-1'), kd=Q(0.94, ''), iam_method=IAM_Interpolated( aoi_reference=Q([10, 20, 30, 40, 50, 60, 70, 80, 90], 'deg'), iam_reference=Q([1, 0.99, 0.97, 0.94, 0.9, 0.82, 0.65, 0.32, 0]), ), ) Test Methods ============ SunPeek supports collectors tested with two methods defined in `ISO 9806 `_, namely QDT and SST. .. seealso:: - API documentation QDT collectors: :class:`sunpeek.components.CollectorQDT` - API documentation SST collectors: :class:`sunpeek.components.CollectorSST` Quasi-Dynamic Test (QDT) ------------------------ The QDT method is the modern standard and recommended approach. It provides: - :math:`\eta_{0,b}`: Beam optical efficiency at normal incidence - :math:`K_d`: Characterization of diffuse radiation response Steady-State Test (SST) ----------------------- SST collectors are still supported for backward compatibility. The SST method is the older approach, providing: - :math:`\eta_{0,hem}`: Hemispherical optical efficiency - :math:`c_{eff}`: Effective thermal capacity Parameter Conversion (SST ↔ QDT) -------------------------------- Depending on the test method used and the `ISO 24194 `_ formula chosen for Power Check, conversion between SST and QDT parameters may be necessary. Based on `ISO 9806 `_ and the `Guide to ISO 9806 `_, SunPeek handles the conversion like this: .. figure:: /_static/Parameter_conversion_SST_QDT.png :alt: Parameter conversion table between SST and QDT test methods :align: center Parameter conversion between SST (steady-state) and QDT (quasi-dynamic) tests. Source: Section A.3, `Guide to ISO 24194:2022 Power Check `_. Incidence Angle Modifier (IAM) ============================== The IAM describes how collector efficiency changes as the sun moves away from the perpendicular (normal) direction. At normal incidence (sun directly facing the collector), IAM = 1. As the angle increases, IAM decreases due to increased reflection and absorption losses. SunPeek supports several IAM calculation methods: - **ASHRAE Model**: A simple analytical model using one parameter (``b0``), typically between 0.05 and 0.2. - **K50 Model**: A variant of the ASHRAE model where only the IAM value at 50° incidence angle (K50) is known. The model derives the ``b0`` parameter from ``K50``. - **Ambrosetti Model**: An alternative analytical model using an exponent parameter (``kappa``). - **Interpolated IAM**: For collectors with measured IAM values at specific angles, SunPeek interpolates between the reference points. This is the most accurate method when manufacturer data is available. For *flat plate collectors*, provide one set of reference values. For *concentrating collectors* with different longitudinal and transversal behavior, provide a 2D array with separate values for each direction. .. seealso:: See the API documentation for :mod:`sunpeek.components.iam_methods` for detailed information and usage examples. Available Collectors ==================== SunPeek currently includes a curated set of pre-defined collectors from various manufacturers. These collectors can be selected in the WebUI during plant configuration (see :ref:`Collector Selection <02_arrays>`) or accessed programmatically via the Python API. .. note:: **Ongoing Development**: The collector database is being refactored into a separate package `sunpeek-collectors `_ to integrate all collectors from the `Solar Keymark database `_. This will significantly expand the available collectors. .. list-table:: Pre-defined Collectors :header-rows: 1 :widths: 25 30 15 15 * - Name - Manufacturer - Type - Test * - Arcon 3510 - Arcon-Sunmark A/S - Flat plate - QDT * - powerSol 55/120/136 - Gasokol GmbH - Flat plate - QDT * - GK 3803/3133 (+ S variants) - GREENoneTEC - Flat plate - QDT * - K5 Giga+ series - KBB Kollektorbau - Flat plate - QDT * - HT series - oekoTech - Flat plate - QDT * - DIS 150 - ensol - Flat plate - QDT * - FPC1500C - Sunrain - Flat plate - QDT * - MT-Power v4 - TVP Solar - Flat plate (vacuum) - QDT * - T160 - Absolicon - Concentrating - QDT * - MEGA 26/78 - Ako Tec - Concentrating - QDT * - SF500-15 (+ DG) - Savo Solar - Flat plate - SST * - CCS+ - CONA - Flat plate - SST .. _add_collector_type: Adding Custom Collectors ======================== Via the WebUI ------------- The easiest way to add a custom collector is through the web interface during plant configuration. See the :ref:`arrays tutorial <02_arrays>` for step-by-step instructions on collector selection and custom collector entry. Via Python ---------- You can also create collectors programmatically using the Python API. Use :class:`sunpeek.components.CollectorQDT` for quasi-dynamic tested collectors or :class:`sunpeek.components.CollectorSST` for steady-state tested collectors. For a complete working example, see the demo script `script_demo_custom.py `_, which demonstrates how to create a custom collector with all required parameters and an IAM method, and how to use the collector with a collector array to run Power Check. .. seealso:: - :class:`sunpeek.components.Collector` - Base collector class with all available parameters - :class:`sunpeek.components.CollectorQDT` - Factory for QDT collectors - :class:`sunpeek.components.CollectorSST` - Factory for SST collectors - :mod:`sunpeek.components.iam_methods` - IAM calculation methods