IEA EBC Annex 60 EBC logo

Annex60.Fluid.HeatExchangers.ActiveBeams.Validation

Collection of validation models

Information

This package contains validation models for the classes in Annex60.Fluid.HeatExchangers.ActiveBeams.

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
Annex60.Fluid.HeatExchangers.ActiveBeams.Validation.NumberOfBeams NumberOfBeams  
Annex60.Fluid.HeatExchangers.ActiveBeams.Validation.NumberOfBeamsDynamics NumberOfBeamsDynamics Validation model for the dynamic response for one and multiple beams

Annex60.Fluid.HeatExchangers.ActiveBeams.Validation.NumberOfBeams Annex60.Fluid.HeatExchangers.ActiveBeams.Validation.NumberOfBeams


Annex60.Fluid.HeatExchangers.ActiveBeams.Validation.NumberOfBeams

Information

This model validates the scaling of the heat tranfer and pressure drop for nBeams > 1.

It uses two instances of Annex60.Fluid.HeatExchangers.ActiveBeams.CoolingAndHeating, one with nBeams = 1 and one with nBeams = 10.

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

Parameters

TypeNameDefaultDescription
IntegernBeams10Number of beams

Modelica definition

model NumberOfBeams extends Modelica.Icons.Example; package MediumA = Annex60.Media.Air "Medium model for air"; package MediumW = Annex60.Media.Water "Medium model for water"; parameter Integer nBeams(min=1) = 10 "Number of beams"; Annex60.Fluid.Sources.FixedBoundary sin_1( redeclare package Medium = MediumW, nPorts=2) "Sink for chilled water"; Annex60.Fluid.Sources.MassFlowSource_T souAir( redeclare package Medium = MediumA, use_m_flow_in=false, nPorts=1, m_flow=0.0792, T=285.85) "Source for air"; Annex60.Fluid.Sources.FixedBoundary sin_3( redeclare package Medium = MediumA, nPorts=2); Annex60.Fluid.Sources.FixedBoundary sou_1( redeclare package Medium = MediumW, nPorts=2, T=288.15) "Source for chilled water"; Annex60.Fluid.Movers.FlowControlled_m_flow pumHotWat( redeclare package Medium = MediumW, m_flow_nominal=0.094, addPowerToMedium=false, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, filteredSpeed=false, nominalValuesDefineDefaultPressureCurve=true) "Pump for hot water"; Annex60.Fluid.Sources.FixedBoundary sou_2( redeclare package Medium = MediumW, nPorts=2, T=320.95) "Source for hot water"; Annex60.Fluid.Sources.FixedBoundary sin_2( redeclare package Medium = MediumW, nPorts=2) "Sink for hot water"; Annex60.Fluid.Movers.FlowControlled_m_flow pumChiWat( redeclare package Medium = MediumW, m_flow_nominal=0.094, addPowerToMedium=false, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, filteredSpeed=false, nominalValuesDefineDefaultPressureCurve=true) "Pump for chilled water"; Annex60.Fluid.HeatExchangers.ActiveBeams.CoolingAndHeating beaCooHea( redeclare package MediumWat = MediumW, redeclare package MediumAir = MediumA, redeclare Annex60.Fluid.HeatExchangers.ActiveBeams.Data.Trox.DID632A_nozzleH_length6ft_cooling perCoo, redeclare Annex60.Fluid.HeatExchangers.ActiveBeams.Data.Trox.DID632A_nozzleH_length6ft_heating perHea, nBeams=1, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState) "Active beam"; Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature prescribedTemperature "Room temperature"; Annex60.Fluid.Sources.MassFlowSource_T souAir10( redeclare package Medium = MediumA, use_m_flow_in=false, nPorts=1, m_flow=0.0792*nBeams, T=285.85) "Source for air"; Annex60.Fluid.Movers.FlowControlled_m_flow pumHotWat10( redeclare package Medium = MediumW, addPowerToMedium=false, m_flow_nominal=0.094*nBeams, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, filteredSpeed=false, nominalValuesDefineDefaultPressureCurve=true) "Pump for hot water"; Annex60.Fluid.Movers.FlowControlled_m_flow pumChiWat10( redeclare package Medium = MediumW, addPowerToMedium=false, m_flow_nominal=0.094*nBeams, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, filteredSpeed=false, nominalValuesDefineDefaultPressureCurve=true) "Pump for chilled water"; Annex60.Fluid.HeatExchangers.ActiveBeams.CoolingAndHeating beaCooHea10( redeclare package MediumWat = MediumW, redeclare package MediumAir = MediumA, redeclare Annex60.Fluid.HeatExchangers.ActiveBeams.Data.Trox.DID632A_nozzleH_length6ft_cooling perCoo, redeclare Annex60.Fluid.HeatExchangers.ActiveBeams.Data.Trox.DID632A_nozzleH_length6ft_heating perHea, nBeams=nBeams, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState) "Active beam"; Modelica.Blocks.Sources.Step step( height=-0.094, offset=0.094, startTime=2000) "Chilled water mass flow rate"; Modelica.Blocks.Sources.Step step1( height=0.094, startTime=3000) "Hot water mass flow rate"; Modelica.Blocks.Sources.Step step2( height=0.094*nBeams, startTime=3000) "Hot water mass flow rate"; Modelica.Blocks.Sources.Step step3( height=-0.094*nBeams, offset=0.094*nBeams, startTime=2000) "Chilled water mass flow rate"; Modelica.Blocks.Sources.Step step4( offset=273.15 + 25, height=-5, startTime=2500) "Room air temperature variation"; equation connect(sou_2.ports[1], pumHotWat.port_a); connect(pumChiWat.port_a, sou_1.ports[1]); connect(pumChiWat.port_b, beaCooHea.watCoo_a); connect(beaCooHea.watCoo_b, sin_1.ports[1]); connect(sin_2.ports[1], beaCooHea.watHea_b); connect(beaCooHea.watHea_a, pumHotWat.port_b); connect(souAir.ports[1], beaCooHea.air_a); connect(sin_3.ports[1], beaCooHea.air_b); connect(pumChiWat10.port_b, beaCooHea10.watCoo_a); connect(beaCooHea10.watHea_a, pumHotWat10.port_b); connect(souAir10.ports[1], beaCooHea10.air_a); connect(pumChiWat10.port_a, sou_1.ports[2]); connect(pumHotWat10.port_a, sou_2.ports[2]); connect(beaCooHea10.air_b, sin_3.ports[2]); connect(beaCooHea10.watCoo_b, sin_1.ports[2]); connect(beaCooHea10.watHea_b, sin_2.ports[2]); connect(step.y, pumChiWat.m_flow_in); connect(step1.y, pumHotWat.m_flow_in); connect(step3.y, pumChiWat10.m_flow_in); connect(step2.y, pumHotWat10.m_flow_in); connect(step4.y, prescribedTemperature.T); connect(prescribedTemperature.port, beaCooHea10.heaPor); connect(beaCooHea.heaPor, prescribedTemperature.port); end NumberOfBeams;

Annex60.Fluid.HeatExchangers.ActiveBeams.Validation.NumberOfBeamsDynamics Annex60.Fluid.HeatExchangers.ActiveBeams.Validation.NumberOfBeamsDynamics

Validation model for the dynamic response for one and multiple beams

Annex60.Fluid.HeatExchangers.ActiveBeams.Validation.NumberOfBeamsDynamics

Information

This model validates whether the transient response is indeed independent of the number of beams. The model is similar to Annex60.Fluid.HeatExchangers.ActiveBeams.Validation.NumberOfBeams, except that it is configured with a dynamic balance and non-default initial conditions.

Extends from NumberOfBeams.

Parameters

TypeNameDefaultDescription
IntegernBeams2Number of beams

Modelica definition

model NumberOfBeamsDynamics "Validation model for the dynamic response for one and multiple beams" extends NumberOfBeams( nBeams = 2, beaCooHea( energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, show_T=true, tau=120, TWatCoo_start=278.15, TWatHea_start=303.15), beaCooHea10( energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, show_T=true, tau=120, TWatCoo_start=278.15, TWatHea_start=303.15), step(startTime=200), step1(startTime=300), step3(startTime=200), step2(startTime=300)); end NumberOfBeamsDynamics;

http://iea-annex60.org