modelEN12975
Model of a solar thermal collector according to the ASHRAE Standard 93
Extends from Buildings.Fluid.SolarCollectors.BaseClasses.PartialSolarCollector (Partial model for solar collectors).
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
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | homotopyInitialization (from PartialSolarCollector) | true | = true, use homotopy method |
| Integer | nSeg (from PartialSolarCollector) | 3 | Number of segments used to discretize the collector model |
| Modelica.Units.SI.Angle | azi (from PartialSolarCollector) | Surface azimuth (0 for south-facing; -90 degree for east-facing; +90 degree for west facing | |
| Modelica.Units.SI.Angle | til (from PartialSolarCollector) | Surface tilt (0 for horizontally mounted collector) | |
| Real | rho (from PartialSolarCollector) | Ground reflectance | |
| Modelica.Units.SI.HeatCapacity | CTot (from PartialSolarCollector) | if per.CTyp == Buildings.Fluid.SolarCollectors.Types.HeatCapacity.TotalCapacity then per.C elseif per.CTyp == Buildings.Fluid.SolarCollectors.Types.HeatCapacity.DryCapacity then per.C + rho_default*per.V*cp_default else 385*per.mDry + rho_default*per.V*cp_default | Heat capacity of solar collector with fluid |
| Buildings.Fluid.SolarCollectors.Data.GenericASHRAE93 | per (from PartialSolarCollector) | ||
| Dynamics › Conservation equations | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics (from LumpedVolumeDeclarations) | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
| Modelica.Fluid.Types.Dynamics | substanceDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of independent mass fraction balance: dynamic (3 initialization options) or steady state |
| Modelica.Fluid.Types.Dynamics | traceDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of trace substance balance: dynamic (3 initialization options) or steady state |
| Advanced › Dynamics | |||
| Modelica.Fluid.Types.Dynamics | massDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state, must be steady state if energyDynamics is steady state |
| Initialization | |||
| Medium.AbsolutePressure | p_start (from LumpedVolumeDeclarations) | Medium.p_default | Start value of pressure |
| Medium.Temperature | T_start (from LumpedVolumeDeclarations) | Medium.T_default | Start value of temperature |
| Medium.MassFraction[Medium.nX] | X_start (from LumpedVolumeDeclarations) | Medium.X_default | Start 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 | |||
| Real | mSenFac (from LumpedVolumeDeclarations) | 1 | Factor for scaling the sensible thermal mass of the volume |
| Flow resistance | |||
| Boolean | computeFlowResistance (from TwoPortFlowResistanceParameters) | true | =true, compute flow resistance. Set to false to assume no friction |
| Boolean | from_dp (from TwoPortFlowResistanceParameters) | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Real | n (from TwoPortFlowResistanceParameters) | 2 | Flow exponent, n=1 for laminar, n=2 for turbulent |
| Boolean | linearizeFlowResistance (from TwoPortFlowResistanceParameters) | false | = true, use linear relation between m_flow and dp for any flow rate |
| Real | deltaM (from TwoPortFlowResistanceParameters) | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
| Nominal condition | |||
| Modelica.Units.SI.PressureDifference | dp_nominal (from TwoPortFlowResistanceParameters) | Pressure difference | |
| Modelica.Units.SI.MassFlowRate | m_flow_nominal (from PartialTwoPortInterface) | Nominal mass flow rate | |
| Assumptions | |||
| Boolean | allowFlowReversal (from PartialTwoPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| 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 |
| Shading | |||
| Boolean | use_shaCoe_in (from PartialSolarCollector) | false | Enables an input connector for shaCoe |
| Real | shaCoe (from PartialSolarCollector) | 0 | Shading coefficient. 0.0: no shading, 1.0: full shading |
| Area declarations | |||
| Buildings.Fluid.SolarCollectors.Types.NumberSelection | nColType (from PartialSolarCollector) | Buildings.Fluid.SolarCollectors.Types.NumberSelection.Number | Selection of area specification format |
| Integer | nPanels (from PartialSolarCollector) | 0 | Desired number of panels in the simulation |
| Modelica.Units.SI.Area | totalArea (from PartialSolarCollector) | 0 | Total area of panels in the simulation |
| Configuration declarations | |||
| Buildings.Fluid.SolarCollectors.Types.SystemConfiguration | sysConfig (from PartialSolarCollector) | Buildings.Fluid.SolarCollectors.Types.SystemConfiguration.Series | Selection of system configuration |
| Integer | nPanelsPar (from PartialSolarCollector) | 0 | Number of array panels in parallel |
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 | shaCoe_in (from PartialSolarCollector) | Shading coefficient | |
| Buildings.BoundaryConditions.WeatherData.Bus | weaBus (from PartialSolarCollector) | Weather data bus |
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 |
| Buildings.BoundaryConditions.SolarIrradiation.DiffusePerez | HDifTilIso (from PartialSolarCollector) | Diffuse solar irradiation on a tilted surface | |
| Buildings.BoundaryConditions.SolarIrradiation.DirectTiltedSurface | HDirTil (from PartialSolarCollector) | Direct solar irradiation on a tilted surface | |
| Buildings.Fluid.Sensors.MassFlowRate | senMasFlo (from PartialSolarCollector) | Mass flow rate sensor | |
| Buildings.Fluid.FixedResistances.PressureDrop | res (from PartialSolarCollector) | Flow resistance | |
| Buildings.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 | |
| Buildings.Fluid.SolarCollectors.BaseClasses.EN12975SolarGain | solGai | Identifies heat gained from the sun using the EN12975 standard calculations | |
| Buildings.Fluid.SolarCollectors.BaseClasses.EN12975HeatLoss | heaLos | Calculates the heat lost to the surroundings using the EN12975 standard calculations |
Revisions
-
February 28, 2024, by Jelger Jansen:
Refactor model.
This is for Buildings, #3604. -
December 11, 2023, by Michael Wetter:
Corrected implementation of pressure drop calculation for the situation where the collectors are in parallel, e.g., ifsysConfig == Buildings.Fluid.SolarCollectors.Types.SystemConfiguration.Parallel.
Changed assignment ofcomputeFlowResistancetofinalbased ondp_nominal.
This is for Buildings, #3597. -
September 16, 2021, by Michael Wetter:
Changedlatfrom being a parameter to an input from weather bus.
This is for IBPSA, #1477. -
December 17, 2017, by Michael Wetter:
Revised computation of heat loss.
This is for issue 1100. -
November 21, 2017, by Michael Wetter:
Corrected error in heat loss calculations that did not scale correctly withnPanels.
This is for issue 1073. -
January 4, 2013, by Peter Grant:
First implementation.