Buildings.Fluid.SolarCollectors

Package with models for solar collectors

Information

This package contains models which can be used to simulate solar thermal systems and examples describing their use.

Extends from Modelica.Icons.Package (Icon for standard packages).

Package Content

Name Description
Buildings.Fluid.SolarCollectors.UsersGuide UsersGuide User's Guide
Buildings.Fluid.SolarCollectors.ASHRAE93 ASHRAE93 Model of a solar thermal collector according to the ASHRAE Standard 93
Buildings.Fluid.SolarCollectors.EN12975 EN12975 Model of a solar thermal collector according to the ASHRAE Standard 93
Buildings.Fluid.SolarCollectors.Controls Controls Package for solar thermal collector controllers
Buildings.Fluid.SolarCollectors.Data Data Data for solar thermal collectors
Buildings.Fluid.SolarCollectors.Types Types Package with type definitions used in solar collector data records
Buildings.Fluid.SolarCollectors.Examples Examples Examples demonstrating the use of models in the SolarCollectors package
Buildings.Fluid.SolarCollectors.Validation Validation Collection of validation models
Buildings.Fluid.SolarCollectors.BaseClasses BaseClasses Package with base classes for Buildings.Fluid.SolarCollectors

Buildings.Fluid.SolarCollectors.ASHRAE93 Buildings.Fluid.SolarCollectors.ASHRAE93

Model of a solar thermal collector according to the ASHRAE Standard 93

Buildings.Fluid.SolarCollectors.ASHRAE93

Information

This component models a solar thermal collector according to the ASHRAE93 test standard.

References

ASHRAE 93-2010 -- Methods of Testing to Determine the Thermal Performance of Solar Collectors (ANSI approved).

EnergyPlus 23.2.0 Engineering Reference.

