Buildings.Fluid.SolarCollectors.Validation

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

Name Description
Buildings.Fluid.SolarCollectors.Validation.ExtremeAmbientConditions ExtremeAmbientConditions Validation model for to ensure that collectors do not freeze or boil
Buildings.Fluid.SolarCollectors.Validation.FlatPlate FlatPlate Validation model for FlatPlate

Buildings.Fluid.SolarCollectors.Validation.ExtremeAmbientConditions Buildings.Fluid.SolarCollectors.Validation.ExtremeAmbientConditions

Validation model for to ensure that collectors do not freeze or boil

Buildings.Fluid.SolarCollectors.Validation.ExtremeAmbientConditions

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

TypeNameDefaultDescription
replaceable package MediumBuildings.Media.Water (T_min...Medium in the system

Connectors

TypeNameDescription
replaceable package MediumMedium in the system
BusweaBus 

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;

Buildings.Fluid.SolarCollectors.Validation.FlatPlate Buildings.Fluid.SolarCollectors.Validation.FlatPlate

Validation model for FlatPlate

Buildings.Fluid.SolarCollectors.Validation.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.

The solar collector temperature of the Modelica model has a spike in the morning. At this time, there is solar irradiation on the collector but no mass flow rate, which leads to an increase in temperature.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Parameters

TypeNameDefaultDescription
replaceable package MediumBuildings.Media.WaterMedium in the system

Connectors

TypeNameDescription
replaceable package MediumMedium 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=Modelica.Utilities.Files.loadResource("modelica://Buildings/Fluid/SolarCollectors/Examples/ValidationData/TRNSYSAnnualData.txt"), smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments) "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;