This part of the system model implements the room with a heat gain. The room is simplified as a volume of air, a prescribed heat source for the internal convective heat gain, and a heat conductor for steady-state heat conduction to the outside. To increase the heat capacity of the room, such as due to heat stored in furniture and in building constructions, the heat capacity of the room air was increased by a factor of three. The convective heat transfer coefficient is lumped into the heat conductor model.
This section describes step by step how we implemented the model.
First, to define the medium properties, we added the declaration
replaceable package MediumA = Buildings.Media.Air;
This will allow the propagation of the medium model to all models that contain air. In this example, there is only one model with air.
We called the medium MediumA
to distinguish it from
MediumW
that we will use in later versions of the model for components that
have water as a medium.
We also defined the system-level parameters
parameter Modelica.Units.SI.Volume V=6*10*3 "Room volume"; parameter Modelica.Units.SI.MassFlowRate mA_flow_nominal = V*1.2*6/3600 "Nominal mass flow rate"; parameter Modelica.Units.SI.HeatFlowRate QRooInt_flow = 4000 "Internal heat gains of the room";
to declare that the room volume is 180 m3, that the room has a nominal mass flow rate of 6 air changes per hour and that the internal heat gains of the room are 4000 Watts. These parameters have been declared at the top-level of the model as they will be used in several other models. Declaring them at the top-level allows to propagate them to other models, and to easily change them at one location should this be required when revising the model.
To model the room air, approximated as a completely mixed volume of air,
an instance of
Buildings.Fluid.MixingVolumes.MixingVolume
has been used, as this model can be used with dry air or moist air.
The medium model has been set to MediumA
, and the nominal mass
flow rate is set to mA_flow_nominal
.
The nominal mass flow rate is used for numerical reasons and should be set
to the approximate order of magnitude. It only has an effect if the mass flow
rate is near zero and what "near zero" means depends on the magnitude of
m_flow_nominal
, as it is used for the default value of the parameter
m_flow_small
on the Assumptions
tag of the model.
See also
Buildings.Fluid.UsersGuide
for an explanation of the purpose of m_flow_small
.
Since we need to increase the heat capacity of the room air to approximate
energy storage in furniture and building constructions, we connected the instance heaCap
of
Modelica.Thermal.HeatTransfer.Components.HeatCapacitor
to the heat port of the room air.
The model heaCap
models energy storage. We set its capacity to
C=2*V*1.2*1006 J/K. This will increase the total heat capacity
of the room air by a factor of three.
We used the instance theCon
of
Modelica.Thermal.HeatTransfer.Components.ThermalConductor
to model the thermal conductance to the ambient.
Since our room should have a heat loss of 20 kW at a temperature difference
of 30 Kelvin, we set the conductance to
G=20000 ⁄ 30 W/K.
We used the instance preHea
of
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow
to model a prescribed heat gain,
such as due to internal heat source.
This model outputs the heat gain which is equal to the value of its
input signal, which is obtained from a time table.
To define a time-dependent heat gain, we instantiated the block
Buildings.Controls.OBC.CDL.Reals.Sources.TimeTable
and set its name to timTab
.
We set the table parameters to
Buildings.Controls.OBC.CDL.Reals.Sources.TimeTable timTab( extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.Periodic, smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, table=[-6, 0; 8, QRooInt_flow; 18, 0], timeScale=3600) "Time table for internal heat gain";
Note that we set the output to be a periodic signal by configuring
extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.Periodic.
The first time stamp is -6 hours in order to create
a table that has a periodicity of one day.
We also set the interpolation of the data to using
piece-wise constant segments.
See the documentation of
Buildings.Controls.OBC.CDL.Reals.Sources.TimeTable for the various options
of this time table.
Next, we connected its output to the input of the instance preHea
.
This completes the initial version of the model. When simulating the model for 2 days, or 172800 seconds, the response shown below should be seen.
To verify the correctness of the model, we can compare the simulated results to the following analytical solutions:
When the internal heat gain is zero, the room temperature should be equal to the outside temperature.
At steady-state when the internal heat gain is 4000 Watts, the temperature difference to the outside should be Δ T = Q̇ ⁄ UA = 4000/(20000/30) = 6 Kelvin, which corresponds to a room temperature of -4°C.
Both analytical values agree with the simulation results shown in the above figure.
An alternative validation can be done by fixing the temperature of the volume to 20°C and plotting the heat flow rate that is needed to maintain this temperature. This can be implemented by connecting an instance of Modelica.Thermal.HeatTransfer.Sources.FixedTemperature as shown below.
When plotting the heat flow rate fixTemp.port.Q_flow
, one can see
that the required heat flow rate to keep the temperature at
20°C is
20 kW during night, and
16 kW during day when the heat gain is active.
For a more realistic model of a room, the model Buildings.ThermalZones.Detailed.MixedAir could have been used. For transient heat conduction, models from the package Buildings.HeatTransfer.Conduction could have been used.
Name | Description |
---|---|
MediumA |
Modelica.Fluid.System
to address issue
#311.