Description: "Unit tests for models in FLEXLAB.Rooms"

- Home > Modelica

## Buildings.Rooms.FLEXLAB.Rooms.Examples

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
--- | ---
TestBedX3WithRadiantFloor | Example model of test cells X3A and X3B connected to form test bed X3
X3AWithRadiantFloor | Example model showing a use of X3A
X3BWithRadiantFloor | Example model showing a use of X3B

## Buildings.Rooms.FLEXLAB.Rooms.Examples.TestBedX3WithRadiantFloor

Example model of test cells X3A and X3B connected to form test bed X3

### Information

This example models demonstrates how the Buildings.Rooms.FLEXLAB.Rooms.X3A and Buildings.Rooms.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.Rooms.FLEXLAB.Rooms.Examples.X3AWithRadiantFloor and Buildings.Rooms.FLEXLAB.Rooms.Examples.X3BWithRadiantFloor. The example Buildings.Rooms.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. Specifically, Buildings.Rooms.FLEXLAB.Rooms.X3A.TestCell was replaced with Buildings.Rooms.FLEXLAB.Rooms.X3A.TestCellNoCelDiv and Buildings.Rooms.FLEXLAB.Rooms.X3A.Closet was replaced with Buildings.Rooms.FLEXLAB.Rooms.X3A.ClosetNoCelDiv.
- Connections between the two test cells do not exist in either of the other two examples. The connections between X3A and X3B were made following the documentation available in Buildings.Rooms.FLEXLAB.Rooms.X3A.TestCellNoCelDiv and Buildings.Rooms.FLEXLAB.Rooms.X3A.ClosetNoCelDiv.
- 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 |  | Construction of the slab
PEX_RADTEST | pipe |  |

### Modelica definition

