forked from open-ideas/IDEAS
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
123 changed files
with
56,035 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,237 @@ | ||
within IDEAS.Airflow.Multizone; | ||
model CrackOrOperableDoor | ||
"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, | ||
final allowFlowReversal1=true, | ||
final allowFlowReversal2=true, | ||
final m1_flow_nominal=10/3600*rho_default, | ||
final m2_flow_nominal=m1_flow_nominal, | ||
final m1_flow_small=1E-4*abs(m1_flow_nominal), | ||
final m2_flow_small=1E-4*abs(m2_flow_nominal)); | ||
extends IDEAS.Airflow.Multizone.BaseClasses.ErrorControl(forceErrorControlOnFlow=true); //force error control on flow rates | ||
|
||
replaceable package Medium = | ||
Modelica.Media.Interfaces.PartialMedium "Medium in the component" | ||
annotation (choices( | ||
choice(redeclare package Medium = IDEAS.Media.Air "Moist air"))); | ||
|
||
parameter Modelica.Units.SI.Velocity vZer=0.001 | ||
"Minimum velocity to prevent zero flow. Recommended: 0.001"; | ||
parameter Modelica.Units.SI.Length wOpe=0.9 "Width of opening" | ||
annotation (Dialog(group="Geometry")); | ||
parameter Modelica.Units.SI.Length hOpe=2.1 "Height of opening" | ||
annotation (Dialog(group="Geometry")); | ||
|
||
parameter BoundaryConditions.Types.InterZonalAirFlow interZonalAirFlowType | ||
"Interzonal air flow type"; | ||
final parameter Modelica.Units.SI.PressureDifference dpCloRat(displayUnit="Pa")=50 | ||
"Pressure drop at rating condition of closed door" | ||
annotation (Dialog(group="Rating conditions")); | ||
|
||
parameter Modelica.Units.SI.Length h_b1 "Height at port b1 (hasCavity=false)"; | ||
parameter Modelica.Units.SI.Length h_b2 = 0 "Height at port b2(hasCavity=false)"; | ||
parameter Modelica.Units.SI.Length h_a1 = 0 "Height at port a1(hasCavity=false)"; | ||
parameter Modelica.Units.SI.Length h_a2 "Height at port a2(hasCavity=false)"; | ||
|
||
parameter SI.Length hA=(h_a1 + h_b2)/2 | ||
"Height of reference pressure at port a1 for opening (hasCavity=true) model"; | ||
parameter SI.Length hB=(h_a2 + h_b1)/2 | ||
"Height of reference pressure at port b1 for opening (hasCavity=true) model"; | ||
|
||
final parameter Real CDCloRat(min=0, max=1)=1 | ||
"Discharge coefficient at rating conditions of closed door" | ||
annotation (Dialog(group="Rating conditions")); | ||
parameter Modelica.Units.SI.Area A_q50 "Surface area for leakage computation (closed door)"; | ||
parameter Real q50(unit="m3/(h.m2)") "Surface air tightness"; | ||
|
||
final parameter Modelica.Units.SI.Area LClo(min=0) = ((q50*A_q50/3600)/(dpCloRat)^mClo)/(((dpCloRat)^(0.5-mClo))*sqrt(2/rho_default)) | ||
"Effective leakage area of internal wall (when door is fully closed)" | ||
annotation (Dialog(group="Crack or Closed door")); | ||
|
||
parameter Real CDOpe=0.78 "Discharge coefficient of open door" | ||
annotation (Dialog(group="Open door")); | ||
|
||
|
||
parameter Real mOpe = 0.5 "Flow exponent for door of open door" | ||
annotation (Dialog(group="Open door")); | ||
parameter Real mClo= 0.65 "Flow exponent for crack or crack of closed door" | ||
annotation (Dialog(group="Crack or Closed door")); | ||
|
||
parameter Integer nCom=if abs(hOpe*sin(inc)) < 0.01 then 2 else max(2,integer(abs(hOpe*sin(inc))/4)) "Number of compartments for the discretization"; | ||
|
||
parameter Boolean useDoor = false "=true, to use operable door instead of a crack"; | ||
parameter Boolean use_y = true "=true, to use control input"; | ||
parameter Boolean openDoorOnePort = false "Sets whether a door is open or closed in one port configuration"; | ||
|
||
parameter Modelica.Units.SI.PressureDifference dp_turbulent( | ||
min=0, | ||
displayUnit="Pa") = 0.01 | ||
"Pressure difference where laminar and turbulent flow relation coincide. Recommended: 0.01"; | ||
|
||
parameter Modelica.Units.SI.PressureDifference dp_turbulent_ope(min=0,displayUnit="Pa") = (MFtrans/(rho_default*(CDOpe * hOpe*wOpe * sqrt(2/rho_default))))^(1/mOpe) | ||
if useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts "Pressure difference where laminar and turbulent flow relation coincide for large cavities"; | ||
parameter Modelica.Units.SI.MassFlowRate MFtrans=(hOpe*wOpe)*VItrans*REtrans/DOpe if useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts "Recommended massflowrate used for reguralisation"; | ||
parameter Modelica.Units.SI.Length DOpe=4*hOpe*wOpe/(2*hOpe+2*wOpe) if useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts "Estimated hydraulic diameter of the opening - 4*A/Perimeter"; | ||
constant Modelica.Units.SI.ReynoldsNumber REtrans=30 if useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts "Assumed Reynolds number at transition"; | ||
constant Modelica.Units.SI.DynamicViscosity VItrans=0.0000181625 if useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts "Assumed dynamic viscosity of air at transition"; | ||
|
||
final parameter Medium.ThermodynamicState state_default=Medium.setState_pTX( | ||
T=Medium.T_default, | ||
p=Medium.p_default, | ||
X=Medium.X_default[1:Medium.nXi]) "Medium state at default values"; | ||
final parameter Modelica.Units.SI.Density rho_default=Medium.density(state=state_default) "Medium default density"; | ||
|
||
|
||
|
||
Modelica.Blocks.Interfaces.RealInput y(min=0, max=1, unit="1") if useDoor and use_y | ||
"Opening signal, 0=closed, 1=open" | ||
annotation (Placement(transformation(extent={{-120,-10},{-100,10}}), iconTransformation(extent={{-120,-10},{-100,10}}))); | ||
IDEAS.Airflow.Multizone.Point_m_flow point_m_flow1( | ||
redeclare package Medium = Medium, | ||
dpMea_nominal = dpCloRat, | ||
forceErrorControlOnFlow=true, | ||
mMea_flow_nominal=if openDoorOnePort and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.OnePort | ||
then wOpe*hOpe*rho_default*CDCloRat*(2*dpCloRat/rho_default)^mClo else (if | ||
interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts | ||
then 0.5 else 1)*(q50/3600*rho_default)*A_q50, | ||
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.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, | ||
forceErrorControlOnFlow=true, | ||
m = mClo, | ||
mMea_flow_nominal = (q50/3600*rho_default)*A_q50*0.5, | ||
useDefaultProperties = false) if not useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts "Pressure drop equation" annotation ( | ||
Placement(visible = true, transformation(origin = {0, -60}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); | ||
IDEAS.Airflow.Multizone.DoorDiscretizedOperable doo( | ||
final dh=doo.hOpe*sin(inc)/nCom, | ||
redeclare package Medium = Medium, | ||
final hA=hA, | ||
final hB=hB, | ||
dp_turbulent=dp_turbulent_ope, | ||
nCom=nCom, | ||
CDOpe=CDOpe, | ||
CDClo=CDCloRat, | ||
mOpe=mOpe, | ||
mClo=mClo, | ||
CDCloRat=CDCloRat, | ||
wOpe=wOpe, | ||
hOpe=hOpe, | ||
dpCloRat=dpCloRat, | ||
LClo=LClo, | ||
vZer=vZer*MFtrans*rho_default) | ||
if useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts annotation ( | ||
Placement(visible = true, transformation(origin={-2,0}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); | ||
IDEAS.Fluid.Sources.Boundary_pT bou( | ||
redeclare package Medium = Medium, | ||
nPorts = 2) | ||
if interZonalAirFlowType <> IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts | ||
"Sets absolute pressure when the ports are not connected externally" annotation ( | ||
Placement(visible = true, transformation(origin = {0, -90}, extent = {{-10, 10}, {10, -10}}, rotation = 90))); | ||
Modelica.Blocks.Sources.Constant constOne(final k=1) | ||
if not use_y | ||
"Door constantly opened" annotation ( | ||
Placement(visible = true, transformation(origin = {-54, -14}, extent = {{-6, -6}, {6, 6}}, rotation = 0))); | ||
|
||
parameter SI.Angle inc=Modelica.Constants.pi/2 | ||
"inclination angle (vertical=pi/2)"; | ||
initial equation | ||
assert( not (interZonalAirFlowType <> IDEAS.BoundaryConditions.Types.InterZonalAirFlow.TwoPorts and useDoor and use_y), | ||
"In " +getInstanceName() + ": Cannot use a controllable door unless interZonalAirFlowType == TwoPorts."); | ||
|
||
equation | ||
connect(col_a1.port_a, point_m_flow1.port_a) annotation ( | ||
Line(points = {{-60, 80}, {-60, 84}, {-20, 84}, {-20, 60}, {-10, 60}}, color = {0, 127, 255})); | ||
connect(col_b1.port_a, point_m_flow1.port_b) annotation ( | ||
Line(points = {{60, 80}, {60, 84}, {20, 84}, {20, 60}, {10, 60}}, color = {0, 127, 255})); | ||
connect(col_b2.port_a, point_m_flow2.port_a) annotation ( | ||
Line(points = {{-60, -40}, {-60, -36}, {-20, -36}, {-20, -60}, {-10, -60}}, color = {0, 127, 255})); | ||
connect(col_a2.port_a, point_m_flow2.port_b) annotation ( | ||
Line(points = {{60, -40}, {60, -36}, {20, -36}, {20, -60}, {10, -60}}, color = {0, 127, 255})); | ||
connect(col_b2.port_b, port_b2) annotation ( | ||
Line(points = {{-60, -60}, {-100, -60}}, color = {0, 127, 255})); | ||
connect(col_a2.port_b, port_a2) annotation ( | ||
Line(points = {{60, -60}, {100, -60}}, color = {0, 127, 255})); | ||
connect(col_b1.port_b, port_b1) annotation ( | ||
Line(points = {{60, 60}, {100, 60}}, color = {0, 127, 255})); | ||
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},{-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 | ||
connect(point_m_flow1.port_a, port_a1) annotation ( | ||
Line(points = {{-10, 60}, {-100, 60}}, color = {0, 127, 255})); | ||
connect(point_m_flow1.port_b, port_b1) annotation ( | ||
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},{-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={{-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="<html> | ||
<p> | ||
This models an open/closed door depending on the number of available fluid ports. | ||
</p> | ||
<p> | ||
When only one port is available then an orrifice equation is used to approximate the closed door. | ||
There is no support for open doors when using only a single fluid port. | ||
</p> | ||
</html>", | ||
revisions="<html> | ||
<ul> | ||
<li> | ||
October 30, 2024, by Klaas De Jonge:<br/> | ||
Changes for column heights,used default density and transition point to laminar flow at low dp. | ||
</li> | ||
<li> | ||
October 20, 2023 by Filip Jorissen:<br/> | ||
First documented version. | ||
</li> | ||
</ul> | ||
</html>"), | ||
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; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
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 ( | ||
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 ( | ||
Placement(visible = true, transformation(origin = {-90, -88}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); | ||
equation | ||
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 ( | ||
Line(points = {{30, -70}, {65, -70}, {65, -30}, {70, -30}}, color = {0, 127, 255})); | ||
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"), | ||
experiment( | ||
StopTime=2592000, | ||
Interval=600, | ||
Tolerance=1e-06), | ||
Documentation(info="<html> | ||
<p> | ||
This model illustrates the use of the models | ||
<a href=\"modelica://IDEAS.Airflow.Multizone.TrickleVent\"> | ||
IDEAS.Airflow.Multizone.Table_V_flow</a>, | ||
which is an analytic alternative to the table implementation of | ||
<a href=\"modelica://IDEAS.Airflow.Multizone.Table_m_flow\"> | ||
IDEAS.Airflow.Multizone.Table_m_flow</a> for modelling self regulating inlet vents. | ||
</p> | ||
</html>", revisions="<html> | ||
<ul> | ||
<li> | ||
July 9, 2023 by Filip Jorissen:<br/> | ||
First implementation. | ||
</li> | ||
</ul> | ||
</html>"), | ||
Diagram); | ||
end TrickleVentIDEAS; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
within IDEAS.Airflow.Multizone; | ||
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), | ||
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( | ||
points={{0,100},{0,-100},{0,-98}}), | ||
Text(origin = {-126, 2},lineColor = {0, 0, 127}, extent = {{24, -78}, {106, -100}}, textString = "Zone/Amb"), | ||
Text(origin = {-130, 4}, lineColor = {0, 0, 127}, extent = {{32, 104}, {98, 70}}, textString = "FlowElem"), | ||
Text(lineColor = {0, 0, 127}, extent = {{36, 26}, {88, -10}}, textString = "h=%h"), | ||
Rectangle(fillColor = {255, 0, 0}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-16, 80}, {16, -80}}), | ||
Rectangle(visible = false, fillColor = {85, 170, 255}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-16, 80}, {16, 0}}), | ||
Rectangle(visible = false, fillColor = {85, 170, 255}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-16, 80}, {16, 54}}), | ||
Rectangle(fillColor = {85, 170, 255}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-16, 0}, {16, -82}}), | ||
Rectangle(visible = false, fillColor = {85, 170, 255}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-16, -55}, {16, -80}})}), | ||
defaultComponentName="col", | ||
Documentation(info="<html> | ||
<p> | ||
This model describes the pressure difference of a vertical medium | ||
column. It can be used to model the pressure difference caused by | ||
stack effect. | ||
It is a variation on IDEAS.Airflow.Multizone.MediumColumn. | ||
</p> | ||
</html>", | ||
revisions="<html> | ||
<ul> | ||
<li> | ||
January 19, 2022, by Klaas De Jonge:<br/> | ||
Adapted IDEAS.Airflow.Multizone.MediumColumn to obtain the current model where input of | ||
h can be negative and cleaned out the model as the density should always be set by port_b. | ||
This makes port_a not nececarilly always the top port. | ||
</li> | ||
</ul> | ||
</html>")); | ||
end MediumColumnReversible; |
Oops, something went wrong.