Extends from Buildings.Fluid.SolarCollectors.BaseClasses.PartialSolarCollector (Partial model for solar collectors).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium in the component
IntegernSeg3Number of segments used to discretize the collector model
Angleazi Surface azimuth (0 for south-facing; -90 degree for east-facing; +90 degree for west facing [rad]
Angletil Surface tilt (0 for horizontally mounted collector) [rad]
Realrho Ground reflectance [1]
HeatCapacityCTotif per.CTyp == Buildings.Flu...Heat capacity of solar collector with fluid [J/K]
Shading
Booleanuse_shaCoe_infalseEnables an input connector for shaCoe
RealshaCoe0Shading coefficient. 0.0: no shading, 1.0: full shading
Area declarations
NumberSelectionnColTypeBuildings.Fluid.SolarCollect...Selection of area specification format
IntegernPanels0Desired number of panels in the simulation
AreatotalArea0Total area of panels in the simulation [m2]
Configuration declarations
SystemConfigurationsysConfigBuildings.Fluid.SolarCollect...Selection of system configuration
IntegernPanelsPar0Number of array panels in parallel
Dynamics
Conservation equations
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state
RealmSenFac1Factor for scaling the sensible thermal mass of the volume
Advanced
Dynamics
DynamicsmassDynamicsenergyDynamicsType of mass balance: dynamic (3 initialization options) or steady state, must be steady state if energyDynamics is steady state
MassFlowRatem_flow_small1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
Initialization
AbsolutePressurep_startMedium.p_defaultStart value of pressure [Pa]
TemperatureT_startMedium.T_defaultStart value of temperature [K]
MassFractionX_start[Medium.nX]Medium.X_defaultStart value of mass fractions m_i/m [kg/kg]
ExtraPropertyC_start[Medium.nC]fill(0, Medium.nC)Start value of trace substances
ExtraPropertyC_nominal[Medium.nC]fill(1E-2, Medium.nC)Nominal value of trace substances. (Set to typical order of magnitude.)
Flow resistance
Booleanfrom_dpfalse= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistancefalse= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM0.1Fraction of nominal flow rate where flow transitions to laminar
Assumptions
BooleanallowFlowReversaltrue= false to simplify equations, assuming, but not enforcing, no flow reversal

Connectors

TypeNameDescription
FluidPort_aport_aFluid connector a (positive design flow direction is from port_a to port_b)
FluidPort_bport_bFluid connector b (positive design flow direction is from port_a to port_b)
input RealInputshaCoe_inShading coefficient
BusweaBusWeather data bus

Modelica definition

model ASHRAE93 "Model of a solar thermal collector according to the ASHRAE Standard 93" extends Buildings.Fluid.SolarCollectors.BaseClasses.PartialSolarCollector( redeclare Buildings.Fluid.SolarCollectors.Data.GenericASHRAE93 per); BaseClasses.ASHRAESolarGain solGai( redeclare package Medium = Medium, final nSeg=nSeg, final til=til, final incAngDat=per.incAngDat, final incAngModDat=per.incAngModDat, final y_intercept=per.y_intercept, final use_shaCoe_in=use_shaCoe_in, final shaCoe=shaCoe, final A_c=ATot_internal) "Identifies heat gained from the sun using the ASHRAE Standard 93 calculations"; BaseClasses.ASHRAEHeatLoss heaLos( redeclare package Medium = Medium, final nSeg=nSeg, final slope=per.slope, final A_c=ATot_internal) "Calculates the heat lost to the surroundings using the ASHRAE Standard 93 calculations"; equation // Make sure the model is only used with the ASHRAE ratings data, and slope < 0 assert(per.slope < 0, "In " + getInstanceName() + ": The heat loss coefficient from the ASHRAE ratings data must be strictly negative. Obtained slope = " + String(per.slope)); connect(weaBus.TDryBul, heaLos.TEnv); connect(HDirTil.inc, solGai.incAng); connect(HDirTil.H, solGai.HDirTil); connect(HDifTilIso.HGroDifTil, solGai.HGroDifTil); connect(HDifTilIso.HSkyDifTil, solGai.HSkyDifTil); connect(shaCoe_in, solGai.shaCoe_in); connect(solGai.QSol_flow, QGai.Q_flow); connect(temSen.T, heaLos.TFlu); connect(temSen.T, solGai.TFlu); connect(heaLos.QLos_flow, QLos.Q_flow); end ASHRAE93;

Buildings.Fluid.SolarCollectors.EN12975 Buildings.Fluid.SolarCollectors.EN12975

Model of a solar thermal collector according to the ASHRAE Standard 93

Buildings.Fluid.SolarCollectors.EN12975

Information

This component models a solar thermal collector according to the EN12975 test standard.

References

CEN 2022, European Standard 12975:2022, European Committee for Standardization

EnergyPlus 23.2.0 Engineering Reference

Extends from Buildings.Fluid.SolarCollectors.BaseClasses.PartialSolarCollector (Partial model for solar collectors).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium in the component
IntegernSeg3Number of segments used to discretize the collector model
Angleazi Surface azimuth (0 for south-facing; -90 degree for east-facing; +90 degree for west facing [rad]
Angletil Surface tilt (0 for horizontally mounted collector) [rad]
Realrho Ground reflectance [1]
HeatCapacityCTotif per.CTyp == Buildings.Flu...Heat capacity of solar collector with fluid [J/K]
Shading
Booleanuse_shaCoe_infalseEnables an input connector for shaCoe
RealshaCoe0Shading coefficient. 0.0: no shading, 1.0: full shading
Area declarations
NumberSelectionnColTypeBuildings.Fluid.SolarCollect...Selection of area specification format
IntegernPanels0Desired number of panels in the simulation
AreatotalArea0Total area of panels in the simulation [m2]
Configuration declarations
SystemConfigurationsysConfigBuildings.Fluid.SolarCollect...Selection of system configuration
IntegernPanelsPar0Number of array panels in parallel
Dynamics
Conservation equations
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state
RealmSenFac1Factor for scaling the sensible thermal mass of the volume
Advanced
Dynamics
DynamicsmassDynamicsenergyDynamicsType of mass balance: dynamic (3 initialization options) or steady state, must be steady state if energyDynamics is steady state
MassFlowRatem_flow_small1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
Initialization
AbsolutePressurep_startMedium.p_defaultStart value of pressure [Pa]
TemperatureT_startMedium.T_defaultStart value of temperature [K]
MassFractionX_start[Medium.nX]Medium.X_defaultStart value of mass fractions m_i/m [kg/kg]
ExtraPropertyC_start[Medium.nC]fill(0, Medium.nC)Start value of trace substances
ExtraPropertyC_nominal[Medium.nC]fill(1E-2, Medium.nC)Nominal value of trace substances. (Set to typical order of magnitude.)
Flow resistance
Booleanfrom_dpfalse= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistancefalse= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM0.1Fraction of nominal flow rate where flow transitions to laminar
Assumptions
BooleanallowFlowReversaltrue= false to simplify equations, assuming, but not enforcing, no flow reversal

Connectors

TypeNameDescription
FluidPort_aport_aFluid connector a (positive design flow direction is from port_a to port_b)
FluidPort_bport_bFluid connector b (positive design flow direction is from port_a to port_b)
input RealInputshaCoe_inShading coefficient
BusweaBusWeather data bus

Modelica definition

model EN12975 "Model of a solar thermal collector according to the ASHRAE Standard 93" extends Buildings.Fluid.SolarCollectors.BaseClasses.PartialSolarCollector( redeclare Buildings.Fluid.SolarCollectors.Data.GenericEN12975 per); Buildings.Fluid.SolarCollectors.BaseClasses.EN12975SolarGain solGai( redeclare package Medium = Medium, final nSeg=nSeg, final incAngDat=per.incAngDat, final incAngModDat=per.incAngModDat, final iamDiff=per.IAMDiff, final eta0=per.eta0, final use_shaCoe_in=use_shaCoe_in, final shaCoe=shaCoe, final A_c=ATot_internal) "Identifies heat gained from the sun using the EN12975 standard calculations"; Buildings.Fluid.SolarCollectors.BaseClasses.EN12975HeatLoss heaLos( redeclare package Medium = Medium, final nSeg=nSeg, final a1=per.a1, final a2=per.a2, final A_c=ATot_internal) "Calculates the heat lost to the surroundings using the EN12975 standard calculations"; equation // Make sure the model is only used with the EN ratings data, and hence a1 > 0 assert(per.a1 > 0, "In " + getInstanceName() + ": The heat loss coefficient from the EN 12975 ratings data must be strictly positive. Obtained a1 = " + String(per.a1)); connect(shaCoe_internal, solGai.shaCoe_in); connect(weaBus.TDryBul, heaLos.TEnv); connect(HDirTil.inc, solGai.incAng); connect(HDifTilIso.H, solGai.HSkyDifTil); connect(HDirTil.H, solGai.HDirTil); connect(shaCoe_in, solGai.shaCoe_in); connect(heaLos.TFlu, temSen.T); connect(heaLos.QLos_flow, QLos.Q_flow); connect(solGai.QSol_flow, QGai.Q_flow); connect(temSen.T, solGai.TFlu); end EN12975;