The model Buildings.ThermalZones.Detailed.MixedAir is a model of a room with completely mixed air. The room can have any number of constructions and surfaces that participate in the heat exchange through convection, conduction, infrared radiation and solar radiation.
A description of the model assumptions and the implemention and validation of this room model can be found in Wetter et al. (2011). Note that this paper describes a previous version of the room model. The equations have not changed. However, what is shown in Figure 2 in the paper has in this version of the model been integrated directly into what is shown in Figure 1.
The room models the following physical processes:
The next paragraphs describe how to instantiate a room model. To instantiate a room model,
Entering parameters may be easiest in a textual editor.
In the here presented example, we assume we made several instances of data records for the construction material by dragging them from the package Buildings.HeatTransfer.Data to create the following list of declarations:
Buildings.HeatTransfer.Data.OpaqueConstructions.Insulation100Concrete200 matLayExt "Construction material for exterior walls" annotation (Placement(transformation(extent={{-60,140},{-40,160}}))); Buildings.HeatTransfer.Data.OpaqueConstructions.Brick120 matLayPar "Construction material for partition walls" annotation (Placement(transformation(extent={{-20,140},{0,160}}))); Buildings.HeatTransfer.Data.OpaqueConstructions.Generic matLayRoo( material={ HeatTransfer.Data.Solids.InsulationBoard(x=0.2), HeatTransfer.Data.Solids.Concrete(x=0.2)}, final nLay=2) "Construction material for roof" annotation (Placement(transformation(extent={{20,140},{40,160}}))); Buildings.HeatTransfer.Data.OpaqueConstructions.Generic matLayFlo( material={ HeatTransfer.Data.Solids.Concrete(x=0.2), HeatTransfer.Data.Solids.InsulationBoard(x=0.1), HeatTransfer.Data.Solids.Concrete(x=0.05)}, final nLay=3) "Construction material for floor" annotation (Placement(transformation(extent={{60,140},{80,160}}))); Buildings.HeatTransfer.Data.GlazingSystems.DoubleClearAir13Clear glaSys( UFra=2, shade=Buildings.HeatTransfer.Data.Shades.Gray(), haveExteriorShade=false, haveInteriorShade=true) "Data record for the glazing system" annotation (Placement(transformation(extent={{100,140},{120,160}})));
Note that construction layers are assembled from the outside to the room-side. Thus, the construction
matLayRoo
has an exterior insulation. This constructions can then be used in the room model.
Before we explain how to declare and parametrize a room model, we explain the different models that can be used to compute heat transfer through the room enclosing surfaces and constructions. The room model Buildings.ThermalZones.Detailed.MixedAir contains the constructions shown in the table below. The first row of the table lists the name of the data record that is used by the user to assign the model parameters. The second row lists the name of the instance of the model that simulates the equations. The third column provides a reference to the class definition that implements the equations. The forth column describes the main applicability of the model.
Record name | Model instance name | Class name | Description of the model |
---|---|---|---|
datConExt | modConExt | Buildings.ThermalZones.Detailed.Constructions.Construction | Exterior constructions that have no window. |
datConExtWin | modConExtWin | Buildings.ThermalZones.Detailed.Constructions.ConstructionWithWindow |
Exterior constructions that have a window. Each construction of this type must have one window.
Within the same room, all windows can either have an interior shade, an exterior shade or no shade. Each window has its own control signal for the shade. This signal is exposed by the port uSha , which
has the same dimension as the number of windows. The values for uSha must be between
0 and 1 . Set uSha=0 to open the shade, and uSha=1
to close the shade.Windows can also have an overhang, side fins, both (overhang and sidefins) or no external shading device. |
datConPar | modConPar | Buildings.ThermalZones.Detailed.Constructions.Construction | Interior constructions such as partitions within a room. Both surfaces of this construction are inside the room model and participate in the infrared and solar radiation balance. Since the view factor between these surfaces is zero, there is no infrared radiation from one surface to the other of the same construction. |
datConBou | modConBou | Buildings.ThermalZones.Detailed.Constructions.Construction |
Constructions that expose the other boundary conditions of the other surface to the outside of this room model.
The heat conduction through these constructions is modeled in this room model.
The surface at the port opa_b is connected to the models for convection, infrared and solar radiation exchange
with this room model and with the other surfaces of this room model.
The surface at the port opa_a is connected to the port surf_conBou of this room model. This could be used, for example,
to model a floor inside this room and connect to other side of this floor model to a model that computes heat transfer in the soil.
|
surBou | N/A | Buildings.HeatTransfer.Data.OpaqueSurfaces.Generic |
Opaque surfaces of this room model whose heat transfer through the construction is modeled outside of this room model.
This object is modeled using a data record that contains the area, solar and infrared emissivities and surface tilt.
The surface then participates in the convection and radiation heat balance of the room model. The heat flow rate and temperature
of this surface are exposed at the heat port surf_surBou .
An application of this object may be to connect the port surf_surBou of this room model with the port
surf_conBou of another room model in order to couple two room models.
Another application would be to model a radiant ceiling outside of this room model, and connect its surface to the port
surf_conBou in order for the radiant ceiling model to participate in the heat balance of this room.
|
With these constructions, we may define a room as follows:
Buildings.ThermalZones.Detailed.MixedAir roo( redeclare package Medium = MediumA, AFlo=6*4, hRoo=2.7, nConExt=2, datConExt(layers={matLayRoo, matLayExt}, A={6*4, 6*3}, til={Buildings.Types.Tilt.Ceiling, Buildings.Types.Tilt.Wall}, azi={Buildings.Types.Azimuth.S, Buildings.Types.Azimuth.W}), nConExtWin=nConExtWin, datConExtWin(layers={matLayExt}, A={4*3}, glaSys={glaSys}, hWin={2}, wWin={2}, fFra={0.1}, til={Buildings.Types.Tilt.Wall}, azi={Buildings.Types.Azimuth.S}), nConPar=1, datConPar(layers={matLayPar}, each A=10, each til=Buildings.Types.Tilt.Wall), nConBou=1, datConBou(layers={matLayFlo}, each A=6*4, each til=Buildings.Types.Tilt.Floor), nSurBou=1, surBou(each A=6*3, each absIR=0.9, each absSol=0.9, each til=Buildings.Types.Tilt.Wall), linearizeRadiation = true , energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Room model" annotation (Placement(transformation(extent={{46,20},{86,60}})));
The following paragraphs explain the different declarations.
The statement
redeclare package Medium = MediumA, AFlo=20, V=20*2.5,
declares that the medium of the room air is set to MediumA
,
that the floor area is 20 m2 and that
the room air volume is 20*2.5 m3.
The floor area is used to scale the internal heat
gains, which are declared with units of W/m2
using the input signal qGai_flow
.
The next entries specify constructions and surfaces that participate in the heat exchange.
The entry
nConExt=2,
declares that there are two exterior constructions.
The lines
datConExt(layers={matLayRoo, matLayExt}, A={6*4, 6*3}, til={Buildings.Types.Tilt.Ceiling, Buildings.Types.Tilt.Wall}, azi={Buildings.Types.Azimuth.S, Buildings.Types.Azimuth.W}),
declare that the material layers in these constructions are
set the records matLayRoo
and matLayExt
.
What follows are the declarations for the surface area,
the tilt of the surface and the azimuth of the surfaces. Thus, the
surface with construction matLayExt
is 6*3 m2 large
and it is a west-facing wall.
Next, the declaration
nConExtWin=nConExtWin, datConExtWin(layers={matLayExt}, A={4*3}, glaSys={glaSys}, hWin={2}, wWin={2}, fFra={0.1}, til={Buildings.Types.Tilt.Wall}, azi={Buildings.Types.Azimuth.S}),
declares the construction that contains a window. This construction is built
using the materials defined in the record matLayExt
. Its total area,
including the window, is 4*3 m2.
The glazing system is built using the construction defined in the record
glaSys
. The window area is hwin=2 m high
and
wwin=2 m wide.
The ratio of frame
to total glazing system area is 10%.
Optionally, each window can have an overhang, side fins or both. If the above window were to have an overhang of 2.5 m width that is centered above the window, and hence extends each side of the window by 0.25 m, and has a depth of 1 m and a gap between window and overhang of 0.1 m, then its declaration would be
ove(wL={0.25}, wR={0.25}, gap={0.1}, dep={1}),
This line can be placed below the declaration of wWin
.
This would instanciate the model
Buildings.HeatTransfer.Windows.Overhang to model the overhang. See this class for a picture of the above dimensions.
If the window were to have side fins that are 2.5 m high, measured from the bottom of the windows, and hence extends 0.5 m above the window, are 1 m depth and are placed 0.1 m to the left and right of the window, then its declaration would be
sidFin(h={0.5}, gap={0.1}, dep={1}),
This would instanciate the model Buildings.HeatTransfer.Windows.SideFins to model the side fins. See this class for a picture of the above dimensions.
The lines
til={Buildings.Types.Tilt.Wall}, azi={Buildings.Types.Azimuth.S}),
declare that the construction is a wall that is south exposed.
Note that if the room were to have two windows, and one window has side fins and the other window has an overhang, the
following declaration could be used, which sets the value of dep
to 0
for the non-present side fins or overhang, respectively:
sidFin(h = {0.5, 0}, gap = {0.1, 0.0}, dep = {1, 0}), ove(wL = {0.0, 0.25}, wR = {0.0, 0.25}, gap = {0.0, 0.1}, dep = {0, 1}),
What follows is the declaration of the partition constructions, as declared by
nConPar=1, datConPar(layers={matLayPar}, each A=10, each til=Buildings.Types.Tilt.Wall),
Thus, there is one partition construction. Its area is 10 m2 for each surface, to form a total surface area inside this thermal zone of 20 m2.
Next, the declaration
nConBou=1, datConBou(layers={matLayFlo}, each A=6*4, each til=Buildings.Types.Tilt.Floor),
declares one construction whose other surface boundary condition is exposed by this
room model (through the heat port surf_conBou
).
Note that by default, there is a temperature state at the surface of this wall.
Therefore, connecting to the heat port surf_conBou
a prescribed
temperature boundary condition such as
Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature would lead to an error
and the model won't translate.
The reason is that both, the state defines the temperature at the surface, and
Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature prescribes
the value of this temperature, leading
to an overspecification. To avoid this, add between surf_conBou
and the prescribed boundary condition a thermal conductance such as
Modelica.Thermal.HeatTransfer.Components.ThermalConductor
or a thermal convection model such as
Buildings.HeatTransfer.Convection.Exterior.
Alternatively, you could remove the state from the surface by declaring
nConBou=1, datConBou(layers={matLayFlo}, each A=6*4, each til=Buildings.Types.Tilt.Floor, each stateAtSurface_a = false),
The declaration
nSurBou=1, surBou(each A=6*3, each absIR=0.9, each absSol=0.9, each til=Buildings.Types.Tilt.Wall),
is used to instantiate a model for a surface that is in this room.
The surface has an area of 6*3 m2, absorptivity in the infrared and the solar
spectrum of 0.9 and it is a wall.
The room model will compute infrared radiative heat exchange, solar radiative heat gains
and infrared radiative heat gains of this surface. The surface temperature and
heat flow rate are exposed by this room model at the heat port
surf_surBou
.
A model builder may use this construct
to couple this room model to another room model that may model the construction.
The declaration
linearizeRadiation = true,
causes the equations for radiative heat transfer to be linearized. This can reduce computing time at the expense of accuracy.
The declaration
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
is used to initialize the air volume inside the thermal zone.
The model has a parameter use_C_flow
. If set to true
,
then an input connector C_flow
is enabled, which allows adding trace substances
to the room air. Note that this requires a medium model that has trace substances enabled.
See the example
Buildings.ThermalZones.Detailed.Examples.MixedAirCO2.
To connect two rooms, the model
Buildings.HeatTransfer.Conduction.MultiLayer can be connected to
the ports surf_surBou
of the two rooms.
However, make sure to set stateAtSurface_a = true
and stateAtSurface_b = true
in the instance of the heat conduction
model, as this allows to avoid
a nonlinear system of equation to compute the radiative heat transfer,
thereby leading to faster simulation.
See
Buildings.ThermalZones.Detailed.Validation.BESTEST.Cases9xx.Case960
for an example.
By setting linearizeRadiation = false
, nonlinear equations will
be used to compute the infrared radiation exchange among surfaces. This
can lead to slower computation.
Michael Wetter, Wangda Zuo and Thierry Stephane Nouidui.
Modeling of Heat Transfer in Rooms in the Modelica "Buildings" Library.
Proc. of the 12th IBPSA Conference, p. 1096-1103. Sydney, Australia, November 2011.