diff --git a/IDEAS/Buildings/Components/BoundaryWall.mo b/IDEAS/Buildings/Components/BoundaryWall.mo
index e062482bc..0cccb8adb 100644
--- a/IDEAS/Buildings/Components/BoundaryWall.mo
+++ b/IDEAS/Buildings/Components/BoundaryWall.mo
@@ -40,18 +40,24 @@ model BoundaryWall "Opaque wall with optional prescribed heat flow rate or tempe
"Constant block for temperature"
annotation (Placement(transformation(extent={{-110,32},{-100,42}})));
- Fluid.Sources.MassFlowSource_T boundary1(
+ IDEAS.Fluid.Sources.MassFlowSource_T boundary1(
redeclare package Medium = Medium,
nPorts=1,
final m_flow=1e-10)
if sim.interZonalAirFlowType <> IDEAS.BoundaryConditions.Types.InterZonalAirFlow.None
annotation (Placement(transformation(extent={{-28,-40},{-8,-20}})));
- Fluid.Sources.MassFlowSource_T boundary2(
+ IDEAS.Fluid.Sources.MassFlowSource_T boundary2(
redeclare package Medium = Medium,
nPorts=1,
final m_flow=1e-10)
if sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts
annotation (Placement(transformation(extent={{-28,-76},{-8,-56}})));
+ IDEAS.Fluid.Sources.MassFlowSource_T boundary3(
+ redeclare package Medium = Medium,
+ m_flow = 1e-10,
+ nPorts = 1)
+ if sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts annotation(
+ Placement(transformation(origin = {0, -14}, extent = {{-28, -76}, {-8, -56}})));
protected
final parameter Real U_value=1/(1/8 + sum(constructionType.mats.R) + 1/8)
"Wall U-value";
@@ -107,50 +113,12 @@ equation
{42,-30},{42,19.91},{56.09,19.91}}, color={0,127,255}));
connect(boundary2.ports[1], propsBusInt.port_2) annotation (Line(points={{-8,-66},
{44,-66},{44,19.91},{56.09,19.91}}, color={0,127,255}));
- annotation (
- Diagram(coordinateSystem(preserveAspectRatio=false,extent={{-100,-100},{100,
- 100}})),
- Icon(coordinateSystem(preserveAspectRatio=false,extent={{-60,-100},{60,100}}),
- graphics={
- Rectangle(
- extent={{-50,-90},{50,-70}},
- pattern=LinePattern.None,
- lineColor={0,0,0},
- fillColor={255,255,255},
- fillPattern=FillPattern.Solid),
- Rectangle(
- extent={{-50,80},{50,100}},
- pattern=LinePattern.None,
- lineColor={0,0,0},
- fillColor={255,255,255},
- fillPattern=FillPattern.Solid),
- Line(
- points={{-50,80},{50,80}},
- color={175,175,175}),
- Line(
- points={{-50,-70},{50,-70}},
- color={175,175,175}),
- Line(
- points={{-50,-90},{50,-90}},
- color={175,175,175}),
- Line(
- points={{-50,100},{50,100}},
- color={175,175,175}),
- Rectangle(
- extent={{-10,80},{10,-70}},
- fillColor={175,175,175},
- fillPattern=FillPattern.Backward,
- pattern=LinePattern.None),
- Line(
- points={{-10,80},{-10,-70}},
- smooth=Smooth.None,
- color={175,175,175}),
- Line(
- points={{10,80},{10,-70}},
- smooth=Smooth.None,
- color={0,0,0},
- thickness=0.5)}),
- Documentation(info="
+ connect(boundary3.ports[1], propsBusInt.port_3) annotation(
+ Line(points = {{-8, -80}, {56, -80}, {56, 20}}, color = {0, 127, 255}));
+ annotation(
+ Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}})),
+ Icon(coordinateSystem(preserveAspectRatio = false, extent = {{-60, -100}, {60, 100}}), graphics = {Rectangle(fillColor = {255, 255, 255}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-50, -90}, {50, -70}}), Rectangle(fillColor = {255, 255, 255}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-50, 80}, {50, 100}}), Line(points = {{-50, 80}, {50, 80}}, color = {175, 175, 175}), Line(points = {{-50, -70}, {50, -70}}, color = {175, 175, 175}), Line(points = {{-50, -90}, {50, -90}}, color = {175, 175, 175}), Line(points = {{-50, 100}, {50, 100}}, color = {175, 175, 175}), Rectangle(fillColor = {175, 175, 175}, pattern = LinePattern.None, fillPattern = FillPattern.Backward, extent = {{-10, 80}, {10, -70}}), Line(points = {{-10, 80}, {-10, -70}}, color = {175, 175, 175}), Line(points = {{10, 80}, {10, -70}}, thickness = 0.5)}),
+ Documentation(info = "
This is a wall model that should be used
to simulate a wall between a zone and a prescribed temperature or prescribed heat flow rate boundary condition.
@@ -171,9 +139,13 @@ to specify a fixed boundary condition temperature.
It is not allowed to enabled multiple of these three options.
If all are disabled then an adiabatic boundary (Q_flow=0
) is used.
-", revisions="
+", revisions = "
"));
-end BoundaryWall;
+end BoundaryWall;
\ No newline at end of file
diff --git a/IDEAS/Buildings/Components/Interfaces/DummyConnection.mo b/IDEAS/Buildings/Components/Interfaces/DummyConnection.mo
index d53f49a3a..96152061e 100644
--- a/IDEAS/Buildings/Components/Interfaces/DummyConnection.mo
+++ b/IDEAS/Buildings/Components/Interfaces/DummyConnection.mo
@@ -59,7 +59,7 @@ model DummyConnection "Source generator/sink for propsbus"
annotation (Placement(transformation(extent={{-80,-130},{-60,-110}})));
Modelica.Blocks.Sources.Constant hZone(k = 0.88) if isZone "Zone height" annotation(
Placement(visible = true, transformation(origin = {-42, -16}, extent = {{0, 80}, {20, 100}}, rotation = 0)));
- IDEAS.Fluid.Sources.Boundary_pT bou(redeclare package Medium= IDEAS.Media.Air, nPorts = 2) if isZone annotation(
+ IDEAS.Fluid.Sources.Boundary_pT bou(redeclare package Medium= IDEAS.Media.Air, nPorts = 3) if isZone annotation(
Placement(visible = true, transformation(origin = {-30, 40}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
connect(prescribedHeatFlow[1].port, zoneBus.surfCon) annotation (Line(
@@ -141,6 +141,8 @@ equation
Line(points = {{-20, 74}, {100, 74}, {100, -2}}, color = {0, 0, 127}));
connect(hZone.y, zoneBus.hfloor) annotation(
Line(points = {{-20, 74}, {100, 74}, {100, -2}}, color = {0, 0, 127}));
+ connect(bou.ports[3], zoneBus.port_3) annotation(
+ Line(points = {{-20, 40}, {100, 40}, {100, -2}}, color = {255, 204, 51}));
connect(bou.ports[2], zoneBus.port_2) annotation(
Line(points = {{-20, 40}, {100, 40}, {100, -2}}, color = {255, 204, 51}));
connect(bou.ports[1], zoneBus.port_1) annotation(
diff --git a/IDEAS/Buildings/Components/Interfaces/PartialZone.mo b/IDEAS/Buildings/Components/Interfaces/PartialZone.mo
index 6d9cd0e99..e36da8b25 100644
--- a/IDEAS/Buildings/Components/Interfaces/PartialZone.mo
+++ b/IDEAS/Buildings/Components/Interfaces/PartialZone.mo
@@ -198,7 +198,7 @@ protected
parameter Integer n_ports_interzonal=
if sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.None then 0
elseif sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.OnePort then nSurf
- else nSurf*2
+ else nSurf*3
"Number of fluid ports for interzonal air flow modelling"
annotation(Evaluate=true);
IDEAS.Buildings.Components.Interfaces.ZoneBus[nSurf] propsBusInt(
@@ -500,6 +500,9 @@ end for;
if sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts then
connect(airModel.ports[interzonalAirFlow.nPorts + 1 + nSurf:interzonalAirFlow.nPorts + nSurf*2], propsBusInt[1:nSurf].port_2) annotation (Line(points={{-30,
40},{-30,39.9},{-80.1,39.9}}, color={0,127,255}));
+ connect(airModel.ports[interzonalAirFlow.nPorts + 1 + nSurf*2:interzonalAirFlow.nPorts + nSurf*3], propsBusInt[1:nSurf].port_3) annotation (Line(points={{-30,
+ 40},{-30,39.9},{-80.1,39.9}}, color={0,127,255}));
+
end if;
connect(setq50.Area, propsBusInt.area) annotation (Line(points={{-60.6,-88.6},
{-60.6,-89.3},{-80.1,-89.3},{-80.1,39.9}}, color={0,0,127}));
@@ -548,6 +551,10 @@ end for;
", revisions="
-
+Februari 18, 2024, by Filip Jorissen:
+Modifications for supporting trickle vents and interzonal airflow.
+
+-
July 25, 2023, by Filip Jorissen:
Added conditional inputs for injecting water or CO2.
Added output phi for the relative humidity.
diff --git a/IDEAS/Buildings/Components/Interfaces/ZoneBus.mo b/IDEAS/Buildings/Components/Interfaces/ZoneBus.mo
index d915c17f4..821c80ae2 100644
--- a/IDEAS/Buildings/Components/Interfaces/ZoneBus.mo
+++ b/IDEAS/Buildings/Components/Interfaces/ZoneBus.mo
@@ -34,6 +34,10 @@ expandable connector ZoneBus
redeclare package Medium = Medium)
if use_port_2
"Port for detailed interzonal air flow";
+ Modelica.Fluid.Interfaces.FluidPort_a port_3(
+ redeclare package Medium = Medium)
+ if use_port_2
+ "Port for trickle vents etc. when using detailed interzonal air flow";
IDEAS.Buildings.Components.BaseClasses.ConservationOfEnergy.EnergyPort E
"Internal energy in model" annotation ();
IDEAS.Buildings.Components.Interfaces.RealConnector inc(
@@ -61,6 +65,10 @@ heat and information between a zone and a surface.
", revisions="
-
+Februari 18, 2024, by Filip Jorissen:
+Modifications for supporting trickle vents and interzonal airflow.
+
+-
April 20, 2023 by Jelger Jansen:
Make the connector expandable to avoid (pedantic check) warnings in Dymola 2022x.
See issue #1317
diff --git a/IDEAS/Buildings/Components/Interfaces/ZoneBusVarMultiplicator.mo b/IDEAS/Buildings/Components/Interfaces/ZoneBusVarMultiplicator.mo
index 3e37fbfaf..107f9f8e4 100644
--- a/IDEAS/Buildings/Components/Interfaces/ZoneBusVarMultiplicator.mo
+++ b/IDEAS/Buildings/Components/Interfaces/ZoneBusVarMultiplicator.mo
@@ -41,6 +41,11 @@ protected
if sim.interZonalAirFlowType <> IDEAS.BoundaryConditions.Types.InterZonalAirFlow.None
"Mass flow rate multiplier for port 1"
annotation (Placement(transformation(extent={{-10,-170},{10,-150}})));
+ IDEAS.Fluid.BaseClasses.MassFlowRateMultiplier massFlowRateMultiplier3(
+ redeclare package Medium = Medium, final k=k)
+ if sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts
+ "Mass flow rate multiplier for port 3"
+ annotation (Placement(transformation(origin = {0, -208}, extent = {{-10, -200}, {10, -180}})));
Modelica.Blocks.Math.Gain QTra_desgin(k=k) "Design heat flow rate"
annotation (Placement(transformation(extent={{-10,178},{10,198}})));
Modelica.Blocks.Math.Gain area(k=k) "Heat exchange surface area"
@@ -175,6 +180,10 @@ equation
-374},{100,-0.1},{100.1,-0.1}}, color={0,0,127}));
connect(hFloor.y, propsBus_a.hfloor) annotation (Line(points={{-13,-374},{
-100,-374},{-100,0.1},{-100.1,0.1}}, color={0,0,127}));
+ connect(massFlowRateMultiplier3.port_a, propsBus_a.port_3) annotation(
+ Line(points = {{-10, -398}, {-100, -398}, {-100, 0}}, color = {0, 127, 255}));
+ connect(massFlowRateMultiplier3.port_b, propsBus_b.port_3) annotation(
+ Line(points = {{10, -398}, {100, -398}, {100, 0}}, color = {0, 127, 255}));
annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-180},
{100,200}}), graphics={
Polygon(
@@ -195,10 +204,14 @@ equation
fillColor={255,255,255},
fillPattern=FillPattern.Solid,
textString="%name")}), Diagram(
- coordinateSystem(preserveAspectRatio=false, extent={{-100,-180},{100,200}})),
+ coordinateSystem(preserveAspectRatio=false, extent={{-120,200},{120,-380}})),
Documentation(revisions="
-
+Februari 18, 2024, by Filip Jorissen:
+Modifications for supporting trickle vents and interzonal airflow.
+
+-
August 10, 2020, by Filip Jorissen:
Modifications for supporting interzonal airflow.
See
@@ -216,4 +229,4 @@ First implementation.
"));
-end ZoneBusVarMultiplicator;
+end ZoneBusVarMultiplicator;
\ No newline at end of file
diff --git a/IDEAS/Buildings/Components/InternalWall.mo b/IDEAS/Buildings/Components/InternalWall.mo
index 4b62b1aec..bd3c0291c 100644
--- a/IDEAS/Buildings/Components/InternalWall.mo
+++ b/IDEAS/Buildings/Components/InternalWall.mo
@@ -89,6 +89,18 @@ model InternalWall "interior opaque wall between two zones"
Modelica.Blocks.Interfaces.RealInput y_doo(min = 0, max = 1) if use_y_doo and useDooOpe
"Control input for the door" annotation(
Placement(visible = true, transformation(origin = {-80, 90}, extent = {{-20, -20}, {20, 20}}, rotation = 0), iconTransformation(origin = {-64, 88}, extent = {{-20, -20}, {20, 20}}, rotation = 0)));
+ IDEAS.Fluid.Sources.MassFlowSource_T boundary3_a(
+ redeclare package Medium = Medium,
+ m_flow = 1e-10,
+ nPorts = 1) if sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts
+ "Boundary for bus a" annotation(
+ Placement(transformation(origin = {48, -4}, extent = {{-28, -76}, {-8, -56}})));
+ IDEAS.Fluid.Sources.MassFlowSource_T boundary3_b(
+ redeclare package Medium = Medium,
+ m_flow = 1e-10,
+ nPorts = 1) if sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts
+ "Boundary for bus b" annotation(
+ Placement(transformation(origin = {-48, -4}, extent = {{28, -76}, {8, -56}}, rotation = -0)));
protected
parameter Real Ope_hvert = sin(inc)*h "Vertical opening height, height of the surface projected to the vertical, 0 for openings in horizontal floors and ceilings" annotation (
Dialog(enable=hasCavity,group="Cavity or open door"));
@@ -176,6 +188,10 @@ equation
end if;
connect(y_doo, crackOrOperableDoor.y) annotation(
Line(points = {{-80, 90}, {-52, 90}, {-52, -52}, {20, -52}}, color = {0, 0, 127}));
+ connect(boundary3_b.ports[1], propsBus_b.port_3) annotation(
+ Line(points = {{-40, -70}, {-52, -70}, {-52, 20}, {-100, 20}}, color = {0, 127, 255}));
+ connect(boundary3_a.ports[1], propsBusInt.port_3) annotation(
+ Line(points = {{40, -70}, {56, -70}, {56, 20}}, color = {0, 127, 255}));
annotation(
Icon(coordinateSystem(preserveAspectRatio = false, extent = {{-60, -100}, {60, 100}}), graphics = {Rectangle(fillColor = {255, 255, 255}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-52, -90}, {48, -70}}), Rectangle(fillColor = {255, 255, 255}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-50, 80}, {50, 100}}), Rectangle(fillColor = {175, 175, 175}, pattern = LinePattern.None, fillPattern = FillPattern.Backward, extent = {{-10, 80}, {10, -70}}), Line(points = {{-50, 80}, {50, 80}}, color = {175, 175, 175}), Line(points = {{-50, -70}, {50, -70}}, color = {175, 175, 175}), Line(points = {{-50, -90}, {50, -90}}, color = {175, 175, 175}), Line(points = {{-50, 100}, {50, 100}}, color = {175, 175, 175}), Line(points = {{-10, 80}, {-10, -70}}, thickness = 0.5), Line(points = {{10, 80}, {10, -70}}, thickness = 0.5)}),
Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-60, -100}, {60, 100}})),
@@ -203,6 +219,10 @@ We assume that the value of A
excludes the surface area of the cavi
", revisions = "
-
+Februari 18, 2024, by Filip Jorissen:
+Modifications for supporting trickle vents and interzonal airflow.
+
+-
July 9, 2023, by Filip Jorissen:
Replaced door by operable door.
diff --git a/IDEAS/Buildings/Components/OuterWall.mo b/IDEAS/Buildings/Components/OuterWall.mo
index 4d8985719..96cd945cf 100644
--- a/IDEAS/Buildings/Components/OuterWall.mo
+++ b/IDEAS/Buildings/Components/OuterWall.mo
@@ -117,6 +117,14 @@ protected
if sim.interZonalAirFlowType <> IDEAS.BoundaryConditions.Types.InterZonalAirFlow.None
"Outside air model"
annotation (Placement(transformation(extent={{-100,-60},{-80,-40}})));
+
+ IDEAS.Fluid.Sources.MassFlowSource_T boundary3(
+ redeclare package Medium = Medium,
+ m_flow = 1e-10,
+ nPorts = 1) if sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts
+ "Boundary for bus a" annotation(
+ Placement(transformation(origin = {48, -4}, extent = {{-28, -76}, {-8, -56}})));
+
initial equation
QTra_design =U_value*A*(273.15 + 21 - Tdes.y);
@@ -201,6 +209,8 @@ equation
connect(crackOrOperableDoor.port_b2, outsideAir.ports[2]) annotation (Line(points={{20,-60},{16,
-60},{16,-50},{-80,-50}}, color={0,127,255}));
end if;
+ connect(boundary3.ports[1], propsBusInt.port_3) annotation(
+ Line(points = {{40, -70}, {56, -70}, {56, 20}}, color = {0, 127, 255}));
annotation (
Icon(coordinateSystem(preserveAspectRatio=true, extent={{-60,-100},{60,100}}),
graphics={
@@ -294,6 +304,10 @@ The correct shading parameter values should then be passed through the redeclara
", revisions="
"));
-end OuterWall;
+end OuterWall;
\ No newline at end of file
diff --git a/IDEAS/Buildings/Components/SlabOnGround.mo b/IDEAS/Buildings/Components/SlabOnGround.mo
index 8224732ec..39a91cc3e 100644
--- a/IDEAS/Buildings/Components/SlabOnGround.mo
+++ b/IDEAS/Buildings/Components/SlabOnGround.mo
@@ -44,7 +44,7 @@ model SlabOnGround "opaque floor on ground slab"
nPorts=1,
final m_flow=1e-10)
if sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts
- annotation (Placement(transformation(extent={{-28,-76},{-8,-56}})));
+ annotation (Placement(transformation(origin = {0, 16}, extent = {{-28, -76}, {-8, -56}})));
protected
final parameter IDEAS.Buildings.Data.Materials.Ground ground1(final d=0.50);
final parameter IDEAS.Buildings.Data.Materials.Ground ground2(final d=0.33);
@@ -91,6 +91,14 @@ protected
outputAngles=sim.outputAngles)
"Weather data bus connectable to weaBus connector from Buildings Library"
annotation (Placement(transformation(extent={{46,-90},{66,-70}})));
+ IDEAS.Fluid.Sources.MassFlowSource_T boundary3(
+ redeclare package Medium = Medium,
+ m_flow = 1e-10,
+ nPorts = 1) if sim.interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts
+ "Boundary for bus a" annotation(
+ Placement(transformation(origin = {0, -4}, extent = {{-28, -76}, {-8, -56}})));
+
+
equation
connect(periodicFlow.port, layMul.port_b) annotation (Line(points={{-20,22},{
@@ -115,8 +123,10 @@ equation
horizontalAlignment=TextAlignment.Left));
connect(boundary1.ports[1], propsBusInt.port_1) annotation (Line(points={{-8,-30},
{42,-30},{42,19.91},{56.09,19.91}}, color={0,127,255}));
- connect(boundary2.ports[1], propsBusInt.port_2) annotation (Line(points={{-8,-66},
- {44,-66},{44,19.91},{56.09,19.91}}, color={0,127,255}));
+ connect(boundary2.ports[1], propsBusInt.port_2) annotation (Line(points={{-8,-50},
+ {44,-50},{44,19.91},{56.09,19.91}}, color={0,127,255}));
+ connect(boundary3.ports[1], propsBusInt.port_3) annotation(
+ Line(points = {{-8, -70}, {56, -70}, {56, 20}}, color = {0, 127, 255}));
annotation (
Icon(coordinateSystem(preserveAspectRatio=true, extent={{-60,-100},{60,100}}),
graphics={
@@ -176,6 +186,10 @@ zone that is surrounded by air at the ambient temperature.