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=" ")); -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=" -"), 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 ", revisions="