- Home > Modelica

## Buildings.Fluid.SolarCollectors

### 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
--- | ---
UsersGuide | User's Guide for Buildings.Fluid.SolarCollectors
ASHRAE93 | Model of a flat plate solar thermal collector
EN12975 | Model of a concentrating solar collector
Controls | Package for solar thermal collector controllers
Data | Data for solar thermal collectors
Types | Package with type definitions used in solar collector data records
Examples | Examples demonstrating the use of models in the SolarCollectors package
Validation | Collection of validation models
BaseClasses | Package with base classes for Buildings.Fluid.SolarCollectors

## Buildings.Fluid.SolarCollectors.ASHRAE93

Model of a flat plate solar thermal collector

### Information

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

#### Notice

- As mentioned in EnergyPlus 7.0.0 Engineering Reference, the SRCC incident angle modifier equation coefficients are only valid for incident angles of 60 degrees or less. Because these curves behave poorly for angles greater than 60 degrees the model does not calculate either direct or diffuse solar radiation gains when the incidence angle is greater than 60 degrees.
- By default, the estimated heat capacity of the collector without fluid is calculated based on the dry mass and the specific heat capacity of copper.

#### References

EnergyPlus 7.0.0 Engineering Reference, October 13, 2011.

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

### Parameters

Type | Name | Default | Description
--- | --- | --- | ---
replaceable package Medium | PartialMedium | Medium in the component
Integer | nSeg | 3 | Number of segments used to discretize the collector model
Angle | lat |  | Latitude [rad]
Angle | azi |  | Surface azimuth (0 for south-facing; -90 degree for east-facing; +90 degree for west facing [rad]
Angle | til |  | Surface tilt (0 for horizontally mounted collector) [rad]
Real | rho |  | Ground reflectance
HeatCapacity | C | 385*perPar.mDry | Heat capacity of solar collector without fluid (default: cp_copper*mDry*nPanels) [J/K]
GenericSolarCollector | per |  | Performance data
Initialization
MassFlowRate | m_flow.start | 0 | Mass flow rate from port_a to port_b (m_flow > 0 is design flow direction) [kg/s]
Pressure | dp.start | 0 | Pressure difference between port_a and port_b [Pa]
Shading
Boolean | use_shaCoe_in | false | Enables an input connector for shaCoe
Real | shaCoe | 0 | Shading coefficient. 0.0: no shading, 1.0: full shading
Area declarations
NumberSelection | nColType | Buildings.Fluid.SolarCollect... | Selection of area specification format
Integer | nPanels | 0 | Desired number of panels in the simulation
Area | totalArea | 0 | Total area of panels in the simulation [m2]
Configuration declarations
SystemConfiguration | sysConfig | Buildings.Fluid.SolarCollect... | Selection of system configuration
Dynamics
Equations
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Formulation of energy balance
Dynamics | massDynamics | energyDynamics | Formulation of mass balance
Real | mSenFac | 1 | Factor for scaling the sensible thermal mass of the volume
Initialization
AbsolutePressure | p_start | Medium.p_default | Start value of pressure [Pa]
Temperature | T_start | Medium.T_default | Start value of temperature [K]
MassFraction | X_start[Medium.nX] | Medium.X_default | Start value of mass fractions m_i/m [kg/kg]
ExtraProperty | C_start[Medium.nC] | fill(0, Medium.nC) | Start value of trace substances
ExtraProperty | C_nominal[Medium.nC] | fill(1E-2, Medium.nC) | Nominal value of trace substances. (Set to typical order of magnitude.)
Flow resistance
Boolean | computeFlowResistance | true | =true, compute flow resistance. Set to false to assume no friction
Boolean | from_dp | false | = true, use m_flow = f(dp) else dp = f(m_flow)
Boolean | linearizeFlowResistance | false | = true, use linear relation between m_flow and dp for any flow rate
Real | deltaM | 0.1 | Fraction of nominal flow rate where flow transitions to laminar
Assumptions
Boolean | allowFlowReversal | true | = true to allow flow reversal, false restricts to design direction (port_a -> port_b)
Advanced
MassFlowRate | m_flow_small | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s]
Boolean | homotopyInitialization | true | = true, use homotopy method
Diagnostics
Boolean | show_T | false | = true, if actual temperature at port is computed

### Connectors

Type | Name | Description
--- | --- | ---
FluidPort_a | port_a | Fluid connector a (positive design flow direction is from port_a to port_b)
FluidPort_b | port_b | Fluid connector b (positive design flow direction is from port_a to port_b)
input RealInput | shaCoe_in | Shading coefficient
Bus | weaBus | Weather 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, final cp_default=cp_default) "Calculates the heat lost to the surroundings using the ASHRAE93 standard calculations"; equation 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

