IEA EBC Annex 60 EBC logo

Annex60.Airflow.Multizone.Validation

Collection of validation models

Information

This package contains validation models for the classes in Buildings.Airflow.Multizone.

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.Airflow.Multizone.Validation.ThreeRoomsContam ThreeRoomsContam Model with three rooms for the validation of the multizone air exchange models

Annex60.Airflow.Multizone.Validation.ThreeRoomsContam Annex60.Airflow.Multizone.Validation.ThreeRoomsContam

Model with three rooms for the validation of the multizone air exchange models

Annex60.Airflow.Multizone.Validation.ThreeRoomsContam

Information

This is a model of three rooms that exchange air among each based on density difference between the air in the rooms and the outside. The model implements the configuration shown below.

Configuration of the three rooms.

This model has been used for a comparative model validation between CONTAM and the Buildings library. See Wetter (2006) for details of the validation.

References

Michael Wetter. Multizone Airflow Model in Modelica. Proc. of the 5th International Modelica Conference, p. 431-440. Vienna, Austria, September 2006.

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

Modelica definition

model ThreeRoomsContam "Model with three rooms for the validation of the multizone air exchange models" extends Modelica.Icons.Example; package Medium = Annex60.Media.Air(extraPropertiesNames={"CO2"}); Annex60.Fluid.MixingVolumes.MixingVolume volEas( redeclare package Medium = Medium, T_start=273.15 + 20, V=2.5*5*5*1, nPorts=5, m_flow_nominal=0.001, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial); Annex60.Airflow.Multizone.Orifice oriOutBot( redeclare package Medium = Medium, A=0.01, m=0.5); Annex60.Airflow.Multizone.MediumColumn colOutTop( redeclare package Medium = Medium, h=1.5, densitySelection=Annex60.Airflow.Multizone.Types.densitySelection.fromBottom); Annex60.Airflow.Multizone.Orifice oriOutTop( redeclare package Medium = Medium, A=0.01, m=0.5); Annex60.Airflow.Multizone.MediumColumn colEasInTop( redeclare package Medium = Medium, h=1.5, densitySelection=Annex60.Airflow.Multizone.Types.densitySelection.fromBottom); Annex60.Fluid.Sources.FixedBoundary volOut( redeclare package Medium = Medium, nPorts=2, p(displayUnit="Pa") = 101325, T=283.15); Annex60.Airflow.Multizone.MediumColumn colEasInBot( redeclare package Medium = Medium, h=1.5, densitySelection=Annex60.Airflow.Multizone.Types.densitySelection.fromTop); Annex60.Airflow.Multizone.MediumColumn colOutBot( redeclare package Medium = Medium, h=1.5, densitySelection=Annex60.Airflow.Multizone.Types.densitySelection.fromTop); Annex60.Airflow.Multizone.MediumColumn colWesBot( redeclare package Medium = Medium, h=1.5, densitySelection=Annex60.Airflow.Multizone.Types.densitySelection.fromBottom); Annex60.Airflow.Multizone.Orifice oriWesTop( redeclare package Medium = Medium, m=0.5, A=0.01); Annex60.Airflow.Multizone.MediumColumn colWesTop( redeclare package Medium = Medium, h=1.5, densitySelection=Annex60.Airflow.Multizone.Types.densitySelection.fromTop); Annex60.Airflow.Multizone.DoorDiscretizedOperable dooOpeClo( redeclare package Medium = Medium, LClo=20*1E-4, wOpe=1, hOpe=2.2, CDOpe=0.78, CDClo=0.78, nCom=10, hA=3/2, hB=3/2, dp_turbulent(displayUnit="Pa") = 0.01) "Discretized door"; Annex60.Fluid.MixingVolumes.MixingVolume volWes( redeclare package Medium = Medium, T_start=273.15 + 25, nPorts=3, V=2.5*5*5, m_flow_nominal=0.001, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial); Modelica.Blocks.Sources.Constant open(k=1); Annex60.Airflow.Multizone.MediumColumn col1EasBot( redeclare package Medium = Medium, h=1.5, densitySelection=Annex60.Airflow.Multizone.Types.densitySelection.fromBottom); Annex60.Airflow.Multizone.Orifice oriEasTop( redeclare package Medium = Medium, m=0.5, A=0.01); Annex60.Airflow.Multizone.MediumColumn colEasTop( redeclare package Medium = Medium, h=1.5, densitySelection=Annex60.Airflow.Multizone.Types.densitySelection.fromTop); Annex60.Fluid.MixingVolumes.MixingVolume volTop( redeclare package Medium = Medium, T_start=273.15 + 20, V=2.5*5*10*1, nPorts=2, m_flow_nominal=0.001, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial); Modelica.Thermal.HeatTransfer.Sources.FixedTemperature TTop(T=293.15) "Fixed temperature"; Modelica.Thermal.HeatTransfer.Sources.FixedTemperature TWes(T=298.15) "Fixed temperature"; Modelica.Thermal.HeatTransfer.Sources.FixedTemperature TEas(T=293.15) "Fixed temperature"; Modelica.Thermal.HeatTransfer.Components.ThermalConductor conTop(G=1E9) "Thermal conductor"; Modelica.Thermal.HeatTransfer.Components.ThermalConductor conWes(G=1E9) "Thermal conductor"; Modelica.Thermal.HeatTransfer.Components.ThermalConductor conEas(G=1E9) "Thermal conductor"; equation connect(open.y, dooOpeClo.y); connect(volWes.ports[1], dooOpeClo.port_b2); connect(volWes.ports[2], dooOpeClo.port_a1); connect(volWes.ports[3], colWesBot.port_b); connect(colWesBot.port_a, oriWesTop.port_b); connect(oriWesTop.port_a, colWesTop.port_b); connect(colWesTop.port_a, volTop.ports[1]); connect(volTop.ports[2], colEasTop.port_a); connect(colEasTop.port_b, oriEasTop.port_b); connect(oriEasTop.port_a, col1EasBot.port_a); connect(dooOpeClo.port_b1, volEas.ports[1]); connect(volEas.ports[2], dooOpeClo.port_a2); connect(colEasInBot.port_a, volEas.ports[3]); connect(volEas.ports[4], colEasInTop.port_b); connect(volEas.ports[5], col1EasBot.port_b); connect(colEasInTop.port_a, oriOutTop.port_a); connect(oriOutTop.port_b, colOutTop.port_a); connect(colOutTop.port_b, volOut.ports[1]); connect(colOutBot.port_a, volOut.ports[2]); connect(colOutBot.port_b, oriOutBot.port_b); connect(oriOutBot.port_a, colEasInBot.port_b); connect(TTop.port, conTop.port_a); connect(conTop.port_b, volTop.heatPort); connect(TWes.port, conWes.port_a); connect(conWes.port_b, volWes.heatPort); connect(TEas.port, conEas.port_a); connect(conEas.port_b, volEas.heatPort); end ThreeRoomsContam;

http://iea-annex60.org