modelEN12975Curves

Collector approach based on EN12975, efficiency based on curves

Extends from AixLib.Fluid.SolarCollectors.EN12975 (Model of a solar thermal collector according to the ASHRAE Standard 93).

Information

Overview

Simplified model of a photovoltaic thermal collector, which builds upon the solar thermal model. Inputs are outdoor air temperature and solar irradiation. Based on these values and the collector properties from database, this model creates a heat flow to the fluid circuit and an electrical power output.

Concept

The model maps solar collector efficiency based on the equation

1

and similar for the electrical efficiency a linear approximation is used:

eta=etaEle_zero - mEle * dT/G

Values for the linear and quadratic coefficients for the thermal efficiency as well as the coefficients for the linear approximation are derived from this thesis by Markus Lämmle, p.43 Figure 3.12. The underlying data was validated with the following assumptions:

  • solar irradiation G=1000 W/m^2
  • windspeed Uwind=3 m/s
  • ambient temperature Ta=25 °C

Known Limitations

  • No empirical validation has been carried out with the model, only with the parameters in the recrods from the PhD thesis for a single operating point. So, always questions results outside of the operating conditions stated above.
  • The parameters for pressure losses and capacities inside the records are based on the solar thermal model, not on the PhD thesis.
  • With the standard BaseParameters, this model uses water as working fluid
Parameters

This model is an extension of AixLib.Fluid.Solar.Thermal.SolarThermal. Therefore the parameters can be found in the base model.

Parameters

