diff --git a/IDEAS/Airflow/Multizone/BaseClasses/DoorDiscretized.mo b/IDEAS/Airflow/Multizone/BaseClasses/DoorDiscretized.mo
index cdc798424..b47848f84 100644
--- a/IDEAS/Airflow/Multizone/BaseClasses/DoorDiscretized.mo
+++ b/IDEAS/Airflow/Multizone/BaseClasses/DoorDiscretized.mo
@@ -118,6 +118,10 @@ using the model for a door that can be open or closed.
revisions="
-
+October 29, 2024, by Klaas De Jonge:
+Unprotected dh
and changed prefixes of dh
,hAg
and hBg
to input
.This is for #1935.
+
+-
January 8, 2019, by Michael Wetter:
Moved parameter CD
from
diff --git a/IDEAS/Airflow/Multizone/CrackOrOperableDoor.mo b/IDEAS/Airflow/Multizone/CrackOrOperableDoor.mo
index ce120a39c..de5c583d8 100644
--- a/IDEAS/Airflow/Multizone/CrackOrOperableDoor.mo
+++ b/IDEAS/Airflow/Multizone/CrackOrOperableDoor.mo
@@ -1,6 +1,6 @@
within IDEAS.Airflow.Multizone;
model CrackOrOperableDoor
- "Door model using discretization along height coordinate"
+ "Infiltration or large opening model used for the embeded airflow implementation in IDEAS.Buildings.Components"
extends IDEAS.Fluid.Interfaces.PartialFourPortInterface(
redeclare final package Medium1 = Medium,
redeclare final package Medium2 = Medium,
@@ -99,14 +99,34 @@ model CrackOrOperableDoor
m = if openDoorOnePort and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.OnePort then mOpe else mClo,
useDefaultProperties = false) if not useDoor or (useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.OnePort) "Pressure drop equation" annotation (
Placement(visible = true, transformation(origin = {0, 60}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
- IDEAS.Airflow.Multizone.ReversibleDensityColumn col_b1(redeclare package Medium = Medium, h=h_b1) if interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts and not useDoor "Column for port b1" annotation (
- Placement(visible = true, transformation(origin = {0, 70}, extent = {{50, -10}, {70, 10}}, rotation = 0)));
- IDEAS.Airflow.Multizone.ReversibleDensityColumn col_a1(redeclare package Medium = Medium, h=h_a1) if interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts and not useDoor "Column for port a1" annotation (
- Placement(visible = true, transformation(origin = {0, 70}, extent = {{-70, -10}, {-50, 10}}, rotation = 0)));
- IDEAS.Airflow.Multizone.ReversibleDensityColumn col_b2(redeclare package Medium = Medium, h=h_b2) if interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts and not useDoor"Column for port b2" annotation (
- Placement(visible = true, transformation(origin = {0, -50}, extent = {{-70, -10}, {-50, 10}}, rotation = 0)));
- IDEAS.Airflow.Multizone.ReversibleDensityColumn col_a2(redeclare package Medium = Medium, h=h_a2) if interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts and not useDoor "Column for port a2" annotation (
- Placement(visible = true, transformation(origin = {0, -50}, extent = {{50, -10}, {70, 10}}, rotation = 0)));
+ IDEAS.Airflow.Multizone.MediumColumnReversible col_b1(redeclare package
+ Medium = Medium, h=h_b1) if interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts
+ and not useDoor "Column for port b1" annotation (Placement(visible=true,
+ transformation(
+ origin={0,70},
+ extent={{50,-10},{70,10}},
+ rotation=0)));
+ IDEAS.Airflow.Multizone.MediumColumnReversible col_a1(redeclare package
+ Medium = Medium, h=h_a1) if interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts
+ and not useDoor "Column for port a1" annotation (Placement(visible=true,
+ transformation(
+ origin={0,70},
+ extent={{-70,-10},{-50,10}},
+ rotation=0)));
+ IDEAS.Airflow.Multizone.MediumColumnReversible col_b2(redeclare package
+ Medium = Medium, h=h_b2) if interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts
+ and not useDoor "Column for port b2" annotation (Placement(visible=true,
+ transformation(
+ origin={0,-50},
+ extent={{-70,-10},{-50,10}},
+ rotation=0)));
+ IDEAS.Airflow.Multizone.MediumColumnReversible col_a2(redeclare package
+ Medium = Medium, h=h_a2) if interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts
+ and not useDoor "Column for port a2" annotation (Placement(visible=true,
+ transformation(
+ origin={0,-50},
+ extent={{50,-10},{70,10}},
+ rotation=0)));
IDEAS.Airflow.Multizone.Point_m_flow point_m_flow2(
redeclare package Medium = Medium,
dpMea_nominal = dpCloRat,
@@ -169,7 +189,7 @@ equation
connect(col_a1.port_b, port_a1) annotation (
Line(points = {{-60, 60}, {-100, 60}}, color = {0, 127, 255}));
connect(y, doo.y) annotation (
- Line(points={{-110,0},{-11,0}}, color = {0, 0, 127}));
+ Line(points={{-110,0},{-13,0}}, color = {0, 0, 127}));
connect(bou.ports[1], port_a2) annotation (
Line(points={{-1,-80},{100,-80},{100,-60}}, color = {0, 127, 255}));
if interZonalAirFlowType <> IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts then
@@ -179,17 +199,17 @@ equation
Line(points = {{10, 60}, {100, 60}}, color = {0, 127, 255}));
end if;
connect(constOne.y, doo.y) annotation (
- Line(points={{-47.4,-14},{-32,-14},{-32,0},{-11,0}}, color = {0, 0, 127}));
+ Line(points={{-47.4,-14},{-32,-14},{-32,0},{-13,0}}, color = {0, 0, 127}));
connect(bou.ports[2], port_b2) annotation (
Line(points={{1,-80},{-100,-80},{-100,-60}}, color = {0, 127, 255}));
- connect(doo.port_a1, port_a1) annotation(
- Line(points = {{-10, 6}, {-30, 6}, {-30, 60}, {-100, 60}}, color = {0, 127, 255}));
- connect(doo.port_b1, port_b1) annotation(
- Line(points = {{10, 6}, {30, 6}, {30, 60}, {100, 60}}, color = {0, 127, 255}));
- connect(doo.port_b2, port_b2) annotation(
- Line(points = {{-10, -6}, {-20, -6}, {-20, -34}, {-100, -34}, {-100, -60}}, color = {0, 127, 255}));
- connect(doo.port_a2, port_a2) annotation(
- Line(points = {{10, -6}, {20, -6}, {20, -34}, {100, -34}, {100, -60}}, color = {0, 127, 255}));
+ connect(doo.port_a1, port_a1) annotation (
+ Line(points={{-12,6},{-30,6},{-30,60},{-100,60}}, color = {0, 127, 255}));
+ connect(doo.port_b1, port_b1) annotation (
+ Line(points={{8,6},{30,6},{30,60},{100,60}}, color = {0, 127, 255}));
+ connect(doo.port_b2, port_b2) annotation (
+ Line(points={{-12,-6},{-20,-6},{-20,-34},{-100,-34},{-100,-60}}, color = {0, 127, 255}));
+ connect(doo.port_a2, port_a2) annotation (
+ Line(points={{8,-6},{20,-6},{20,-34},{100,-34},{100,-60}}, color = {0, 127, 255}));
annotation(Documentation(info="
@@ -203,6 +223,10 @@ There is no support for open doors when using only a single fluid port.
revisions="
-
+October 30, 2024, by Klaas De Jonge:
+Changes for column heights,used default density and transition point to laminar flow at low dp.
+
+-
October 20, 2023 by Filip Jorissen:
First documented version.
@@ -210,4 +234,4 @@ First documented version.
"),
Diagram,
Icon(graphics={ Polygon(lineColor = {0, 0, 255}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, points = {{-30, -10}, {-16, -8}, {-16, -14}, {-30, -16}, {-30, -10}}), Line(points = {{-54, 48}, {-36, 48}}), Line(points = {{-54, 20}, {-36, 20}}), Rectangle(fillColor = {255, 255, 255}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-100, 100}, {100, -100}}), Line(points = {{-54, -58}, {-36, -58}}), Rectangle(lineColor = {0, 0, 255}, fillColor = {255, 128, 0}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-46, -16}, {-20, -20}}), Rectangle(lineColor = {0, 0, 255}, fillColor = {85, 75, 55}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-60, 80}, {60, -84}}), Rectangle(fillColor = {215, 215, 215}, fillPattern = FillPattern.Solid, extent = {{-54, 72}, {56, -84}}), Polygon(fillColor = {95, 95, 95}, fillPattern = FillPattern.Solid, points = {{56, 72}, {-36, 66}, {-36, -90}, {56, -84}, {56, 72}}), Rectangle(lineColor = {0, 0, 255}, fillColor = {255, 128, 0}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-100, 2}, {-46, -2}}), Polygon(visible = false, origin = {75, 50}, rotation = 360, lineColor = {0, 128, 255}, fillColor = {0, 128, 255}, fillPattern = FillPattern.Solid, points = {{-5, 10}, {25, 10}, {-5, -10}, {-5, 10}}), Text(textColor = {0, 0, 127}, extent = {{-118, 34}, {-98, 16}}, textString = "y"), Line(points = {{-54, -6}, {-36, -6}}), Line(points = {{-54, -32}, {-36, -32}}), Polygon(visible = false, origin = {-79, -50}, rotation = 360, lineColor = {0, 128, 255}, fillColor = {0, 128, 255}, fillPattern = FillPattern.Solid, points = {{10, 10}, {-20, -10}, {10, -10}, {10, 10}}), Rectangle(lineColor = {0, 0, 255}, fillColor = {255, 128, 0}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-46, 2}, {-40, -16}})}, coordinateSystem(extent = {{-100, -100}, {100, 100}})));
-end CrackOrOperableDoor;
\ No newline at end of file
+end CrackOrOperableDoor;
diff --git a/IDEAS/Airflow/Multizone/Examples/TrickleVentIDEAS.mo b/IDEAS/Airflow/Multizone/Examples/TrickleVentIDEAS.mo
index b7b4982b0..c94135c19 100644
--- a/IDEAS/Airflow/Multizone/Examples/TrickleVentIDEAS.mo
+++ b/IDEAS/Airflow/Multizone/Examples/TrickleVentIDEAS.mo
@@ -2,27 +2,27 @@ within IDEAS.Airflow.Multizone.Examples;
model TrickleVentIDEAS
"Model with a trickle vent modelled using the models with flow based on tabulated data"
extends IDEAS.Airflow.Multizone.Examples.TrickleVent(west(nPorts=2), east(nPorts=2));
-
+
IDEAS.Airflow.Multizone.TrickleVent vent(
redeclare package Medium = Medium,
- dp_nominal = 10,
- m_flow_nominal = 0.02614,
- use_y = true)
- "Analytic trickle vent implementation" annotation(
+ dp_nominal = 10,
+ m_flow_nominal = 0.02614,
+ use_y = true)
+ "Analytic trickle vent implementation" annotation (
Placement(visible = true, transformation(origin = {20, -70}, extent = {{-10, 10}, {10, -10}}, rotation = 0)));
Modelica.Blocks.Sources.Ramp ramp(
- duration = 1e6,
- height = -1,
- offset = 1,
- startTime = 1592000)
- "Step control signal" annotation(
+ duration = 1e6,
+ height = -1,
+ offset = 1,
+ startTime = 1592000)
+ "Step control signal" annotation (
Placement(visible = true, transformation(origin = {-90, -88}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
- connect(vent.port_a, east.ports[2]) annotation(
+ connect(vent.port_a, east.ports[2]) annotation (
Line(points = {{10, -70}, {-25, -70}, {-25, -30}, {-30, -30}}, color = {0, 127, 255}));
- connect(vent.port_b, west.ports[2]) annotation(
+ connect(vent.port_b, west.ports[2]) annotation (
Line(points = {{30, -70}, {65, -70}, {65, -30}, {70, -30}}, color = {0, 127, 255}));
- connect(ramp.y, vent.y) annotation(
+ connect(ramp.y, vent.y) annotation (
Line(points = {{-79, -88}, {20.5, -88}, {20.5, -82}, {20, -82}}, color = {0, 0, 127}));
annotation (__Dymola_Commands(file="modelica://IDEAS/Resources/Scripts/Dymola/Airflow/Multizone/Examples/TrickleVentIDEAS.mos"
"Simulate and plot"),
@@ -50,4 +50,4 @@ First implementation.
"),
Diagram);
-end TrickleVentIDEAS;
\ No newline at end of file
+end TrickleVentIDEAS;
diff --git a/IDEAS/Airflow/Multizone/ReversibleDensityColumn.mo b/IDEAS/Airflow/Multizone/MediumColumnReversible.mo
similarity index 95%
rename from IDEAS/Airflow/Multizone/ReversibleDensityColumn.mo
rename to IDEAS/Airflow/Multizone/MediumColumnReversible.mo
index 96360c35b..6da0ffca1 100644
--- a/IDEAS/Airflow/Multizone/ReversibleDensityColumn.mo
+++ b/IDEAS/Airflow/Multizone/MediumColumnReversible.mo
@@ -1,13 +1,13 @@
within IDEAS.Airflow.Multizone;
-model ReversibleDensityColumn
+model MediumColumnReversible
"Vertical shaft with no friction and no storage of heat and mass, reversible because it can handle negative column heights"
extends IDEAS.Airflow.Multizone.MediumColumn(
- h(min=-Modelica.Constants.inf),
+ h(min=-Modelica.Constants.inf),
final densitySelection = IDEAS.Airflow.Multizone.Types.densitySelection.fromBottom);
// by convention, port_b must be connected to a zone instead of a flow element
// h is allowed to be negative to accomodate for this convention
-
+
annotation (
Icon(graphics={
Line(
@@ -39,4 +39,4 @@ This makes port_a not nececarilly always the top port.
"));
-end ReversibleDensityColumn;
\ No newline at end of file
+end MediumColumnReversible;
diff --git a/IDEAS/Airflow/Multizone/Validation/LargeHorziontalOpening.mo b/IDEAS/Airflow/Multizone/Validation/LargeHorziontalOpening.mo
index b70dfab02..f996920e4 100644
--- a/IDEAS/Airflow/Multizone/Validation/LargeHorziontalOpening.mo
+++ b/IDEAS/Airflow/Multizone/Validation/LargeHorziontalOpening.mo
@@ -10,9 +10,9 @@ model LargeHorziontalOpening
dp_turbulent=Opening_CrackOrOperableDoor.dp_turbulent_ope,
A=2,
CD=0.78) annotation (Placement(transformation(
- extent={{-10,-10},{10,10}},
+ extent={{10,-10},{-10,10}},
rotation=270,
- origin={-116,-18})));
+ origin={-118,-24})));
CrackOrOperableDoor Opening_CrackOrOperableDoor(
redeclare package Medium = Medium,
@@ -25,18 +25,19 @@ model LargeHorziontalOpening
h_a2=0,
hA=-1.5,
hB=1.5,
- A_q50=0.01,
- q50=0.01,
+ A_q50=0,
+ q50=0,
useDoor=true,
use_y=false,
inc=0) annotation (Placement(transformation(
extent={{-10,-10},{10,10}},
rotation=90,
- origin={60,-6})));
+ origin={60,-20})));
Modelica.Blocks.Math.Sum MF_Doormodel(nin=2, k={3600,3600})
- annotation (Placement(transformation(extent={{14,30},{-6,50}})));
+ annotation (Placement(transformation(extent={{4,14},{-16,34}})));
Modelica.Blocks.Math.Sum MF_Orifice(nin=1, k={3600})
annotation (Placement(transformation(extent={{-180,28},{-200,48}})));
+ Real OpeningflowDiff(unit="kg/s")=abs(MF_Doormodel.y)-abs(MF_Orifice.y);
protected
Fluid.Sensors.MassFlowRate MFsensor_Orifice(redeclare package Medium =
@@ -44,65 +45,67 @@ protected
annotation (Placement(transformation(
extent={{-10,-10},{10,10}},
rotation=90,
- origin={-116,38})));
+ origin={-118,36})));
Fluid.Sensors.MassFlowRate Ori_Mixingvol_MF2(redeclare package Medium =
Medium) "Mass flow rate sensor"
annotation (Placement(transformation(
extent={{-10,-10},{10,10}},
rotation=90,
- origin={50,40})));
+ origin={40,24})));
Fluid.MixingVolumes.MixingVolume
vol1(
redeclare package Medium = Medium,
T_start=293.15,
X_start={0,1},
- m_flow_nominal=1e-6,
+ m_flow_nominal=1e-12,
+ allowFlowReversal=true,
V=15,
- nPorts=2) "Pressure boundary" annotation (Placement(transformation(extent={{-10,10},
+ nPorts=4) "Pressure boundary" annotation (Placement(transformation(extent={{-10,10},
{10,-10}},
rotation=0,
- origin={-134,-76})));
+ origin={-18,-102})));
Fluid.MixingVolumes.MixingVolume
vol(
redeclare package Medium = Medium,
T_start=293.15,
X_start={0,1},
- m_flow_nominal=1e-6,
+ m_flow_nominal=1e-12,
+ allowFlowReversal=true,
V=15,
- nPorts=2) "Pressure boundary" annotation (Placement(transformation(extent={{-10,-10},
+ nPorts=4) "Pressure boundary" annotation (Placement(transformation(extent={{-10,-10},
{10,10}},
rotation=0,
- origin={-134,64})));
+ origin={-20,68})));
MediumColumn col2(
redeclare package Medium = Medium,
h=1.5,
densitySelection=IDEAS.Airflow.Multizone.Types.densitySelection.fromTop)
- annotation (Placement(transformation(extent={{-124,2},{-104,22}})));
+ annotation (Placement(transformation(extent={{-128,-4},{-108,16}})));
MediumColumn col3(
redeclare package Medium = Medium,
h=1.5,
densitySelection=IDEAS.Airflow.Multizone.Types.densitySelection.fromBottom)
- annotation (Placement(transformation(extent={{-124,-58},{-104,-38}})));
+ annotation (Placement(transformation(extent={{-128,-64},{-108,-44}})));
Orifice ori2(
redeclare package Medium = Medium,
useDefaultProperties=false,
A=0.5,
CD=0.6) annotation (Placement(transformation(
- extent={{-10,-10},{10,10}},
+ extent={{10,-10},{-10,10}},
rotation=0,
- origin={-152,-130})));
+ origin={90,-148})));
MediumColumn col4(
redeclare package Medium = Medium,
h=1.5,
densitySelection=IDEAS.Airflow.Multizone.Types.densitySelection.fromBottom)
- annotation (Placement(transformation(extent={{-124,74},{-104,94}})));
+ annotation (Placement(transformation(extent={{-60,80},{-40,100}})));
MediumColumn col5(
redeclare package Medium = Medium,
h=1.5,
densitySelection=IDEAS.Airflow.Multizone.Types.densitySelection.fromTop)
- annotation (Placement(transformation(extent={{-124,-124},{-104,-104}})));
+ annotation (Placement(transformation(extent={{-4,-142},{16,-122}})));
Orifice ori3(
redeclare package Medium = Medium,
useDefaultProperties=false,
@@ -110,84 +113,15 @@ protected
CD=0.6) annotation (Placement(transformation(
extent={{-10,-10},{10,10}},
rotation=0,
- origin={-80,100})));
- Fluid.Sources.Boundary_pT bouA4(
- redeclare package Medium = Medium,
- X={0,1},
- p(displayUnit="Pa") = 101325,
- T=278.15,
- nPorts=2) "Pressure boundary" annotation (Placement(transformation(extent={{10,10},
- {-10,-10}},
- rotation=0,
- origin={2,172})));
+ origin={50,116})));
Modelica.Thermal.HeatTransfer.Celsius.FixedTemperature fixedTemperature(T=20)
- annotation (Placement(transformation(extent={{-172,54},{-152,74}})));
- Modelica.Thermal.HeatTransfer.Celsius.FixedTemperature fixedTemperature1(T=20)
- annotation (Placement(transformation(extent={{-176,-86},{-156,-66}})));
- MediumColumn col6(
- redeclare package Medium = Medium,
- h=10,
- densitySelection=IDEAS.Airflow.Multizone.Types.densitySelection.fromTop)
- annotation (Placement(transformation(extent={{-40,-76},{-12,-48}})));
- MediumColumn col7(
- redeclare package Medium = Medium,
- h=4,
- densitySelection=IDEAS.Airflow.Multizone.Types.densitySelection.fromTop)
- annotation (Placement(transformation(extent={{-56,128},{-28,156}})));
- Fluid.MixingVolumes.MixingVolume
- vol2(
- redeclare package Medium = Medium,
- T_start=293.15,
- X_start={0,1},
- m_flow_nominal=1e-6,
- V=15,
- nPorts=3) "Pressure boundary" annotation (Placement(transformation(extent={{-10,10},
- {10,-10}},
- rotation=0,
- origin={50,-66})));
- Fluid.MixingVolumes.MixingVolume
- vol3(
- redeclare package Medium = Medium,
- T_start=293.15,
- X_start={0,1},
- m_flow_nominal=1e-6,
- V=15,
- nPorts=3) "Pressure boundary" annotation (Placement(transformation(extent={{-10,-10},
- {10,10}},
- rotation=0,
- origin={50,74})));
+ annotation (Placement(transformation(extent={{-172,58},{-152,78}})));
Fluid.Sensors.MassFlowRate Ori_Mixingvol_MF1(redeclare package Medium =
Medium) "Mass flow rate sensor"
annotation (Placement(transformation(
extent={{-10,-10},{10,10}},
rotation=90,
- origin={82,40})));
- Orifice ori5(
- redeclare package Medium = Medium,
- useDefaultProperties=false,
- A=0.5,
- CD=0.6) annotation (Placement(transformation(
- extent={{-10,-10},{10,10}},
- rotation=0,
- origin={32,-120})));
- MediumColumn col9(
- redeclare package Medium = Medium,
- h=1.5,
- densitySelection=IDEAS.Airflow.Multizone.Types.densitySelection.fromBottom)
- annotation (Placement(transformation(extent={{60,84},{80,104}})));
- MediumColumn col10(
- redeclare package Medium = Medium,
- h=1.5,
- densitySelection=IDEAS.Airflow.Multizone.Types.densitySelection.fromTop)
- annotation (Placement(transformation(extent={{60,-114},{80,-94}})));
- Orifice ori6(
- redeclare package Medium = Medium,
- useDefaultProperties=false,
- A=0.5,
- CD=0.6) annotation (Placement(transformation(
- extent={{-10,-10},{10,10}},
- rotation=0,
- origin={104,110})));
+ origin={72,24})));
Fluid.Sources.Boundary_pT bouA1(
redeclare package Medium = Medium,
X={0,1},
@@ -196,11 +130,7 @@ protected
nPorts=2) "Pressure boundary" annotation (Placement(transformation(extent={{10,10},
{-10,-10}},
rotation=0,
- origin={186,166})));
- Modelica.Thermal.HeatTransfer.Celsius.FixedTemperature fixedTemperature2(T=20)
- annotation (Placement(transformation(extent={{12,64},{32,84}})));
- Modelica.Thermal.HeatTransfer.Celsius.FixedTemperature fixedTemperature3(T=20)
- annotation (Placement(transformation(extent={{8,-76},{28,-56}})));
+ origin={198,172})));
MediumColumn col11(
redeclare package Medium = Medium,
h=10,
@@ -215,81 +145,60 @@ protected
equation
- connect(col3.port_b, vol1.ports[1]) annotation (Line(points={{-114,-58},{-114,
- -66},{-135,-66}},color={0,127,255}));
- connect(Opening_Orifice.port_a, col2.port_b)
- annotation (Line(points={{-116,-8},{-116,2},{-114,2}}, color={0,127,255}));
- connect(col3.port_a, Opening_Orifice.port_b) annotation (Line(points={{-114,-38},
- {-114,-32},{-116,-32},{-116,-28}}, color={0,127,255}));
- connect(col2.port_a, MFsensor_Orifice.port_a) annotation (Line(points={{-114,22},
- {-114,26},{-116,26},{-116,28}}, color={0,127,255}));
- connect(MFsensor_Orifice.port_b, vol.ports[1]) annotation (Line(points={{-116,
- 48},{-116,54},{-135,54}}, color={0,127,255}));
+ connect(col3.port_b, vol1.ports[1]) annotation (Line(points={{-118,-64},{-118,
+ -82},{-19.5,-82},{-19.5,-92}},
+ color={0,127,255}));
+ connect(col2.port_a, MFsensor_Orifice.port_a) annotation (Line(points={{-118,16},
+ {-118,26}}, color={0,127,255}));
+ connect(MFsensor_Orifice.port_b, vol.ports[1]) annotation (Line(points={{-118,46},
+ {-118,50},{-21.5,50},{-21.5,58}},
+ color={0,127,255}));
connect(vol.ports[2], col4.port_b)
- annotation (Line(points={{-133,54},{-114,54},{-114,74}},
- color={0,127,255}));
- connect(vol1.ports[2], col5.port_a) annotation (Line(points={{-133,-66},{-114,
- -66},{-114,-104}},
+ annotation (Line(points={{-20.5,58},{-20.5,56},{-22,56},{-22,52},{-50,52},{-50,
+ 80}}, color={0,127,255}));
+ connect(vol1.ports[2], col5.port_a) annotation (Line(points={{-18.5,-92},{-18.5,
+ -90},{-16,-90},{-16,-82},{6,-82},{6,-122}},
color={0,127,255}));
- connect(col5.port_b, ori2.port_b) annotation (Line(points={{-114,-124},{-114,-130},
- {-142,-130}}, color={0,127,255}));
- connect(col4.port_a, ori3.port_a) annotation (Line(points={{-114,94},{-114,100},
- {-90,100}}, color={0,127,255}));
+ connect(col5.port_b, ori2.port_b) annotation (Line(points={{6,-142},{6,-148},{
+ 80,-148}}, color={0,127,255}));
+ connect(col4.port_a, ori3.port_a) annotation (Line(points={{-50,100},{-50,116},
+ {40,116}}, color={0,127,255}));
connect(fixedTemperature.port, vol.heatPort)
- annotation (Line(points={{-152,64},{-144,64}},
- color={191,0,0}));
- connect(fixedTemperature1.port, vol1.heatPort)
- annotation (Line(points={{-156,-76},{-144,-76}},
- color={191,0,0}));
- connect(col6.port_a, bouA4.ports[1]) annotation (Line(points={{-26,-48},{-26,122},
- {-12,122},{-12,173},{-8,173}}, color={0,127,255}));
- connect(col6.port_b, ori2.port_a) annotation (Line(points={{-26,-76},{-26,-146},
- {-168,-146},{-168,-130},{-162,-130}}, color={0,127,255}));
- connect(col7.port_a, bouA4.ports[2]) annotation (Line(points={{-42,156},{-42,171},
- {-8,171}}, color={0,127,255}));
- connect(col7.port_b, ori3.port_b) annotation (Line(points={{-42,128},{-42,100},
- {-70,100}}, color={0,127,255}));
- connect(Ori_Mixingvol_MF1.port_b, vol3.ports[1]) annotation (Line(points={{82,50},
- {82,62},{70,62},{70,64},{48.6667,64}}, color={0,127,255}));
- connect(vol3.ports[2], col9.port_b)
- annotation (Line(points={{50,64},{70,64},{70,84}}, color={0,127,255}));
- connect(vol2.ports[1], col10.port_a) annotation (Line(points={{48.6667,-56},{
- 70,-56},{70,-94}},
- color={0,127,255}));
- connect(col10.port_b, ori5.port_b) annotation (Line(points={{70,-114},{70,-120},
- {42,-120}}, color={0,127,255}));
- connect(col9.port_a,ori6. port_a) annotation (Line(points={{70,104},{70,110},{
- 94,110}}, color={0,127,255}));
- connect(fixedTemperature2.port, vol3.heatPort)
- annotation (Line(points={{32,74},{40,74}}, color={191,0,0}));
- connect(fixedTemperature3.port,vol2. heatPort)
- annotation (Line(points={{28,-66},{40,-66}}, color={191,0,0}));
+ annotation (Line(points={{-152,68},{-30,68}},color={191,0,0}));
connect(col11.port_a, bouA1.ports[1]) annotation (Line(points={{158,-52},{158,
- 116},{166,116},{166,167},{176,167}}, color={0,127,255}));
- connect(col11.port_b, ori5.port_a) annotation (Line(points={{158,-80},{158,
- -146},{16,-146},{16,-120},{22,-120}},
- color={0,127,255}));
+ 173},{188,173}}, color={0,127,255}));
connect(col12.port_a, bouA1.ports[2]) annotation (Line(points={{142,150},{142,
- 165},{176,165}}, color={0,127,255}));
- connect(col12.port_b, ori6.port_b) annotation (Line(points={{142,122},{142,110},
- {114,110}}, color={0,127,255}));
- connect(Opening_CrackOrOperableDoor.port_a1, vol2.ports[2]) annotation (Line(
- points={{54,-16},{54,-50},{50,-50},{50,-56}}, color={0,127,255}));
- connect(Opening_CrackOrOperableDoor.port_b2, vol2.ports[3]) annotation (Line(
- points={{66,-16},{66,-50},{51.3333,-50},{51.3333,-56}}, color={0,127,255}));
+ 171},{188,171}}, color={0,127,255}));
connect(Opening_CrackOrOperableDoor.port_a2, Ori_Mixingvol_MF1.port_a)
- annotation (Line(points={{66,4},{66,24},{82,24},{82,30}}, color={0,127,255}));
+ annotation (Line(points={{66,-10},{66,8},{72,8},{72,14}}, color={0,127,255}));
connect(Opening_CrackOrOperableDoor.port_b1, Ori_Mixingvol_MF2.port_a)
- annotation (Line(points={{54,4},{54,24},{50,24},{50,30}}, color={0,127,255}));
- connect(Ori_Mixingvol_MF2.port_b, vol3.ports[3]) annotation (Line(points={{50,50},
- {51.3333,50},{51.3333,64}}, color={0,127,255}));
- connect(Ori_Mixingvol_MF2.m_flow, MF_Doormodel.u[1]) annotation (Line(points={
- {39,40},{28,40},{28,39.5},{16,39.5}}, color={0,0,127}));
- connect(Ori_Mixingvol_MF1.m_flow, MF_Doormodel.u[2]) annotation (Line(points={
- {71,40},{66,40},{66,56},{32,56},{32,40},{28,40},{28,40.5},{16,40.5}},
+ annotation (Line(points={{54,-10},{54,8},{40,8},{40,14}}, color={0,127,255}));
+ connect(Ori_Mixingvol_MF2.m_flow, MF_Doormodel.u[1]) annotation (Line(points={{29,24},
+ {18,24},{18,23.5},{6,23.5}}, color={0,0,127}));
+ connect(Ori_Mixingvol_MF1.m_flow, MF_Doormodel.u[2]) annotation (Line(points={{61,24},
+ {56,24},{56,40},{22,40},{22,24},{18,24},{18,24.5},{6,24.5}},
color={0,0,127}));
connect(MF_Orifice.u[1], MFsensor_Orifice.m_flow)
- annotation (Line(points={{-178,38},{-127,38}}, color={0,0,127}));
+ annotation (Line(points={{-178,38},{-154,38},{-154,36},{-129,36}},
+ color={0,0,127}));
+ connect(col3.port_a, Opening_Orifice.port_a) annotation (Line(points={{-118,-44},
+ {-118,-34}}, color={0,127,255}));
+ connect(Opening_Orifice.port_b, col2.port_b) annotation (Line(points={{-118,-14},
+ {-118,-4}}, color={0,127,255}));
+ connect(col12.port_b, ori3.port_b) annotation (Line(points={{142,122},{142,116},
+ {60,116}}, color={0,127,255}));
+ connect(col11.port_b, ori2.port_a) annotation (Line(points={{158,-80},{158,-148},
+ {100,-148}}, color={0,127,255}));
+ connect(fixedTemperature.port, vol1.heatPort) annotation (Line(points={{-152,68},
+ {-76,68},{-76,-102},{-28,-102}}, color={191,0,0}));
+ connect(Opening_CrackOrOperableDoor.port_a1, vol1.ports[3]) annotation (Line(
+ points={{54,-30},{54,-82},{-17.5,-82},{-17.5,-92}}, color={0,127,255}));
+ connect(Opening_CrackOrOperableDoor.port_b2, vol1.ports[4]) annotation (Line(
+ points={{66,-30},{66,-82},{-16.5,-82},{-16.5,-92}}, color={0,127,255}));
+ connect(Ori_Mixingvol_MF2.port_b, vol.ports[3]) annotation (Line(points={{40,34},
+ {40,52},{-19.5,52},{-19.5,58}}, color={0,127,255}));
+ connect(Ori_Mixingvol_MF1.port_b, vol.ports[4]) annotation (Line(points={{72,34},
+ {72,52},{-22,52},{-22,58},{-18.5,58}}, color={0,127,255}));
annotation (Diagram(
coordinateSystem(preserveAspectRatio=false, extent={{-200,-160},{220,200}})),
experiment(
@@ -297,21 +206,18 @@ equation
Interval=10,
Tolerance=1e-09,
__Dymola_Algorithm="Cvode"),
- __Dymola_Commands(file="modelica://IDEAS/Resources/Scripts/Dymola/Airflow/Multizone/Validation/OneWayFlow.mos"
- "Simulate and plot"),
+ __Dymola_Commands(file="Resources/Scripts/Dymola/Airflow/Multizone/Validation/LargeHorizontalOpening.mos"
+ "Simulate and Plot"),
Documentation(revisions="
-
-February 2, 2022, by Michael Wetter:
-Revised implementation.
-This is for
-IDEAS, #1436.
-
--
-Apr 6, 2021, 2020, by Klaas De Jonge:
+October 30, 2024, by Klaas De Jonge:
First implementation.
-"), Icon(coordinateSystem(extent={{-100,-100},{100,100}})));
+", info="
+Differences in assumptions for density calculations linked to stack-effect airflow (internally for door component, external via density columns for orifice) can result in different pressure differences over the opening (10e-3). However, for large horizontal openings this can result in important differences in volume flow results. This example shows how two similar openings with other underlying modelling assumptions lead to noticeable differences in massflowrate.
+"),
+ Icon(coordinateSystem(extent={{-100,-100},{100,100}})));
end LargeHorziontalOpening;
diff --git a/IDEAS/Airflow/Multizone/package.order b/IDEAS/Airflow/Multizone/package.order
index 08612d5ff..07a26438f 100644
--- a/IDEAS/Airflow/Multizone/package.order
+++ b/IDEAS/Airflow/Multizone/package.order
@@ -9,10 +9,10 @@ DoorOperable
EffectiveAirLeakageArea
MediumColumn
MediumColumnDynamic
+MediumColumnReversible
Orifice
Point_m_flow
Points_m_flow
-ReversibleDensityColumn
Table_V_flow
Table_m_flow
TrickleVent
diff --git a/IDEAS/BoundaryConditions/Interfaces/PartialSimInfoManager.mo b/IDEAS/BoundaryConditions/Interfaces/PartialSimInfoManager.mo
index 7b320916b..782dbf777 100644
--- a/IDEAS/BoundaryConditions/Interfaces/PartialSimInfoManager.mo
+++ b/IDEAS/BoundaryConditions/Interfaces/PartialSimInfoManager.mo
@@ -584,6 +584,10 @@ equation