Collection of validation models
Information
This package contains validation models for the classes in
Buildings.Fluid.SolarCollectors.
Note that most validation models contain simple input data
which may not be realistic, but for which the correct
output can be obtained through an analytic solution.
The examples plot various outputs, which have been verified against these
solutions. These model outputs are stored as reference data and
used for continuous validation whenever models in the library change.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
Package Content
Validation model for to ensure that collectors do not freeze or boil
Information
This model validates the correct implementation of the heat transfer
to the collector when ambient temperatures are very low or irradiation is very
large.
It applies a ramp boundary condition that reduces the ambient temperature
to -60ˆC to verify that the collector fluid temperature does not
drop below Medium.T_min
.
Afterwards, the solar irradiation is increased to overheat the collector.
If the fluid temperature approaches Medium.T_max
,
then the solar heat gain is reduced to zero.
Ensuring these bounds is important as otherwise, the collector model
would trigger an assertion and the simulation would stop.
The tested collector models are
Buildings.Fluid.SolarCollectors.ASHRAE93
and
Buildings.Fluid.SolarCollectors.EN12975.
Note that the medium has been declared
as Buildings.Media.Water(T_min=273.15, T_max=273.15+100)
to set the two bounds for the water temperature.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
replaceable package Medium | Buildings.Media.Water (T_min... | Medium in the system |
Connectors
Type | Name | Description |
replaceable package Medium | Medium in the system |
Bus | weaBus | |
Modelica definition
model ExtremeAmbientConditions
"Validation model for to ensure that collectors do not freeze or boil"
extends Modelica.Icons.Example;
replaceable package Medium =
Buildings.Media.Water(T_min=273.15, T_max=273.15+100)
"Medium in the system";
ASHRAE93 solAsh(
redeclare package Medium =
Medium,
shaCoe=0,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
rho=0.2,
nColType=Buildings.Fluid.SolarCollectors.Types.NumberSelection.Number,
sysConfig=Buildings.Fluid.SolarCollectors.Types.SystemConfiguration.Series,
per=
Buildings.Fluid.SolarCollectors.Data.GlazedFlatPlate.FP_GuangdongFSPTY95(),
nPanels=1,
lat=0.73097781993588,
azi=0.3,
til=0.5,
T_start=313.15)
"Flat plate solar collector model using the ASHRAE model";
EN12975 solEn(
redeclare package Medium =
Medium,
shaCoe=0,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
rho=0.2,
nColType=Buildings.Fluid.SolarCollectors.Types.NumberSelection.Number,
sysConfig=Buildings.Fluid.SolarCollectors.Types.SystemConfiguration.Series,
nPanels=1,
lat=0.73097781993588,
azi=0.3,
til=0.5,
per=
Buildings.Fluid.SolarCollectors.Data.Concentrating.C_VerificationModel(),
T_start=313.15)
"Flat plate solar collector model using the EN 12975 model";
Sources.MassFlowSource_T sou(
redeclare package Medium =
Medium,
nPorts=1,
m_flow=0)
"Inlet boundary conditions";
Sources.Boundary_pT sou1(
redeclare package Medium =
Medium,
p(displayUnit="Pa"),
use_p_in=false,
nPorts=2)
"Inlet boundary conditions";
Modelica.Blocks.Sources.Ramp TAmb(
offset=273.15 + 40,
height=-100,
duration=10*3600)
"Ambient temperature";
Modelica.Blocks.Sources.Ramp HSol(
duration=12*3600,
height=1000,
startTime=10*3600)
"Solar irradiation";
Sources.MassFlowSource_T sou2(
redeclare package Medium =
Medium,
nPorts=1,
m_flow=0)
"Inlet boundary conditions";
BoundaryConditions.WeatherData.Bus weaBus;
Modelica.Blocks.Sources.Constant const(k=0)
"Constant that outputs zero";
Modelica.Blocks.Sources.Constant solTim(k=12*3600)
"Solar time";
equation
connect(sou.ports[1], solAsh.port_a);
connect(sou2.ports[1], solEn.port_a);
connect(solAsh.port_b, sou1.ports[1]);
connect(solEn.port_b, sou1.ports[2]);
connect(weaBus, solAsh.weaBus);
connect(TAmb.y, weaBus.TDryBul);
connect(HSol.y, weaBus.HDifHor);
connect(HSol.y, weaBus.HGloHor);
connect(const.y, weaBus.solZen);
connect(const.y, weaBus.cloTim);
connect(solTim.y, weaBus.solTim);
connect(HSol.y, weaBus.HDirNor);
connect(solEn.weaBus, weaBus);
end ExtremeAmbientConditions;
Validation model for FlatPlate
Information
This model was used to validate the
Buildings.Fluid.SolarCollectors.ASHRAE93 solar collector model
against TRNSYS data. Data files are used to ensure that the
Buildings.Fluid.SolarCollectors.ASHRAE93 solar collector model and
the TRNSYS model use the same inlet and weather conditions. The
solar collector model must reference the
Buildings.Fluid.SolarCollectors.Data.GlazedFlatPlate.FP_TRNSYSValidation
data record when comparing model results to the stored TRNSYS results.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
replaceable package Medium | Buildings.Media.Water | Medium in the system |
Connectors
Type | Name | Description |
replaceable package Medium | Medium in the system |
Modelica definition
model FlatPlate
"Validation model for FlatPlate"
extends Modelica.Icons.Example;
replaceable package Medium =
Buildings.Media.Water "Medium in the system";
Buildings.Fluid.SolarCollectors.ASHRAE93
solCol(
redeclare package Medium =
Medium,
shaCoe=0,
azi=0,
per=
Buildings.Fluid.SolarCollectors.Data.GlazedFlatPlate.FP_TRNSYSValidation(),
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
rho=0.2,
nColType=Buildings.Fluid.SolarCollectors.Types.NumberSelection.Number,
nPanels=1,
nSeg=30,
lat=0.6457718232379,
til=0.78539816339745)
"Flat plate solar collector model, has been modified for validation purposes";
Buildings.BoundaryConditions.WeatherData.ReaderTMY3 weaDat(filNam=
"modelica://Buildings/Resources/weatherdata/USA_CA_San.Francisco.Intl.AP.724940_TMY3.mos")
"Weather data file reader";
Buildings.Fluid.Sources.Boundary_pT sou(
redeclare package Medium =
Medium,
use_p_in=false,
p(displayUnit="Pa") = 101325,
nPorts=1)
"Outlet for water flow";
Buildings.Fluid.Sources.MassFlowSource_T bou(
nPorts=1,
redeclare package Medium =
Medium,
use_m_flow_in=true,
use_T_in=true)
"Inlet for water flow, at a prescribed flow rate and temperature";
Modelica.Blocks.Sources.CombiTimeTable datRea(
tableOnFile=true,
tableName="TRNSYS",
columns=2:5,
fileName=
ModelicaServices.ExternalReferences.loadResource(
"modelica://Buildings/Fluid/SolarCollectors/Examples/ValidationData/TRNSYSAnnualData.txt"))
"Data reader with inlet conditions from TRNSYS";
Modelica.Blocks.Math.Add add
"Converts TRNSYS data from degree Celsius to Kelving";
Modelica.Blocks.Sources.Constant const(k=273.15)
"Used to convert TRNSYS data from degree Celsius to Kelving";
equation
connect(weaDat.weaBus, solCol.weaBus);
connect(bou.ports[1], solCol.port_a);
connect(const.y, add.u2);
connect(add.y, bou.T_in);
connect(datRea.y[1], add.u1);
connect(datRea.y[4], bou.m_flow_in);
connect(sou.ports[1], solCol.port_b);
end FlatPlate;
Automatically generated Mon Jul 13 14:26:02 2015.