modelSolarThermal

Model of a solar thermal panel

Extends from AixLib.Fluid.BoilerCHP.BaseClasses.PartialHeatGenerator (Partial model for heat generators).

Information

Overview

Model of a solar thermal collector. 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.

Concept

The model maps solar collector efficiency based on the equation

eta = eta_o - c_1 * deltaT / G - c_2 * deltaT^2/ G

Known Limitations

  • Connected directly with Sources.TempAndRad, this model only represents a horizontal collector. There is no calculation for radiation on tilted surfaces.
  • With the standard BaseParameters, this model uses water as working fluid

Example Results

AixLib.HVAC.HeatGeneration.Examples.SolarThermalCollector

Parameters

Furbo1996 (Optimum solar collector fluid flow rates) suggests a default volume flow rate of approx. 0.2 l/(min.m2) to 0.4 l/(min.m2). Taken from a panel manufacturer's manual (SunMaxx Technical Manual.pdf) the standard volume flow rate seems to be around 1.5 l/(min.m2). This is 3 l/min for collectors of size 0.93 m2 up to 2.79 m2.

"Volume flow rate suggestions according to Furbo1996 and SunMaxx" cellspacing="0" cellpadding="2" border="1" width="50%">

unit

SunMaxx

Furbo1996

l/(min.m2)

1.5

0.3

m3/(h.m2)

0.091

0.018

m3/(s.m2)

2.5e-5

5.0e-6

gpm/m2

0.40

0.079


Assuming a default size for a unit of 2 m2 we get pressure losses for a module as in the following table (vfr=0.79 gpm):

"Pressure drop of two flat collector modules" cellspacing="0" cellpadding="2" border="1" width="50%">

Collector

pressure drop in psi

pressure drop in Pa

Titan Power Plus SU2

0.28

1900

SunMaxx-VHP 30 (40 % Glycol)

0.43

3000


The pressureloss factor should therefore be around 2500 Pa / (2*2.5e-5 m3/s)^2 = 1e12.

  • Febraury 7, 2018  by Peter Matthes:
    Rename "gain" block into "convertRelHeatFlow2absHeatFlow" to make clearer what it does.
    Remove redundant connect(solarThermalEfficiency.Q_flow, convertRelHeatFlow2absHeatFlow.u)
    Change default pressure drop coefficient from 1e6 to 2500 Pa / (2*2.5e-5 m3/s)^2 = 1e12 Pa.s2/m6.
    Change default collector area to 2 m2.
    Extend documentation with some default parameters from references.
    Grid-align the RealInputs.
  • Febraury 1, 2018  by Philipp Mehrfeld:
    Delete max block as it is now implemented in the efficiency model
  • October 25, 2017 by Philipp Mehrfeld:
    Extend now from AixLib.Fluid.BoilerCHP.BaseClasses.PartialHeatGenerator.
    Use mean temperature.
    Limiter moved in equation section of efficiency model.
  • December 15, 2016 by Moritz Lauster:
    Moved
  • November 2014  by Marcus Fuchs:
    Changed model to use Annex 60 base class
  • November 19, 2013  by Marcus Fuchs:
    Implemented

Parameters

TypeNameDefaultDescription
RealpressureDropCoeff2500/(A*2.5e-5)^2Pressure drop coefficient, delta_p[Pa] = PD * Q_flow[m^3/s]^2
Assumptions
BooleanallowFlowReversal (from PartialTwoPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal
Nominal condition
Modelica.Units.SI.MassFlowRatem_flow_nominal (from PartialTwoPortInterface)Nominal mass flow rate
Modelica.Units.SI.PressureDifferencedp_nominal (from PartialHeatGenerator)a*(m_flow_nominal/rho_default)^nPressure drop at nominal mass flow rate
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
Advanced › Sensor Properties
Modelica.Units.SI.Timetau (from PartialHeatGenerator)1Time constant of the temperature sensors at nominal flow rate
Modelica.Blocks.Types.InitinitType (from PartialHeatGenerator)Modelica.Blocks.Types.Init.InitialStateType of initialization (InitialState and InitialOutput are identical)
BooleantransferHeat (from PartialHeatGenerator)falseIf true, temperature T converges towards TAmb when no flow
Modelica.Units.SI.TemperatureTAmb (from PartialHeatGenerator)Medium.T_defaultFixed ambient temperature for heat transfer
Modelica.Units.SI.TimetauHeaTra (from PartialHeatGenerator)1200Time constant for heat transfer, default 20 minutes
Initialization
Modelica.Units.SI.TemperatureT_start (from PartialHeatGenerator)Medium.T_defaultInitial or guess value of output (= state)
Modelica.Units.SI.AbsolutePressuredp_start (from PartialHeatGenerator)0Guess value of dp = port_a.p - port_b.p
Modelica.Units.SI.MassFlowRatem_flow_start (from PartialHeatGenerator)0Guess value of m_flow = port_a.m_flow
Modelica.Units.SI.AbsolutePressurep_start (from PartialHeatGenerator)Medium.p_defaultStart value of pressure
Advanced › Pressure drop
Booleanfrom_dp (from PartialHeatGenerator)false= true, use m_flow = f(dp) else dp = f(m_flow)
Booleanlinearized (from PartialHeatGenerator)false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM (from PartialHeatGenerator)0.3Fraction of nominal mass flow rate where transition to turbulent occurs
Reala (from PartialHeatGenerator)Coefficient of volume flow rate dependent nominal pressure drop, dp_nominal=a*V_flow_nominal^n.
Realn (from PartialHeatGenerator)2Exponent of volume flow rate dependent nominal pressure drop, dp_nominal=a*V_flow_nominal^n.
Modelica.Units.SI.Densityrho_default (from PartialHeatGenerator)Medium.density_pTX(Medium.p_default, Medium.T_default, Medium.X_default)Density used for parameterization of pressure curve
Dynamics
Modelica.Fluid.Types.DynamicsenergyDynamics (from PartialHeatGenerator)Modelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Construction measures
Modelica.Units.SI.AreaA2Area of solar thermal collector
Modelica.Units.SI.VolumevolPipWater volume of piping
Efficienc
AixLib.DataBase.SolarThermal.SolarThermalBaseDataDefinitionCollectorAixLib.DataBase.SolarThermal.SimpleAbsorber()Properties of Solar Thermal Collector

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.RealInputT_airOutdoor air temperature in K
Modelica.Blocks.Interfaces.RealInputIrradiationSolar irradiation on a horizontal plane in W/m2

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.Fluid.Sensors.TemperatureTwoPortsenTRet (from PartialHeatGenerator)Temperature sensor of cold side of heat generator (return)
AixLib.Fluid.Sensors.TemperatureTwoPortsenTSup (from PartialHeatGenerator)Temperature sensor of hot side of heat generator (supply)
AixLib.Fluid.Sensors.MassFlowRatesenMasFlo (from PartialHeatGenerator)Sensor for mass flwo rate
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlowheater (from PartialHeatGenerator)Prescribed heat flow
AixLib.Fluid.MixingVolumes.MixingVolumevol (from PartialHeatGenerator)Fluid volume
AixLib.Fluid.FixedResistances.PressureDroppreDro (from PartialHeatGenerator)Pressure drop
AixLib.Fluid.Solar.Thermal.BaseClasses.SolarThermalEfficiencysolarThermalEfficiency
Modelica.Blocks.Math.GainconvertRelHeatFlow2absHeatFlow
Modelica.Blocks.Math.AddcalcTempMean