Model of a concentrating solar collector

### Information

#### Overview

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

#### Notice

- As mentioned in EnergyPlus 7.0.0 Engineering Reference, the SRCC incident angle modifier equation coefficients are only valid for incident angles of 60 degrees or less. Because these curves behave poorly for angles greater than 60 degrees the model does not calculate either direct or diffuse solar radiation gains when the incidence angle is greater than 60 degrees.
- By default, the estimated heat capacity of the collector without fluid is calculated based on the dry mass and the specific heat capacity of copper.

#### References

EnergyPlus 7.0.0 Engineering Reference, October 13, 2011.

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

### Parameters

Type | Name | Default | Description
--- | --- | --- | ---
replaceable package Medium | PartialMedium | Medium in the component
Integer | nSeg | 3 | Number of segments used to discretize the collector model
Angle | lat |  | Latitude [rad]
Angle | azi |  | Surface azimuth (0 for south-facing; -90 degree for east-facing; +90 degree for west facing [rad]
Angle | til |  | Surface tilt (0 for horizontally mounted collector) [rad]
Real | rho |  | Ground reflectance
HeatCapacity | C | 385*perPar.mDry | Heat capacity of solar collector without fluid (default: cp_copper*mDry*nPanels) [J/K]
GenericSolarCollector | per |  | Performance data
Initialization
MassFlowRate | m_flow.start | 0 | Mass flow rate from port_a to port_b (m_flow > 0 is design flow direction) [kg/s]
Pressure | dp.start | 0 | Pressure difference between port_a and port_b [Pa]
Shading
Boolean | use_shaCoe_in | false | Enables an input connector for shaCoe
Real | shaCoe | 0 | Shading coefficient. 0.0: no shading, 1.0: full shading
Area declarations
NumberSelection | nColType | Buildings.Fluid.SolarCollect... | Selection of area specification format
Integer | nPanels | 0 | Desired number of panels in the simulation
Area | totalArea | 0 | Total area of panels in the simulation [m2]
Configuration declarations
SystemConfiguration | sysConfig | Buildings.Fluid.SolarCollect... | Selection of system configuration
Dynamics
Equations
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Formulation of energy balance
Dynamics | massDynamics | energyDynamics | Formulation of mass balance
Real | mSenFac | 1 | Factor for scaling the sensible thermal mass of the volume
Initialization
AbsolutePressure | p_start | Medium.p_default | Start value of pressure [Pa]
Temperature | T_start | Medium.T_default | Start value of temperature [K]
MassFraction | X_start[Medium.nX] | Medium.X_default | Start value of mass fractions m_i/m [kg/kg]
ExtraProperty | C_start[Medium.nC] | fill(0, Medium.nC) | Start value of trace substances
ExtraProperty | C_nominal[Medium.nC] | fill(1E-2, Medium.nC) | Nominal value of trace substances. (Set to typical order of magnitude.)
Flow resistance
Boolean | computeFlowResistance | true | =true, compute flow resistance. Set to false to assume no friction
Boolean | from_dp | false | = true, use m_flow = f(dp) else dp = f(m_flow)
Boolean | linearizeFlowResistance | false | = true, use linear relation between m_flow and dp for any flow rate
Real | deltaM | 0.1 | Fraction of nominal flow rate where flow transitions to laminar
Assumptions
Boolean | allowFlowReversal | true | = true to allow flow reversal, false restricts to design direction (port_a -> port_b)
Advanced
MassFlowRate | m_flow_small | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s]
Boolean | homotopyInitialization | true | = true, use homotopy method
Diagnostics
Boolean | show_T | false | = true, if actual temperature at port is computed

### Connectors

Type | Name | Description
--- | --- | ---
FluidPort_a | port_a | Fluid connector a (positive design flow direction is from port_a to port_b)
FluidPort_b | port_b | Fluid connector b (positive design flow direction is from port_a to port_b)
input RealInput | shaCoe_in | Shading coefficient
Bus | weaBus | Weather 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( 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, redeclare package Medium = Medium) "Identifies heat gained from the sun using standard EN12975 calculations"; BaseClasses.EN12975HeatLoss heaLos( final A_c=TotalArea_internal, final nSeg=nSeg, final y_intercept=per.y_intercept, final C1=per.C1, final C2=per.C2, redeclare package Medium = Medium, final G_nominal=per.G_nominal, final dT_nominal=per.dT_nominal, final m_flow_nominal=per.mperA_flow_nominal*per.A, final cp_default=cp_default) "Calculates the heat lost to the surroundings using the EN12975 standard calculations"; equation 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;