Unit tests for models in FLEXLAB.Rooms
Information
This package contains examples demonstrating the use of models
available in the FLEXLAB package.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
Package Content
Name |
Description |
X3AWithRadiantFloor
|
Example model showing a use of X3A |
X3BWithRadiantFloor
|
Example model showing a use of X3B |
X3WithRadiantFloor
|
Example model of test cells X3A and X3B connected to form test bed X3 |
Example model showing a use of X3A
Information
This model demonstrates one potential simulation using the models available in
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.X3A. This example simulates test cell
X3A when it is conditioned with a radiant slab. This example model includes
heat transfer between the test cell, the outdoor environment, the radiant slab
conditioning the test cell, the connected electrical room and closet, and the
neighboring test cells.
The connections between the test cell and the external models are described in the following table.
Only models not included in the X3A package are included. For documentation describing the connections
between X3A models see
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.X3A.
External model name |
External model significance |
External model port |
X3A port |
weaDat |
Outdoor weather |
weaDat.weaBus |
X3A.weaBus |
TNei |
Neighboring test cells (X2B and X3B) |
X2B: X3A.preTem2.port[1]
X3B: X3A.preTem2.port[2] |
X2B: X3A.surf_conBou[1]
X3B: X3A.surf_conBou[2] |
sla4A1 |
Radiant slab serving the north portion of X3A |
sla4A1.surf_a |
X3A.surf_surBou[1] |
sla4A2 |
Radiant slab serving the north-central portion of X3A |
sla4A2.surf_a |
X3A.surf_surBou[2] |
sla4A3 |
Radiant slab serving the south-central portion of X3A |
sla4A3.surf_a |
X3A.surf_surBou[3] |
sla4A4 |
Radiant slab serving the south portion of X3A |
sla4A4.surf_a |
X3A.surf_surBou[4] |
shaPos |
Table describing the position of the window shade |
shaPos.y[1] |
X3A.uSha |
intGai |
Table specifying the internal gains in the space |
intGai[1,2,3] |
X3A.qGai_flow[1,2,3] |
airIn |
Prescribed airflow describing service air from the AHU |
airIn.ports[1] |
X3A.ports[1] |
airOut |
Outlet for ventilation air flow |
airOut.ports[1] |
X3A.ports[1] |
The connections between the closet and external models are described in the following table.
Only connections to models not included in the X3A package are described.
External model name |
External model significance |
External model port |
clo port |
intGaiClo |
Table specifying the internal gains in the closet |
intGaiClo[1,2,3] |
clo.qGai_flow[1,2,3] |
airInClo |
Prescribed airflow describing service air from the AHU |
airInClo.ports[1] |
clo.ports[1] |
airOutClo |
Outlet for ventilation air flow |
airOutClo.ports[1] |
clo.ports[1] |
preT |
Prescribed temperature describing the ground temperature |
preT.port |
clo.surf_conBou[3] |
The connections between the electrical room and external models are described in the following
table. Only connections to models not included in the X3A package are described.
External model name |
External model significance |
External model port |
ele port |
intGaiEle |
Table specifying the internal gains in the electrical room |
intGaiEle[1,2,3] |
ele.qGai_flow[1,2,3] |
airInEle |
Prescribed airflow describing service air from the AHU |
airInEle.ports[1] |
ele.ports[1] |
airOutEle |
Outlet for ventilation air flow |
airOutEle.ports[1] |
ele.ports[1] |
preT |
Prescribed temperature describing the ground temperature |
preT.port |
ele.surf_conBou[1] |
The radiant slab is modeled using an instance of
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab. All of the inputs
used to define the radiant slab are taken from the architectural drawings. The following
table describes the connections between models used in the radiant slab. The connection
to X3A is not included because it was previously described.
External model name |
External model significance |
External model port |
Radiant slab port |
watIn |
Inlet for service fluid flow. Currently connects to a prescribed flow described
in a table |
watIn.ports[1] |
sla.port_a |
preT |
Ground temperature beneath the radiant slab construction. Currently connects to
a prescribed temperature defined in a table |
preT.port |
sla.surf_b |
watOut |
Outlet for service fluid flow |
watOut.ports[1] |
sla.port_b |
The model only simulates the space conditions, the effects of the radiant slab, and the
heat transfer between the rooms. The air handling unit, chilled water plant, shade control,
internal gains, and ground temperature are all modeled by reading data from tables.
Currently the ventilation air is read from an external data file, via the model
airCon
, while the others use tables described in the data reader model. The table
below shows the name of data input files in the model, what physical phenomena the data file
describes, the physical quantity of each data file output, and the source of the data.
Model name |
Quantity described |
Data source |
y[1] significance |
y[2] significance |
y[3] significance |
y[4] significance |
shaPos |
Position of the shade |
Table in model |
Position of the shade |
intGai |
Internal gains |
Table in model |
Radiant heat |
Convective heat |
Latent heat |
|
airCon |
Ventilation air from air handling unit |
External text file |
Mass flow rate |
|
|
Temperature |
|
watCon |
Conditioning water from central plant |
Table in model |
Mass flow rate |
Temperature |
|
TGro |
Ground temperature |
Table in model |
Temperature |
|
|
intGaiClo |
Internal gains for the closet |
Table in model |
Radiant heat |
Convective heat |
Latent heat |
intGaiEle |
Internal gains for the electrical room |
Table in model |
Radiant heat |
Convective heat |
Latent heat |
airConEle |
Ventilation air from AHU in the electrical room |
External text file |
|
|
Mass flow rate |
Temperature |
airConClo |
Ventilation air from AHU in closet |
External text file |
|
Mass flow rate |
|
Temperature |
TNei |
Temperature of the neighboring cells |
Table in model |
X2B |
X3B |
In the above table blank entries either show that there is no data to describe, or that the data
is describing a quantity for a separate model. Two examples are:
- The table for shaPos only contains data for shade position. Because it only has a y[1] value
the remaining columns in the table are left blank.
- airCon, airConClo, and airConEle all share an external data file. They all use the same
temperature data, located in y[4] of the external data file. The three room models use different
air mass flow rates. airCon uses the flow rate from y[1] in the data file, airConClo uses the
flow rate from y[2], and airConEle uses the flow rate from y[3]. Thus, the other entries
for each row in the table are left blank because the data is innapropriate for that particular
model.
The ventilation air flow rates used during occupied hours in this example were calculated using
the assumption of 4 air changes per hour (ACH). It is assumed that there is
no ventilation flow during unoccupied hours.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
Generic | slaCon | slaCon( nLay=3, mat... | Construction of the slab |
PEX_RADTEST | pipe | pipe( ... | |
Modelica definition
model X3AWithRadiantFloor
extends Modelica.Icons.Example;
package Air =
Buildings.Media.Air ;
package Water =
Buildings.Media.Water
;
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.X3A.TestCell X3A(
nPorts=2,
redeclare package Medium = Air,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial);
Modelica.Blocks.Sources.CombiTimeTable intGai(table=[0,0,0,0; 86400,0,0,0],
tableOnFile=false)
;
Modelica.Blocks.Sources.CombiTimeTable shaPos(table=[0,1; 86400,1],
tableOnFile=false) ;
Modelica.Blocks.Sources.CombiTimeTable airCon(table=[0,0.1,293.15; 86400,0.1,293.15],
tableOnFile=true,
tableName="airCon",
fileName=
Modelica.Utilities.Files.loadResource(
"modelica://Buildings/Resources/Data/ThermalZones/Detailed/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"),
columns=2:5) ;
Buildings.Fluid.Sources.MassFlowSource_T airIn(
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Air,
nPorts=1) ;
Buildings.Fluid.Sources.Boundary_pT
airOut(nPorts=1,
redeclare package Medium = Air) ;
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla4A1(
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType.Floor,
iLayPip=1,
redeclare package Medium = Water,
pipe=pipe,
layers=slaCon,
m_flow_nominal=0.504,
A=6.645*3.09,
length=32.92,
disPip=sla4A1.A/sla4A1.length,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
stateAtSurface_b=false)
;
Modelica.Blocks.Sources.CombiTimeTable watCon4A1(tableOnFile=false, table=[0,
0.504,293.15; 86400,0.504,293.15])
;
Buildings.Fluid.Sources.MassFlowSource_T watIn4A1(
nPorts=1,
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Water)
;
Buildings.Fluid.Sources.Boundary_pT watOut4A1(nPorts=1,
redeclare package
Medium = Water) ;
Buildings.HeatTransfer.Sources.PrescribedTemperature preT
;
Modelica.Blocks.Sources.CombiTimeTable TGro(
table=[0,288.15; 86400,288.15], tableOnFile=false);
parameter Buildings.HeatTransfer.Data.OpaqueConstructions.Generic
slaCon(nLay=3, material={
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.1524,
k=1.13,
c=1000,
d=1400,
nSta=5),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.127,
k=0.036,
c=1200,
d=40),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.2,
k=1.8,
c=1100,
d=2400)}) ;
parameter Buildings.Fluid.Data.Pipes.PEX_RADTEST pipe(dIn=0.015875, dOut=0.01905);
Buildings.BoundaryConditions.WeatherData.ReaderTMY3 weaDat(filNam=
Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/weatherdata/USA_CA_San.Francisco.Intl.AP.724940_TMY3.mos"));
Buildings.HeatTransfer.Sources.PrescribedTemperature preT2[2];
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.X3A.Electrical ele(
redeclare package Medium = Air, nPorts=2,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
;
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.X3A.Closet
clo(
redeclare package Medium = Air,
nPorts=2,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
;
Modelica.Blocks.Sources.CombiTimeTable TNei(
table=[0,293.15,293.15; 86400,293.15,293.15], tableOnFile=false)
;
Modelica.Blocks.Sources.CombiTimeTable intGaiEle(
table=[0,0,0,0; 86400,0,0,0], tableOnFile=false)
;
Modelica.Blocks.Sources.CombiTimeTable airConEle(
tableOnFile=true,
tableName="airCon",
fileName=
Modelica.Utilities.Files.loadResource(
"modelica://Buildings/Resources/Data/ThermalZones/Detailed/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"),
columns=2:5)
;
Modelica.Blocks.Sources.CombiTimeTable airConClo(
tableOnFile=true,
tableName="airCon",
fileName=
Modelica.Utilities.Files.loadResource(
"modelica://Buildings/Resources/Data/ThermalZones/Detailed/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"),
columns=2:5)
;
Buildings.Fluid.Sources.MassFlowSource_T airInEle(
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Air,
nPorts=1) ;
Buildings.Fluid.Sources.Boundary_pT airOutEle(nPorts=1,
redeclare package
Medium = Air) ;
Buildings.Fluid.Sources.MassFlowSource_T airInClo(
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Air,
nPorts=1) ;
Buildings.Fluid.Sources.Boundary_pT airOutClo(
redeclare package Medium = Air, nPorts=1) ;
Modelica.Blocks.Sources.CombiTimeTable intGaiClo(
table=[0,0,0,0; 86400,0,0,0], tableOnFile=false)
;
Modelica.Blocks.Sources.CombiTimeTable watCon4A2(tableOnFile=false, table=[0,
0.504,293.15; 86400,0.504,293.15])
;
Buildings.Fluid.Sources.MassFlowSource_T watIn4A2(
nPorts=1,
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Water)
;
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla4A2(
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType.Floor,
iLayPip=1,
redeclare package Medium = Water,
pipe=pipe,
layers=slaCon,
m_flow_nominal=0.504,
A=6.645*1.51,
disPip=sla4A2.A/sla4A2.length,
length=45.11,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
stateAtSurface_b=false)
;
Buildings.Fluid.Sources.Boundary_pT watOut4A2(nPorts=1,
redeclare package
Medium = Water) ;
Modelica.Blocks.Sources.CombiTimeTable watCon4A3(tableOnFile=false, table=[0,
0.504,293.15; 86400,0.504,293.15])
;
Buildings.Fluid.Sources.MassFlowSource_T watIn4A3(
nPorts=1,
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Water)
;
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla4A3(
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType.Floor,
iLayPip=1,
redeclare package Medium = Water,
pipe=pipe,
layers=slaCon,
m_flow_nominal=0.504,
A=6.645*0.91,
disPip=sla4A3.A/sla4A3.length,
length=42.98,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
stateAtSurface_b=false)
;
Buildings.Fluid.Sources.Boundary_pT watOut4A3(nPorts=1,
redeclare package
Medium = Water) ;
Modelica.Blocks.Sources.CombiTimeTable watCon4A4(tableOnFile=false, table=[0,
0.504,293.15; 86400,0.504,293.15])
;
Buildings.Fluid.Sources.MassFlowSource_T watIn4A4(
nPorts=1,
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Water)
;
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla4A4(
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType.Floor,
iLayPip=1,
redeclare package Medium = Water,
pipe=pipe,
layers=slaCon,
m_flow_nominal=0.504,
A=6.645*3.65,
disPip=sla4A4.A/sla4A4.length,
length=50.9,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
stateAtSurface_b=false)
;
Buildings.Fluid.Sources.Boundary_pT watOut4A4(nPorts=1,
redeclare package
Medium = Water) ;
equation
connect(airCon.y[1],airIn. m_flow_in);
connect(airCon.y[4],airIn. T_in);
connect(airIn.ports[1], X3A.ports[1]);
connect(airOut.ports[1], X3A.ports[2]);
connect(sla4A1.surf_b, preT.port);
connect(watIn4A1.ports[1], sla4A1.port_a);
connect(sla4A1.port_b, watOut4A1.ports[1]);
connect(watCon4A1.y[1], watIn4A1.m_flow_in);
connect(watCon4A1.y[2], watIn4A1.T_in);
connect(TGro.y[1],preT. T);
connect(weaDat.weaBus, X3A.weaBus);
connect(shaPos.y, X3A.uSha);
connect(weaDat.weaBus, ele.weaBus);
connect(weaDat.weaBus,clo. weaBus);
connect(ele.surf_surBou[1], X3A.surf_conBou[5]);
connect(clo.surf_surBou[1], X3A.surf_conBou[3]);
connect(clo.surf_surBou[2], X3A.surf_conBou[4]);
connect(airConEle.y[4], airInEle.T_in);
connect(airInEle.ports[1], ele.ports[1]);
connect(ele.ports[2], airOutEle.ports[1]);
connect(ele.surf_surBou[2], clo.surf_conBou[1]);
connect(preT2[1].port, X3A.surf_conBou[1]);
connect(preT2[2].port, X3A.surf_conBou[2]);
connect(airInClo.ports[1],clo. ports[1]);
connect(TNei.y, preT2.T);
connect(preT2[2].port, clo.surf_conBou[2]);
connect(airConClo.y[4], airInClo.T_in);
connect(airConEle.y[3], airInEle.m_flow_in);
connect(airConClo.y[2], airInClo.m_flow_in);
connect(airOutClo.ports[1],clo. ports[2]);
connect(intGai.y, X3A.qGai_flow);
connect(intGaiEle.y, ele.qGai_flow);
connect(intGaiClo.y,clo. qGai_flow);
connect(preT.port,clo.surf_conBou[3]);
connect(ele.surf_conBou[1], preT.port);
connect(sla4A1.surf_a, X3A.surf_surBou[1]);
connect(watCon4A2.y[1], watIn4A2.m_flow_in);
connect(watCon4A2.y[2], watIn4A2.T_in);
connect(watIn4A2.ports[1], sla4A2.port_a);
connect(sla4A2.port_b, watOut4A2.ports[1]);
connect(sla4A2.surf_a, X3A.surf_surBou[2]);
connect(preT.port, sla4A2.surf_b);
connect(watCon4A3.y[1], watIn4A3.m_flow_in);
connect(watCon4A3.y[2], watIn4A3.T_in);
connect(watIn4A3.ports[1], sla4A3.port_a);
connect(sla4A3.port_b, watOut4A3.ports[1]);
connect(sla4A3.surf_a, X3A.surf_surBou[3]);
connect(preT.port, sla4A3.surf_b);
connect(watCon4A4.y[1], watIn4A4.m_flow_in);
connect(watCon4A4.y[2], watIn4A4.T_in);
connect(watIn4A4.ports[1], sla4A4.port_a);
connect(sla4A4.port_b, watOut4A4.ports[1]);
connect(preT.port, sla4A4.surf_b);
connect(sla4A4.surf_a, X3A.surf_surBou[4]);
end X3AWithRadiantFloor;
Example model showing a use of X3B
Information
This model demonstrates one potential simulation using the models available in
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.X3B. This model is nearly identical to
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.Examples.X3AWithRadiantFloor. For a description
of most of the connections and reasons behind them see that documentation. The changes
to make this example model are:
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
Generic | slaCon | slaCon( nLay=3, mat... | Construction of the slab |
PEX_RADTEST | pipe | pipe( ... | |
Modelica definition
model X3BWithRadiantFloor
extends Modelica.Icons.Example;
package Air =
Buildings.Media.Air ;
package Water =
Buildings.Media.Water
;
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.X3B.TestCell X3B(
nPorts=2,
redeclare package Medium = Air,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
datConBou(stateAtSurface_a = {false, true, true, true}));
Modelica.Blocks.Sources.CombiTimeTable intGai(table=[0,0,0,0; 86400,0,0,0],
tableOnFile=false)
;
Modelica.Blocks.Sources.CombiTimeTable shaPos(table=[0,1; 86400,1],
tableOnFile=false) ;
Modelica.Blocks.Sources.CombiTimeTable airCon(table=[0,0.1,293.15; 86400,0.1,293.15],
tableOnFile=true,
tableName="airCon",
fileName=
Modelica.Utilities.Files.loadResource(
"modelica://Buildings/Resources/Data/ThermalZones/Detailed/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"),
columns=2:5) ;
Buildings.Fluid.Sources.MassFlowSource_T airIn(
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Air,
nPorts=1) ;
Buildings.Fluid.Sources.Boundary_pT
airOut(nPorts=1,
redeclare package Medium = Air) ;
Buildings.HeatTransfer.Sources.PrescribedTemperature preT
;
Modelica.Blocks.Sources.CombiTimeTable TGro(
table=[0,288.15; 86400,288.15], tableOnFile=false);
parameter Buildings.HeatTransfer.Data.OpaqueConstructions.Generic
slaCon(nLay=3, material={
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.1524,
k=1.13,
c=1000,
d=1400,
nSta=5),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.127,
k=0.036,
c=1200,
d=40),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.2,
k=1.8,
c=1100,
d=2400)}) ;
parameter Buildings.Fluid.Data.Pipes.PEX_RADTEST pipe(dIn=0.015875, dOut=0.01905);
Buildings.BoundaryConditions.WeatherData.ReaderTMY3 weaDat(filNam=
Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/weatherdata/USA_CA_San.Francisco.Intl.AP.724940_TMY3.mos"));
Buildings.HeatTransfer.Sources.PrescribedTemperature preT2;
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.X3B.Electrical ele(
redeclare package Medium = Air,
nPorts=2,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
;
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.X3B.Closet
clo(
redeclare package Medium = Air,
nPorts=2,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
datConBou(stateAtSurface_a = {true, false, false}))
;
Modelica.Blocks.Sources.CombiTimeTable TNei(
tableOnFile=false,
table=[0,293.15; 86400,293.15])
;
Modelica.Blocks.Sources.CombiTimeTable intGaiEle(
table=[0,0,0,0; 86400,0,0,0], tableOnFile=false)
;
Modelica.Blocks.Sources.CombiTimeTable airConEle(
tableOnFile=true,
tableName="airCon",
fileName=
Modelica.Utilities.Files.loadResource(
"modelica://Buildings/Resources/Data/ThermalZones/Detailed/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"),
columns=2:5)
;
Modelica.Blocks.Sources.CombiTimeTable airConClo(
tableOnFile=true,
tableName="airCon",
fileName=
Modelica.Utilities.Files.loadResource(
"modelica://Buildings/Resources/Data/ThermalZones/Detailed/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"),
columns=2:5)
;
Buildings.Fluid.Sources.MassFlowSource_T airInEle(
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Air,
nPorts=1) ;
Buildings.Fluid.Sources.Boundary_pT airOutEle(nPorts=1,
redeclare package
Medium = Air) ;
Buildings.Fluid.Sources.MassFlowSource_T airInClo(
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Air,
nPorts=1) ;
Buildings.Fluid.Sources.Boundary_pT airOutClo(
redeclare package Medium = Air, nPorts=1) ;
Modelica.Blocks.Sources.CombiTimeTable intGaiClo(
table=[0,0,0,0; 86400,0,0,0], tableOnFile=false)
;
Modelica.Blocks.Sources.CombiTimeTable watCon4B2(tableOnFile=false, table=[0,
0.504,293.15; 86400,0.504,293.15])
;
Modelica.Blocks.Sources.CombiTimeTable watCon4B3(tableOnFile=false, table=[0,
0.504,293.15; 86400,0.504,293.15])
;
Buildings.Fluid.Sources.MassFlowSource_T watIn4B3(
nPorts=1,
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Water)
;
Modelica.Blocks.Sources.CombiTimeTable watCon4B4(tableOnFile=false, table=[0,
0.504,293.15; 86400,0.504,293.15])
;
Buildings.Fluid.Sources.MassFlowSource_T watIn4B4(
nPorts=1,
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Water)
;
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla4B4(
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType.Floor,
iLayPip=1,
redeclare package Medium = Water,
pipe=pipe,
layers=slaCon,
m_flow_nominal=0.504,
A=6.645*3.65,
disPip=sla4B4.A/sla4B4.length,
length=48.77,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
stateAtSurface_b=false)
;
Buildings.Fluid.Sources.Boundary_pT watOut4B4(nPorts=1,
redeclare package
Medium = Water) ;
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla4B3(
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType.Floor,
iLayPip=1,
redeclare package Medium = Water,
pipe=pipe,
layers=slaCon,
m_flow_nominal=0.504,
A=6.645*0.91,
disPip=sla4B3.A/sla4B3.length,
length=37.49,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
stateAtSurface_b=false)
;
Buildings.Fluid.Sources.Boundary_pT watOut4B3(nPorts=1,
redeclare package
Medium = Water) ;
Buildings.Fluid.Sources.MassFlowSource_T watIn4B2(
nPorts=1,
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Water)
;
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla4B2(
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType.Floor,
iLayPip=1,
redeclare package Medium = Water,
pipe=pipe,
layers=slaCon,
m_flow_nominal=0.504,
A=6.645*1.51,
length=45.11,
disPip=sla4B2.A/sla4B2.length,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
stateAtSurface_b=false)
;
Buildings.Fluid.Sources.Boundary_pT watOut4B2(nPorts=1,
redeclare package
Medium = Water) ;
Modelica.Blocks.Sources.CombiTimeTable watCon4B1(tableOnFile=false, table=[0,
0.504,293.15; 86400,0.504,293.15])
;
Buildings.Fluid.Sources.MassFlowSource_T watIn4B1(
nPorts=1,
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Water)
;
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla4B1(
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType.Floor,
iLayPip=1,
redeclare package Medium = Water,
pipe=pipe,
layers=slaCon,
m_flow_nominal=0.504,
A=6.645*3.09,
disPip=sla4B1.A/sla4B1.length,
length=38.71,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
stateAtSurface_b=false)
;
Buildings.Fluid.Sources.Boundary_pT watOut4B1(nPorts=1,
redeclare package
Medium = Water) ;
equation
connect(airCon.y[1],airIn. m_flow_in);
connect(airCon.y[4],airIn. T_in);
connect(airIn.ports[1],X3B. ports[1]);
connect(airOut.ports[1],X3B. ports[2]);
connect(TGro.y[1],preT. T);
connect(weaDat.weaBus,X3B. weaBus);
connect(shaPos.y,X3B. uSha);
connect(weaDat.weaBus, ele.weaBus);
connect(weaDat.weaBus,clo. weaBus);
connect(airConEle.y[4], airInEle.T_in);
connect(airInEle.ports[1], ele.ports[1]);
connect(ele.ports[2], airOutEle.ports[1]);
connect(ele.surf_surBou[2], clo.surf_conBou[1]);
connect(airInClo.ports[1],clo. ports[1]);
connect(airConClo.y[4], airInClo.T_in);
connect(airConEle.y[3], airInEle.m_flow_in);
connect(airConClo.y[2], airInClo.m_flow_in);
connect(airOutClo.ports[1],clo. ports[2]);
connect(intGai.y,X3B. qGai_flow);
connect(intGaiEle.y, ele.qGai_flow);
connect(intGaiClo.y,clo. qGai_flow);
connect(preT.port,clo.surf_conBou[3]);
connect(ele.surf_conBou[1], preT.port);
connect(X3B.surf_conBou[2], clo.surf_surBou[1]);
connect(X3B.surf_conBou[3], clo.surf_surBou[2]);
connect(X3B.surf_conBou[4], ele.surf_surBou[1]);
connect(TNei.y[1], preT2.T);
connect(preT2.port, X3B.surf_conBou[1]);
connect(preT2.port, clo.surf_conBou[2]);
connect(watCon4B2.y[1],watIn4B2. m_flow_in);
connect(watCon4B2.y[2],watIn4B2. T_in);
connect(watCon4B3.y[1],watIn4B3. m_flow_in);
connect(watCon4B3.y[2],watIn4B3. T_in);
connect(watCon4B4.y[1],watIn4B4. m_flow_in);
connect(watCon4B4.y[2],watIn4B4. T_in);
connect(watIn4B4.ports[1],sla4B4. port_a);
connect(watIn4B3.ports[1],sla4B3. port_a);
connect(sla4B4.port_b,watOut4B4. ports[1]);
connect(sla4B3.port_b,watOut4B3. ports[1]);
connect(watIn4B2.ports[1],sla4B2. port_a);
connect(sla4B2.port_b,watOut4B2. ports[1]);
connect(watCon4B1.y[2],watIn4B1. T_in);
connect(watIn4B1.ports[1],sla4B1. port_a);
connect(sla4B1.port_b,watOut4B1. ports[1]);
connect(preT.port, sla4B1.surf_b);
connect(preT.port, sla4B2.surf_b);
connect(preT.port, sla4B3.surf_b);
connect(preT.port, sla4B4.surf_b);
connect(sla4B1.surf_a, X3B.surf_surBou[1]);
connect(sla4B2.surf_a, X3B.surf_surBou[2]);
connect(sla4B3.surf_a, X3B.surf_surBou[3]);
connect(sla4B4.surf_a, X3B.surf_surBou[4]);
connect(watCon4B1.y[1], watIn4B1.m_flow_in);
end X3BWithRadiantFloor;
Example model of test cells X3A and X3B connected to form test bed X3
Information
This example models demonstrates how the
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.X3A and
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.X3B test cell models can be combined to form a simulation of test
bed X3. The example is primarily a combination of
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.Examples.X3AWithRadiantFloor and
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.Examples.X3BWithRadiantFloor. The example
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.Examples.X3AWithRadiantFloor contains detailed
documentation on these models. Some small changes were necessary to create the model of the test
bed correctly. These changes are:
- To make the connection between X3A and X3B possible two of the models from the X3A example were
replaced with models designed for connection to X3B.
- Connections between the two test cells do not exist in either of the other two examples.
- The data reader models in this example function in the same manner as in the
other two examples, but their names had to be changed to avoid using the same name
for multiple models in this example. Their names now contain a suffix describing the test
cell they're connected to. For example,
airConA
is connected to test cell X3A and
shaPosB
is connected to test cell X3B.
- TNei now only contains a temperature for test cell X2B. A temperature input for X3B
is not needed because that test cell is now included in the model.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
Generic | slaCon | slaCon( nLay=3, mat... | Construction of the slab |
PEX_RADTEST | pipe | pipe( ... | |
Modelica definition
model X3WithRadiantFloor
extends Modelica.Icons.Example;
package Air =
Buildings.Media.Air ;
package Water =
Buildings.Media.Water
;
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.X3B.TestCell X3B(
redeclare
package Medium = Air,
nPorts=2,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
;
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.X3B.Closet BClo(
redeclare
package Medium = Air,
nPorts=2,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
;
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.X3B.Electrical BEle(
redeclare
package Medium =
Air, nPorts=2,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
;
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.X3A.TestCellFullBed X3A(
redeclare
package
Medium = Air, nPorts=2,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
;
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.X3A.ClosetFullBed AClo(
redeclare
package
Medium = Air, nPorts=1,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
;
Buildings.ThermalZones.Detailed.FLEXLAB.Rooms.X3A.Electrical AEle(
redeclare
package Medium =
Air, nPorts=2,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
;
Buildings.BoundaryConditions.WeatherData.ReaderTMY3 weaDat(filNam=
Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/weatherdata/USA_CA_San.Francisco.Intl.AP.724940_TMY3.mos"));
Modelica.Blocks.Sources.CombiTimeTable intGaiCloB(table=[0,0,0,0; 86400,0,0,0],
tableOnFile=false)
;
Modelica.Blocks.Sources.CombiTimeTable intGaiCloA(
table=[0,0,0,0; 86400,0,0,0], tableOnFile=false)
;
Modelica.Blocks.Sources.CombiTimeTable intGaiEleA(table=[0,0,0,0; 86400,0,0,0],
tableOnFile=false)
;
Modelica.Blocks.Sources.CombiTimeTable intGaiEleB(table=[0,0,0,0; 86400,0,0,0],
tableOnFile=false)
;
Modelica.Blocks.Sources.CombiTimeTable shaPosA(table=[0,1; 86400,1],
tableOnFile=false) ;
Modelica.Blocks.Sources.CombiTimeTable shaPosB(
table=[0,1; 86400,1],
tableOnFile=false) ;
Modelica.Blocks.Sources.CombiTimeTable intGaiA(table=[0,0,0,0; 86400,0,0,0],
tableOnFile=false)
;
Modelica.Blocks.Sources.CombiTimeTable intGaiB(table=[0,0,0,0; 86400,0,0,0],
tableOnFile=false)
;
Modelica.Blocks.Sources.CombiTimeTable airConCloA(
tableOnFile=true,
tableName="airCon",
fileName=
Modelica.Utilities.Files.loadResource(
"modelica://Buildings/Resources/Data/ThermalZones/Detailed/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"),
columns=2:5)
;
Buildings.Fluid.Sources.MassFlowSource_T airInCloA(
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Air,
nPorts=1) ;
Buildings.Fluid.Sources.Boundary_pT airOutCloA(
redeclare package Medium = Air,
nPorts=1) ;
Modelica.Blocks.Sources.CombiTimeTable airConCloB(
tableOnFile=true,
tableName="airCon",
fileName=
Modelica.Utilities.Files.loadResource(
"modelica://Buildings/Resources/Data/ThermalZones/Detailed/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"),
columns=2:5)
;
Buildings.Fluid.Sources.MassFlowSource_T airInCloB(
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Air,
nPorts=1) ;
Buildings.Fluid.Sources.Boundary_pT airOutCloB(
redeclare package Medium = Air,
nPorts=1) ;
Modelica.Blocks.Sources.CombiTimeTable airConA(
table=[0,0.1,293.15; 86400,0.1,293.15],
tableOnFile=true,
tableName="airCon",
fileName=
Modelica.Utilities.Files.loadResource(
"modelica://Buildings/Resources/Data/ThermalZones/Detailed/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"),
columns=2:5)
;
Buildings.Fluid.Sources.MassFlowSource_T airInA(
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Air,
nPorts=1) ;
Buildings.Fluid.Sources.Boundary_pT airOutA(nPorts=1,
redeclare package
Medium = Air) ;
Modelica.Blocks.Sources.CombiTimeTable airConB(
table=[0,0.1,293.15; 86400,0.1,293.15],
tableOnFile=true,
tableName="airCon",
fileName=
Modelica.Utilities.Files.loadResource(
"modelica://Buildings/Resources/Data/ThermalZones/Detailed/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"),
columns=2:5)
;
Buildings.Fluid.Sources.MassFlowSource_T airInB(
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Air,
nPorts=1) ;
Buildings.Fluid.Sources.Boundary_pT airOutB(nPorts=1,
redeclare package
Medium = Air) ;
Modelica.Blocks.Sources.CombiTimeTable airConEleA(
tableOnFile=true,
tableName="airCon",
fileName=
Modelica.Utilities.Files.loadResource(
"modelica://Buildings/Resources/Data/ThermalZones/Detailed/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"),
columns=2:5)
;
Buildings.Fluid.Sources.MassFlowSource_T airInEleA(
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Air,
nPorts=1)
;
Buildings.Fluid.Sources.Boundary_pT airOutEleA(
redeclare package Medium = Air,
nPorts=1) ;
Buildings.HeatTransfer.Sources.PrescribedTemperature preT
;
Modelica.Blocks.Sources.CombiTimeTable TGro(
table=[0,288.15; 86400,288.15], tableOnFile=false);
parameter Buildings.HeatTransfer.Data.OpaqueConstructions.Generic
slaCon(nLay=3, material={
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.1524,
k=1.13,
c=1000,
d=1400,
nSta=5),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.127,
k=0.036,
c=1200,
d=40),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.2,
k=1.8,
c=1100,
d=2400)}) ;
parameter Buildings.Fluid.Data.Pipes.PEX_RADTEST pipe(dIn=0.015875, dOut=0.01905);
Modelica.Blocks.Sources.CombiTimeTable TNei( tableOnFile=false, table=[0,293.15;
86400,293.15]) ;
Buildings.HeatTransfer.Sources.PrescribedTemperature preT2;
Buildings.Fluid.Sources.Boundary_pT airOutEleB(
redeclare package Medium = Air,
nPorts=1) ;
Buildings.Fluid.Sources.MassFlowSource_T airInEleB(
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Air,
nPorts=1)
;
Modelica.Blocks.Sources.CombiTimeTable airConEleB(
tableOnFile=true,
tableName="airCon",
fileName=
Modelica.Utilities.Files.loadResource(
"modelica://Buildings/Resources/Data/ThermalZones/Detailed/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"),
columns=2:5)
;
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla4A1(
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType.Floor,
iLayPip=1,
redeclare package Medium = Water,
pipe=pipe,
layers=slaCon,
m_flow_nominal=0.504,
A=6.645*3.09,
length=32.92,
disPip=sla4A1.A/sla4A1.length,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
stateAtSurface_b=false)
;
Modelica.Blocks.Sources.CombiTimeTable watCon4A1(tableOnFile=false, table=[0,
0.504,293.15; 86400,0.504,293.15])
;
Buildings.Fluid.Sources.MassFlowSource_T watIn4A1(
nPorts=1,
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Water)
;
Modelica.Blocks.Sources.CombiTimeTable watCon4A2(tableOnFile=false, table=[0,
0.504,293.15; 86400,0.504,293.15])
;
Buildings.Fluid.Sources.MassFlowSource_T watIn4A2(
nPorts=1,
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Water)
;
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla4A2(
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType.Floor,
iLayPip=1,
redeclare package Medium = Water,
pipe=pipe,
layers=slaCon,
m_flow_nominal=0.504,
A=6.645*1.51,
disPip=sla4A2.A/sla4A2.length,
length=45.11,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
stateAtSurface_b=false)
;
Buildings.Fluid.Sources.Boundary_pT watOut4A2(nPorts=1,
redeclare package
Medium = Water) ;
Modelica.Blocks.Sources.CombiTimeTable watCon4A3(tableOnFile=false, table=[0,
0.504,293.15; 86400,0.504,293.15])
;
Buildings.Fluid.Sources.MassFlowSource_T watIn4A3(
nPorts=1,
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Water)
;
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla4A3(
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType.Floor,
iLayPip=1,
redeclare package Medium = Water,
pipe=pipe,
layers=slaCon,
m_flow_nominal=0.504,
A=6.645*0.91,
disPip=sla4A3.A/sla4A3.length,
length=42.98,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
stateAtSurface_b=false)
;
Buildings.Fluid.Sources.Boundary_pT watOut4A3(nPorts=1,
redeclare package
Medium = Water) ;
Modelica.Blocks.Sources.CombiTimeTable watCon4A4(tableOnFile=false, table=[0,
0.504,293.15; 86400,0.504,293.15])
;
Buildings.Fluid.Sources.MassFlowSource_T watIn4A4(
nPorts=1,
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Water)
;
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla4A4(
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType.Floor,
iLayPip=1,
redeclare package Medium = Water,
pipe=pipe,
layers=slaCon,
m_flow_nominal=0.504,
A=6.645*3.65,
disPip=sla4A4.A/sla4A4.length,
length=50.9,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
stateAtSurface_b=false)
;
Buildings.Fluid.Sources.Boundary_pT watOut4A4(nPorts=1,
redeclare package
Medium = Water) ;
Buildings.Fluid.Sources.Boundary_pT watOut4A1(nPorts=1,
redeclare package
Medium = Water) ;
Modelica.Blocks.Sources.CombiTimeTable watCon4B1(tableOnFile=false, table=[0,
0.504,293.15; 86400,0.504,293.15])
;
Buildings.Fluid.Sources.MassFlowSource_T watIn4B1(
nPorts=1,
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Water)
;
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla4B1(
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType.Floor,
iLayPip=1,
redeclare package Medium = Water,
pipe=pipe,
layers=slaCon,
m_flow_nominal=0.504,
A=6.645*3.09,
disPip=sla4B1.A/sla4B1.length,
length=38.71,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
stateAtSurface_b=false)
;
Buildings.Fluid.Sources.Boundary_pT watOut4B1(
redeclare package
Medium = Water, nPorts=1) ;
Modelica.Blocks.Sources.CombiTimeTable watCon4B2(tableOnFile=false, table=[0,
0.504,293.15; 86400,0.504,293.15])
;
Buildings.Fluid.Sources.MassFlowSource_T watIn4B2(
nPorts=1,
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Water)
;
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla4B2(
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType.Floor,
iLayPip=1,
redeclare package Medium = Water,
pipe=pipe,
layers=slaCon,
m_flow_nominal=0.504,
A=6.645*1.51,
length=45.11,
disPip=sla4B2.A/sla4B2.length,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
stateAtSurface_b=false)
;
Buildings.Fluid.Sources.Boundary_pT watOut4B2(nPorts=1,
redeclare package
Medium = Water) ;
Modelica.Blocks.Sources.CombiTimeTable watCon4B3(tableOnFile=false, table=[0,
0.504,293.15; 86400,0.504,293.15])
;
Buildings.Fluid.Sources.MassFlowSource_T watIn4B3(
nPorts=1,
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Water)
;
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla4B3(
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType.Floor,
iLayPip=1,
redeclare package Medium = Water,
pipe=pipe,
layers=slaCon,
m_flow_nominal=0.504,
A=6.645*0.91,
disPip=sla4B3.A/sla4B3.length,
length=37.49,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
stateAtSurface_b=false)
;
Buildings.Fluid.Sources.Boundary_pT watOut4B3(nPorts=1,
redeclare package
Medium = Water) ;
Modelica.Blocks.Sources.CombiTimeTable watCon4B4(tableOnFile=false, table=[0,
0.504,293.15; 86400,0.504,293.15])
;
Buildings.Fluid.Sources.MassFlowSource_T watIn4B4(
nPorts=1,
use_m_flow_in=true,
use_T_in=true,
redeclare package Medium = Water)
;
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla4B4(
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.Types.SystemType.Floor,
iLayPip=1,
redeclare package Medium = Water,
pipe=pipe,
layers=slaCon,
m_flow_nominal=0.504,
A=6.645*3.65,
disPip=sla4B4.A/sla4B4.length,
length=48.77,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
stateAtSurface_b=false)
;
Buildings.Fluid.Sources.Boundary_pT watOut4B4(nPorts=1,
redeclare package
Medium = Water) ;
equation
connect(X3B.surf_conBou[2], BClo.surf_surBou[1]);
connect(X3B.surf_conBou[3], BClo.surf_surBou[2]);
connect(X3B.surf_conBou[4], BEle.surf_surBou[1]);
connect(BClo.surf_conBou[1], BEle.surf_surBou[2]);
connect(X3A.surf_surBou[5], X3B.surf_conBou[1]);
connect(AClo.surf_surBou[3], BClo.surf_conBou[2]);
connect(X3A.surf_conBou[2], AClo.surf_surBou[1]);
connect(X3A.surf_conBou[3], AClo.surf_surBou[2]);
connect(AEle.surf_surBou[2], AClo.surf_conBou[1]);
connect(weaDat.weaBus, AEle.weaBus);
connect(weaDat.weaBus, AClo.weaBus);
connect(weaDat.weaBus, X3A.weaBus);
connect(weaDat.weaBus, BClo.weaBus);
connect(weaDat.weaBus, X3B.weaBus);
connect(weaDat.weaBus, BEle.weaBus);
connect(X3A.surf_conBou[4], AEle.surf_surBou[1]);
connect(intGaiCloB.y, BClo.qGai_flow);
connect(intGaiCloA.y, AClo.qGai_flow);
connect(intGaiEleA.y, AEle.qGai_flow);
connect(intGaiEleB.y, BEle.qGai_flow);
connect(shaPosA.y, X3A.uSha);
connect(shaPosB.y, X3B.uSha);
connect(intGaiA.y, X3A.qGai_flow);
connect(intGaiB.y, X3B.qGai_flow);
connect(airOutCloA.ports[1], AClo.ports[1]);
connect(airInCloA.ports[1], AClo.ports[1]);
connect(airConCloA.y[2], airInCloA.m_flow_in);
connect(airConCloA.y[4], airInCloA.T_in);
connect(airConCloB.y[2], airInCloB.m_flow_in);
connect(airConCloB.y[4], airInCloB.T_in);
connect(airOutCloB.ports[1], BClo.ports[1]);
connect(airInCloB.ports[1], BClo.ports[2]);
connect(airConA.y[1], airInA.m_flow_in);
connect(airConA.y[4], airInA.T_in);
connect(airInA.ports[1], X3A.ports[1]);
connect(airOutA.ports[1], X3A.ports[2]);
connect(airConB.y[1], airInB.m_flow_in);
connect(airConB.y[4], airInB.T_in);
connect(airInB.ports[1], X3B.ports[1]);
connect(airOutB.ports[1], X3B.ports[2]);
connect(airConEleA.y[3], airInEleA.m_flow_in);
connect(airConEleA.y[4], airInEleA.T_in);
connect(airOutEleA.ports[1], AEle.ports[1]);
connect(airInEleA.ports[1], AEle.ports[2]);
connect(TGro.y[1],preT. T);
connect(TNei.y[1], preT2.T);
connect(preT2.port, X3A.surf_conBou[1]);
connect(preT.port, BClo.surf_conBou[3]);
connect(preT.port, BEle.surf_conBou[1]);
connect(preT.port, AEle.surf_conBou[1]);
connect(preT.port, AClo.surf_conBou[2]);
connect(airConEleB.y[4], airInEleB.T_in);
connect(airConEleB.y[3], airInEleB.m_flow_in);
connect(airOutEleB.ports[1], BEle.ports[1]);
connect(airInEleB.ports[1], BEle.ports[2]);
connect(watIn4A1.ports[1],sla4A1. port_a);
connect(watCon4A1.y[1],watIn4A1. m_flow_in);
connect(watCon4A1.y[2],watIn4A1. T_in);
connect(watCon4A2.y[1],watIn4A2. m_flow_in);
connect(watCon4A2.y[2],watIn4A2. T_in);
connect(watIn4A2.ports[1],sla4A2. port_a);
connect(sla4A2.port_b,watOut4A2. ports[1]);
connect(watCon4A3.y[1],watIn4A3. m_flow_in);
connect(watCon4A3.y[2],watIn4A3. T_in);
connect(watIn4A3.ports[1],sla4A3. port_a);
connect(sla4A3.port_b,watOut4A3. ports[1]);
connect(watCon4A4.y[1],watIn4A4. m_flow_in);
connect(watCon4A4.y[2],watIn4A4. T_in);
connect(watIn4A4.ports[1],sla4A4. port_a);
connect(sla4A4.port_b,watOut4A4. ports[1]);
connect(sla4A1.port_b,watOut4A1. ports[1]);
connect(preT.port, sla4A1.surf_b);
connect(sla4A1.surf_a, X3A.surf_surBou[1]);
connect(sla4A2.surf_a, X3A.surf_surBou[2]);
connect(preT.port, sla4A2.surf_b);
connect(preT.port, sla4A3.surf_b);
connect(sla4A3.surf_a, X3A.surf_surBou[3]);
connect(sla4A4.surf_a, X3A.surf_surBou[4]);
connect(preT.port, sla4A4.surf_b);
connect(watIn4B1.ports[1],sla4B1. port_a);
connect(sla4B1.port_b, watOut4B1.ports[1]);
connect(watCon4B1.y[2], watIn4B1.T_in);
connect(watCon4B1.y[1], watIn4B1.m_flow_in);
connect(preT.port, sla4B1.surf_b);
connect(sla4B1.surf_a, X3B.surf_surBou[1]);
connect(sla4B2.port_b, watOut4B2.ports[1]);
connect(watIn4B2.ports[1], sla4B2.port_a);
connect(watCon4B2.y[2], watIn4B2.T_in);
connect(watCon4B2.y[1], watIn4B2.m_flow_in);
connect(preT.port, sla4B2.surf_b);
connect(sla4B2.surf_a, X3B.surf_surBou[2]);
connect(watOut4B3.ports[1], sla4B3.port_b);
connect(sla4B3.port_a, watIn4B3.ports[1]);
connect(watCon4B3.y[2], watIn4B3.T_in);
connect(watCon4B3.y[1], watIn4B3.m_flow_in);
connect(preT.port, sla4B3.surf_b);
connect(sla4B3.surf_a, X3B.surf_surBou[3]);
connect(watOut4B4.ports[1], sla4B4.port_b);
connect(sla4B4.port_a, watIn4B4.ports[1]);
connect(watCon4B4.y[2], watIn4B4.T_in);
connect(watCon4B4.y[1], watIn4B4.m_flow_in);
connect(preT.port, sla4B4.surf_b);
connect(sla4B4.surf_a, X3B.surf_surBou[4]);
end X3WithRadiantFloor;