model TestBedX3WithRadiantFloor "Example model of test cells X3A and X3B connected to form test bed X3" extends Modelica.Icons.Example; package Air = Buildings.Media.Air "Air model used in the example model"; package Water = Buildings.Media.Water "Water model used in the radiant slab loop"; Buildings.Rooms.FLEXLAB.Rooms.X3B.TestCell X3B(redeclare package Medium = Air, nPorts=2, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Test cell X3B"; Buildings.Rooms.FLEXLAB.Rooms.X3B.Closet BClo(redeclare package Medium = Air, nPorts=2, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Closet in test cell X3B"; Buildings.Rooms.FLEXLAB.Rooms.X3B.Electrical BEle(redeclare package Medium = Air, nPorts=2, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Electrical room in test cell X3B"; Buildings.Rooms.FLEXLAB.Rooms.X3A.TestCellFullBed X3A(redeclare package Medium = Air, nPorts=2, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Test cell X3A"; Buildings.Rooms.FLEXLAB.Rooms.X3A.ClosetFullBed AClo(redeclare package Medium = Air, nPorts=1, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Closet in test cell X3A"; Buildings.Rooms.FLEXLAB.Rooms.X3A.Electrical AEle(redeclare package Medium = Air, nPorts=2, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Electrical room in test cell X3A"; Buildings.BoundaryConditions.WeatherData.ReaderTMY3 weaDat(filNam="/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) "Internal gain heat flow for the closet in test cell X3B"; Modelica.Blocks.Sources.CombiTimeTable intGaiCloA( table=[0,0,0,0; 86400,0,0,0], tableOnFile=false) "Internal gain heat flow for the closet in test cell X3A"; Modelica.Blocks.Sources.CombiTimeTable intGaiEleA(table=[0,0,0,0; 86400,0,0,0], tableOnFile=false) "Internal gain heat flow for the electrical room in test cell X3A"; Modelica.Blocks.Sources.CombiTimeTable intGaiEleB(table=[0,0,0,0; 86400,0,0,0], tableOnFile=false) "Internal gain heat flow for the electrical room in test cell X3B"; Modelica.Blocks.Sources.CombiTimeTable shaPosA(table=[0,1; 86400,1], tableOnFile=false) "Position of the shade in test cell X3A"; Modelica.Blocks.Sources.CombiTimeTable shaPosB( table=[0,1; 86400,1], tableOnFile=false) "Position of the shade in test cell X3B"; Modelica.Blocks.Sources.CombiTimeTable intGaiA(table=[0,0,0,0; 86400,0,0,0], tableOnFile=false) "Internal gain heat flow in test cell X3A (Radiant = 1, Convective = 2, Latent = 3)"; Modelica.Blocks.Sources.CombiTimeTable intGaiB(table=[0,0,0,0; 86400,0,0,0], tableOnFile=false) "Internal gain heat flow in test cell X3B (Radiant = 1, Convective = 2, Latent = 3)"; Modelica.Blocks.Sources.CombiTimeTable airConCloA( tableOnFile=true, tableName="airCon", fileName=ModelicaServices.ExternalReferences.loadResource( "modelica://Buildings/Resources/Data/Rooms/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"), columns=2:5) "Inlet air conditions for the connected closet of test cell X3A (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T airInCloA( use_m_flow_in=true, use_T_in=true, redeclare package Medium = Air, nPorts=1) "Inlet air conditions (from AHU) for the closet of test cell X3A"; Buildings.Fluid.Sources.Boundary_pT airOutCloA(redeclare package Medium = Air, nPorts=1) "Air outlet from the closet in test cell X3A"; Modelica.Blocks.Sources.CombiTimeTable airConCloB( tableOnFile=true, tableName="airCon", fileName=ModelicaServices.ExternalReferences.loadResource( "modelica://Buildings/Resources/Data/Rooms/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"), columns=2:5) "Inlet air conditions for the connected closet of test cell X3B (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T airInCloB( use_m_flow_in=true, use_T_in=true, redeclare package Medium = Air, nPorts=1) "Inlet air conditions (from AHU) for the closet of test cell X3B"; Buildings.Fluid.Sources.Boundary_pT airOutCloB(redeclare package Medium = Air, nPorts=1) "Air outlet from the closet in test cell X3B"; Modelica.Blocks.Sources.CombiTimeTable airConA( table=[0,0.1,293.15; 86400,0.1,293.15], tableOnFile=true, tableName="airCon", fileName=ModelicaServices.ExternalReferences.loadResource( "modelica://Buildings/Resources/Data/Rooms/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"), columns=2:5) "Inlet air conditions for test cell X3A (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T airInA( use_m_flow_in=true, use_T_in=true, redeclare package Medium = Air, nPorts=1) "Inlet air conditions (from AHU) for X3A"; Buildings.Fluid.Sources.Boundary_pT airOutA(nPorts=1, redeclare package Medium = Air) "Air outlet for X3A"; Modelica.Blocks.Sources.CombiTimeTable airConB( table=[0,0.1,293.15; 86400,0.1,293.15], tableOnFile=true, tableName="airCon", fileName=ModelicaServices.ExternalReferences.loadResource( "modelica://Buildings/Resources/Data/Rooms/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"), columns=2:5) "Inlet air conditions for test cell X3B (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T airInB( use_m_flow_in=true, use_T_in=true, redeclare package Medium = Air, nPorts=1) "Inlet air conditions (from AHU) for X3B"; Buildings.Fluid.Sources.Boundary_pT airOutB(nPorts=1, redeclare package Medium = Air) "Air outlet for X3B"; Modelica.Blocks.Sources.CombiTimeTable airConEleA( tableOnFile=true, tableName="airCon", fileName=ModelicaServices.ExternalReferences.loadResource( "modelica://Buildings/Resources/Data/Rooms/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"), columns=2:5) "Inlet air conditions for the connected electrical room in test cell X3A (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T airInEleA( use_m_flow_in=true, use_T_in=true, redeclare package Medium = Air, nPorts=1) "Inlet air conditions (from AHU) for the electrical room in test cell X3A"; Buildings.Fluid.Sources.Boundary_pT airOutEleA(redeclare package Medium = Air, nPorts=1) "Air outlet from the electrical room in test cell X3A"; Buildings.HeatTransfer.Sources.PrescribedTemperature preT "Temperature of the ground"; 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)}) "Construction of the slab"; 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]) "Temperature of the neighboring test cells (y[1] = X2B)"; Buildings.HeatTransfer.Sources.PrescribedTemperature preT2; Buildings.Fluid.Sources.Boundary_pT airOutEleB(redeclare package Medium = Air, nPorts=1) "Air outlet from the electrical room in test cell X3B"; Buildings.Fluid.Sources.MassFlowSource_T airInEleB( use_m_flow_in=true, use_T_in=true, redeclare package Medium = Air, nPorts=1) "Inlet air conditions (from AHU) for the electrical room in test cell X3B"; Modelica.Blocks.Sources.CombiTimeTable airConEleB( tableOnFile=true, tableName="airCon", fileName=ModelicaServices.ExternalReferences.loadResource( "modelica://Buildings/Resources/Data/Rooms/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"), columns=2:5) "Inlet air conditions for the connected electrical room in test cell X3B (y[1] = m_flow, y[2] = T)"; 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) "Radiant slab serving the north side of cell X3A. Name is taken from drawing M3.02"; Modelica.Blocks.Sources.CombiTimeTable watCon4A1(tableOnFile=false, table=[0, 0.504,293.15; 86400,0.504,293.15]) "Inlet water conditions (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T watIn4A1( nPorts=1, use_m_flow_in=true, use_T_in=true, redeclare package Medium = Water) "Inlet water conditions (from central plant)"; Modelica.Blocks.Sources.CombiTimeTable watCon4A2(tableOnFile=false, table=[0, 0.504,293.15; 86400,0.504,293.15]) "Inlet water conditions (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T watIn4A2( nPorts=1, use_m_flow_in=true, use_T_in=true, redeclare package Medium = Water) "Inlet water conditions (from central plant)"; 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) "Radiant slab serving the north-central section of cell X3A. Name is taken from drawing M3.02"; Buildings.Fluid.Sources.Boundary_pT watOut4A2(nPorts=1, redeclare package Medium = Water) "Water outlet"; Modelica.Blocks.Sources.CombiTimeTable watCon4A3(tableOnFile=false, table=[0, 0.504,293.15; 86400,0.504,293.15]) "Inlet water conditions (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T watIn4A3( nPorts=1, use_m_flow_in=true, use_T_in=true, redeclare package Medium = Water) "Inlet water conditions (from central plant)"; 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) "Radiant slab serving the south-central section of cell X3A. Name is taken from drawing M3.02"; Buildings.Fluid.Sources.Boundary_pT watOut4A3(nPorts=1, redeclare package Medium = Water) "Water outlet"; Modelica.Blocks.Sources.CombiTimeTable watCon4A4(tableOnFile=false, table=[0, 0.504,293.15; 86400,0.504,293.15]) "Inlet water conditions (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T watIn4A4( nPorts=1, use_m_flow_in=true, use_T_in=true, redeclare package Medium = Water) "Inlet water conditions (from central plant)"; 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) "Radiant slab serving the south section of cell X3A. Name is taken from drawing M3.02"; Buildings.Fluid.Sources.Boundary_pT watOut4A4(nPorts=1, redeclare package Medium = Water) "Water outlet"; Buildings.Fluid.Sources.Boundary_pT watOut4A1(nPorts=1, redeclare package Medium = Water) "Water outlet"; Modelica.Blocks.Sources.CombiTimeTable watCon4B1(tableOnFile=false, table=[0, 0.504,293.15; 86400,0.504,293.15]) "Inlet water conditions (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T watIn4B1( nPorts=1, use_m_flow_in=true, use_T_in=true, redeclare package Medium = Water) "Inlet water conditions (from central plant)"; 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) "Radiant slab serving the north side of cell X3B. Name is taken from drawing M3.02"; Buildings.Fluid.Sources.Boundary_pT watOut4B1( redeclare package Medium = Water, nPorts=1) "Water outlet"; Modelica.Blocks.Sources.CombiTimeTable watCon4B2(tableOnFile=false, table=[0, 0.504,293.15; 86400,0.504,293.15]) "Inlet water conditions (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T watIn4B2( nPorts=1, use_m_flow_in=true, use_T_in=true, redeclare package Medium = Water) "Inlet water conditions (from central plant)"; 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) "Radiant slab serving the north-central section of cell X3B. Name is taken from drawing M3.02"; Buildings.Fluid.Sources.Boundary_pT watOut4B2(nPorts=1, redeclare package Medium = Water) "Water outlet"; Modelica.Blocks.Sources.CombiTimeTable watCon4B3(tableOnFile=false, table=[0, 0.504,293.15; 86400,0.504,293.15]) "Inlet water conditions (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T watIn4B3( nPorts=1, use_m_flow_in=true, use_T_in=true, redeclare package Medium = Water) "Inlet water conditions (from central plant)"; 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) "Radiant slab serving the south-central section of cell X3B. Name is taken from drawing M3.02"; Buildings.Fluid.Sources.Boundary_pT watOut4B3(nPorts=1, redeclare package Medium = Water) "Water outlet"; Modelica.Blocks.Sources.CombiTimeTable watCon4B4(tableOnFile=false, table=[0, 0.504,293.15; 86400,0.504,293.15]) "Inlet water conditions (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T watIn4B4( nPorts=1, use_m_flow_in=true, use_T_in=true, redeclare package Medium = Water) "Inlet water conditions (from central plant)"; 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) "Radiant slab serving the south section of cell X3B. Name is taken from drawing M3.02"; Buildings.Fluid.Sources.Boundary_pT watOut4B4(nPorts=1, redeclare package Medium = Water) "Water outlet"; 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 TestBedX3WithRadiantFloor;

## Buildings.Rooms.FLEXLAB.Rooms.Examples.X3AWithRadiantFloor

Example model showing a use of X3A

### Information

This model demonstrates one potential simulation using the models available in Buildings.Rooms.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.Rooms.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 |  | Construction of the slab
PEX_RADTEST | pipe |  |

### Modelica definition

model X3AWithRadiantFloor "Example model showing a use of X3A" extends Modelica.Icons.Example; package Air = Buildings.Media.Air "Air model used in the example model"; package Water = Buildings.Media.Water "Water model used in the radiant slab loop"; Buildings.Rooms.FLEXLAB.Rooms.X3A.TestCell X3A( nPorts=2, redeclare package Medium = Air, linearizeRadiation=false, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial); Modelica.Blocks.Sources.CombiTimeTable intGai(table=[0,0,0,0; 86400,0,0,0], tableOnFile=false) "Internal gain heat flow (Radiant = 1, Convective = 2, Latent = 3)"; Modelica.Blocks.Sources.CombiTimeTable shaPos(table=[0,1; 86400,1], tableOnFile=false) "Position of the shade"; Modelica.Blocks.Sources.CombiTimeTable airCon(table=[0,0.1,293.15; 86400,0.1,293.15], tableOnFile=true, tableName="airCon", fileName=ModelicaServices.ExternalReferences.loadResource( "modelica://Buildings/Resources/Data/Rooms/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"), columns=2:5) "Inlet air conditions (y[1] = m_flow, y[4] = T)"; Buildings.Fluid.Sources.MassFlowSource_T airIn( use_m_flow_in=true, use_T_in=true, redeclare package Medium = Air, nPorts=1) "Inlet air conditions (from AHU) for X3A"; Buildings.Fluid.Sources.Boundary_pT airOut(nPorts=1, redeclare package Medium = Air) "Air outlet for X3A"; 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) "Radiant slab serving the north side of cell X3A. Name is taken from drawing M3.02"; Modelica.Blocks.Sources.CombiTimeTable watCon4A1(tableOnFile=false, table=[0, 0.504,293.15; 86400,0.504,293.15]) "Inlet water conditions (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T watIn4A1( nPorts=1, use_m_flow_in=true, use_T_in=true, redeclare package Medium = Water) "Inlet water conditions (from central plant)"; Buildings.Fluid.Sources.Boundary_pT watOut4A1(nPorts=1, redeclare package Medium = Water) "Water outlet"; Buildings.HeatTransfer.Sources.PrescribedTemperature preT "Temperature of the ground"; 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)}) "Construction of the slab"; parameter Buildings.Fluid.Data.Pipes.PEX_RADTEST pipe(dIn=0.015875, dOut=0.01905); Buildings.BoundaryConditions.WeatherData.ReaderTMY3 weaDat(filNam= "modelica://Buildings/Resources/weatherdata/USA_CA_San.Francisco.Intl.AP.724940_TMY3.mos"); Buildings.HeatTransfer.Sources.PrescribedTemperature preT2[2]; Buildings.Rooms.FLEXLAB.Rooms.X3A.Electrical ele( redeclare package Medium = Air, nPorts=2, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Model of the electrical room"; Buildings.Rooms.FLEXLAB.Rooms.X3A.Closet clo( redeclare package Medium = Air, nPorts=2, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Model of the closet"; Modelica.Blocks.Sources.CombiTimeTable TNei( table=[0,293.15,293.15; 86400,293.15,293.15], tableOnFile=false) "Temperature of the neighboring test cells (y[1] = X2B, y[2] = X3B)"; Modelica.Blocks.Sources.CombiTimeTable intGaiEle( table=[0,0,0,0; 86400,0,0,0], tableOnFile=false) "Internal gain heat flow for the electrical room"; Modelica.Blocks.Sources.CombiTimeTable airConEle( tableOnFile=true, tableName="airCon", fileName=ModelicaServices.ExternalReferences.loadResource( "modelica://Buildings/Resources/Data/Rooms/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"), columns=2:5) "Inlet air conditions for the connected electrical room (y[1] = m_flow, y[4] = T)"; Modelica.Blocks.Sources.CombiTimeTable airConClo( tableOnFile=true, tableName="airCon", fileName=ModelicaServices.ExternalReferences.loadResource( "modelica://Buildings/Resources/Data/Rooms/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"), columns=2:5) "Inlet air conditions for the connected closet (y[1] = m_flow, y[4] = T)"; Buildings.Fluid.Sources.MassFlowSource_T airInEle( use_m_flow_in=true, use_T_in=true, redeclare package Medium = Air, nPorts=1) "Inlet air conditions (from AHU) for the electrical room"; Buildings.Fluid.Sources.Boundary_pT airOutEle(nPorts=1, redeclare package Medium = Air) "Air outlet from the electrical room"; Buildings.Fluid.Sources.MassFlowSource_T airInClo( use_m_flow_in=true, use_T_in=true, redeclare package Medium = Air, nPorts=1) "Inlet air conditions (from AHU) for the closet"; Buildings.Fluid.Sources.Boundary_pT airOutClo( redeclare package Medium = Air, nPorts=1) "Air outlet from the closet"; Modelica.Blocks.Sources.CombiTimeTable intGaiClo( table=[0,0,0,0; 86400,0,0,0], tableOnFile=false) "Internal gain heat flow for the closet"; Modelica.Blocks.Sources.CombiTimeTable watCon4A2(tableOnFile=false, table=[0, 0.504,293.15; 86400,0.504,293.15]) "Inlet water conditions (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T watIn4A2( nPorts=1, use_m_flow_in=true, use_T_in=true, redeclare package Medium = Water) "Inlet water conditions (from central plant)"; 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) "Radiant slab serving the north-central section of cell X3A. Name is taken from drawing M3.02"; Buildings.Fluid.Sources.Boundary_pT watOut4A2(nPorts=1, redeclare package Medium = Water) "Water outlet"; Modelica.Blocks.Sources.CombiTimeTable watCon4A3(tableOnFile=false, table=[0, 0.504,293.15; 86400,0.504,293.15]) "Inlet water conditions (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T watIn4A3( nPorts=1, use_m_flow_in=true, use_T_in=true, redeclare package Medium = Water) "Inlet water conditions (from central plant)"; 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) "Radiant slab serving the south-central section of cell X3A. Name is taken from drawing M3.02"; Buildings.Fluid.Sources.Boundary_pT watOut4A3(nPorts=1, redeclare package Medium = Water) "Water outlet"; Modelica.Blocks.Sources.CombiTimeTable watCon4A4(tableOnFile=false, table=[0, 0.504,293.15; 86400,0.504,293.15]) "Inlet water conditions (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T watIn4A4( nPorts=1, use_m_flow_in=true, use_T_in=true, redeclare package Medium = Water) "Inlet water conditions (from central plant)"; 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) "Radiant slab serving the south section of cell X3A. Name is taken from drawing M3.02"; Buildings.Fluid.Sources.Boundary_pT watOut4A4(nPorts=1, redeclare package Medium = Water) "Water outlet"; 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[1], 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;

## Buildings.Rooms.FLEXLAB.Rooms.Examples.X3BWithRadiantFloor

Example model showing a use of X3B

### Information

This model demonstrates one potential simulation using the models available in Buildings.Rooms.FLEXLAB.Rooms.X3B. This model is nearly identical to Buildings.Rooms.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:

- The room models were changed from X3A models to X3B models.
- Buildings.Rooms.FLEXLAB.Rooms.X3B.TestCell has one external wall (modeled in datConExt) which was a dividing wall (modeled in datConBou) in Buildings.Rooms.FLEXLAB.Rooms.X3A.TestCell. Because of this, a few construction indexes changed. Connections were made according to the table in Buildings.Rooms.FLEXLAB.Rooms.X3B.

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

### Parameters

Type | Name | Default | Description
--- | --- | --- | ---
Generic | slaCon |  | Construction of the slab
PEX_RADTEST | pipe |  |

### Modelica definition

model X3BWithRadiantFloor "Example model showing a use of X3B" extends Modelica.Icons.Example; package Air = Buildings.Media.Air "Air model used in the example model"; package Water = Buildings.Media.Water "Water model used in the radiant slab loop"; Buildings.Rooms.FLEXLAB.Rooms.X3B.TestCell X3B( nPorts=2, redeclare package Medium = Air, linearizeRadiation=false, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial); Modelica.Blocks.Sources.CombiTimeTable intGai(table=[0,0,0,0; 86400,0,0,0], tableOnFile=false) "Internal gain heat flow (Radiant = 1, Convective = 2, Latent = 3)"; Modelica.Blocks.Sources.CombiTimeTable shaPos(table=[0,1; 86400,1], tableOnFile=false) "Position of the shade"; Modelica.Blocks.Sources.CombiTimeTable airCon(table=[0,0.1,293.15; 86400,0.1,293.15], tableOnFile=true, tableName="airCon", fileName=ModelicaServices.ExternalReferences.loadResource( "modelica://Buildings/Resources/Data/Rooms/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"), columns=2:5) "Inlet air conditions (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T airIn( use_m_flow_in=true, use_T_in=true, redeclare package Medium = Air, nPorts=1) "Inlet air conditions (from AHU) for X3A"; Buildings.Fluid.Sources.Boundary_pT airOut(nPorts=1, redeclare package Medium = Air) "Air outlet for X3A"; Buildings.HeatTransfer.Sources.PrescribedTemperature preT "Temperature of the ground"; 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)}) "Construction of the slab"; parameter Buildings.Fluid.Data.Pipes.PEX_RADTEST pipe(dIn=0.015875, dOut=0.01905); Buildings.BoundaryConditions.WeatherData.ReaderTMY3 weaDat(filNam= "/Resources/weatherdata/USA_CA_San.Francisco.Intl.AP.724940_TMY3.mos"); Buildings.HeatTransfer.Sources.PrescribedTemperature preT2; Buildings.Rooms.FLEXLAB.Rooms.X3B.Electrical ele(redeclare package Medium = Air, nPorts=2, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Model of the electrical room"; Buildings.Rooms.FLEXLAB.Rooms.X3B.Closet clo( redeclare package Medium = Air, nPorts=2, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Model of the closet"; Modelica.Blocks.Sources.CombiTimeTable TNei( tableOnFile=false, table=[0,293.15; 86400,293.15]) "Temperature of the neighboring test cell (y[1] = X3A)"; Modelica.Blocks.Sources.CombiTimeTable intGaiEle( table=[0,0,0,0; 86400,0,0,0], tableOnFile=false) "Internal gain heat flow for the electrical room"; Modelica.Blocks.Sources.CombiTimeTable airConEle( tableOnFile=true, tableName="airCon", fileName=ModelicaServices.ExternalReferences.loadResource( "modelica://Buildings/Resources/Data/Rooms/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"), columns=2:5) "Inlet air conditions for the connected electrical room (y[1] = m_flow, y[2] = T)"; Modelica.Blocks.Sources.CombiTimeTable airConClo( tableOnFile=true, tableName="airCon", fileName=ModelicaServices.ExternalReferences.loadResource( "modelica://Buildings/Resources/Data/Rooms/FLEXLAB/Rooms/Examples/X3AWithRadiantFloor.txt"), columns=2:5) "Inlet air conditions for the connected closet (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T airInEle( use_m_flow_in=true, use_T_in=true, redeclare package Medium = Air, nPorts=1) "Inlet air conditions (from AHU) for the electrical room"; Buildings.Fluid.Sources.Boundary_pT airOutEle(nPorts=1, redeclare package Medium = Air) "Air outlet from the electrical room"; Buildings.Fluid.Sources.MassFlowSource_T airInClo( use_m_flow_in=true, use_T_in=true, redeclare package Medium = Air, nPorts=1) "Inlet air conditions (from AHU) for the closet"; Buildings.Fluid.Sources.Boundary_pT airOutClo( redeclare package Medium = Air, nPorts=1) "Air outlet from the closet"; Modelica.Blocks.Sources.CombiTimeTable intGaiClo( table=[0,0,0,0; 86400,0,0,0], tableOnFile=false) "Internal gain heat flow for the closet"; Modelica.Blocks.Sources.CombiTimeTable watCon4B2(tableOnFile=false, table=[0, 0.504,293.15; 86400,0.504,293.15]) "Inlet water conditions (y[1] = m_flow, y[2] = T)"; Modelica.Blocks.Sources.CombiTimeTable watCon4B3(tableOnFile=false, table=[0, 0.504,293.15; 86400,0.504,293.15]) "Inlet water conditions (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T watIn4B3( nPorts=1, use_m_flow_in=true, use_T_in=true, redeclare package Medium = Water) "Inlet water conditions (from central plant)"; Modelica.Blocks.Sources.CombiTimeTable watCon4B4(tableOnFile=false, table=[0, 0.504,293.15; 86400,0.504,293.15]) "Inlet water conditions (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T watIn4B4( nPorts=1, use_m_flow_in=true, use_T_in=true, redeclare package Medium = Water) "Inlet water conditions (from central plant)"; 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) "Radiant slab serving the south section of cell X3B. Name is taken from drawing M3.02"; Buildings.Fluid.Sources.Boundary_pT watOut4B4(nPorts=1, redeclare package Medium = Water) "Water outlet"; 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) "Radiant slab serving the south-central section of cell X3B. Name is taken from drawing M3.02"; Buildings.Fluid.Sources.Boundary_pT watOut4B3(nPorts=1, redeclare package Medium = Water) "Water outlet"; Buildings.Fluid.Sources.MassFlowSource_T watIn4B2( nPorts=1, use_m_flow_in=true, use_T_in=true, redeclare package Medium = Water) "Inlet water conditions (from central plant)"; 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) "Radiant slab serving the north-central section of cell X3B. Name is taken from drawing M3.02"; Buildings.Fluid.Sources.Boundary_pT watOut4B2(nPorts=1, redeclare package Medium = Water) "Water outlet"; Modelica.Blocks.Sources.CombiTimeTable watCon4B1(tableOnFile=false, table=[0, 0.504,293.15; 86400,0.504,293.15]) "Inlet water conditions (y[1] = m_flow, y[2] = T)"; Buildings.Fluid.Sources.MassFlowSource_T watIn4B1( nPorts=1, use_m_flow_in=true, use_T_in=true, redeclare package Medium = Water) "Inlet water conditions (from central plant)"; 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) "Radiant slab serving the north side of cell X3B. Name is taken from drawing M3.02"; Buildings.Fluid.Sources.Boundary_pT watOut4B1(nPorts=1, redeclare package Medium = Water) "Water outlet"; 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;