TypeNameDefaultDescription
BooleanhomotopyInitialization (from PartialSolarCollector)true= true, use homotopy method
IntegernSeg (from PartialSolarCollector)3Number of segments used to discretize the collector model
Modelica.Units.SI.Angleazi (from PartialSolarCollector)Surface azimuth (0 for south-facing; -90 degree for east-facing; +90 degree for west facing
Modelica.Units.SI.Angletil (from PartialSolarCollector)Surface tilt (0 for horizontally mounted collector)
Realrho (from PartialSolarCollector)Ground reflectance
Modelica.Units.SI.HeatCapacityCTot (from PartialSolarCollector)if per.CTyp == AixLib.Fluid.SolarCollectors.Types.HeatCapacity.TotalCapacity then per.C elseif per.CTyp == AixLib.Fluid.SolarCollectors.Types.HeatCapacity.DryCapacity then per.C + rho_default*per.V*cp_default else 385*per.mDry + rho_default*per.V*cp_defaultHeat capacity of solar collector with fluid
AixLib.Fluid.SolarCollectors.Data.GenericASHRAE93per (from PartialSolarCollector)
AixLib.Fluid.SolarCollectors.PhotovoltaicThermal.Data.PhotovoltaicThermalBaseDataDefinitionperPVT
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamics (from LumpedVolumeDeclarations)Modelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Modelica.Fluid.Types.DynamicssubstanceDynamics (from LumpedVolumeDeclarations)energyDynamicsType of independent mass fraction balance: dynamic (3 initialization options) or steady state
Modelica.Fluid.Types.DynamicstraceDynamics (from LumpedVolumeDeclarations)energyDynamicsType of trace substance balance: dynamic (3 initialization options) or steady state
Advanced › Dynamics
Modelica.Fluid.Types.DynamicsmassDynamics (from LumpedVolumeDeclarations)energyDynamicsType of mass balance: dynamic (3 initialization options) or steady state, must be steady state if energyDynamics is steady state
Initialization
Medium.AbsolutePressurep_start (from LumpedVolumeDeclarations)Medium.p_defaultStart value of pressure
Medium.TemperatureT_start (from LumpedVolumeDeclarations)Medium.T_defaultStart value of temperature
Medium.MassFraction[Medium.nX]X_start (from LumpedVolumeDeclarations)Medium.X_defaultStart value of mass fractions m_i/m
Medium.ExtraProperty[Medium.nC]C_start (from LumpedVolumeDeclarations)fill(0, Medium.nC)Start value of trace substances
Medium.ExtraProperty[Medium.nC]C_nominal (from LumpedVolumeDeclarations)fill(1E-2, Medium.nC)Nominal value of trace substances. (Set to typical order of magnitude.)
Dynamics
RealmSenFac (from LumpedVolumeDeclarations)1Factor for scaling the sensible thermal mass of the volume
Flow resistance
BooleancomputeFlowResistance (from TwoPortFlowResistanceParameters)true=true, compute flow resistance. Set to false to assume no friction
Booleanfrom_dp (from TwoPortFlowResistanceParameters)false= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistance (from TwoPortFlowResistanceParameters)false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM (from TwoPortFlowResistanceParameters)0.1Fraction of nominal flow rate where flow transitions to laminar
Nominal condition
Modelica.Units.SI.PressureDifferencedp_nominal (from TwoPortFlowResistanceParameters)Pressure difference
Modelica.Units.SI.MassFlowRatem_flow_nominal (from PartialTwoPortInterface)Nominal mass flow rate
Assumptions
BooleanallowFlowReversal (from PartialTwoPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal
Advanced
Modelica.Units.SI.MassFlowRatem_flow_small (from PartialTwoPortInterface)1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow
Advanced › Diagnostics
Booleanshow_T (from PartialTwoPortInterface)false= true, if actual temperature at port is computed
Shading
Booleanuse_shaCoe_in (from PartialSolarCollector)falseEnables an input connector for shaCoe
RealshaCoe (from PartialSolarCollector)0Shading coefficient. 0.0: no shading, 1.0: full shading
Area declarations
AixLib.Fluid.SolarCollectors.Types.NumberSelectionnColType (from PartialSolarCollector)AixLib.Fluid.SolarCollectors.Types.NumberSelection.NumberSelection of area specification format
IntegernPanels (from PartialSolarCollector)0Desired number of panels in the simulation
Modelica.Units.SI.AreatotalArea (from PartialSolarCollector)0Total area of panels in the simulation
Configuration declarations
AixLib.Fluid.SolarCollectors.Types.SystemConfigurationsysConfig (from PartialSolarCollector)AixLib.Fluid.SolarCollectors.Types.SystemConfiguration.SeriesSelection of system configuration
IntegernPanelsPar (from PartialSolarCollector)0Number of array panels in parallel

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a (from PartialTwoPort)Fluid connector a (positive design flow direction is from port_a to port_b)
Modelica.Fluid.Interfaces.FluidPort_bport_b (from PartialTwoPort)Fluid connector b (positive design flow direction is from port_a to port_b)
Modelica.Blocks.Interfaces.RealInputshaCoe_in (from PartialSolarCollector)Shading coefficient
AixLib.BoundaryConditions.WeatherData.BusweaBus (from PartialSolarCollector)Weather data bus
Modelica.Blocks.Interfaces.RealOutputPEle

Components

TypeNameDefaultDescription
Modelica.Units.SI.MassFlowRatem_flow (from PartialTwoPortInterface)port_a.m_flowMass flow rate from port_a to port_b (m_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp (from PartialTwoPortInterface)port_a.p - port_b.pPressure difference between port_a and port_b
Medium.ThermodynamicStatesta_a (from PartialTwoPortInterface)if allowFlowReversal then Medium.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow))) else Medium.setState_phX(port_a.p, noEvent(inStream(port_a.h_outflow)), noEvent(inStream(port_a.Xi_outflow)))Medium properties in port_a
Medium.ThermodynamicStatesta_b (from PartialTwoPortInterface)if allowFlowReversal then Medium.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow))) else Medium.setState_phX(port_b.p, noEvent(port_b.h_outflow), noEvent(port_b.Xi_outflow))Medium properties in port_b
AixLib.BoundaryConditions.SolarIrradiation.DiffusePerezHDifTilIso (from PartialSolarCollector)Diffuse solar irradiation on a tilted surface
AixLib.BoundaryConditions.SolarIrradiation.DirectTiltedSurfaceHDirTil (from PartialSolarCollector)Direct solar irradiation on a tilted surface
AixLib.Fluid.Sensors.MassFlowRatesenMasFlo (from PartialSolarCollector)Mass flow rate sensor
AixLib.Fluid.FixedResistances.PressureDropres (from PartialSolarCollector)Flow resistance
AixLib.Fluid.MixingVolumes.MixingVolume[nSeg]vol (from PartialSolarCollector)Volume of fluid in one segment of the solar collector
Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor[nSeg]temSen (from PartialSolarCollector)Temperature sensor
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow[nSeg]QGai (from PartialSolarCollector)Rate of solar heat gain
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow[nSeg]QLos (from PartialSolarCollector)Rate of heat loss
AixLib.Fluid.SolarCollectors.BaseClasses.EN12975SolarGainsolGai (from EN12975)Identifies heat gained from the sun using the EN12975 standard calculations
AixLib.Fluid.SolarCollectors.BaseClasses.EN12975HeatLossheaLos (from EN12975)Calculates the heat lost to the surroundings using the EN12975 standard calculations
AixLib.Fluid.SolarCollectors.BaseClasses.EN12975SolarGaineleGaiIdentifies electrical energy prodcued
AixLib.Fluid.SolarCollectors.BaseClasses.EN12975HeatLosseleLosIdentifies electrical energy losses due to temperature dependence
Modelica.Blocks.Math.MultiSummultiSumLosSum of all electrical losses
Modelica.Blocks.Math.MultiSummultiSumGaiSum of all electrical gains
Modelica.Blocks.Math.AddaddSum of all electrical gains and losses
Modelica.Blocks.Nonlinear.LimiterlimiterElectrical power generation can't be lower than zero

Revisions

  • January 23, 2024 by Philipp Schmitz and Fabian Wuellhorst:
    First implementation. This is for issue 1451.