Collection of models that illustrate model use and test models
Information
This package contains examples for the use of models that can be found in
Buildings.ThermalZones.Detailed.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
Package Content
Name |
Description |
ElectroChromicWindow
|
Model that illustrates the use of electrochromic windows |
MixedAirCO2
|
Mixed air room model with CO2 concentration simulated |
MixedAirFreeResponse
|
Free response of room model |
Controls
|
Package with control models |
FFD
|
Package that tests the models for coupled simulation between Modelica and Fast Fluid Dynamics |
Model that illustrates the use of electrochromic windows
Information
This model illustrates the use of an electrochromic window.
It uses a model of the test cell 71T, room B at LBNL,
and controls the window state based on room air temperature and solar irradiation.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
replaceable package MediumA | Buildings.Media.Air (T_defau... | Medium model |
Area | AFlo | 13.94 | Floor area [m2] |
Integer | nConExtWin | 1 | Number of constructions with a window |
Integer | nConExt | 0 | Number of constructions without a window |
Integer | nConBou | 5 | Number of surface that are connected to constructions that are modeled inside the room |
Integer | nSurBou | 0 | Number of surface that are connected to the room air volume |
Integer | nConPar | 0 | Number of surface that are partitions |
Generic | matExtWal | | 71T: South Wall |
Generic | matCeil | | 71T: Ceiling |
Generic | matFlo | | 71T: Floor |
Generic | matEWWal | | 71T: East West Wall |
Generic | matNWal | | 71T: North Wall |
DoubleElectrochromicAir13Clear | glaSys | | Data record for the glazing system |
Connectors
Type | Name | Description |
replaceable package MediumA | Medium model |
Bus | weaBus | |
Modelica definition
model ElectroChromicWindow
extends Modelica.Icons.Example;
replaceable package MediumA =
Buildings.Media.Air (T_default=T_start) ;
constant Modelica.SIunits.Temperature T_start=273.15 + 20 ;
parameter Modelica.SIunits.Area AFlo=13.94 ;
parameter Integer nConExtWin=1 ;
parameter Integer nConExt=0 ;
parameter Integer nConBou=5 ;
parameter Integer nSurBou=0 ;
parameter Integer nConPar=0 ;
MixedAir roo(
redeclare package Medium =
MediumA,
nConExt=nConExt,
nConExtWin=nConExtWin,
nConPar=nConPar,
nConBou=nConBou,
nSurBou=nSurBou,
linearizeRadiation=false,
T_start=T_start,
datConExtWin(
layers={matExtWal},
each A=10.22,
glaSys={glaSys},
each hWin=3.13,
each wWin=2.782751,
each fFra=0.000001,
each til=Buildings.Types.Tilt.Wall,
azi={Buildings.Types.Azimuth.S}),
datConBou(
layers={matFlo,matCeil,matEWWal,matNWal,matEWWal},
A={13.94,13.94,15.33,10.22,15.33},
til={Buildings.Types.Tilt.Floor,Buildings.Types.Tilt.Ceiling,Buildings.Types.Tilt.Wall,
Buildings.Types.Tilt.Wall,Buildings.Types.Tilt.Wall}),
hRoo=3.37,
intConMod=Buildings.HeatTransfer.Types.InteriorConvection.Temperature,
extConMod=Buildings.HeatTransfer.Types.ExteriorConvection.TemperatureWind,
each conBou(opa(T(
each start=T_start))),
nPorts=2,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
lat=0.65484753534827,
final AFlo=AFlo) ;
BoundaryConditions.WeatherData.ReaderTMY3 weaDat1(
relHum=0,
TDewPoi(displayUnit="K"),
filNam="modelica://Buildings/Resources/weatherdata/USA_CA_San.Francisco.Intl.AP.724940_TMY3.mos",
pAtmSou=Buildings.BoundaryConditions.Types.DataSource.File,
calTSky=Buildings.BoundaryConditions.Types.SkyTemperatureCalculation.HorizontalRadiation);
Modelica.Blocks.Sources.Constant uSha(k=0) ;
Modelica.Blocks.Routing.Replicator replicator(nout=
max(1, nConExtWin));
parameter Buildings.HeatTransfer.Data.OpaqueConstructions.Generic matExtWal(
nLay=3,
absIR_a=0.9,
absIR_b=0.9,
absSol_a=0.6,
absSol_b=0.6,
material={
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.000701,
k=45.345,
c=502.416,
d=7833.028),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.0127,
k=0.12,
c=1210,
d=540),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.133,
k=0.047,
c=1006,
d=93.84)}) ;
parameter Buildings.HeatTransfer.Data.OpaqueConstructions.Generic matCeil(
nLay=3,
absIR_a=0.9,
absIR_b=0.9,
absSol_a=0.6,
absSol_b=0.6,
material={
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.009525,
k=0.12,
c=1210,
d=540),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.133,
k=0.047,
c=1006,
d=93.84),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.015875,
k=0.17,
c=1090,
d=800)}) ;
parameter Buildings.HeatTransfer.Data.OpaqueConstructions.Generic matFlo(
final nLay=4,
absIR_a=0.9,
absIR_b=0.9,
absSol_a=0.6,
absSol_b=0.6,
material={
Buildings.HeatTransfer.Data.Solids.Generic(
x=5.28,
k=1,
c=0,
d=0),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.01905,
k=0.15,
c=1630,
d=608),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.01905,
k=0.12,
c=1210,
d=540),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.22,
k=1,
c=0,
d=0)}) ;
parameter Buildings.HeatTransfer.Data.OpaqueConstructions.Generic matEWWal(
final nLay=2,
absIR_a=0.9,
absIR_b=0.9,
absSol_a=0.6,
absSol_b=0.6,
material={
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.133,
k=0.047,
c=1006,
d=93.84),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.015875,
k=0.17,
c=1090,
d=800)}) ;
parameter Buildings.HeatTransfer.Data.OpaqueConstructions.Generic matNWal(
final nLay=4,
absIR_a=0.9,
absIR_b=0.9,
absSol_a=0.6,
absSol_b=0.6,
material={
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.015875,
k=0.17,
c=1090,
d=800),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.009525,
k=0.12,
c=1210,
d=540),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.133,
k=0.047,
c=1006,
d=93.84),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.015875,
k=0.17,
c=1090,
d=800)}) ;
parameter HeatTransfer.Data.GlazingSystems.DoubleElectrochromicAir13Clear
glaSys(
UFra=2,
haveInteriorShade=false,
haveExteriorShade=false) ;
BoundaryConditions.WeatherData.Bus weaBus;
Controls.ElectrochromicWindow conWin ;
Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor TRooAir ;
Fluid.Sources.MassFlowSource_T bou(
redeclare package Medium =
MediumA,
m_flow=-47*6/3600*1.2,
nPorts=1,
T=293.15) ;
Fluid.Sources.Outside freshAir(
redeclare package Medium =
MediumA, nPorts=1) ;
Fluid.FixedResistances.PressureDrop duc(
redeclare package Medium =
MediumA,
allowFlowReversal=false,
linearized=true,
from_dp=true,
dp_nominal=100,
m_flow_nominal=47*6/3600*1.2) ;
Modelica.Blocks.Math.MatrixGain gai(K=120/AFlo*[0.4; 0.4; 0.2]) ;
Modelica.Blocks.Sources.Pulse nPer(
period(displayUnit="d") = 86400,
startTime(displayUnit="h") = 25200,
amplitude=2) ;
equation
connect(uSha.y, replicator.u);
connect(roo.uSha, replicator.y);
connect(weaBus, roo.weaBus);
connect(weaBus, weaDat1.weaBus);
connect(roo.heaPorAir, TRooAir.port);
connect(TRooAir.T, conWin.T);
connect(conWin.H, weaBus.HGloHor);
connect(conWin.y, roo.uWin[1]);
connect(freshAir.weaBus, weaBus);
connect(freshAir.ports[1], duc.port_a);
connect(bou.ports[1], roo.ports[1]);
connect(duc.port_b, roo.ports[2]);
connect(gai.u[1], nPer.y);
connect(gai.y, roo.qGai_flow);
end ElectroChromicWindow;
Mixed air room model with CO2 concentration simulated
Information
Example that demonstrates how to add CO2 emission that scales with
the number of person, and then add a feedback control that increases
the outside air mass flow rate.
The gain gaiCO2
adds a CO2 mass flow rate of 8.18E-6 kg/s
per person to the room. It is scaled with the number of person, as obtained
from the block nPer
. In this example, the number of person are
zero except for 2 hours, starting at 11 AM. During this time, 5 people
are in the room.
The sensor senCO2
measures the CO2 PPM in the room.
This is used by the controller conPI
to adjust the
outside air flow rate.
Two gains are used to normalize the control input. This is
simply done to make it easier to configure the gains of the controller.
The block addFlo
increases
the outdoor air flow rate above the base flow rate,
which is set to mOut_flow
.
Plotting the control error shows that the set point is being tracked after
a brief overshoot during the initial transient.
Extends from Buildings.ThermalZones.Detailed.Examples.ElectroChromicWindow (Model that illustrates the use of electrochromic windows).
Parameters
Type | Name | Default | Description |
replaceable package MediumA | Buildings.Media.Air (extraPr... | Medium model |
Area | AFlo | 13.94 | Floor area [m2] |
Integer | nConExtWin | 1 | Number of constructions with a window |
Integer | nConExt | 0 | Number of constructions without a window |
Integer | nConBou | 5 | Number of surface that are connected to constructions that are modeled inside the room |
Integer | nSurBou | 0 | Number of surface that are connected to the room air volume |
Integer | nConPar | 0 | Number of surface that are partitions |
Generic | matExtWal | | 71T: South Wall |
Generic | matCeil | | 71T: Ceiling |
Generic | matFlo | | 71T: Floor |
Generic | matEWWal | | 71T: East West Wall |
Generic | matNWal | | 71T: North Wall |
DoubleElectrochromicAir13Clear | glaSys | | Data record for the glazing system |
MassFlowRate | mOut_flow | 47*2/3600*1.2 | Typical outside air mass flow rate, unless increased by controller [kg/s] |
Connectors
Type | Name | Description |
replaceable package MediumA | Medium model |
Bus | weaBus | |
Modelica definition
model MixedAirCO2
extends Buildings.ThermalZones.Detailed.Examples.ElectroChromicWindow(
bou(use_m_flow_in=true),
redeclare package MediumA =
Buildings.Media.Air (extraPropertiesNames={"CO2"}),
roo(use_C_flow=true, nPorts=3),
nPer(
width=100*2/24,
amplitude=5,
startTime=43200));
parameter Modelica.SIunits.MassFlowRate mOut_flow=47*2/3600*1.2 ;
Modelica.Blocks.Math.Gain gaiCO2(k=8.18E-6) ;
Buildings.Fluid.Sensors.PPM senCO2(
redeclare package Medium =
MediumA, MM=
Modelica.Media.IdealGases.Common.SingleGasesData.CO2.MM) ;
Modelica.Blocks.Sources.Constant CO2Set(k=700) ;
Modelica.Blocks.Math.Gain norCO2Set(k=1/700) ;
Modelica.Blocks.Math.Gain norCO2Mea(k=1/700) ;
Buildings.Controls.Continuous.LimPID conPI(
k=5,
Ti=120,
yMax=10,
yMin=0,
reverseAction=true,
controllerType=Modelica.Blocks.Types.SimpleController.PI) ;
Buildings.Controls.OBC.CDL.Continuous.AddParameter addFlo(p=-mOut_flow, k=-
mOut_flow) ;
equation
connect(roo.C_flow[1], gaiCO2.y);
connect(nPer.y, gaiCO2.u);
connect(senCO2.port, roo.ports[3]);
connect(CO2Set.y, norCO2Set.u);
connect(senCO2.ppm, norCO2Mea.u);
connect(norCO2Set.y, conPI.u_s);
connect(norCO2Mea.y, conPI.u_m);
connect(conPI.y, addFlo.u);
connect(addFlo.y, bou.m_flow_in);
end MixedAirCO2;
Free response of room model
Information
This model illustrates the use of the room model
Buildings.ThermalZones.Detailed.MixedAir.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
Insulation100Concrete200 | matLayExt | | Construction material for exterior walls |
Brick120 | matLayPar | | Construction material for partition walls |
Generic | matLayRoo | | Construction material for roof |
Generic | matLayFlo | | Construction material for floor |
DoubleClearAir13Clear | glaSys | | Data record for the glazing system |
Integer | nConExtWin | 1 | Number of constructions with a window |
Integer | nConBou | 1 | Number of surface that are connected to constructions that are modeled inside the room |
Integer | nSurBou | 1 | Number of surface that are connected to the room air volume |
Modelica definition
model MixedAirFreeResponse
extends Modelica.Icons.Example;
package MediumA =
Buildings.Media.Air ;
parameter Buildings.HeatTransfer.Data.OpaqueConstructions.Insulation100Concrete200
matLayExt ;
parameter Buildings.HeatTransfer.Data.OpaqueConstructions.Brick120 matLayPar ;
parameter Buildings.HeatTransfer.Data.OpaqueConstructions.Generic matLayRoo(
material={
HeatTransfer.Data.Solids.InsulationBoard(x=0.2),
HeatTransfer.Data.Solids.Concrete(x=0.2)},
final nLay=2) ;
parameter Buildings.HeatTransfer.Data.OpaqueConstructions.Generic matLayFlo(
material={
HeatTransfer.Data.Solids.Concrete(x=0.2),
HeatTransfer.Data.Solids.InsulationBoard(x=0.15),
HeatTransfer.Data.Solids.Concrete(x=0.05)},
final nLay=3) ;
parameter Buildings.HeatTransfer.Data.GlazingSystems.DoubleClearAir13Clear
glaSys(
UFra=2,
shade=
Buildings.HeatTransfer.Data.Shades.Gray(),
haveInteriorShade=false,
haveExteriorShade=false) ;
parameter Integer nConExtWin=1 ;
parameter Integer nConBou=1 ;
parameter Integer nSurBou=1 ;
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},
each A=4*3,
glaSys={glaSys},
each hWin=2,
each wWin=4,
ove(
wR={0},
wL={0},
gap={0.1},
dep={1}),
each fFra=0.1,
each 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,
each stateAtSurface_a=false),
nSurBou=1,
surBou(
each A=6*3,
each absIR=0.9,
each absSol=0.9,
each til=Buildings.Types.Tilt.Wall),
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
T_start=273.15 + 22,
lat=0.73268921998722) ;
Modelica.Blocks.Sources.Constant qConGai_flow(k=0) ;
Modelica.Blocks.Sources.Constant qRadGai_flow(k=0) ;
Modelica.Blocks.Routing.Multiplex3 multiplex3_1;
Modelica.Blocks.Sources.Constant qLatGai_flow(k=0) ;
Buildings.BoundaryConditions.WeatherData.ReaderTMY3 weaDat(filNam="modelica://Buildings/Resources/weatherdata/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.mos",
computeWetBulbTemperature=false);
Modelica.Blocks.Sources.Constant uSha(k=0) ;
Modelica.Blocks.Routing.Replicator replicator(nout=
max(1, nConExtWin));
Buildings.HeatTransfer.Sources.FixedTemperature TSoi[nConBou](
each T=283.15) ;
Buildings.HeatTransfer.Sources.FixedTemperature TBou[nSurBou](
each T=288.15) ;
HeatTransfer.Conduction.MultiLayer conOut[nSurBou](
each A=6*4,
each layers=matLayPar,
each steadyStateInitial=true,
each stateAtSurface_a=true,
each stateAtSurface_b=false) ;
equation
connect(qRadGai_flow.y, multiplex3_1.u1[1]);
connect(qConGai_flow.y, multiplex3_1.u2[1]);
connect(qLatGai_flow.y, multiplex3_1.u3[1]);
connect(multiplex3_1.y, roo.qGai_flow);
connect(weaDat.weaBus, roo.weaBus);
connect(uSha.y, replicator.u);
connect(TBou.port, conOut.port_b);
connect(roo.surf_surBou, conOut.port_a);
connect(roo.uSha, replicator.y);
connect(TSoi.port, roo.surf_conBou);
end MixedAirFreeResponse;