This example models the step response of a radiant slab.
model StepResponse
"Model that tests the radiant slab"
extends Modelica.Icons.Example;
package Medium =
Buildings.Media.ConstantPropertyLiquidWater;
inner Modelica.Fluid.System system;
Sources.Boundary_ph sin(
redeclare package Medium = Medium, nPorts=1)
"Sink";
Sources.MassFlowSource_T sou(
redeclare package Medium = Medium,
use_m_flow_in=true,
T=298.15,
nPorts=1)
"Source";
Modelica.Blocks.Sources.Pulse pulse(
period=86400,
startTime=0,
amplitude=-m_flow_nominal,
offset=m_flow_nominal);
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab
sla(
m_flow_nominal=m_flow_nominal,
redeclare package Medium = Medium,
layers=layers,
iLayPip=1,
pipe=pipe,
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.Types.SystemType.Floor,
disPip=0.2,
A=A,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
"Slabe with embedded pipes";
parameter Modelica.SIunits.MassFlowRate m_flow_nominal=
0.167
"Nominal mass flow rate";
Modelica.Thermal.HeatTransfer.Sources.FixedTemperature TAirAbo(T=293.15)
"Air temperature above the slab";
Modelica.Thermal.HeatTransfer.Sources.FixedTemperature TRadAbo(T=293.15)
"Radiant temperature above the slab";
Modelica.Thermal.HeatTransfer.Sources.FixedTemperature TAirBel(T=293.15)
"Air temperature below the slab";
Modelica.Thermal.HeatTransfer.Sources.FixedTemperature TRadBel(T=293.15)
"Radiant temperature below the slab";
HeatTransfer.Convection.Interior conAbo(
A=A,
conMod=Buildings.HeatTransfer.Types.InteriorConvection.Temperature,
til=Buildings.HeatTransfer.Types.Tilt.Floor)
"Convective heat transfer above the slab";
parameter Modelica.SIunits.Area A=10
"Heat transfer area";
HeatTransfer.Convection.Interior conBel(
A=A,
conMod=Buildings.HeatTransfer.Types.InteriorConvection.Temperature,
til=Buildings.HeatTransfer.Types.Tilt.Ceiling)
"Convective heat transfer below the slab";
Modelica.Thermal.HeatTransfer.Components.BodyRadiation hRadAbo(Gr=A/(1/0.7 + 1
/0.7 - 1))
"Radiative heat transfer above the slab";
Modelica.Thermal.HeatTransfer.Components.BodyRadiation hRadBel(Gr=A/(1/0.7 + 1
/0.7 - 1))
"Radiative heat transfer below the slab";
parameter HeatTransfer.Data.OpaqueConstructions.Generic layers(nLay=3, material={
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.08,
k=1.13,
c=1000,
d=1400,
nSta=5),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.05,
k=0.04,
c=1400,
d=10),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.2,
k=1.8,
c=1100,
d=2400)})
"Material layers from surface a to b (8cm concrete, 5 cm insulation, 20 cm reinforced concrete)";
parameter Data.Pipes.PEX_RADTEST pipe
"Pipe material";
equation
connect(pulse.y, sou.m_flow_in);
connect(sou.ports[1], sla.port_a);
connect(sla.port_b, sin.ports[1]);
connect(TAirAbo.port, conAbo.fluid);
connect(TRadAbo.port, hRadAbo.port_a);
connect(TAirBel.port, conBel.fluid);
connect(TRadBel.port, hRadBel.port_a);
connect(conAbo.solid, sla.surf_a);
connect(hRadAbo.port_b, sla.surf_a);
connect(conBel.solid, sla.surf_b);
connect(hRadBel.port_b, sla.surf_b);
end StepResponse;
This example compares the results of two models of a single circuit that are arranged in
parallel, versus a model that directly implements two parallel circuits.
Both configurations have the same mass flow rate and temperatures.
For simplicity, a combined convective and radiative resistance
which is independent of the temperature difference has been used.
The model is exposed to a step change in pressure, which causes forward and reverse
flow.
model SingleCircuitMultipleCircuit
"Model that tests the radiant slab"
extends Modelica.Icons.Example;
package Medium =
Buildings.Media.ConstantPropertyLiquidWater;
inner Modelica.Fluid.System system;
Sources.Boundary_ph sin(
redeclare package Medium = Medium, nPorts=3,
p(displayUnit="Pa") = 300000)
"Sink";
Modelica.Blocks.Sources.Pulse pulse(
startTime=0,
amplitude=50*400,
offset=300000 - 50*200,
width=50,
period=86400/2);
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla1(
m_flow_nominal=m_flow_nominal,
redeclare package Medium = Medium,
layers=layers,
iLayPip=1,
pipe=pipe,
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.Types.SystemType.Floor,
disPip=0.2,
A=A,
nSeg=nSeg,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
"Slabe with embedded pipes";
parameter Modelica.SIunits.MassFlowRate m_flow_nominal=
0.167
"Nominal mass flow rate for each circuit";
Modelica.Thermal.HeatTransfer.Sources.FixedTemperature TAbo(T=293.15)
"Air temperature above the slab";
Modelica.Thermal.HeatTransfer.Sources.FixedTemperature TBel(T=293.15)
"Radiant temperature below the slab";
Modelica.Thermal.HeatTransfer.Components.ThermalConductor conAbo1(G=20*A)
"Combined convection and radiation resistance above the slab";
parameter Modelica.SIunits.Area A=10
"Heat transfer area for each circuit";
Modelica.Thermal.HeatTransfer.Components.ThermalConductor conBel1(G=20*A)
"Combined convection and radiation resistance below the slab";
parameter HeatTransfer.Data.OpaqueConstructions.Generic layers(nLay=3, material={
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.08,
k=1.13,
c=1000,
d=1400,
nSta=5),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.05,
k=0.04,
c=1400,
d=10),
Buildings.HeatTransfer.Data.Solids.Generic(
x=0.2,
k=1.8,
c=1100,
d=2400)})
"Material layers from surface a to b (8cm concrete, 5 cm insulation, 20 cm reinforced concrete)";
parameter Data.Pipes.PEX_RADTEST pipe
"Pipe material";
Modelica.Thermal.HeatTransfer.Components.ThermalConductor conAbo2(G=20*A)
"Combined convection and radiation resistance above the slab";
Buildings.Fluid.HeatExchangers.RadiantSlabs.SingleCircuitSlab sla2(
m_flow_nominal=m_flow_nominal,
redeclare package Medium = Medium,
layers=layers,
iLayPip=1,
pipe=pipe,
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.Types.SystemType.Floor,
disPip=0.2,
A=A,
nSeg=nSeg,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
"Slabe with embedded pipes";
Modelica.Thermal.HeatTransfer.Components.ThermalConductor conBel2(G=20*A)
"Combined convection and radiation resistance below the slab";
Modelica.Thermal.HeatTransfer.Components.ThermalConductor conBel3(G=nCir*20*A)
"Combined convection and radiation resistance below the slab";
ParallelCircuitsSlab sla3(
redeclare package Medium = Medium,
layers=layers,
iLayPip=1,
pipe=pipe,
sysTyp=Buildings.Fluid.HeatExchangers.RadiantSlabs.BaseClasses.Types.SystemType.Floor,
disPip=0.2,
nSeg=nSeg,
nCir=nCir,
A=nCir*A,
m_flow_nominal=nCir*m_flow_nominal,
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
"Slabe with embedded pipes";
Modelica.Thermal.HeatTransfer.Components.ThermalConductor conAbo3(G=nCir*20*A)
"Combined convection and radiation resistance above the slab";
Sensors.TemperatureTwoPort senTem1(
redeclare package Medium = Medium,
m_flow_nominal=m_flow_nominal/2)
"Temperature sensor";
Sensors.TemperatureTwoPort senTem2(
redeclare package Medium = Medium,
m_flow_nominal=m_flow_nominal/2)
"Temperature sensor";
Sensors.TemperatureTwoPort senTem3(
redeclare package Medium = Medium,
m_flow_nominal=nCir*m_flow_nominal)
"Temperature sensor";
parameter Integer nSeg=3
"Number of volume segments";
Sources.Boundary_pT sou(
redeclare package Medium = Medium,
nPorts=3,
use_p_in=true,
T=313.15)
"Source";
parameter Integer nCir=2
"Number of parallel circuits for slab 3";
equation
connect(TBel.port, conBel1.port_a);
connect(conBel1.port_b, sla1.surf_b);
connect(sla1.surf_a, conAbo1.port_a);
connect(TAbo.port, conAbo1.port_b);
connect(TAbo.port, conAbo2.port_b);
connect(conAbo2.port_a, sla2.surf_a);
connect(TBel.port, conBel2.port_a);
connect(TBel.port, conBel3.port_a);
connect(TAbo.port, conAbo3.port_b);
connect(conAbo3.port_a, sla3.surf_a);
connect(conBel3.port_b, sla3.surf_b);
connect(sla1.port_b, senTem1.port_a);
connect(sla2.port_b, senTem2.port_a);
connect(sla3.port_b, senTem3.port_a);
connect(senTem1.port_b, sin.ports[1]);
connect(senTem2.port_b, sin.ports[2]);
connect(senTem3.port_b, sin.ports[3]);
connect(conBel2.port_b, sla2.surf_b);
connect(pulse.y, sou.p_in);
connect(sou.ports[1], sla1.port_a);
connect(sou.ports[2], sla2.port_a);
connect(sou.ports[3], sla3.port_a);
end SingleCircuitMultipleCircuit;