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.VariantsPackage (Icon for package containing variants).

Package Content

Name Description
Buildings.Fluid.SolarCollectors.UsersGuide UsersGuide User's Guide for Buildings.Fluid.SolarCollectors
Buildings.Fluid.SolarCollectors.ASHRAE93 ASHRAE93 Model of a flat plate solar thermal collector
Buildings.Fluid.SolarCollectors.EN12975 EN12975 Model of a concentrating solar collector
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 flat plate solar thermal collector

Buildings.Fluid.SolarCollectors.ASHRAE93

Information

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

Notice

References

EnergyPlus 7.0.0 Engineering Reference, October 13, 2011.

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
Anglelat Latitude [rad]
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
HeatCapacityC385*perPar.mDryHeat capacity of solar collector without fluid (default: cp_copper*mDry*nPanels) [J/K]
GenericSolarCollectorper Performance data
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
Dynamics
Equations
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state
DynamicsmassDynamicsenergyDynamicsType of mass balance: dynamic (3 initialization options) or steady state
RealmSenFac1Factor for scaling the sensible thermal mass of the volume
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
BooleancomputeFlowResistancetrue=true, compute flow resistance. Set to false to assume no friction
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
Advanced
MassFlowRatem_flow_small1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
BooleanhomotopyInitializationtrue= true, use homotopy method
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed

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 flat plate solar thermal collector" extends Buildings.Fluid.SolarCollectors.BaseClasses.PartialSolarCollector(final perPar=per); parameter Buildings.Fluid.SolarCollectors.Data.GenericSolarCollector per "Performance data"; BaseClasses.ASHRAESolarGain solGai( final B0=per.B0, final B1=per.B1, final shaCoe=shaCoe, final til=til, final nSeg=nSeg, final y_intercept=per.y_intercept, final use_shaCoe_in=use_shaCoe_in, final A_c=TotalArea_internal, redeclare package Medium = Medium) "Identifies heat gained from the sun using standard ASHRAE93 calculations"; BaseClasses.ASHRAEHeatLoss heaLos( final nSeg=nSeg, final slope=per.slope, final y_intercept=per.y_intercept, redeclare package Medium = Medium, final G_nominal=per.G_nominal, dT_nominal=per.dT_nominal, final A_c=TotalArea_internal, m_flow_nominal=per.mperA_flow_nominal*per.A*nPanels_internal, final cp_default=cp_default) "Calculates the heat lost to the surroundings using the ASHRAE93 standard calculations"; equation // Make sure the model is only used with the ASHRAE ratings data, and slope < 0 assert(per.slope < 0, "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, heaGai.Q_flow); connect(temSen.T, heaLos.TFlu); connect(temSen.T, solGai.TFlu); connect(heaLos.QLos, QLos.Q_flow); end ASHRAE93;

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

Model of a concentrating solar collector

Buildings.Fluid.SolarCollectors.EN12975

Information

Overview

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

Notice

References

EnergyPlus 7.0.0 Engineering Reference, October 13, 2011.

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
Anglelat Latitude [rad]
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
HeatCapacityC385*perPar.mDryHeat capacity of solar collector without fluid (default: cp_copper*mDry*nPanels) [J/K]
GenericSolarCollectorper Performance data
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
Dynamics
Equations
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state
DynamicsmassDynamicsenergyDynamicsType of mass balance: dynamic (3 initialization options) or steady state
RealmSenFac1Factor for scaling the sensible thermal mass of the volume
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
BooleancomputeFlowResistancetrue=true, compute flow resistance. Set to false to assume no friction
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
Advanced
MassFlowRatem_flow_small1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
BooleanhomotopyInitializationtrue= true, use homotopy method
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed

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 concentrating solar collector" extends Buildings.Fluid.SolarCollectors.BaseClasses.PartialSolarCollector(final perPar=per); parameter Buildings.Fluid.SolarCollectors.Data.GenericSolarCollector per "Performance data"; BaseClasses.EN12975SolarGain solGai( redeclare package Medium = Medium, final A_c=TotalArea_internal, final nSeg=nSeg, final y_intercept=per.y_intercept, final B0=per.B0, final B1=per.B1, final shaCoe=shaCoe, final iamDiff=per.IAMDiff, final use_shaCoe_in=use_shaCoe_in) "Identifies heat gained from the sun using standard EN12975 calculations"; BaseClasses.EN12975HeatLoss heaLos( redeclare package Medium = Medium, final A_c=TotalArea_internal, final nSeg=nSeg, final y_intercept=per.y_intercept, final C1=per.C1, final C2=per.C2, final G_nominal=per.G_nominal, final dT_nominal=per.dT_nominal, final m_flow_nominal=per.mperA_flow_nominal*per.A*nPanels_internal, final cp_default=cp_default) "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 C1 > 0 assert(per.C1 > 0, "The heat loss coefficient from the EN 12975 ratings data must be strictly positive. Obtained C1 = " + String(per.C1)); 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, QLos.Q_flow); connect(solGai.QSol_flow, heaGai.Q_flow); connect(temSen.T, solGai.TFlu); end EN12975;