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 |
---|---|
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 | 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 | |
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 | |||
Conservation equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Real | mSenFac | 1 | Factor for scaling the sensible thermal mass of the volume |
Advanced | |||
Dynamics | |||
Dynamics | massDynamics | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state, must be steady state if energyDynamics is steady state |
MassFlowRate | m_flow_small | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
Diagnostics | |||
Boolean | show_T | false | = true, if actual temperature at port is computed |
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 | = false to simplify equations, assuming, but not enforcing, no flow reversal |
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*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
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 | 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 | |
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 | |||
Conservation equations | |||
Dynamics | energyDynamics | Modelica.Fluid.Types.Dynamic... | Type of energy balance: dynamic (3 initialization options) or steady state |
Real | mSenFac | 1 | Factor for scaling the sensible thermal mass of the volume |
Advanced | |||
Dynamics | |||
Dynamics | massDynamics | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state, must be steady state if energyDynamics is steady state |
MassFlowRate | m_flow_small | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow [kg/s] |
Diagnostics | |||
Boolean | show_T | false | = true, if actual temperature at port is computed |
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 | = false to simplify equations, assuming, but not enforcing, no flow reversal |
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(
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;