modelSolarThermal
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
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.
|
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):
|
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 redundantconnect(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
| Type | Name | Default | Description |
|---|---|---|---|
| Real | pressureDropCoeff | 2500/(A*2.5e-5)^2 | Pressure drop coefficient, delta_p[Pa] = PD * Q_flow[m^3/s]^2 |
| Assumptions | |||
| Boolean | allowFlowReversal (from PartialTwoPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m_flow_nominal (from PartialTwoPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.PressureDifference | dp_nominal (from PartialHeatGenerator) | a*(m_flow_nominal/rho_default)^n | Pressure drop at nominal mass flow rate |
| Advanced | |||
| Modelica.Units.SI.MassFlowRate | m_flow_small (from PartialTwoPortInterface) | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialTwoPortInterface) | false | = true, if actual temperature at port is computed |
| Advanced › Sensor Properties | |||
| Modelica.Units.SI.Time | tau (from PartialHeatGenerator) | 1 | Time constant of the temperature sensors at nominal flow rate |
| Modelica.Blocks.Types.Init | initType (from PartialHeatGenerator) | Modelica.Blocks.Types.Init.InitialState | Type of initialization (InitialState and InitialOutput are identical) |
| Boolean | transferHeat (from PartialHeatGenerator) | false | If true, temperature T converges towards TAmb when no flow |
| Modelica.Units.SI.Temperature | TAmb (from PartialHeatGenerator) | Medium.T_default | Fixed ambient temperature for heat transfer |
| Modelica.Units.SI.Time | tauHeaTra (from PartialHeatGenerator) | 1200 | Time constant for heat transfer, default 20 minutes |
| Initialization | |||
| Modelica.Units.SI.Temperature | T_start (from PartialHeatGenerator) | Medium.T_default | Initial or guess value of output (= state) |
| Modelica.Units.SI.AbsolutePressure | dp_start (from PartialHeatGenerator) | 0 | Guess value of dp = port_a.p - port_b.p |
| Modelica.Units.SI.MassFlowRate | m_flow_start (from PartialHeatGenerator) | 0 | Guess value of m_flow = port_a.m_flow |
| Modelica.Units.SI.AbsolutePressure | p_start (from PartialHeatGenerator) | Medium.p_default | Start value of pressure |
| Advanced › Pressure drop | |||
| Boolean | from_dp (from PartialHeatGenerator) | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Boolean | linearized (from PartialHeatGenerator) | false | = true, use linear relation between m_flow and dp for any flow rate |
| Real | deltaM (from PartialHeatGenerator) | 0.3 | Fraction of nominal mass flow rate where transition to turbulent occurs |
| Real | a (from PartialHeatGenerator) | Coefficient of volume flow rate dependent nominal pressure drop, dp_nominal=a*V_flow_nominal^n. | |
| Real | n (from PartialHeatGenerator) | 2 | Exponent of volume flow rate dependent nominal pressure drop, dp_nominal=a*V_flow_nominal^n. |
| Modelica.Units.SI.Density | rho_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.Dynamics | energyDynamics (from PartialHeatGenerator) | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
| Construction measures | |||
| Modelica.Units.SI.Area | A | 2 | Area of solar thermal collector |
| Modelica.Units.SI.Volume | volPip | Water volume of piping | |
| Efficienc | |||
| AixLib.DataBase.SolarThermal.SolarThermalBaseDataDefinition | Collector | AixLib.DataBase.SolarThermal.SimpleAbsorber() | Properties of Solar Thermal Collector |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Fluid.Interfaces.FluidPort_a | port_a (from PartialTwoPort) | Fluid connector a (positive design flow direction is from port_a to port_b) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b (from PartialTwoPort) | Fluid connector b (positive design flow direction is from port_a to port_b) | |
| Modelica.Blocks.Interfaces.RealInput | T_air | Outdoor air temperature in K | |
| Modelica.Blocks.Interfaces.RealInput | Irradiation | Solar irradiation on a horizontal plane in W/m2 |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Units.SI.MassFlowRate | m_flow (from PartialTwoPortInterface) | port_a.m_flow | Mass flow rate from port_a to port_b (m_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp (from PartialTwoPortInterface) | port_a.p - port_b.p | Pressure difference between port_a and port_b |
| Medium.ThermodynamicState | sta_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.ThermodynamicState | sta_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.TemperatureTwoPort | senTRet (from PartialHeatGenerator) | Temperature sensor of cold side of heat generator (return) | |
| AixLib.Fluid.Sensors.TemperatureTwoPort | senTSup (from PartialHeatGenerator) | Temperature sensor of hot side of heat generator (supply) | |
| AixLib.Fluid.Sensors.MassFlowRate | senMasFlo (from PartialHeatGenerator) | Sensor for mass flwo rate | |
| Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow | heater (from PartialHeatGenerator) | Prescribed heat flow | |
| AixLib.Fluid.MixingVolumes.MixingVolume | vol (from PartialHeatGenerator) | Fluid volume | |
| AixLib.Fluid.FixedResistances.PressureDrop | preDro (from PartialHeatGenerator) | Pressure drop | |
| AixLib.Fluid.Solar.Thermal.BaseClasses.SolarThermalEfficiency | solarThermalEfficiency | ||
| Modelica.Blocks.Math.Gain | convertRelHeatFlow2absHeatFlow | ||
| Modelica.Blocks.Math.Add | calcTempMean |