From 4c1f2aea02e940e4e6bebc2eb276534413354cfe Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 27 Dec 2023 14:23:25 -0500 Subject: [PATCH 01/47] first implementation --- .../BaseClasses/MassAccumulation.mo | 74 ++++++ .../AirFilters/BaseClasses/MassTransfer.mo | 77 ++++++ .../PressureDropInputFlowCoefficient.mo | 183 ++++++++++++++ .../BaseClasses/SimpleCharacterization.mo | 92 +++++++ .../Validation/MassAccumulation.mo | 43 ++++ .../BaseClasses/Validation/MassTransfer.mo | 73 ++++++ .../PressureDropInputFlowCoefficient.mo | 89 +++++++ .../Validation/SimpleCharacterization.mo | 44 ++++ .../BaseClasses/Validation/package.mo | 6 + .../BaseClasses/Validation/package.order | 4 + .../Fluid/AirFilters/BaseClasses/package.mo | 11 + .../AirFilters/BaseClasses/package.order | 5 + .../Fluid/AirFilters/Examples/Generic.mo | 71 ++++++ .../Fluid/AirFilters/Examples/package.mo | 5 + .../Fluid/AirFilters/Examples/package.order | 1 + Buildings/Fluid/AirFilters/Generic.mo | 239 ++++++++++++++++++ Buildings/Fluid/AirFilters/package.mo | 4 + Buildings/Fluid/AirFilters/package.order | 3 + Buildings/Fluid/package.order | 1 + .../BaseClasses/MassAccumulation.mos | 3 + .../AirFilters/BaseClasses/MassTransfer.mos | 3 + .../PressureDropInputFlowCoefficient.mos | 5 + .../BaseClasses/SimpleCharacterization.mos | 5 + .../Fluid/AirFilters/Examples/Generic.mos | 6 + 24 files changed, 1047 insertions(+) create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mo create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mo create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropInputFlowCoefficient.mo create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/Validation/SimpleCharacterization.mo create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/Validation/package.mo create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/Validation/package.order create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/package.mo create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/package.order create mode 100644 Buildings/Fluid/AirFilters/Examples/Generic.mo create mode 100644 Buildings/Fluid/AirFilters/Examples/package.mo create mode 100644 Buildings/Fluid/AirFilters/Examples/package.order create mode 100644 Buildings/Fluid/AirFilters/Generic.mo create mode 100644 Buildings/Fluid/AirFilters/package.mo create mode 100644 Buildings/Fluid/AirFilters/package.order create mode 100644 Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassAccumulation.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassTransfer.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Generic.mos diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo new file mode 100644 index 00000000000..7c8e0e263b5 --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo @@ -0,0 +1,74 @@ +within Buildings.Fluid.AirFilters.BaseClasses; +model MassAccumulation + "Component that mimics the accumulation of the contaminants" + parameter Real mCon_nominal + "Contaminant held capacity of the filter"; + parameter Real mCon_reset + "Initial contaminant mass of the filter"; + Modelica.Blocks.Interfaces.BooleanInput triRep + "replacing the filter when trigger becomes true" annotation (Placement( + transformation( + extent={{20,-20},{-20,20}}, + rotation=180, + origin={-120,-60}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={-120,-62}))); + Modelica.Blocks.Interfaces.RealInput mCon_flow + "The contaminant mass flow rate" annotation (Placement(transformation( + extent={{20,-20},{-20,20}}, + rotation=180, + origin={-120,60}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={-120,60}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput mCon + "mass of the contaminant held by the filter" annotation (Placement( + transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={ + {100,-20},{140,20}}))); + Buildings.Controls.OBC.CDL.Reals.IntegratorWithReset intWitRes + "calculates the mass of contaminant" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant con(k=mCon_reset) + "constant" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + Modelica.Blocks.Logical.Greater greater "check if the filter is full" + annotation (Placement(transformation(extent={{40,-48},{60,-28}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(k=mCon_nominal) + "constant" + annotation (Placement(transformation(extent={{0,40},{20,60}}))); + Buildings.Controls.OBC.CDL.Utilities.Assert assMes(message="*** Warning in " + + getInstanceName() + ":the filter needs to be replaced") + "Error message when the filter is full, i.e., the mass held by the filter is larger than its capacity" + annotation (Placement(transformation(extent={{72,-50},{92,-30}}))); +equation + connect(intWitRes.u, mCon_flow) annotation (Line(points={{-12,0},{-40,0},{-40, + 60},{-120,60}}, + color={0,0,127})); + connect(intWitRes.y, mCon) + annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); + connect(con.y, intWitRes.y_reset_in) annotation (Line(points={{-58,-20},{-20,-20}, + {-20,-8},{-12,-8}},color={0,0,127})); + connect(intWitRes.trigger, triRep) + annotation (Line(points={{0,-12},{0,-60},{-120,-60}}, color={255,0,255})); + connect(assMes.u, greater.y) + annotation (Line(points={{70,-40},{66,-40},{66,-38},{61,-38}}, + color={255,0,255})); + connect(greater.u2, intWitRes.y) annotation (Line(points={{38,-46},{20,-46},{20, + 0},{12,0}}, color={0,0,127})); + connect(con1.y, greater.u1) annotation (Line(points={{22,50},{30,50},{30,-38}, + {38,-38}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={28,108,200}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-153,-102},{147,-142}}, + textColor={0,0,255}, + textString="%name")}), + Diagram(coordinateSystem( + preserveAspectRatio=false)), + defaultComponentName="masAcc"); +end MassAccumulation; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo new file mode 100644 index 00000000000..0197f73a1d1 --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -0,0 +1,77 @@ +within Buildings.Fluid.AirFilters.BaseClasses; +model MassTransfer + "Component that sets the trace substance at port_b based on an input trace substance mass flow rate and an input mass transfer efficiency" + extends Buildings.Fluid.Interfaces.PartialTwoPortInterface; + Modelica.Blocks.Interfaces.RealInput m_flow_in[Medium.nC] + "Input trace substance rate" annotation (Placement(transformation( + extent={{-20,-20},{20,20}}, + rotation=270, + origin={0,120}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=270, + origin={0,120}))); + Modelica.Blocks.Interfaces.RealInput eps( + final min = 0, + final max= 1) + "mass tranfer coefficient" + annotation (Placement(transformation( + extent={{20,-20},{-20,20}}, + rotation=180, + origin={-120,60}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={-120,60}))); +equation + if allowFlowReversal then + port_b.C_outflow = inStream(port_a.C_outflow) - eps * m_flow_in; + port_a.C_outflow = inStream(port_b.C_outflow) + eps * m_flow_in; + else + port_b.C_outflow = inStream(port_a.C_outflow); + port_a.C_outflow = inStream(port_b.C_outflow); + end if; + // Mass balance (no storage). + port_a.Xi_outflow = inStream(port_b.Xi_outflow); + port_b.Xi_outflow = inStream(port_a.Xi_outflow); + port_a.m_flow = -port_b.m_flow; + // Pressure balance (no pressure drop). + port_a. p = port_b.p; + // Energy balance (no heat exchange). + port_a.h_outflow = inStream(port_b.h_outflow); + port_b.h_outflow = inStream(port_a.h_outflow); + + if not allowFlowReversal then + assert(m_flow > -m_flow_small, + "*** Error in " + getInstanceName() + ":Reverting flow occurs even though allowFlowReversal is false", + level=AssertionLevel.error); + end if; + + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + defaultComponentName="masTra", + Documentation(info=" +

+This model sets the trace substance +of the medium that leaves port_a by +

+
+  port_b.C_outflow = inStream(port_a.C_outflow) - eps * m_flow_in;
+
+

+where eps is an input mass transfer efficiency and +m_flow_in is an input trace substance mass flow rate. +

+

+This model has no pressure drop. +In case of reverse flow, +the fluid that leaves port_a has the same +properties as the fluid that enters port_b. +

+", revisions=" + +")); +end MassTransfer; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mo new file mode 100644 index 00000000000..dbec042eef8 --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mo @@ -0,0 +1,183 @@ +within Buildings.Fluid.AirFilters.BaseClasses; +model PressureDropInputFlowCoefficient + "Flow resistance with a varying flow coefficient" + extends Buildings.Fluid.BaseClasses.PartialResistance( + final m_flow_turbulent = if computeFlowResistance then deltaM * m_flow_nominal_pos else 0); + + parameter Real deltaM(min=1E-6) = 0.3 + "Fraction of nominal mass flow rate where transition to turbulent occurs" + annotation(Evaluate=true, + Dialog(group = "Transition to laminar", + enable = not linearized)); + Real k "Flow coefficient, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2)"; + + Modelica.Blocks.Interfaces.RealInput kCor( + min= 1) + "Flow coefficient" + annotation (Placement(transformation( + extent={{-20,-20},{20,20}}, + rotation=270, + origin={0,120}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=270, + origin={0,120}))); +protected + final parameter Boolean computeFlowResistance=(dp_nominal_pos > Modelica.Constants.eps) + "Flag to enable/disable computation of flow resistance" + annotation(Evaluate=true); + +initial equation + if computeFlowResistance then + assert(m_flow_turbulent > 0, "m_flow_turbulent must be bigger than zero."); + end if; + + assert(m_flow_nominal_pos > 0, "m_flow_nominal_pos must be non-zero. Check parameters."); +equation + // Pressure drop calculation + if computeFlowResistance then + k = m_flow_nominal_pos / sqrt(dp_nominal_pos * kCor); + if linearized then + if from_dp then + m_flow = dp*(k^2/ m_flow_nominal_pos); + else + dp = m_flow * (m_flow_nominal_pos /k^2); + end if; + else + if homotopyInitialization then + if from_dp then + m_flow=homotopy( + actual=Buildings.Fluid.BaseClasses.FlowModels.basicFlowFunction_dp( + dp=dp, + k=k, + m_flow_turbulent=m_flow_turbulent), + simplified=m_flow_nominal_pos*dp/dp_nominal_pos); + else + dp=homotopy( + actual=Buildings.Fluid.BaseClasses.FlowModels.basicFlowFunction_m_flow( + m_flow=m_flow, + k=k, + m_flow_turbulent=m_flow_turbulent), + simplified=dp_nominal_pos*m_flow/m_flow_nominal_pos); + end if; // from_dp + else // do not use homotopy + if from_dp then + m_flow=Buildings.Fluid.BaseClasses.FlowModels.basicFlowFunction_dp( + dp=dp, + k=k, + m_flow_turbulent=m_flow_turbulent); + else + dp=Buildings.Fluid.BaseClasses.FlowModels.basicFlowFunction_m_flow( + m_flow=m_flow, + k=k, + m_flow_turbulent=m_flow_turbulent); + end if; // from_dp + end if; // homotopyInitialization + end if; // linearized + else // do not compute flow resistance + k = 0; + dp = 0; + end if; // computeFlowResistance + + annotation (defaultComponentName="res", +Documentation(info=" +

+Model of a flow resistance with a varying flow coefficient. +

+

+This block is implemented based on + +Buildings.Fluid.FixedResistances.PressureDrop +and inherits most of its configuration. +However, when calculating the mass flow rate +

+ṁ = m_flow_nominal/(√dp_nominal*kCor) +√Δp, +

+where +kCor is a correction factor of the flow coefficient. +

+", revisions=" + +")); +end PressureDropInputFlowCoefficient; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mo b/Buildings/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mo new file mode 100644 index 00000000000..af3fd579eff --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mo @@ -0,0 +1,92 @@ +within Buildings.Fluid.AirFilters.BaseClasses; +model SimpleCharacterization + "Component that calculates the filter efficiency and the flow coefficient correction factor" + parameter Real mCon_nominal + "Contaminant held capacity of the filter"; + parameter Real epsFun[:] + "Filter efficiency curve"; + parameter Real b( final min = 1 + 1E-3) + "Resistance coefficient"; + Modelica.Blocks.Interfaces.RealInput mCon + "Mass of the contaminant held by the filter" + annotation (Placement( + transformation( + extent={{20,-20},{-20,20}}, + rotation=180, + origin={-120,0}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={-120,0}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput eps( + final min = 0, + final max = 1) "Filter efficiency" + annotation ( + Placement(transformation(extent={{100,38},{140,78}}), iconTransformation( + extent={{100,38},{140,78}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput kCor( + final min = 1) + "Flow coefficient" + annotation ( + Placement(transformation(extent={{100,-60},{140,-20}}), + iconTransformation(extent={{100,-82},{140,-42}}))); +protected + Real Phi "ratio of the mass of the contaminant held by the filter to the nominal capactiy of the filter"; +equation + Phi = Buildings.Utilities.Math.Functions.smoothMin(x1= 1, x2= mCon/mCon_nominal, deltaX=0.1); + eps = Buildings.Utilities.Math.Functions.polynomial(a=epsFun,x=Phi); + assert(noEvent(eps > 0) and noEvent(eps < 1), + "*** Error in " + getInstanceName() + ": The filter efficiency should be in the range of [0, 1], + check the filter efficiency curve.", + level=AssertionLevel.error); + kCor = b^Phi; + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={28,108,200}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-143,-98},{157,-138}}, + textColor={0,0,255}, + textString="%name")}), + Diagram(coordinateSystem(preserveAspectRatio=false)), + defaultComponentName="simCha", + Documentation(revisions=" + +", info=" +

+This model calculates the filter efficiency based on the mass of the contaminants held by the filter. +

+

+ eps = epsFun1 + epsFun2 ɸ + epsFun3 ɸ2 + ..., +

+

+where ɸ is the ratio of the contaminant mass to the capacity of the filter for holding +the contaminants, and the coefficients epsFuni +are declared by the parameter epsFun. +

+

+This model also calculates the flow coefficiency of the filter by +

+

+ kCor = bɸ, +

+

+where b is a constant that is larger than 1. +

+

+Note: +The upper limit of ɸ is 1 and any value above it is overwritten by 1. +

+

References

+

+Qiang Li ta al., (2022). Experimental study on the synthetic dust loading characteristics of air filters. +Separation and Purification Technology 284 (2022), 120209 +

+")); +end SimpleCharacterization; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo new file mode 100644 index 00000000000..b722fb773d9 --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo @@ -0,0 +1,43 @@ +within Buildings.Fluid.AirFilters.BaseClasses.Validation; +model MassAccumulation + "Validation model for the accumulation of the contaminants" + extends Modelica.Icons.Example; + Buildings.Fluid.AirFilters.BaseClasses.MassAccumulation masAcc(mCon_nominal=1, + mCon_reset=0) + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Modelica.Blocks.Sources.Ramp mCon_flow( + duration=1, + height=1.2, + offset=0) "contaminant mass flow rate" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse RepSig(period=1, shift=0.5) + "filter replacement signal" + annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); +equation + connect(RepSig.y, masAcc.triRep) annotation (Line(points={{-38,-20},{-20,-20}, + {-20,-6.2},{-12,-6.2}}, color={255,0,255})); + connect(mCon_flow.y, masAcc.mCon_flow) annotation (Line(points={{-39,30},{-20, + 30},{-20,6},{-12,6}}, color={0,0,127})); + annotation (experiment(Tolerance=1e-6, StopTime=1.0), +__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassAccumulation.mos" + "Simulate and plot"), + Documentation(revisions=" + +", info=" +

+The input contaminant mass flow rate mCon_flow changes +from 0 to 1.2 during the period from 0 to 1 sencond; +The filter replacement signal changes from false to true at 0.5 seconds. +

+

+The contaminant mass masAcc.mCon increases from 0 to 0.15 +during the period from 0 to 0.5 sencond; +It drops to 0 at 0.5 seonds and keeps increase again after that. +

+")); +end MassAccumulation; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo new file mode 100644 index 00000000000..9259ee881f9 --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo @@ -0,0 +1,73 @@ +within Buildings.Fluid.AirFilters.BaseClasses.Validation; +model MassTransfer + "Validation model for the MassTransfer model" + extends Modelica.Icons.Example; + package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Medium model"; + Buildings.Fluid.Sources.TraceSubstancesFlowSource sou( + redeclare package Medium = Medium, + m_flow=1, + nPorts=1) + "air source" + annotation (Placement(transformation( + extent={{-60,-10},{-40,10}}))); + Buildings.Fluid.Sources.Boundary_pT sin( + redeclare package Medium = Medium, + nPorts=1) + "air sink" + annotation (Placement(transformation( + extent={{82,-10},{62,10}}))); + Buildings.Fluid.AirFilters.BaseClasses.MassTransfer masTra( + redeclare package Medium = Medium, + allowFlowReversal=true, + m_flow_nominal=1) "mass transfer" + annotation (Placement(transformation(extent={{8,-10},{28,10}}))); + Modelica.Blocks.Sources.Ramp eps( + duration=1, + height=-0.7, + offset=1) "Mass transfer efficiency" + annotation (Placement(transformation(extent={{-60,40},{-40,60}}))); + Modelica.Blocks.Sources.RealExpression traceSubstancesFlow( + y=inStream(masTra.port_a.C_outflow[1])) + "trace substances flow rate" + annotation (Placement(transformation(extent={{-20,50},{0,70}}))); + Buildings.Fluid.Sensors.TraceSubstances C_out(redeclare package Medium = Medium) + "Trace substance sensor of outlet air" + annotation (Placement(transformation(extent={{30,10},{50,30}}))); + Buildings.Fluid.Sensors.TraceSubstances C_in(redeclare package Medium = Medium) + "Trace substance sensor of inlet air" + annotation (Placement(transformation(extent={{-38,-40},{-18,-20}}))); +equation + connect(eps.y, masTra.eps) annotation (Line(points={{-39,50},{-24,50},{-24,6}, + {6,6}}, color={0,0,127})); + connect(traceSubstancesFlow.y, masTra.m_flow_in[1]) + annotation (Line(points={{1,60},{18,60},{18,12}}, color={0,0,127})); + connect(C_out.port, masTra.port_b) + annotation (Line(points={{40,10},{40,0},{28,0}}, color={0,127,255})); + connect(C_in.port, masTra.port_a) annotation (Line(points={{-28,-40},{-28,-50}, + {0,-50},{0,0},{8,0}}, color={0,127,255})); + connect(sin.ports[1], masTra.port_b) + annotation (Line(points={{62,0},{28,0}}, color={0,127,255})); + connect(masTra.port_a, sou.ports[1]) + annotation (Line(points={{8,0},{-40,0}}, color={0,127,255})); + annotation (experiment(Tolerance=1e-6, StopTime=1.0), +__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassTransfer.mos" + "Simulate and plot"), + Documentation(info=" +

+The input mass tranfer efficiency eps changes from 1 to 0.3 from 0 to 1 sencond; +The trace substance concentration of the inlet port is fixed as 1. +

+

+The trace substance concentration of the outlet port is 0 at the 0 second when the eps is 1, +meaning all the trace substance has been removed. +As the eps decreases, the trace substance concentration of the outlet port increases to 0.7. +

+", revisions=" + +")); +end MassTransfer; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropInputFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropInputFlowCoefficient.mo new file mode 100644 index 00000000000..48ca9f93523 --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropInputFlowCoefficient.mo @@ -0,0 +1,89 @@ +within Buildings.Fluid.AirFilters.BaseClasses.Validation; +model PressureDropInputFlowCoefficient + "Validation model for flow resistances with a varying flow coefficient" + extends Modelica.Icons.Example; + + package Medium = Buildings.Media.Air "Medium model"; + + Modelica.Blocks.Sources.Ramp P( + duration=1, + height=20, + offset=101325 - 10) "Ramp pressure signal" + annotation (Placement(transformation(extent={{-92,-2},{-72,18}}))); + + Buildings.Fluid.Sources.Boundary_pT sou( + redeclare package Medium = Medium, + T=273.15 + 20, + use_p_in=true, + nPorts=2) + "Pressure boundary condition" + annotation (Placement(transformation( + extent={{-50,-10},{-30,10}}))); + + Buildings.Fluid.Sources.Boundary_pT sin( + redeclare package Medium = Medium, + T=273.15 + 10, + nPorts=2, + p(displayUnit="Pa") = 101325) + "Pressure boundary condition" + annotation (Placement(transformation( + extent={{50,-10},{30,10}}))); + + Buildings.Fluid.FixedResistances.PressureDrop resFixed( + redeclare package Medium = Medium, + m_flow_nominal=0.2, + from_dp=true, + dp_nominal=10) "Fixed resistance" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + + Buildings.Fluid.AirFilters.BaseClasses.PressureDropInputFlowCoefficient + resVarying( + redeclare package Medium = Medium, + m_flow_nominal=0.2, + dp_nominal=10) "Varying resistance" + annotation (Placement(transformation(extent={{-10,30},{10,50}}))); + Modelica.Blocks.Sources.Pulse kCor( + width=100, + period=0.5, + offset=1, + startTime=0.5) "flow coefficient correction factor" + annotation (Placement(transformation(extent={{-80,62},{-60,82}}))); +equation + connect(P.y, sou.p_in) annotation (Line(points={{-71,8},{-62,8},{-52,8}}, + color={0,0,127})); + connect(sou.ports[1], resFixed.port_a) annotation (Line(points={{-30,-1},{-20, + -1},{-20,0},{-10,0}}, color={0,127,255})); + connect(resFixed.port_b, sin.ports[1]) + annotation (Line(points={{10,0},{10,-1},{30,-1}}, color={0,127,255})); + connect(resVarying.port_a, sou.ports[2]) annotation (Line(points={{-10,40},{-20, + 40},{-20,1},{-30,1}}, color={0,127,255})); + connect(resVarying.port_b, sin.ports[2]) annotation (Line(points={{10,40},{18, + 40},{18,1},{30,1}}, color={0,127,255})); + connect(kCor.y, resVarying.kCor) + annotation (Line(points={{-59,72},{0,72},{0,52}}, color={0,0,127})); + annotation (experiment(Tolerance=1e-6, StopTime=1.0), +__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mos" + "Simulate and plot"), + Documentation(info=" +

+Before 0.5 seconds, the flow rates of resFixed (pressure resistance with a constant flow coefficient) and resVarying +(ressure resistance with a varying flow coefficient) are the same with the identical pressure drop. +

+

+After 0.5 seconds, however, the flow rates of resVarying are lower than those of resFixed as the flow coefficient +of former decreases by √2. +

+", revisions=" + +")); +end PressureDropInputFlowCoefficient; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/SimpleCharacterization.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/SimpleCharacterization.mo new file mode 100644 index 00000000000..52a831c9ac5 --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/SimpleCharacterization.mo @@ -0,0 +1,44 @@ +within Buildings.Fluid.AirFilters.BaseClasses.Validation; +model SimpleCharacterization + "Validation model for the calculation of the filter efficiency and the flow coefficient correction factor" + extends Modelica.Icons.Example; + Buildings.Fluid.AirFilters.BaseClasses.SimpleCharacterization simCha( + mCon_nominal=1, + epsFun={0.98,-0.1}, + b=1.2) "filter characterization" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Modelica.Blocks.Sources.Ramp mCon( + duration=1, + height=1.2, + offset=0) "mass of the contaminant held by the filter" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); +equation + connect(mCon.y, simCha.mCon) + annotation (Line(points={{-39,0},{-12,0}}, color={0,0,127})); + annotation (experiment(Tolerance=1e-6, StopTime=1.0), +__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mos" + "Simulate and plot"), + Documentation(info=" +

+The input mass of the contaminant held by the filter mCon +changes from 0 to 1.2 from 0 to 1 sencond. +

+

+The eps changes from 0.98 to 0.88 during the period from +0 second to 0.85 seconds. +After 0.85 seconds, the eps keeps unchanged when mCon changes. +This is because the Phi already reaches the maximum value. +

+

+Likewise, the kCor changes from 1 to 1.2 during the period from +0 second to 0.85 seconds and then keeps constant afterward. +

+", revisions=" + +")); +end SimpleCharacterization; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.mo new file mode 100644 index 00000000000..8c2ddc7f468 --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.mo @@ -0,0 +1,6 @@ +within Buildings.Fluid.AirFilters.BaseClasses; +package Validation "Collection of models that illustrate model use and test models" + extends Modelica.Icons.ExamplesPackage; + + +end Validation; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.order b/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.order new file mode 100644 index 00000000000..d65d4b9ac5f --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.order @@ -0,0 +1,4 @@ +SimpleCharacterization +MassAccumulation +MassTransfer +PressureDropInputFlowCoefficient diff --git a/Buildings/Fluid/AirFilters/BaseClasses/package.mo b/Buildings/Fluid/AirFilters/BaseClasses/package.mo new file mode 100644 index 00000000000..df0d3f4b68f --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/package.mo @@ -0,0 +1,11 @@ +within Buildings.Fluid.AirFilters; +package BaseClasses "Package with base classes for Buildings.Fluid.AirFilters" + extends Modelica.Icons.BasesPackage; + + annotation (Documentation(info=" +

+This package contains base classes that are used to construct the models in +Buildings.Fluid.AirFilters. +

+")); +end BaseClasses; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/package.order b/Buildings/Fluid/AirFilters/BaseClasses/package.order new file mode 100644 index 00000000000..13e5fdd44aa --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/package.order @@ -0,0 +1,5 @@ +SimpleCharacterization +MassAccumulation +MassTransfer +PressureDropInputFlowCoefficient +Validation diff --git a/Buildings/Fluid/AirFilters/Examples/Generic.mo b/Buildings/Fluid/AirFilters/Examples/Generic.mo new file mode 100644 index 00000000000..f15ebd689e8 --- /dev/null +++ b/Buildings/Fluid/AirFilters/Examples/Generic.mo @@ -0,0 +1,71 @@ +within Buildings.Fluid.AirFilters.Examples; +model Generic + "Example model for the generic air filter model" + extends Modelica.Icons.Example; + package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Medium model"; + Buildings.Fluid.AirFilters.Generic filter( + redeclare package Medium = Medium, + mCon_nominal=1, + epsFun={0.98,-0.1}, + b=1.2, + m_flow_nominal=1, + dp_nominal(displayUnit="Pa") = 100) + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Sources.Boundary_pT sou( + redeclare package Medium = Medium, + use_C_in=true, + p(displayUnit="Pa") = 101325 + 100, + nPorts=1) + "air source" + annotation (Placement(transformation( + extent={{-58,-10},{-38,10}}))); + Buildings.Fluid.Sources.Boundary_pT sin( + redeclare package Medium = Medium, + p(displayUnit="Pa") = 101325, + nPorts=1) + "air sink" + annotation (Placement(transformation( + extent={{80,-10},{60,10}}))); + Buildings.Fluid.Sensors.TraceSubstances C_in( + redeclare package Medium = Medium) + "Trace substance sensor of inlet air" + annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); + Buildings.Fluid.Sensors.TraceSubstances C_out( + redeclare package Medium = Medium) + "Trace substance sensor of outlet air" + annotation (Placement(transformation(extent={{30,28},{50,48}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse RepSig( + period=1, + shift=0.5) + "filter replacement signal" + annotation (Placement(transformation(extent={{-50,40},{-30,60}}))); + Modelica.Blocks.Sources.Ramp mCon_flow( + duration=1, + height=1.2, + offset=0) "contaminant mass flow rate" + annotation (Placement(transformation(extent={{-96,-30},{-76,-10}}))); +equation + connect(filter.port_b, sin.ports[1]) + annotation (Line(points={{10,0},{60,0}}, color={0,127,255})); + connect(RepSig.y, filter.triRep) annotation (Line(points={{-28,50},{-20,50},{-20, + 6},{-12,6}}, color={255,0,255})); + connect(C_in.port, filter.port_a) annotation (Line(points={{-30,-50},{-30,-60}, + {-14,-60},{-14,0},{-10,0}}, color={0,127,255})); + connect(C_out.port, filter.port_b) + annotation (Line(points={{40,28},{40,0},{10,0}}, color={0,127,255})); + connect(sou.ports[1], filter.port_a) + annotation (Line(points={{-38,0},{-10,0}}, color={0,127,255})); + connect(mCon_flow.y, sou.C_in[1]) annotation (Line(points={{-75,-20},{-66,-20}, + {-66,-8},{-60,-8}}, color={0,0,127})); + annotation (experiment(Tolerance=1e-6, StopTime=1.0), + __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Generic.mos" + "Simulate and plot"), + Documentation(revisions=" + +")); +end Generic; diff --git a/Buildings/Fluid/AirFilters/Examples/package.mo b/Buildings/Fluid/AirFilters/Examples/package.mo new file mode 100644 index 00000000000..08b4d6347c0 --- /dev/null +++ b/Buildings/Fluid/AirFilters/Examples/package.mo @@ -0,0 +1,5 @@ +within Buildings.Fluid.AirFilters; +package Examples "Collection of models that illustrate model use and test models" + extends Modelica.Icons.ExamplesPackage; + +end Examples; diff --git a/Buildings/Fluid/AirFilters/Examples/package.order b/Buildings/Fluid/AirFilters/Examples/package.order new file mode 100644 index 00000000000..8470d611953 --- /dev/null +++ b/Buildings/Fluid/AirFilters/Examples/package.order @@ -0,0 +1 @@ +Generic diff --git a/Buildings/Fluid/AirFilters/Generic.mo b/Buildings/Fluid/AirFilters/Generic.mo new file mode 100644 index 00000000000..ab8a0a67e9a --- /dev/null +++ b/Buildings/Fluid/AirFilters/Generic.mo @@ -0,0 +1,239 @@ +within Buildings.Fluid.AirFilters; +model Generic + replaceable package Medium = + Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Air" + annotation (choices( + choice(redeclare package Medium = Buildings.Media.Air "Moist air"), + choice(redeclare package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Moist air with CO2")), + Documentation(revisions=" + +")); + parameter Real mCon_nominal + "Contaminant held capacity of the filter"; + parameter Real epsFun[:] + "Filter efficiency curve"; + parameter Real b( final min = 1 + 1E-3) + "Resistance coefficient"; + parameter Modelica.Units.SI.MassFlowRate m_flow_nominal + "Nominal mass flow rate"; + parameter Modelica.Units.SI.PressureDifference dp_nominal + "Nominal pressure drop"; + Buildings.Fluid.AirFilters.BaseClasses.PressureDropInputFlowCoefficient res( + redeclare package Medium = Medium, + m_flow_nominal=m_flow_nominal, + dp_nominal=dp_nominal) "pressure resistance" + annotation (Placement(transformation(extent={{-28,-10},{-8,10}}))); + Buildings.Fluid.AirFilters.BaseClasses.MassTransfer masTra(redeclare package + Medium = Medium, m_flow_nominal=m_flow_nominal) "contaminant removal" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + Buildings.Fluid.AirFilters.BaseClasses.SimpleCharacterization simCha( + final mCon_nominal=mCon_nominal, + final epsFun=epsFun, + final b=b) "filter characterization" + annotation (Placement(transformation(extent={{22,50},{42,70}}))); + Buildings.Fluid.AirFilters.BaseClasses.MassAccumulation masAcc(final + mCon_nominal=mCon_nominal, final mCon_reset=0) "contaminant accumulation" + annotation (Placement(transformation(extent={{-20,50},{0,70}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_a( + redeclare package Medium = Medium) + "Fluid connector a (positive design flow direction is from port_a to port_b)" + annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_b( + redeclare package Medium = Medium) + "Fluid connector b (positive design flow direction is from port_a to port_b)" + annotation (Placement(transformation(extent={{90,-10},{110,10}}))); + Modelica.Blocks.Interfaces.BooleanInput triRep + "replacing the filter when trigger becomes true" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + Modelica.Blocks.Sources.RealExpression traceSubstancesFlow(y=inStream(port_a.C_outflow[ + 1])) + "trace substances flow rate" + annotation (Placement(transformation(extent={{-72,70},{-52,90}}))); +equation + connect(masAcc.mCon, simCha.mCon) + annotation (Line(points={{2,60},{20,60}}, color={0,0,127})); + connect(simCha.kCor, res.kCor) annotation (Line(points={{44,53.8},{50,53.8},{50, + 54},{56,54},{56,38},{-18,38},{-18,12}}, color={0,0,127})); + connect(res.port_a, port_a) + annotation (Line(points={{-28,0},{-100,0}}, color={0,127,255})); + connect(res.port_b, masTra.port_a) + annotation (Line(points={{-8,0},{40,0}}, color={0,127,255})); + connect(masTra.port_b, port_b) + annotation (Line(points={{60,0},{100,0}}, color={0,127,255})); + connect(masAcc.triRep, triRep) annotation (Line(points={{-22,53.8},{-22,54},{-94, + 54},{-94,60},{-120,60}}, color={255,0,255})); + connect(traceSubstancesFlow.y, masAcc.mCon_flow) annotation (Line(points={{-51, + 80},{-40,80},{-40,66},{-22,66}}, color={0,0,127})); + connect(simCha.eps, masTra.eps) annotation (Line(points={{44,65.8},{52,65.8},{ + 52,66},{60,66},{60,28},{26,28},{26,6},{38,6}}, color={0,0,127})); + connect(masTra.m_flow_in[1], traceSubstancesFlow.y) annotation (Line(points={{ + 50,12},{50,20},{-40,20},{-40,80},{-51,80}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-20,90},{22,-80}}, + lineColor={28,108,200}, + fillColor={255,255,255}, + fillPattern=FillPattern.None, + lineThickness=0.5), + Line( + points={{8,90},{-20,68}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{22,40},{-20,0}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{22,-38},{-20,-80}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{-72,50},{-56,60},{-40,48},{-30,58}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{-30,58},{-40,58}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{-30,58},{-30,50}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{-72,0},{-56,10},{-40,-2},{-30,8}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{-30,8},{-40,8}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{-30,8},{-30,0}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{-72,-48},{-56,-38},{-40,-50},{-30,-40}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{-30,-40},{-40,-40}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{-30,-40},{-30,-48}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{28,52},{44,62},{60,50},{70,60}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{70,60},{60,60}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{70,60},{70,52}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{28,2},{44,12},{60,0},{70,10}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{70,10},{60,10}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{70,10},{70,2}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{28,-46},{44,-36},{60,-48},{70,-38}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{70,-38},{60,-38}}, + color={28,108,200}, + thickness=0.5), + Line( + points={{70,-38},{70,-46}}, + color={28,108,200}, + thickness=0.5), + Ellipse( + extent={{-54,70},{-48,64}}, + lineColor={0,0,0}, + lineThickness=0.5, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-62,46},{-56,40}}, + lineColor={0,0,0}, + lineThickness=0.5, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-50,36},{-44,30}}, + lineColor={0,0,0}, + lineThickness=0.5, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-64,24},{-58,18}}, + lineColor={0,0,0}, + lineThickness=0.5, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-62,-2},{-56,-8}}, + lineColor={0,0,0}, + lineThickness=0.5, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-46,-12},{-40,-18}}, + lineColor={0,0,0}, + lineThickness=0.5, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-64,-26},{-58,-32}}, + lineColor={0,0,0}, + lineThickness=0.5, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-48,-30},{-42,-36}}, + lineColor={0,0,0}, + lineThickness=0.5, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-60,-52},{-54,-58}}, + lineColor={0,0,0}, + lineThickness=0.5, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{38,38},{44,32}}, + lineColor={0,0,0}, + lineThickness=0.5, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{40,-16},{46,-22}}, + lineColor={0,0,0}, + lineThickness=0.5, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Text( + extent={{-145,-100},{155,-140}}, + textColor={0,0,255}, + textString="%name")}), + defaultComponentName="genFilter", + Diagram(coordinateSystem(preserveAspectRatio=false))); +end Generic; diff --git a/Buildings/Fluid/AirFilters/package.mo b/Buildings/Fluid/AirFilters/package.mo new file mode 100644 index 00000000000..bc3c0667d25 --- /dev/null +++ b/Buildings/Fluid/AirFilters/package.mo @@ -0,0 +1,4 @@ +within Buildings.Fluid; +package AirFilters "Package with models of air filters" + extends Modelica.Icons.VariantsPackage; +end AirFilters; diff --git a/Buildings/Fluid/AirFilters/package.order b/Buildings/Fluid/AirFilters/package.order new file mode 100644 index 00000000000..3ba361f7e25 --- /dev/null +++ b/Buildings/Fluid/AirFilters/package.order @@ -0,0 +1,3 @@ +Generic +Examples +BaseClasses diff --git a/Buildings/Fluid/package.order b/Buildings/Fluid/package.order index 6520d3b02e8..cd638508495 100644 --- a/Buildings/Fluid/package.order +++ b/Buildings/Fluid/package.order @@ -1,5 +1,6 @@ UsersGuide Actuators +AirFilters Boilers CHPs Chillers diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassAccumulation.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassAccumulation.mos new file mode 100644 index 00000000000..b15143d33bc --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassAccumulation.mos @@ -0,0 +1,3 @@ +simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.MassAccumulation", tolerance=1e-06, method="CVode", resultFile="MassAccumulation"); +createPlot(id=1, position={69, -7, 584, 381}, y={"massAccumulation.mCon"}, range={0.0, 1.0, -0.2, 0.6000000000000001}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={69, -7, 584, 381}, y={"massAccumulation.mCon_flow"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassTransfer.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassTransfer.mos new file mode 100644 index 00000000000..98ccef08f20 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassTransfer.mos @@ -0,0 +1,3 @@ +simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.MassTransfer", tolerance=1e-06, method="CVode", resultFile="MassTransfer"); +createPlot(id=1, position={49, 30, 734, 454}, y={"C_in.C", "C_out.C"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={49, 30, 734, 454}, y={"masTra.eps"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mos new file mode 100644 index 00000000000..d217f67a2b3 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mos @@ -0,0 +1,5 @@ +simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.PressureDropInputFlowCoefficient", tolerance=1e-06, method="CVode", resultFile="PressureDropInputFlowCoefficient"); +createPlot(id=1, position={13, 36, 845, 624}, y={"resFixed.m_flow", "resVarying.port_a.m_flow"}, range={0.0, 1.0, -0.4, 0.4}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"kg/s", "kg/s"}); +createPlot(id=1, position={13, 36, 845, 624}, y={"resFixed.k", "resVarying.k"}, range={0.0, 1.0, 0.04, 0.065}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={13, 36, 845, 624}, y={"kCor.y"}, range={0.0, 1.0, 0.5, 2.5}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); + diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mos new file mode 100644 index 00000000000..cffd158fcef --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mos @@ -0,0 +1,5 @@ +simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.SimpleCharacterization",tolerance=1e-06, method="CVode", resultFile="SimpleCharacterization"); +createPlot(id=1, position={26, 26, 824, 615}, y={"mCon.y"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={26, 26, 824, 615}, y={"simCha.eps"}, range={0.0, 1.0, 0.8500000000000001, 1.05}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={26, 26, 824, 615}, y={"simCha.kCor"}, range={0.0, 1.0, 0.9, 1.3}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); + diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Generic.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Generic.mos new file mode 100644 index 00000000000..9ff6841b4c4 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Generic.mos @@ -0,0 +1,6 @@ +simulateModel("Buildings.Fluid.AirFilters.Examples.Generic", method="Cvode", tolerance=1e-06, resultFile="Generic"); +createPlot(id=1, position={35, -11, 642, 588}, y={"C_in.C", "C_out.C"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={35, -11, 642, 588}, y={"filter.simCha.eps"}, range={0.0, 1.0, 0.9, 1.0}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={35, -11, 642, 588}, y={"filter.triRep"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={35, -11, 642, 588}, y={"mCon_flow.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s"); + From ca8b5febd0d210c27a92a89d7e0da0d06a1fd469 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 28 Dec 2023 16:50:08 -0500 Subject: [PATCH 02/47] cleanup --- .../BaseClasses/MassAccumulation.mo | 48 +++++++++----- .../AirFilters/BaseClasses/MassTransfer.mo | 7 ++- .../PressureDropInputFlowCoefficient.mo | 4 +- .../BaseClasses/SimpleCharacterization.mo | 12 ++-- .../Validation/MassAccumulation.mo | 10 +-- .../BaseClasses/Validation/MassTransfer.mo | 14 +++-- .../PressureDropInputFlowCoefficient.mo | 15 ++--- .../Validation/SimpleCharacterization.mo | 16 ++--- .../BaseClasses/Validation/package.order | 2 +- .../AirFilters/BaseClasses/package.order | 2 +- .../Fluid/AirFilters/Examples/Generic.mo | 24 +++++-- .../Fluid/AirFilters/Examples/package.mo | 7 +++ Buildings/Fluid/AirFilters/Generic.mo | 62 ++++++++++++++++--- Buildings/Fluid/AirFilters/package.mo | 6 ++ 14 files changed, 166 insertions(+), 63 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo index 7c8e0e263b5..2e642c5e236 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo @@ -2,11 +2,12 @@ within Buildings.Fluid.AirFilters.BaseClasses; model MassAccumulation "Component that mimics the accumulation of the contaminants" parameter Real mCon_nominal - "Contaminant held capacity of the filter"; + "contaminant held capacity of the filter"; parameter Real mCon_reset - "Initial contaminant mass of the filter"; + "initial contaminant mass of the filter"; Modelica.Blocks.Interfaces.BooleanInput triRep - "replacing the filter when trigger becomes true" annotation (Placement( + "replacing the filter when trigger becomes true" + annotation (Placement( transformation( extent={{20,-20},{-20,20}}, rotation=180, @@ -14,16 +15,21 @@ model MassAccumulation extent={{-20,-20},{20,20}}, rotation=0, origin={-120,-62}))); - Modelica.Blocks.Interfaces.RealInput mCon_flow - "The contaminant mass flow rate" annotation (Placement(transformation( + Modelica.Blocks.Interfaces.RealInput mCon_flow( + final unit = "kg/s") + "The contaminant mass flow rate" + annotation (Placement(transformation( extent={{20,-20},{-20,20}}, rotation=180, origin={-120,60}), iconTransformation( extent={{-20,-20},{20,20}}, rotation=0, origin={-120,60}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput mCon - "mass of the contaminant held by the filter" annotation (Placement( + + Buildings.Controls.OBC.CDL.Interfaces.RealOutput mCon( + final unit = "kg") + "mass of the contaminant held by the filter" + annotation (Placement( transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={ {100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Reals.IntegratorWithReset intWitRes @@ -32,7 +38,8 @@ model MassAccumulation Buildings.Controls.OBC.CDL.Reals.Sources.Constant con(k=mCon_reset) "constant" annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); - Modelica.Blocks.Logical.Greater greater "check if the filter is full" + Modelica.Blocks.Logical.Greater greater + "check if the filter is full" annotation (Placement(transformation(extent={{40,-48},{60,-28}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(k=mCon_nominal) "constant" @@ -40,11 +47,10 @@ model MassAccumulation Buildings.Controls.OBC.CDL.Utilities.Assert assMes(message="*** Warning in " + getInstanceName() + ":the filter needs to be replaced") "Error message when the filter is full, i.e., the mass held by the filter is larger than its capacity" - annotation (Placement(transformation(extent={{72,-50},{92,-30}}))); + annotation (Placement(transformation(extent={{72,-48},{92,-28}}))); equation connect(intWitRes.u, mCon_flow) annotation (Line(points={{-12,0},{-40,0},{-40, - 60},{-120,60}}, - color={0,0,127})); + 60},{-120,60}}, color={0,0,127})); connect(intWitRes.y, mCon) annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); connect(con.y, intWitRes.y_reset_in) annotation (Line(points={{-58,-20},{-20,-20}, @@ -52,8 +58,7 @@ equation connect(intWitRes.trigger, triRep) annotation (Line(points={{0,-12},{0,-60},{-120,-60}}, color={255,0,255})); connect(assMes.u, greater.y) - annotation (Line(points={{70,-40},{66,-40},{66,-38},{61,-38}}, - color={255,0,255})); + annotation (Line(points={{70,-38},{61,-38}}, color={255,0,255})); connect(greater.u2, intWitRes.y) annotation (Line(points={{38,-46},{20,-46},{20, 0},{12,0}}, color={0,0,127})); connect(con1.y, greater.u1) annotation (Line(points={{22,50},{30,50},{30,-38}, @@ -70,5 +75,20 @@ equation textString="%name")}), Diagram(coordinateSystem( preserveAspectRatio=false)), - defaultComponentName="masAcc"); + defaultComponentName="masAcc", + Documentation(info=" +

+This model mimics the process for a filter to capture the contaminants. +The mass of the contaminants, mCon, increases by time. +However, when the input signal triRep changes from false +to true, mCon is reinitialized to a constant mCon_reset. +

+", revisions=" + +")); end MassAccumulation; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo index 0197f73a1d1..3275c2c0306 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -11,9 +11,10 @@ model MassTransfer rotation=270, origin={0,120}))); Modelica.Blocks.Interfaces.RealInput eps( + final unit = "1", final min = 0, final max= 1) - "mass tranfer coefficient" + "mass transfer coefficient" annotation (Placement(transformation( extent={{20,-20},{-20,20}}, rotation=180, @@ -51,7 +52,7 @@ equation Documentation(info="

This model sets the trace substance -of the medium that leaves port_a by +of the medium that leaves port_b by

   port_b.C_outflow = inStream(port_a.C_outflow) - eps * m_flow_in;
@@ -62,7 +63,7 @@ where eps is an input mass transfer efficiency and
 

This model has no pressure drop. -In case of reverse flow, +In the case of reverse flow, the fluid that leaves port_a has the same properties as the fluid that enters port_b.

diff --git a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mo index dbec042eef8..f14af0b0ed0 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mo @@ -12,7 +12,8 @@ model PressureDropInputFlowCoefficient Real k "Flow coefficient, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2)"; Modelica.Blocks.Interfaces.RealInput kCor( - min= 1) + unit = "1", + min = 1) "Flow coefficient" annotation (Placement(transformation( extent={{-20,-20},{20,20}}, @@ -95,7 +96,6 @@ ṁ = m_flow_nominal/(√dp_no

where kCor is a correction factor of the flow coefficient. -

", revisions="
  • diff --git a/Buildings/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mo b/Buildings/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mo index af3fd579eff..b576ebee298 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mo @@ -7,7 +7,7 @@ model SimpleCharacterization "Filter efficiency curve"; parameter Real b( final min = 1 + 1E-3) "Resistance coefficient"; - Modelica.Blocks.Interfaces.RealInput mCon + Modelica.Blocks.Interfaces.RealInput mCon(final unit="kg") "Mass of the contaminant held by the filter" annotation (Placement( transformation( @@ -18,14 +18,16 @@ model SimpleCharacterization rotation=0, origin={-120,0}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput eps( + final unit="1", final min = 0, final max = 1) "Filter efficiency" annotation ( Placement(transformation(extent={{100,38},{140,78}}), iconTransformation( extent={{100,38},{140,78}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput kCor( + final unit="1", final min = 1) - "Flow coefficient" + "Flow coefficient correction" annotation ( Placement(transformation(extent={{100,-60},{140,-20}}), iconTransformation(extent={{100,-82},{140,-42}}))); @@ -62,7 +64,7 @@ First implementation.

    This model calculates the filter efficiency based on the mass of the contaminants held by the filter.

    -

    +

    eps = epsFun1 + epsFun2 ɸ + epsFun3 ɸ2 + ...,

    @@ -71,9 +73,9 @@ the contaminants, and the coefficients epsFuni are declared by the parameter epsFun.

    -This model also calculates the flow coefficiency of the filter by +This model also calculates the flow coefficient of the filter by

    -

    +

    kCor = bɸ,

    diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo index b722fb773d9..37252286f72 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo @@ -4,11 +4,13 @@ model MassAccumulation extends Modelica.Icons.Example; Buildings.Fluid.AirFilters.BaseClasses.MassAccumulation masAcc(mCon_nominal=1, mCon_reset=0) + "contaminant accumulation" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Modelica.Blocks.Sources.Ramp mCon_flow( duration=1, height=1.2, - offset=0) "contaminant mass flow rate" + offset=0) + "contaminant mass flow rate" annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse RepSig(period=1, shift=0.5) "filter replacement signal" @@ -31,13 +33,13 @@ First implementation. ", info="

    The input contaminant mass flow rate mCon_flow changes -from 0 to 1.2 during the period from 0 to 1 sencond; +from 0 to 1.2 during the period from 0 to 1 second; The filter replacement signal changes from false to true at 0.5 seconds.

    The contaminant mass masAcc.mCon increases from 0 to 0.15 -during the period from 0 to 0.5 sencond; -It drops to 0 at 0.5 seonds and keeps increase again after that. +during the period from 0 to 0.5 seconds; +It drops to 0 at 0.5 seconds and keeps increasing again after that.

    ")); end MassAccumulation; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo index 9259ee881f9..e5021f5186b 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo @@ -2,7 +2,8 @@ within Buildings.Fluid.AirFilters.BaseClasses.Validation; model MassTransfer "Validation model for the MassTransfer model" extends Modelica.Icons.Example; - package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Medium model"; + package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2"}) + "Air"; Buildings.Fluid.Sources.TraceSubstancesFlowSource sou( redeclare package Medium = Medium, m_flow=1, @@ -24,17 +25,18 @@ model MassTransfer Modelica.Blocks.Sources.Ramp eps( duration=1, height=-0.7, - offset=1) "Mass transfer efficiency" + offset=1) + "mass transfer efficiency" annotation (Placement(transformation(extent={{-60,40},{-40,60}}))); Modelica.Blocks.Sources.RealExpression traceSubstancesFlow( y=inStream(masTra.port_a.C_outflow[1])) "trace substances flow rate" annotation (Placement(transformation(extent={{-20,50},{0,70}}))); Buildings.Fluid.Sensors.TraceSubstances C_out(redeclare package Medium = Medium) - "Trace substance sensor of outlet air" + "trace substance sensor of outlet air" annotation (Placement(transformation(extent={{30,10},{50,30}}))); Buildings.Fluid.Sensors.TraceSubstances C_in(redeclare package Medium = Medium) - "Trace substance sensor of inlet air" + "trace substance sensor of inlet air" annotation (Placement(transformation(extent={{-38,-40},{-18,-20}}))); equation connect(eps.y, masTra.eps) annotation (Line(points={{-39,50},{-24,50},{-24,6}, @@ -54,13 +56,13 @@ __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirF "Simulate and plot"), Documentation(info="

    -The input mass tranfer efficiency eps changes from 1 to 0.3 from 0 to 1 sencond; +The input mass transfer efficiency eps changes from 1 to 0.3 from 0 to 1 second; The trace substance concentration of the inlet port is fixed as 1.

    The trace substance concentration of the outlet port is 0 at the 0 second when the eps is 1, meaning all the trace substance has been removed. -As the eps decreases, the trace substance concentration of the outlet port increases to 0.7. +As the eps decreases, the trace substance concentration of the outlet port increases to 0.7.

    ", revisions="
      diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropInputFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropInputFlowCoefficient.mo index 48ca9f93523..f69d9b30240 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropInputFlowCoefficient.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropInputFlowCoefficient.mo @@ -3,7 +3,7 @@ model PressureDropInputFlowCoefficient "Validation model for flow resistances with a varying flow coefficient" extends Modelica.Icons.Example; - package Medium = Buildings.Media.Air "Medium model"; + package Medium = Buildings.Media.Air "Air"; Modelica.Blocks.Sources.Ramp P( duration=1, @@ -46,11 +46,12 @@ model PressureDropInputFlowCoefficient width=100, period=0.5, offset=1, - startTime=0.5) "flow coefficient correction factor" + startTime=0.5) + "flow coefficient correction factor" annotation (Placement(transformation(extent={{-80,62},{-60,82}}))); equation connect(P.y, sou.p_in) annotation (Line(points={{-71,8},{-62,8},{-52,8}}, - color={0,0,127})); + color={0,0,127})); connect(sou.ports[1], resFixed.port_a) annotation (Line(points={{-30,-1},{-20, -1},{-20,0},{-10,0}}, color={0,127,255})); connect(resFixed.port_b, sin.ports[1]) @@ -66,12 +67,12 @@ __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirF "Simulate and plot"), Documentation(info="

      -Before 0.5 seconds, the flow rates of resFixed (pressure resistance with a constant flow coefficient) and resVarying -(ressure resistance with a varying flow coefficient) are the same with the identical pressure drop. +Before 0.5 seconds, the flow rates of the resFixed (pressure resistance with a constant flow coefficient) and the resVarying +(pressure resistance with a varying flow coefficient) are the same with the identical pressure drop.

      -After 0.5 seconds, however, the flow rates of resVarying are lower than those of resFixed as the flow coefficient -of former decreases by √2. +After 0.5 seconds, however, the flow rate of the resVarying is lower than that of resFixed as the flow coefficient +of the former decreases by √2.

      ", revisions="
        diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/SimpleCharacterization.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/SimpleCharacterization.mo index 52a831c9ac5..466bd2a2ef1 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/SimpleCharacterization.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/SimpleCharacterization.mo @@ -5,12 +5,14 @@ model SimpleCharacterization Buildings.Fluid.AirFilters.BaseClasses.SimpleCharacterization simCha( mCon_nominal=1, epsFun={0.98,-0.1}, - b=1.2) "filter characterization" + b=1.2) + "filter characterization" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Modelica.Blocks.Sources.Ramp mCon( duration=1, height=1.2, - offset=0) "mass of the contaminant held by the filter" + offset=0) + "mass of the contaminant held by the filter" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); equation connect(mCon.y, simCha.mCon) @@ -21,17 +23,17 @@ __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirF Documentation(info="

        The input mass of the contaminant held by the filter mCon -changes from 0 to 1.2 from 0 to 1 sencond. +changes from 0 to 1.2 from 0 to 1 second.

        The eps changes from 0.98 to 0.88 during the period from -0 second to 0.85 seconds. -After 0.85 seconds, the eps keeps unchanged when mCon changes. -This is because the Phi already reaches the maximum value. +0 to 0.85 seconds. +After 0.85 seconds, the eps remains unchanged when mCon changes. +This is because the Phi already reaches the maximum value.

        Likewise, the kCor changes from 1 to 1.2 during the period from -0 second to 0.85 seconds and then keeps constant afterward. +0 to 0.85 seconds and then keeps constant afterward.

        ", revisions="
          diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.order b/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.order index d65d4b9ac5f..6a39732295b 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.order +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.order @@ -1,4 +1,4 @@ -SimpleCharacterization MassAccumulation MassTransfer PressureDropInputFlowCoefficient +SimpleCharacterization \ No newline at end of file diff --git a/Buildings/Fluid/AirFilters/BaseClasses/package.order b/Buildings/Fluid/AirFilters/BaseClasses/package.order index 13e5fdd44aa..0bbdcfaaedb 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/package.order +++ b/Buildings/Fluid/AirFilters/BaseClasses/package.order @@ -1,5 +1,5 @@ -SimpleCharacterization MassAccumulation MassTransfer PressureDropInputFlowCoefficient +SimpleCharacterization Validation diff --git a/Buildings/Fluid/AirFilters/Examples/Generic.mo b/Buildings/Fluid/AirFilters/Examples/Generic.mo index f15ebd689e8..420960a850d 100644 --- a/Buildings/Fluid/AirFilters/Examples/Generic.mo +++ b/Buildings/Fluid/AirFilters/Examples/Generic.mo @@ -1,6 +1,6 @@ within Buildings.Fluid.AirFilters.Examples; model Generic - "Example model for the generic air filter model" + "Example for using the generic air filter model" extends Modelica.Icons.Example; package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Medium model"; Buildings.Fluid.AirFilters.Generic filter( @@ -10,6 +10,7 @@ model Generic b=1.2, m_flow_nominal=1, dp_nominal(displayUnit="Pa") = 100) + "air filter" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Sources.Boundary_pT sou( redeclare package Medium = Medium, @@ -28,11 +29,11 @@ model Generic extent={{80,-10},{60,10}}))); Buildings.Fluid.Sensors.TraceSubstances C_in( redeclare package Medium = Medium) - "Trace substance sensor of inlet air" + "trace substance sensor of inlet air" annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); Buildings.Fluid.Sensors.TraceSubstances C_out( redeclare package Medium = Medium) - "Trace substance sensor of outlet air" + "trace substance sensor of outlet air" annotation (Placement(transformation(extent={{30,28},{50,48}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse RepSig( period=1, @@ -42,7 +43,8 @@ model Generic Modelica.Blocks.Sources.Ramp mCon_flow( duration=1, height=1.2, - offset=0) "contaminant mass flow rate" + offset=0) + "contaminant mass flow rate" annotation (Placement(transformation(extent={{-96,-30},{-76,-10}}))); equation connect(filter.port_b, sin.ports[1]) @@ -67,5 +69,19 @@ December 22, 2023, by Sen Huang:
          First implementation.
        +", info=" +

        +The input contaminant mass flow rate mCon_flow changes +from 0 to 1.2 during the period from 0 to 1 second; +The filter replacement signal changes from false to true at 0.5 seconds. +

        +

        +The filter efficiency eps decreases during the period +from 0 to 0.5 seconds as the accumulation of the contaminants; +At 0.5 seconds, it gets a sudden increase as the filter is replaced; +After 0.5 seconds, it keeps decreasing again till the end. +The same pattern is also applied to the flow coefficient of the filter and thereby +the mass flow rate of the air through the filter. +

        ")); end Generic; diff --git a/Buildings/Fluid/AirFilters/Examples/package.mo b/Buildings/Fluid/AirFilters/Examples/package.mo index 08b4d6347c0..b3bd000d111 100644 --- a/Buildings/Fluid/AirFilters/Examples/package.mo +++ b/Buildings/Fluid/AirFilters/Examples/package.mo @@ -2,4 +2,11 @@ within Buildings.Fluid.AirFilters; package Examples "Collection of models that illustrate model use and test models" extends Modelica.Icons.ExamplesPackage; +annotation (Documentation(info=" +

        +This package contains examples for the use of models that can be found in + +Buildings.Fluid.AirFilters. +

        +")); end Examples; diff --git a/Buildings/Fluid/AirFilters/Generic.mo b/Buildings/Fluid/AirFilters/Generic.mo index ab8a0a67e9a..4f7cbfcd5ee 100644 --- a/Buildings/Fluid/AirFilters/Generic.mo +++ b/Buildings/Fluid/AirFilters/Generic.mo @@ -23,10 +23,14 @@ First implementation. "Nominal mass flow rate"; parameter Modelica.Units.SI.PressureDifference dp_nominal "Nominal pressure drop"; + Modelica.Blocks.Interfaces.BooleanInput triRep + "replacing the filter when trigger becomes true" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); Buildings.Fluid.AirFilters.BaseClasses.PressureDropInputFlowCoefficient res( redeclare package Medium = Medium, m_flow_nominal=m_flow_nominal, - dp_nominal=dp_nominal) "pressure resistance" + dp_nominal=dp_nominal) + "pressure resistance" annotation (Placement(transformation(extent={{-28,-10},{-8,10}}))); Buildings.Fluid.AirFilters.BaseClasses.MassTransfer masTra(redeclare package Medium = Medium, m_flow_nominal=m_flow_nominal) "contaminant removal" @@ -36,8 +40,10 @@ First implementation. final epsFun=epsFun, final b=b) "filter characterization" annotation (Placement(transformation(extent={{22,50},{42,70}}))); - Buildings.Fluid.AirFilters.BaseClasses.MassAccumulation masAcc(final - mCon_nominal=mCon_nominal, final mCon_reset=0) "contaminant accumulation" + Buildings.Fluid.AirFilters.BaseClasses.MassAccumulation masAcc( + final mCon_nominal=mCon_nominal, + final mCon_reset=0) + "contaminant accumulation" annotation (Placement(transformation(extent={{-20,50},{0,70}}))); Modelica.Fluid.Interfaces.FluidPort_a port_a( redeclare package Medium = Medium) @@ -47,11 +53,9 @@ First implementation. redeclare package Medium = Medium) "Fluid connector b (positive design flow direction is from port_a to port_b)" annotation (Placement(transformation(extent={{90,-10},{110,10}}))); - Modelica.Blocks.Interfaces.BooleanInput triRep - "replacing the filter when trigger becomes true" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); - Modelica.Blocks.Sources.RealExpression traceSubstancesFlow(y=inStream(port_a.C_outflow[ - 1])) + + Modelica.Blocks.Sources.RealExpression traceSubstancesFlow( + y=inStream(port_a.C_outflow[1])) "trace substances flow rate" annotation (Placement(transformation(extent={{-72,70},{-52,90}}))); equation @@ -235,5 +239,45 @@ equation textColor={0,0,255}, textString="%name")}), defaultComponentName="genFilter", - Diagram(coordinateSystem(preserveAspectRatio=false))); + Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
          +
        • +December 22, 2023, by Sen Huang:
          +First implementation. +
        • +
        +", info=" +

        +Model of a generic air filter, which captures the impacts of the contamination accumulation on +the pressure drop and the filter efficiency. +

        +

        +This model does not require detailed information of filters, such as filter type or geometric data. +Instead, its dynamic characteristics are defined by three parameters, mCon_nominal,epsFun, +and b. +

        +
          +
        • +mCon_nominal determines the maximum mass of the contaminants that the filter can hold; +
        • +
        • +epsFun is a vector of coefficients that determines how the filter efficiency changes by the accumulation +of contaminants; +
        • +
        • +b is a constant that determines how the flow coefficient changes by the accumulation +of contaminants. +
        • +
        +See more detailed descriptions in +Buildings.Fluid.AirFilters.BaseClasses.SimpleCharacterization. +

        +The input boolean flag, triRep, triggers the filter replacement. +Specifically, when triRep changes from false to true, the mass +of the contaminants that the filter holds, mCon = 0. +

        +Note: +A warning will be triggered when mCon > mCon_nominal. +")); end Generic; diff --git a/Buildings/Fluid/AirFilters/package.mo b/Buildings/Fluid/AirFilters/package.mo index bc3c0667d25..62d7ed3b17d 100644 --- a/Buildings/Fluid/AirFilters/package.mo +++ b/Buildings/Fluid/AirFilters/package.mo @@ -1,4 +1,10 @@ within Buildings.Fluid; package AirFilters "Package with models of air filters" extends Modelica.Icons.VariantsPackage; + +annotation (Documentation(info=" +

        +This package contains component models for air filters. +

        +")); end AirFilters; From 5422c41e56d3d5108a1242f446b9e496627e5474 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 28 Dec 2023 16:50:46 -0500 Subject: [PATCH 03/47] add OM scripts --- ...AirFilters.BaseClasses.Validation.MassAccumulation.mos | 5 +++++ ...uid.AirFilters.BaseClasses.Validation.MassTransfer.mos | 6 ++++++ ...lasses.Validation.PressureDropInputFlowCoefficient.mos | 8 ++++++++ ...ters.BaseClasses.Validation.SimpleCharacterization.mos | 6 ++++++ .../Buildings.Fluid.AirFilters.Examples.Generic.mos | 8 ++++++++ 5 files changed, 33 insertions(+) create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.MassAccumulation.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.MassTransfer.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.PressureDropInputFlowCoefficient.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.SimpleCharacterization.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Generic.mos diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.MassAccumulation.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.MassAccumulation.mos new file mode 100644 index 00000000000..4908ca13148 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.MassAccumulation.mos @@ -0,0 +1,5 @@ +compareVars := + { + "masAcc.mCon", + "masAcc.mCon_flow" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.MassTransfer.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.MassTransfer.mos new file mode 100644 index 00000000000..1cd37100f08 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.MassTransfer.mos @@ -0,0 +1,6 @@ +compareVars := + { + "C_in.C", + "C_out.C", + "masTra.eps" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.PressureDropInputFlowCoefficient.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.PressureDropInputFlowCoefficient.mos new file mode 100644 index 00000000000..4a21b7b9a47 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.PressureDropInputFlowCoefficient.mos @@ -0,0 +1,8 @@ +compareVars := + { + "resFixed.m_flow", + "resVarying.port_a.m_flow", + "resFixed.k", + "resVarying.k", + "kCor.y" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.SimpleCharacterization.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.SimpleCharacterization.mos new file mode 100644 index 00000000000..29af9d5c7b5 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.SimpleCharacterization.mos @@ -0,0 +1,6 @@ +compareVars := + { + "mCon.y", + "simCha.eps", + "simCha.kCor" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Generic.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Generic.mos new file mode 100644 index 00000000000..b0f59ca030f --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Generic.mos @@ -0,0 +1,8 @@ +compareVars := + { + "C_in.C", + "C_out.C", + "filter.simCha.eps", + "filter.triRep", + "mCon_flow.y" + }; From f1557a84d77a698db858ad5c4a972a70102307a1 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 28 Dec 2023 16:51:16 -0500 Subject: [PATCH 04/47] update the plot script --- .../Dymola/Fluid/AirFilters/BaseClasses/MassAccumulation.mos | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassAccumulation.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassAccumulation.mos index b15143d33bc..a5af88707b5 100644 --- a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassAccumulation.mos +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassAccumulation.mos @@ -1,3 +1,3 @@ simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.MassAccumulation", tolerance=1e-06, method="CVode", resultFile="MassAccumulation"); -createPlot(id=1, position={69, -7, 584, 381}, y={"massAccumulation.mCon"}, range={0.0, 1.0, -0.2, 0.6000000000000001}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={69, -7, 584, 381}, y={"massAccumulation.mCon_flow"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={69, -7, 584, 381}, y={"masAcc.mCon"}, range={0.0, 1.0, -0.2, 0.6000000000000001}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={69, -7, 584, 381}, y={"masAcc.mCon_flow"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); From 526d305e145aec34447c8764faf2789f26a1b3b2 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 28 Dec 2023 16:51:39 -0500 Subject: [PATCH 05/47] reference data generation --- ...uid_AirFilters_BaseClasses_MassAccumulation.txt | 11 +++++++++++ ...s_Fluid_AirFilters_BaseClasses_MassTransfer.txt | 11 +++++++++++ ...aseClasses_PressureDropInputFlowCoefficient.txt | 13 +++++++++++++ ...rFilters_BaseClasses_SimpleCharacterization.txt | 11 +++++++++++ ...Buildings_Fluid_AirFilters_Examples_Generic.txt | 14 ++++++++++++++ 5 files changed, 60 insertions(+) create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_MassAccumulation.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_MassTransfer.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_PressureDropInputFlowCoefficient.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_SimpleCharacterization.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_Generic.txt diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_MassAccumulation.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_MassAccumulation.txt new file mode 100644 index 00000000000..283a54ed403 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_MassAccumulation.txt @@ -0,0 +1,11 @@ +last-generated=2023-12-28 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "1", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +masAcc.mCon=[0e+00, 6.09920818949409e-05, 2.410419805420901e-04, 5.410662519616293e-04, 9.610888522426917e-04, 1.501098929865695e-03, 2.1611150404528e-03, 2.941124582200979e-03, 3.841128606931138e-03, 4.86113791343273e-03, 6.001146798878266e-03, 7.261154321253466e-03, 8.641159551381743e-03, 1.014116295134996e-02, 1.176116326195002e-02, 1.350116902559678e-02, 1.536117656332307e-02, 1.734118127322078e-02, 1.944118398273132e-02, 2.1661188999891e-02, 2.400119158983249e-02, 2.646119686078426e-02, 2.904119746708769e-02, 3.174119700574817e-02, 3.456119975614166e-02, 3.750120103359222e-02, 4.056120962571547e-02, 4.374120410657492e-02, 4.704121087813544e-02, 5.046121694970593e-02, 5.40012115681321e-02, 5.766121954727234e-02, 6.144122309827679e-02, 6.534122157952887e-02, 6.936122331572599e-02, 7.350123179673608e-02, 7.776121923972396e-02, 8.214122590876444e-02, 8.664123186922182e-02, 9.126123712109607e-02, 9.600122732639663e-02, 1.008612307663012e-01, 1.058412409510677e-01, 1.109412350192031e-01, 1.16161235938555e-01, 1.215012436056331e-01, 1.269612415366344e-01, 1.32541239935398e-01, 1.382412525352928e-01, 1.440612468786326e-01, 1.500012427568436e-01, 6.060055716994352e-03, 1.224008743087589e-02, 1.854011749336643e-02, 2.496009608538999e-02, 3.150011931311366e-02, 3.816013623282798e-02, 4.494014499918336e-02, 5.18401605017786e-02, 5.886017900960682e-02, 6.600014641794391e-02, 7.326016274754042e-02, 8.064017090660114e-02, 8.814017835707516e-02, 9.576019254954309e-02, 1.03500206021967e-01, 1.113601715596613e-01, 1.193401828539246e-01, 1.274401934281705e-01, 1.356602032881154e-01, 1.440002124450935e-01, 1.524602208821753e-01, 1.610401919998651e-01, 1.697401982586353e-01, 1.785602037975035e-01, 1.875002235174179e-01, 1.965602276390772e-01, 2.057402459417827e-01, 2.150402486234251e-01, 2.244602089618859e-01, 2.340002243663778e-01, 2.436602390508278e-01, 2.534402381314408e-01, 2.633402513987686e-01, 2.733602788471426e-01, 2.835002298643578e-01, 2.937602253324707e-01, 3.041402349816298e-01, 3.146402588232746e-01, 3.252602670552958e-01, 3.36000259666325e-01, 3.468602311642084e-01, 3.578402215971924e-01, 3.689402560130475e-01, 3.801602450113881e-01, 3.915002780100251e-01, 4.029602953878214e-01, 4.145402277628651e-01, 4.262402429621189e-01, 4.380602425406647e-01, 4.500002562999725e-01] +masAcc.mCon_flow=[0e+00, 1.200000037252895e-02, 2.400000074505789e-02, 3.599999925494219e-02, 4.800000149011579e-02, 5.99999977648261e-02, 7.199999850988588e-02, 8.399999850988389e-02, 9.600000298022425e-02, 1.079999985098865e-01, 1.199999955296583e-01, 1.319999999999973e-01, 1.439999970197758e-01, 1.560000089406754e-01, 1.679999970197704e-01, 1.799999999999822e-01, 1.920000059604485e-01, 2.039999940395435e-01, 2.159999970197464e-01, 2.280000029802216e-01, 2.399999910593166e-01, 2.520000119209485e-01, 2.640000000000036e-01, 2.759999880791208e-01, 2.879999940395515e-01, 3.00000011920929e-01, 3.120000178812797e-01, 3.239999880790391e-01, 3.359999940395498e-01, 3.480000000000248e-01, 3.599999999999645e-01, 3.720000059604573e-01, 3.840000119209503e-01, 3.959999821185675e-01, 4.079999880791137e-01, 4.199999940395532e-01, 4.319999940394929e-01, 4.439999999999858e-01, 4.560000059604787e-01, 4.680000119209716e-01, 4.799999821186777e-01, 4.920000178813508e-01, 5.040000238417016e-01, 5.159999642372984e-01, 5.279999999999716e-01, 5.400000357626448e-01, 5.519999761582416e-01, 5.640000119209148e-01, 5.759999880792629e-01, 5.879999880791847e-01, 6.000000238418579e-01, 6.12e-01, 6.240000357622184e-01, 6.36000011920929e-01, 6.479999761587816e-01, 6.600000119209291e-01, 6.719999880790569e-01, 6.840000238416447e-01, 6.96e-01, 7.080000357620052e-01, 7.2e-01, 7.319999761585684e-01, 7.440000119209289e-01, 7.559999880790711e-01, 7.680000238414316e-01, 7.8e-01, 7.919999642379948e-01, 8.04e-01, 8.159999761583553e-01, 8.280000119209431e-01, 8.399999880790709e-01, 8.520000238412184e-01, 8.63999988079071e-01, 8.759999642377816e-01, 8.88e-01, 8.999999761581421e-01, 9.120000119206447e-01, 9.240000476831474e-01, 9.360000238410053e-01, 9.47999988079071e-01, 9.599999642375685e-01, 9.719999999999859e-01, 9.840000357625737e-01, 9.960000119204315e-01, 1.008000047683716e+00, 1.019999952317705e+00, 1.031999928475279e+00, 1.044000023841858e+00, 1.056e+00, 1.067999976158142e+00, 1.080000071524153e+00, 1.091999976158142e+00, 1.103999952317279e+00, 1.116000047683716e+00, 1.128000023841801e+00, 1.14e+00, 1.151999976158142e+00, 1.164e+00, 1.175999976158142e+00, 1.187999952316853e+00, 1.200000047683716e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_MassTransfer.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_MassTransfer.txt new file mode 100644 index 00000000000..a7fa45fe03b --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_MassTransfer.txt @@ -0,0 +1,11 @@ +last-generated=2023-12-28 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +C_in.C=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +C_out.C=[0e+00, 7.000000372528947e-03, 1.400000074505789e-02, 2.100000018626383e-02, 2.800000149011579e-02, 3.499999962747056e-02, 4.200000037252978e-02, 4.899999850988389e-02, 5.600000298022758e-02, 6.299999850988654e-02, 6.999999925494306e-02, 7.699999999999955e-02, 8.400000074505606e-02, 9.100000149011257e-02, 9.799999701977044e-02, 1.04999992549446e-01, 1.120000059604485e-01, 1.190000014901175e-01, 1.259999970197731e-01, 1.330000029802216e-01, 1.399999985098972e-01, 1.470000044703191e-01, 1.539999999999947e-01, 1.609999955296703e-01, 1.680000014901321e-01, 1.749999970197678e-01, 1.820000029802607e-01, 1.88999988079119e-01, 1.959999940395409e-01, 2.030000000000249e-01, 2.099999850988921e-01, 2.169999910593139e-01, 2.24000011920897e-01, 2.309999970197287e-01, 2.380000029802216e-01, 2.450000089406701e-01, 2.519999940395994e-01, 2.590000000000213e-01, 2.660000059604432e-01, 2.73000011920865e-01, 2.799999970197944e-01, 2.870000029802162e-01, 2.940000089406381e-01, 3.009999940395675e-01, 3.079999999999893e-01, 3.150000059604112e-01, 3.219999910593406e-01, 3.289999970197624e-01, 3.360000029801843e-01, 3.429999880791137e-01, 3.499999940395355e-01, 3.569999999998579e-01, 3.640000059601803e-01, 3.710000119205026e-01, 3.779999761584619e-01, 3.849999821187842e-01, 3.919999880790569e-01, 3.989999940395355e-01, 4.06e-01, 4.130000059604644e-01, 4.199999701980329e-01, 4.269999761583552e-01, 4.339999821186776e-01, 4.410000178813224e-01, 4.480000238416448e-01, 4.550000298019671e-01, 4.619999940395356e-01, 4.69e-01, 4.760000059604645e-01, 4.830000119209431e-01, 4.900000178812158e-01, 4.970000238415381e-01, 5.039999880794973e-01, 5.109999642374974e-01, 5.180000000001421e-01, 5.249999761581421e-01, 5.320000119207868e-01, 5.389999880793552e-01, 5.460000238414316e-01, 5.529999582770684e-01, 5.599999940397132e-01, 5.669999701976635e-01, 5.740000059603578e-01, 5.809999821188552e-01, 5.880000178810026e-01, 5.950000119205737e-01, 6.019999880792842e-01, 6.090000238417869e-01, 6.159999999999289e-01, 6.230000357625737e-01, 6.300000119205738e-01, 6.370000059600737e-01, 6.439999821188552e-01, 6.510000178815001e-01, 6.579999940395497e-01, 6.650000298021447e-01, 6.720000059601448e-01, 6.790000000004263e-01, 6.859999761584263e-01, 6.930000119210711e-01, 6.99999988079071e-01] +masTra.eps=[1e+00, 9.929999707564718e-01, 9.860000011175885e-01, 9.789999718740608e-01, 9.72000002235177e-01, 9.649999742955168e-01, 9.580000033527655e-01, 9.509999754130923e-01, 9.440000044703564e-01, 9.369999791383583e-01, 9.30000008195632e-01, 9.229999776482609e-01, 9.160000067055345e-01, 9.089999761581634e-01, 9.020000104308101e-01, 8.949999850988122e-01, 8.880000089407127e-01, 8.809999836087147e-01, 8.740000178813615e-01, 8.669999821186172e-01, 8.60000016391264e-01, 8.529999806285198e-01, 8.460000149011665e-01, 8.389999895691685e-01, 8.320000134110691e-01, 8.24999988079071e-01, 8.180000119209716e-01, 8.109999970197198e-01, 8.040000208616204e-01, 7.969999850988762e-01, 7.900000298022691e-01, 7.829999940395249e-01, 7.760000178814254e-01, 7.690000029801736e-01, 7.620000268220741e-01, 7.549999910593299e-01, 7.480000357627229e-01, 7.409999999999787e-01, 7.340000238417371e-01, 7.26999988079135e-01, 7.20000032782528e-01, 7.129999970197838e-01, 7.059999612570396e-01, 6.990000059604325e-01, 6.919999701976882e-01, 6.849999940395888e-01, 6.779999791385857e-01, 6.710000029802375e-01, 6.639999672174933e-01, 6.570000119208863e-01, 6.499999761581421e-01, 6.430000000001421e-01, 6.359999642374974e-01, 6.289999880794973e-01, 6.219999940392158e-01, 6.150000178812157e-01, 6.079999821186207e-01, 6.010000059605711e-01, 5.939999701979263e-01, 5.869999940399263e-01, 5.799999999996448e-01, 5.730000238416447e-01, 5.65999988079e-01, 5.59000011921e-01, 5.519999761583553e-01, 5.450000000003552e-01, 5.380000059600737e-01, 5.310000298020737e-01, 5.239999940394289e-01, 5.170000178813793e-01, 5.099999821187843e-01, 5.030000059607842e-01, 4.960000119205026e-01, 4.890000059601803e-01, 4.819999999998579e-01, 4.749999940395355e-01, 4.679999880792132e-01, 4.609999821188908e-01, 4.539999761585684e-01, 4.470000119206092e-01, 4.400000059602868e-01, 4.330000000000142e-01, 4.259999940396421e-01, 4.189999880793198e-01, 4.119999821189974e-01, 4.050000178810382e-01, 3.980000119207158e-01, 3.910000059603934e-01, 3.840000000000711e-01, 3.769999940397487e-01, 3.699999880794263e-01, 3.630000238414671e-01, 3.560000178811447e-01, 3.490000119208224e-01, 3.420000059604503e-01, 3.350000000001777e-01, 3.279999940395356e-01, 3.210000298018961e-01, 3.140000238415737e-01, 3.070000178812513e-01, 3.00000011920929e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_PressureDropInputFlowCoefficient.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_PressureDropInputFlowCoefficient.txt new file mode 100644 index 00000000000..dcf11924a61 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_PressureDropInputFlowCoefficient.txt @@ -0,0 +1,13 @@ +last-generated=2023-12-28 +statistics-simulation= +{ + "linear": " ", + "nonlinear": "0", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +resFixed.m_flow=[-2.000000029802322e-01, -1.979898958946231e-01, -1.959591805021437e-01, -1.939072011516565e-01, -1.918332574885402e-01, -1.897366644520932e-01, -1.876166311024133e-01, -1.854723692582306e-01, -1.833030279544347e-01, -1.811077006599772e-01, -1.788854453315187e-01, -1.766352205117044e-01, -1.743559533156626e-01, -1.720465112551915e-01, -1.697056294890468e-01, -1.673320099037958e-01, -1.649242183820423e-01, -1.624807719811363e-01, -1.599999982090629e-01, -1.574801498546433e-01, -1.549193419747568e-01, -1.523154658712195e-01, -1.49666294136362e-01, -1.469693791280017e-01, -1.442220494145431e-01, -1.414213627576828e-01, -1.385640623400149e-01, -1.356465997078498e-01, -1.326649937639523e-01, -1.296148125345321e-01, -1.264911033563857e-01, -1.232882820334267e-01, -1.199999949269616e-01, -1.166190400862151e-01, -1.13137082525932e-01, -1.09544505975423e-01, -1.058300563925127e-01, -1.019803900276839e-01, -9.797958834188632e-02, -9.38083095666595e-02, -8.944272515175461e-02, -8.485281297903036e-02, -7.999999161387633e-02, -7.483315102402641e-02, -6.928203116120561e-02, -6.324554218165301e-02, -5.649876082379961e-02, -4.748456791606166e-02, -3.469959892482991e-02, -1.838472658598184e-02, 0e+00, 1.838472658573401e-02, 3.469964244690851e-02, 4.748459906110715e-02, 5.649873818139389e-02, 6.324554218176653e-02, 6.928203116118495e-02, 7.483315102396981e-02, 8.000000650484644e-02, 8.485282696927646e-02, 8.944271178323525e-02, 9.380830956675082e-02, 9.797958834191545e-02, 1.019803900276561e-01, 1.058300563924324e-01, 1.095445168360728e-01, 1.131370719642118e-01, 1.166190298603946e-01, 1.199999949269973e-01, 1.232882820334382e-01, 1.264911033563297e-01, 1.296148217220524e-01, 1.326649847593913e-01, 1.356465909143014e-01, 1.38564062340056e-01, 1.414213627576828e-01, 1.442220535451335e-01, 1.469693831760115e-01, 1.496663020881202e-01, 1.523154619512251e-01, 1.549193381234691e-01, 1.574801498546343e-01, 1.599999982090363e-01, 1.624807756439156e-01, 1.649242256020242e-01, 1.673320027736878e-01, 1.69705625972313e-01, 1.72046511255208e-01, 1.743559550243205e-01, 1.766352238820822e-01, 1.78885450323103e-01, 1.811076940717116e-01, 1.833030246988776e-01, 1.854723676496923e-01, 1.876166318964068e-01, 1.897366668055015e-01, 1.918332621444801e-01, 1.939071953819967e-01, 1.959591766960876e-01, 1.979898940111624e-01, 2.000000029802322e-01] +resVarying.port_a.m_flow=[-2.000000029802322e-01, -1.979898958946231e-01, -1.959591805021437e-01, -1.939072011516565e-01, -1.918332574885402e-01, -1.897366644520932e-01, -1.876166311024133e-01, -1.854723692582306e-01, -1.833030279544347e-01, -1.811077006599772e-01, -1.788854453315187e-01, -1.766352205117044e-01, -1.743559533156626e-01, -1.720465112551915e-01, -1.697056294890468e-01, -1.673320099037958e-01, -1.649242183820423e-01, -1.624807719811363e-01, -1.599999982090629e-01, -1.574801498546433e-01, -1.549193419747568e-01, -1.523154658712195e-01, -1.49666294136362e-01, -1.469693791280017e-01, -1.442220494145431e-01, -1.414213627576828e-01, -1.385640623400149e-01, -1.356465997078498e-01, -1.326649937639523e-01, -1.296148125345321e-01, -1.264911033563857e-01, -1.232882820334267e-01, -1.199999949269616e-01, -1.166190400862151e-01, -1.13137082525932e-01, -1.09544505975423e-01, -1.058300563925127e-01, -1.019803900276839e-01, -9.797958834188632e-02, -9.38083095666595e-02, -8.944272515175461e-02, -8.485281297903036e-02, -7.999999161387633e-02, -7.483315102402641e-02, -6.928203116120561e-02, -6.324554218165301e-02, -5.649876082379961e-02, -4.748456791606166e-02, -3.469959892482991e-02, -1.838472658598184e-02, 0e+00, 9.328871433143119e-03, 1.838472669582187e-02, 2.691360276525823e-02, 3.469959911413636e-02, 4.15841002789629e-02, 4.748456793967205e-02, 5.241376103124395e-02, 5.649876091157317e-02, 6.000000735274495e-02, 6.324554222064585e-02, 6.633249236978374e-02, 6.928203116711482e-02, 7.211102677004434e-02, 7.483315103734557e-02, 7.745967673870797e-02, 7.999999163483316e-02, 8.246210556573119e-02, 8.485281298381174e-02, 8.717797751144819e-02, 8.944272515826529e-02, 9.165151884385822e-02, 9.380830958081933e-02, 9.591662485186343e-02, 9.797958834601876e-02, 1.000000014901161e-01, 1.019803900312265e-01, 1.039230487627042e-01, 1.058300564019713e-01, 1.077032943388475e-01, 1.095445059791192e-01, 1.113552893879406e-01, 1.131370825278849e-01, 1.148912563125648e-01, 1.16619040092694e-01, 1.183215935404157e-01, 1.199999949303545e-01, 1.216552473205672e-01, 1.232882820344277e-01, 1.248999633420031e-01, 1.264911033611258e-01, 1.280624825477849e-01, 1.296148125376792e-01, 1.311487693595311e-01, 1.326649937643662e-01, 1.341640817988489e-01, 1.356465997112399e-01, 1.371130901521266e-01, 1.385640623428981e-01, 1.399999992322538e-01, 1.414213627576828e-01] +resFixed.k=[6.324554979801178e-02, 6.324554979801178e-02] +resVarying.k=[6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02] +kCor.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_SimpleCharacterization.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_SimpleCharacterization.txt new file mode 100644 index 00000000000..8be6a219007 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_SimpleCharacterization.txt @@ -0,0 +1,11 @@ +last-generated=2023-12-28 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +mCon.y=[0e+00, 1.200000037252895e-02, 2.400000074505789e-02, 3.599999925494219e-02, 4.800000149011579e-02, 5.99999977648261e-02, 7.199999850988588e-02, 8.399999850988389e-02, 9.600000298022425e-02, 1.079999985098865e-01, 1.199999955296583e-01, 1.319999999999973e-01, 1.439999970197758e-01, 1.560000089406754e-01, 1.679999970197704e-01, 1.799999999999822e-01, 1.920000059604485e-01, 2.039999940395435e-01, 2.159999970197464e-01, 2.280000029802216e-01, 2.399999910593166e-01, 2.520000119209485e-01, 2.640000000000036e-01, 2.759999880791208e-01, 2.879999940395515e-01, 3.00000011920929e-01, 3.120000178812797e-01, 3.239999880790391e-01, 3.359999940395498e-01, 3.480000000000248e-01, 3.599999999999645e-01, 3.720000059604573e-01, 3.840000119209503e-01, 3.959999821185675e-01, 4.079999880791137e-01, 4.199999940395532e-01, 4.319999940394929e-01, 4.439999999999858e-01, 4.560000059604787e-01, 4.680000119209716e-01, 4.799999821186777e-01, 4.920000178813508e-01, 5.040000238417016e-01, 5.159999642372984e-01, 5.279999999999716e-01, 5.400000357626448e-01, 5.519999761582416e-01, 5.640000119209148e-01, 5.759999880792629e-01, 5.879999880791847e-01, 6.000000238418579e-01, 6.12e-01, 6.240000357622184e-01, 6.36000011920929e-01, 6.479999761587816e-01, 6.600000119209291e-01, 6.719999880790569e-01, 6.840000238416447e-01, 6.96e-01, 7.080000357620052e-01, 7.2e-01, 7.319999761585684e-01, 7.440000119209289e-01, 7.559999880790711e-01, 7.680000238414316e-01, 7.8e-01, 7.919999642379948e-01, 8.04e-01, 8.159999761583553e-01, 8.280000119209431e-01, 8.399999880790709e-01, 8.520000238412184e-01, 8.63999988079071e-01, 8.759999642377816e-01, 8.88e-01, 8.999999761581421e-01, 9.120000119206447e-01, 9.240000476831474e-01, 9.360000238410053e-01, 9.47999988079071e-01, 9.599999642375685e-01, 9.719999999999859e-01, 9.840000357625737e-01, 9.960000119204315e-01, 1.008000047683716e+00, 1.019999952317705e+00, 1.031999928475279e+00, 1.044000023841858e+00, 1.056e+00, 1.067999976158142e+00, 1.080000071524153e+00, 1.091999976158142e+00, 1.103999952317279e+00, 1.116000047683716e+00, 1.128000023841801e+00, 1.14e+00, 1.151999976158142e+00, 1.164e+00, 1.175999976158142e+00, 1.187999952316853e+00, 1.200000047683716e+00] +simCha.eps=[9.800000190734863e-01, 9.787999987333982e-01, 9.775999783933234e-01, 9.764000176578668e-01, 9.751999973178052e-01, 9.739999772012338e-01, 9.72800016242247e-01, 9.715999961257024e-01, 9.703999755621244e-01, 9.692000154971501e-01, 9.679999949336257e-01, 9.667999743700123e-01, 9.656000134110083e-01, 9.643999928475193e-01, 9.631999731779181e-01, 9.620000131129259e-01, 9.607999916554073e-01, 9.595999719858415e-01, 9.584000119208138e-01, 9.571999904632952e-01, 9.559999707937649e-01, 9.548000089406068e-01, 9.535999892711832e-01, 9.524000292062088e-01, 9.512000077485303e-01, 9.49999988079071e-01, 9.48800026225913e-01, 9.476000083444776e-01, 9.463999868869944e-01, 9.452000250338364e-01, 9.440000071523655e-01, 9.42799985694918e-01, 9.416000238417599e-01, 9.404000059602534e-01, 9.391999845028414e-01, 9.380000226496833e-01, 9.368000047681414e-01, 9.355999833107649e-01, 9.344000214576067e-01, 9.331999999998039e-01, 9.319999821186883e-01, 9.308000202655302e-01, 9.295999988077274e-01, 9.283999809266117e-01, 9.272000190734536e-01, 9.259999976156508e-01, 9.247999797345352e-01, 9.236000178813771e-01, 9.22399996423894e-01, 9.211999785424586e-01, 9.200000166893005e-01, 9.187999952317989e-01, 9.175999737742974e-01, 9.164000119205878e-01, 9.1519999761607e-01, 9.139999761582842e-01, 9.128000143050806e-01, 9.115999928475705e-01, 9.103999713900689e-01, 9.092000095364305e-01, 9.079999952319127e-01, 9.067999737741268e-01, 9.056000119208437e-01, 9.043999904633421e-01, 9.031999690058405e-01, 9.020000071522731e-01, 9.007999928477552e-01, 8.996000309941169e-01, 8.984000095366153e-01, 8.971999880791052e-01, 8.960000262259016e-01, 8.948000047681158e-01, 8.935999904635979e-01, 8.924000286098884e-01, 8.912000071523869e-01, 8.899999856948853e-01, 8.887087689614868e-01, 8.872979255792655e-01, 8.858525712017934e-01, 8.844451933840741e-01, 8.831359759064158e-01, 8.819726112117399e-01, 8.809903853923335e-01, 8.802120078673326e-01, 8.796479094530463e-01, 8.792960054152166e-01, 8.791418076712583e-01, 8.79158318006376e-01, 8.793061376595671e-01, 8.795334700316684e-01, 8.797760014988025e-01, 8.799570199263431e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01] +simCha.kCor=[1e+00, 1.002190232325944e+00, 1.004385352232946e+00, 1.006585121302507e+00, 1.008789897162362e+00, 1.010999321772804e+00, 1.013213634788329e+00, 1.015432834559057e+00, 1.01765692273858e+00, 1.019885896838547e+00, 1.022119640970861e+00, 1.024358391895397e+00, 1.026602030402972e+00, 1.028850556493408e+00, 1.031103968485866e+00, 1.033362268054364e+00, 1.035625696992694e+00, 1.037893890928566e+00, 1.040167210858985e+00, 1.04244542176272e+00, 1.044728636060584e+00, 1.047016860556792e+00, 1.049310088431354e+00, 1.051608323091211e+00, 1.053911687180692e+00, 1.056219935417175e+00, 1.058533313099697e+00, 1.060851809873147e+00, 1.063175320348123e+00, 1.065503956833136e+00, 1.067837712364314e+00, 1.070176481642563e+00, 1.072520496139927e+00, 1.074869629637553e+00, 1.077223776928365e+00, 1.079583169438078e+00, 1.081947800111443e+00, 1.084317563833113e+00, 1.086692453564749e+00, 1.089072588514789e+00, 1.091457961566593e+00, 1.093848467729229e+00, 1.0962443383197e+00, 1.098645327756461e+00, 1.101051688768677e+00, 1.10346329500029e+00, 1.105880139239379e+00, 1.108302235892452e+00, 1.110729696974284e+00, 1.113162515225558e+00, 1.1156005859375e+00, 1.118044021078805e+00, 1.120492820648372e+00, 1.1229469846462e+00, 1.125406617604573e+00, 1.127871510425813e+00, 1.130341767675297e+00, 1.132817508563219e+00, 1.13529873308896e+00, 1.137785322042962e+00, 1.140277379764528e+00, 1.1427748167518e+00, 1.145277856585912e+00, 1.147786260848855e+00, 1.150300148750769e+00, 1.15281963949924e+00, 1.155344598818031e+00, 1.157875056808493e+00, 1.160411117645796e+00, 1.162952781330241e+00, 1.165499928653764e+00, 1.168052678824004e+00, 1.170611016577037e+00, 1.173174972407279e+00, 1.175744531086066e+00, 1.178319692611694e+00, 1.181096914259976e+00, 1.18413890002911e+00, 1.187263497647186e+00, 1.190313809660433e+00, 1.193158504086482e+00, 1.195691942599204e+00, 1.19783520833264e+00, 1.19953632592082e+00, 1.200770619030877e+00, 1.201541183972177e+00, 1.201879143461672e+00, 1.201842904170745e+00, 1.20151901223716e+00, 1.201021193681256e+00, 1.200490235138394e+00, 1.200093985383903e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_Generic.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_Generic.txt new file mode 100644 index 00000000000..c930fbbf9e0 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_Generic.txt @@ -0,0 +1,14 @@ +last-generated=2023-12-28 +statistics-simulation= +{ + "linear": " ", + "nonlinear": "0", + "number of continuous time states": "1", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +C_in.C=[0e+00, 1.200000037252895e-02, 2.400000074505789e-02, 3.599999925494219e-02, 4.800000149011579e-02, 5.99999977648261e-02, 7.199999850988588e-02, 8.399999850988389e-02, 9.600000298022425e-02, 1.079999985098865e-01, 1.199999955296583e-01, 1.319999999999973e-01, 1.439999970197758e-01, 1.560000089406754e-01, 1.679999970197704e-01, 1.799999999999822e-01, 1.920000059604485e-01, 2.039999940395435e-01, 2.159999970197464e-01, 2.280000029802216e-01, 2.399999910593166e-01, 2.520000119209485e-01, 2.640000000000036e-01, 2.759999880791208e-01, 2.879999940395515e-01, 3.00000011920929e-01, 3.120000178812797e-01, 3.239999880790391e-01, 3.359999940395498e-01, 3.480000000000248e-01, 3.599999999999645e-01, 3.720000059604573e-01, 3.840000119209503e-01, 3.959999821185675e-01, 4.079999880791137e-01, 4.199999940395532e-01, 4.319999940394929e-01, 4.439999999999858e-01, 4.560000059604787e-01, 4.680000119209716e-01, 4.799999821186777e-01, 4.920000178813508e-01, 5.040000238417016e-01, 5.159999642372984e-01, 5.279999999999716e-01, 5.400000357626448e-01, 5.519999761582416e-01, 5.640000119209148e-01, 5.759999880792629e-01, 5.879999880791847e-01, 6.000000238418579e-01, 6.12e-01, 6.240000357622184e-01, 6.36000011920929e-01, 6.479999761587816e-01, 6.600000119209291e-01, 6.719999880790569e-01, 6.840000238416447e-01, 6.96e-01, 7.080000357620052e-01, 7.2e-01, 7.319999761585684e-01, 7.440000119209289e-01, 7.559999880790711e-01, 7.680000238414316e-01, 7.8e-01, 7.919999642379948e-01, 8.04e-01, 8.159999761583553e-01, 8.280000119209431e-01, 8.399999880790709e-01, 8.520000238412184e-01, 8.63999988079071e-01, 8.759999642377816e-01, 8.88e-01, 8.999999761581421e-01, 9.120000119206447e-01, 9.240000476831474e-01, 9.360000238410053e-01, 9.47999988079071e-01, 9.599999642375685e-01, 9.719999999999859e-01, 9.840000357625737e-01, 9.960000119204315e-01, 1.008000047683716e+00, 1.019999952317705e+00, 1.031999928475279e+00, 1.044000023841858e+00, 1.056e+00, 1.067999976158142e+00, 1.080000071524153e+00, 1.091999976158142e+00, 1.103999952317279e+00, 1.116000047683716e+00, 1.128000023841801e+00, 1.14e+00, 1.151999976158142e+00, 1.164e+00, 1.175999976158142e+00, 1.187999952316853e+00, 1.200000047683716e+00] +C_out.C=[0e+00, 2.400731954409917e-04, 4.805785245875112e-04, 7.219478301048314e-04, 9.646132456965511e-04, 1.209006626517425e-03, 1.455560010594981e-03, 1.704705405971814e-03, 1.956874782965847e-03, 2.212500107725549e-03, 2.472013661835876e-03, 2.735847157485187e-03, 3.004432728726863e-03, 3.278202276545915e-03, 3.557587491319479e-03, 3.843020941790219e-03, 4.134934501406792e-03, 4.433759899879928e-03, 4.739929235099476e-03, 5.053875112545582e-03, 5.376028731304164e-03, 5.706822254379931e-03, 6.046687759667241e-03, 6.396056936805694e-03, 6.755362460858524e-03, 7.125035859644413e-03, 7.505509905921722e-03, 7.897214538848148e-03, 8.300584692282996e-03, 8.716050888346321e-03, 9.144043033592666e-03, 9.584997674228594e-03, 1.003934289818264e-02, 1.05075122163472e-02, 1.098993775669424e-02, 1.148705214626328e-02, 1.199928410701884e-02, 1.252707068485622e-02, 1.307084065248922e-02, 1.363102614494473e-02, 1.420805847860999e-02, 1.480237323070866e-02, 1.541439898028763e-02, 1.604456781444389e-02, 1.669331283213683e-02, 1.736106804530926e-02, 1.804825978094244e-02, 1.875532613327207e-02, 1.948269722254853e-02, 2.023080105459453e-02, 2.100007422268391e-02, 1.261087566520006e-02, 1.32437817041109e-02, 1.389915221859941e-02, 1.457741336521489e-02, 1.527900722799838e-02, 1.60043610370226e-02, 1.67539069307306e-02, 1.75280751791881e-02, 1.832730164141853e-02, 1.915200973153025e-02, 2.000264327728327e-02, 2.087962771350866e-02, 2.178339704037636e-02, 2.271438339290658e-02, 2.367301704083651e-02, 2.46597241513057e-02, 2.567495048057215e-02, 2.671912050724137e-02, 2.77926645049751e-02, 2.889601833690937e-02, 3.002961227110602e-02, 3.119387141001986e-02, 3.238923989818324e-02, 3.361614675320948e-02, 3.487502038478851e-02, 3.616629293407329e-02, 3.749040025514385e-02, 3.884777075761016e-02, 4.023882817823705e-02, 4.166402123698605e-02, 4.312377387912562e-02, 4.46185219699536e-02, 4.614869019059199e-02, 4.771471812477358e-02, 4.931702079320519e-02, 5.095605315619086e-02, 5.263224163478718e-02, 5.434601091693755e-02, 5.609779686296578e-02, 5.788803160419285e-02, 5.971713252852969e-02, 6.158556102167618e-02, 6.349372726145951e-02, 6.544207828585585e-02, 6.743103505784043e-02, 6.946102970668018e-02, 7.153248189504945e-02, 7.364584844313299e-02, 7.580155672054144e-02, 7.80000314116478e-02] +filter.simCha.eps=[9.800000190734863e-01, 9.799938797947814e-01, 9.799758791912332e-01, 9.799458980535323e-01, 9.799038767770671e-01, 9.798498749776936e-01, 9.797838926216986e-01, 9.797058701539889e-01, 9.796158671205362e-01, 9.795138836288543e-01, 9.793998599229621e-01, 9.792738556782652e-01, 9.79135870894604e-01, 9.789859055722446e-01, 9.788239002327082e-01, 9.786498547666154e-01, 9.784638880992703e-01, 9.782658815746287e-01, 9.780558945285375e-01, 9.778338670184185e-01, 9.775998593089027e-01, 9.773538707027892e-01, 9.770959019344759e-01, 9.768258930399083e-01, 9.765439031955946e-01, 9.762498736381531e-01, 9.759438630931646e-01, 9.756258729582818e-01, 9.752959013384198e-01, 9.749538895553377e-01, 9.745998982892266e-01, 9.742338658263063e-01, 9.738558528053437e-01, 9.734658604077912e-01, 9.730638863111022e-01, 9.726498720520104e-01, 9.72223878523265e-01, 9.717859031880205e-01, 9.713358876909415e-01, 9.708738916358199e-01, 9.703998568528428e-01, 9.699138997221372e-01, 9.694159024286377e-01, 9.689058665144322e-01, 9.683838485410237e-01, 9.678498500094306e-01, 9.673038725680376e-01, 9.667458533567129e-01, 9.661758535870616e-01, 9.655938750141206e-01, 9.649998545646667e-01, 9.79394018065146e-01, 9.787759768958242e-01, 9.781460147739576e-01, 9.775040163565385e-01, 9.768499739872434e-01, 9.761840106655505e-01, 9.7550600718109e-01, 9.748159635354395e-01, 9.741139989371024e-01, 9.733999984713074e-01, 9.726740132294759e-01, 9.719359878266627e-01, 9.711859818662337e-01, 9.70423995348189e-01, 9.696499686691626e-01, 9.688639661551339e-01, 9.680659784364765e-01, 9.672560101614821e-01, 9.664340017248608e-01, 9.655999531257066e-01, 9.647539835741438e-01, 9.638959790118102e-01, 9.630259888166111e-01, 9.621439584607144e-01, 9.612500071525574e-01, 9.603439560765002e-01, 9.594259840481826e-01, 9.584959718591676e-01, 9.575539847663006e-01, 9.565999519336492e-01, 9.556339981486021e-01, 9.546560042009963e-01, 9.536659700917764e-01, 9.526639554262197e-01, 9.516499662850479e-01, 9.5062399057986e-01, 9.495859747136906e-01, 9.485359782900474e-01, 9.474740013085042e-01, 9.463999841661216e-01, 9.45313992976716e-01, 9.44215955190839e-01, 9.431059964522752e-01, 9.419839975525798e-01, 9.408499584900002e-01, 9.397039984750811e-01, 9.385460052372997e-01, 9.37375964974952e-01, 9.361940037600597e-01, 9.350000023841858e-01] +filter.triRep=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +mCon_flow.y=[0e+00, 1.200000037252895e-02, 2.400000074505789e-02, 3.599999925494219e-02, 4.800000149011579e-02, 5.99999977648261e-02, 7.199999850988588e-02, 8.399999850988389e-02, 9.600000298022425e-02, 1.079999985098865e-01, 1.199999955296583e-01, 1.319999999999973e-01, 1.439999970197758e-01, 1.560000089406754e-01, 1.679999970197704e-01, 1.799999999999822e-01, 1.920000059604485e-01, 2.039999940395435e-01, 2.159999970197464e-01, 2.280000029802216e-01, 2.399999910593166e-01, 2.520000119209485e-01, 2.640000000000036e-01, 2.759999880791208e-01, 2.879999940395515e-01, 3.00000011920929e-01, 3.120000178812797e-01, 3.239999880790391e-01, 3.359999940395498e-01, 3.480000000000248e-01, 3.599999999999645e-01, 3.720000059604573e-01, 3.840000119209503e-01, 3.959999821185675e-01, 4.079999880791137e-01, 4.199999940395532e-01, 4.319999940394929e-01, 4.439999999999858e-01, 4.560000059604787e-01, 4.680000119209716e-01, 4.799999821186777e-01, 4.920000178813508e-01, 5.040000238417016e-01, 5.159999642372984e-01, 5.279999999999716e-01, 5.400000357626448e-01, 5.519999761582416e-01, 5.640000119209148e-01, 5.759999880792629e-01, 5.879999880791847e-01, 6.000000238418579e-01, 6.12e-01, 6.240000357622184e-01, 6.36000011920929e-01, 6.479999761587816e-01, 6.600000119209291e-01, 6.719999880790569e-01, 6.840000238416447e-01, 6.96e-01, 7.080000357620052e-01, 7.2e-01, 7.319999761585684e-01, 7.440000119209289e-01, 7.559999880790711e-01, 7.680000238414316e-01, 7.8e-01, 7.919999642379948e-01, 8.04e-01, 8.159999761583553e-01, 8.280000119209431e-01, 8.399999880790709e-01, 8.520000238412184e-01, 8.63999988079071e-01, 8.759999642377816e-01, 8.88e-01, 8.999999761581421e-01, 9.120000119206447e-01, 9.240000476831474e-01, 9.360000238410053e-01, 9.47999988079071e-01, 9.599999642375685e-01, 9.719999999999859e-01, 9.840000357625737e-01, 9.960000119204315e-01, 1.008000047683716e+00, 1.019999952317705e+00, 1.031999928475279e+00, 1.044000023841858e+00, 1.056e+00, 1.067999976158142e+00, 1.080000071524153e+00, 1.091999976158142e+00, 1.103999952317279e+00, 1.116000047683716e+00, 1.128000023841801e+00, 1.14e+00, 1.151999976158142e+00, 1.164e+00, 1.175999976158142e+00, 1.187999952316853e+00, 1.200000047683716e+00] From 5c410d40b07f652d80edec0c7aa8dea54a06e7c3 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 29 Dec 2023 13:50:22 -0500 Subject: [PATCH 06/47] improve model doc --- .../BaseClasses/MassAccumulation.mo | 21 ++++--- .../AirFilters/BaseClasses/MassTransfer.mo | 5 +- .../PressureDropInputFlowCoefficient.mo | 10 ++-- .../BaseClasses/SimpleCharacterization.mo | 20 ++++--- .../BaseClasses/Validation/MassTransfer.mo | 3 +- .../PressureDropInputFlowCoefficient.mo | 19 +++--- .../Fluid/AirFilters/Examples/Generic.mo | 10 ++-- Buildings/Fluid/AirFilters/Generic.mo | 60 +++++++++---------- 8 files changed, 78 insertions(+), 70 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo index 2e642c5e236..8ab0ff9490e 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo @@ -3,7 +3,8 @@ model MassAccumulation "Component that mimics the accumulation of the contaminants" parameter Real mCon_nominal "contaminant held capacity of the filter"; - parameter Real mCon_reset + parameter Real mCon_reset( + final min = 0) "initial contaminant mass of the filter"; Modelica.Blocks.Interfaces.BooleanInput triRep "replacing the filter when trigger becomes true" @@ -17,7 +18,7 @@ model MassAccumulation origin={-120,-62}))); Modelica.Blocks.Interfaces.RealInput mCon_flow( final unit = "kg/s") - "The contaminant mass flow rate" + "contaminant mass flow rate" annotation (Placement(transformation( extent={{20,-20},{-20,20}}, rotation=180, @@ -25,7 +26,6 @@ model MassAccumulation extent={{-20,-20},{20,20}}, rotation=0, origin={-120,60}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput mCon( final unit = "kg") "mass of the contaminant held by the filter" @@ -33,7 +33,7 @@ model MassAccumulation transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={ {100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Reals.IntegratorWithReset intWitRes - "calculates the mass of contaminant" + "calculate the mass of contaminant" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con(k=mCon_reset) "constant" @@ -52,16 +52,19 @@ equation connect(intWitRes.u, mCon_flow) annotation (Line(points={{-12,0},{-40,0},{-40, 60},{-120,60}}, color={0,0,127})); connect(intWitRes.y, mCon) - annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); - connect(con.y, intWitRes.y_reset_in) annotation (Line(points={{-58,-20},{-20,-20}, + annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); + connect(con.y, intWitRes.y_reset_in) + annotation (Line(points={{-58,-20},{-20,-20}, {-20,-8},{-12,-8}},color={0,0,127})); connect(intWitRes.trigger, triRep) annotation (Line(points={{0,-12},{0,-60},{-120,-60}}, color={255,0,255})); connect(assMes.u, greater.y) annotation (Line(points={{70,-38},{61,-38}}, color={255,0,255})); - connect(greater.u2, intWitRes.y) annotation (Line(points={{38,-46},{20,-46},{20, + connect(greater.u2, intWitRes.y) + annotation (Line(points={{38,-46},{20,-46},{20, 0},{12,0}}, color={0,0,127})); - connect(con1.y, greater.u1) annotation (Line(points={{22,50},{30,50},{30,-38}, + connect(con1.y, greater.u1) + annotation (Line(points={{22,50},{30,50},{30,-38}, {38,-38}}, color={0,0,127})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( @@ -81,7 +84,7 @@ equation This model mimics the process for a filter to capture the contaminants. The mass of the contaminants, mCon, increases by time. However, when the input signal triRep changes from false -to true, mCon is reinitialized to a constant mCon_reset. +to true, mCon is reinitialized to a constant, mCon_reset.

        ", revisions="
          diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo index 3275c2c0306..76817b47c31 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -1,9 +1,10 @@ within Buildings.Fluid.AirFilters.BaseClasses; model MassTransfer - "Component that sets the trace substance at port_b based on an input trace substance mass flow rate and an input mass transfer efficiency" + "Component that sets the trace substance at port_b based on an input trace substance mass flow rate + and an input mass transfer efficiency" extends Buildings.Fluid.Interfaces.PartialTwoPortInterface; Modelica.Blocks.Interfaces.RealInput m_flow_in[Medium.nC] - "Input trace substance rate" annotation (Placement(transformation( + "input trace substance rate" annotation (Placement(transformation( extent={{-20,-20},{20,20}}, rotation=270, origin={0,120}), iconTransformation( diff --git a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mo index f14af0b0ed0..2dac344f2a4 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mo @@ -5,16 +5,16 @@ model PressureDropInputFlowCoefficient final m_flow_turbulent = if computeFlowResistance then deltaM * m_flow_nominal_pos else 0); parameter Real deltaM(min=1E-6) = 0.3 - "Fraction of nominal mass flow rate where transition to turbulent occurs" + "fraction of nominal mass flow rate where transition to turbulent occurs" annotation(Evaluate=true, Dialog(group = "Transition to laminar", enable = not linearized)); - Real k "Flow coefficient, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2)"; - + Real k + "flow coefficient, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2)"; Modelica.Blocks.Interfaces.RealInput kCor( unit = "1", min = 1) - "Flow coefficient" + "flow coefficient" annotation (Placement(transformation( extent={{-20,-20},{20,20}}, rotation=270, @@ -91,7 +91,7 @@ Buildings.Fluid.FixedResistances.PressureDrop and inherits most of its configuration. However, when calculating the mass flow rate

          -ṁ = m_flow_nominal/(√dp_nominal*kCor) +ṁ = m_flow_nominal/(√dp_nominal*kCor) √Δp,

          where diff --git a/Buildings/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mo b/Buildings/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mo index b576ebee298..59e5ac698b7 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mo @@ -2,13 +2,15 @@ within Buildings.Fluid.AirFilters.BaseClasses; model SimpleCharacterization "Component that calculates the filter efficiency and the flow coefficient correction factor" parameter Real mCon_nominal - "Contaminant held capacity of the filter"; + "contaminant held capacity of the filter"; parameter Real epsFun[:] - "Filter efficiency curve"; - parameter Real b( final min = 1 + 1E-3) - "Resistance coefficient"; - Modelica.Blocks.Interfaces.RealInput mCon(final unit="kg") - "Mass of the contaminant held by the filter" + "filter efficiency curve"; + parameter Real b( + final min = 1 + 1E-3) + "resistance coefficient"; + Modelica.Blocks.Interfaces.RealInput mCon( + final unit="kg") + "mass of the contaminant held by the filter" annotation (Placement( transformation( extent={{20,-20},{-20,20}}, @@ -20,9 +22,9 @@ model SimpleCharacterization Buildings.Controls.OBC.CDL.Interfaces.RealOutput eps( final unit="1", final min = 0, - final max = 1) "Filter efficiency" - annotation ( - Placement(transformation(extent={{100,38},{140,78}}), iconTransformation( + final max = 1) + "filter efficiency" + annotation (Placement(transformation(extent={{100,38},{140,78}}), iconTransformation( extent={{100,38},{140,78}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput kCor( final unit="1", diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo index e5021f5186b..94fafcc71b9 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo @@ -39,7 +39,8 @@ model MassTransfer "trace substance sensor of inlet air" annotation (Placement(transformation(extent={{-38,-40},{-18,-20}}))); equation - connect(eps.y, masTra.eps) annotation (Line(points={{-39,50},{-24,50},{-24,6}, + connect(eps.y, masTra.eps) + annotation (Line(points={{-39,50},{-24,50},{-24,6}, {6,6}}, color={0,0,127})); connect(traceSubstancesFlow.y, masTra.m_flow_in[1]) annotation (Line(points={{1,60},{18,60},{18,12}}, color={0,0,127})); diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropInputFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropInputFlowCoefficient.mo index f69d9b30240..fee11de30fb 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropInputFlowCoefficient.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropInputFlowCoefficient.mo @@ -3,14 +3,13 @@ model PressureDropInputFlowCoefficient "Validation model for flow resistances with a varying flow coefficient" extends Modelica.Icons.Example; - package Medium = Buildings.Media.Air "Air"; - + package Medium = Buildings.Media.Air + "air"; Modelica.Blocks.Sources.Ramp P( duration=1, height=20, offset=101325 - 10) "Ramp pressure signal" annotation (Placement(transformation(extent={{-92,-2},{-72,18}}))); - Buildings.Fluid.Sources.Boundary_pT sou( redeclare package Medium = Medium, T=273.15 + 20, @@ -19,7 +18,6 @@ model PressureDropInputFlowCoefficient "Pressure boundary condition" annotation (Placement(transformation( extent={{-50,-10},{-30,10}}))); - Buildings.Fluid.Sources.Boundary_pT sin( redeclare package Medium = Medium, T=273.15 + 10, @@ -28,7 +26,6 @@ model PressureDropInputFlowCoefficient "Pressure boundary condition" annotation (Placement(transformation( extent={{50,-10},{30,10}}))); - Buildings.Fluid.FixedResistances.PressureDrop resFixed( redeclare package Medium = Medium, m_flow_nominal=0.2, @@ -50,15 +47,19 @@ model PressureDropInputFlowCoefficient "flow coefficient correction factor" annotation (Placement(transformation(extent={{-80,62},{-60,82}}))); equation - connect(P.y, sou.p_in) annotation (Line(points={{-71,8},{-62,8},{-52,8}}, + connect(P.y, sou.p_in) + annotation (Line(points={{-71,8},{-62,8},{-52,8}}, color={0,0,127})); - connect(sou.ports[1], resFixed.port_a) annotation (Line(points={{-30,-1},{-20, + connect(sou.ports[1], resFixed.port_a) + annotation (Line(points={{-30,-1},{-20, -1},{-20,0},{-10,0}}, color={0,127,255})); connect(resFixed.port_b, sin.ports[1]) annotation (Line(points={{10,0},{10,-1},{30,-1}}, color={0,127,255})); - connect(resVarying.port_a, sou.ports[2]) annotation (Line(points={{-10,40},{-20, + connect(resVarying.port_a, sou.ports[2]) + annotation (Line(points={{-10,40},{-20, 40},{-20,1},{-30,1}}, color={0,127,255})); - connect(resVarying.port_b, sin.ports[2]) annotation (Line(points={{10,40},{18, + connect(resVarying.port_b, sin.ports[2]) + annotation (Line(points={{10,40},{18, 40},{18,1},{30,1}}, color={0,127,255})); connect(kCor.y, resVarying.kCor) annotation (Line(points={{-59,72},{0,72},{0,52}}, color={0,0,127})); diff --git a/Buildings/Fluid/AirFilters/Examples/Generic.mo b/Buildings/Fluid/AirFilters/Examples/Generic.mo index 420960a850d..9b982b11199 100644 --- a/Buildings/Fluid/AirFilters/Examples/Generic.mo +++ b/Buildings/Fluid/AirFilters/Examples/Generic.mo @@ -2,7 +2,7 @@ within Buildings.Fluid.AirFilters.Examples; model Generic "Example for using the generic air filter model" extends Modelica.Icons.Example; - package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Medium model"; + package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Air"; Buildings.Fluid.AirFilters.Generic filter( redeclare package Medium = Medium, mCon_nominal=1, @@ -49,9 +49,11 @@ model Generic equation connect(filter.port_b, sin.ports[1]) annotation (Line(points={{10,0},{60,0}}, color={0,127,255})); - connect(RepSig.y, filter.triRep) annotation (Line(points={{-28,50},{-20,50},{-20, + connect(RepSig.y, filter.triRep) + annotation (Line(points={{-28,50},{-20,50},{-20, 6},{-12,6}}, color={255,0,255})); - connect(C_in.port, filter.port_a) annotation (Line(points={{-30,-50},{-30,-60}, + connect(C_in.port, filter.port_a) + annotation (Line(points={{-30,-50},{-30,-60}, {-14,-60},{-14,0},{-10,0}}, color={0,127,255})); connect(C_out.port, filter.port_b) annotation (Line(points={{40,28},{40,0},{10,0}}, color={0,127,255})); @@ -77,7 +79,7 @@ The filter replacement signal changes from false to true at 0.5 se

          The filter efficiency eps decreases during the period -from 0 to 0.5 seconds as the accumulation of the contaminants; +from 0 to 0.5 seconds due to the accumulation of the contaminants; At 0.5 seconds, it gets a sudden increase as the filter is replaced; After 0.5 seconds, it keeps decreasing again till the end. The same pattern is also applied to the flow coefficient of the filter and thereby diff --git a/Buildings/Fluid/AirFilters/Generic.mo b/Buildings/Fluid/AirFilters/Generic.mo index 4f7cbfcd5ee..6d696e1ea8d 100644 --- a/Buildings/Fluid/AirFilters/Generic.mo +++ b/Buildings/Fluid/AirFilters/Generic.mo @@ -1,24 +1,16 @@ within Buildings.Fluid.AirFilters; model Generic + "Generic air filter model" replaceable package Medium = - Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Air" - annotation (choices( - choice(redeclare package Medium = Buildings.Media.Air "Moist air"), - choice(redeclare package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Moist air with CO2")), - Documentation(revisions=" -

            -
          • -December 22, 2023, by Sen Huang:
            -First implementation. -
          • -
          -")); + Buildings.Media.Air(extraPropertiesNames={"CO2"}) + "air"; parameter Real mCon_nominal - "Contaminant held capacity of the filter"; + "contaminant held capacity of the filter"; parameter Real epsFun[:] - "Filter efficiency curve"; - parameter Real b( final min = 1 + 1E-3) - "Resistance coefficient"; + "filter efficiency curve"; + parameter Real b( + final min = 1 + 1E-3) + "resistance coefficient"; parameter Modelica.Units.SI.MassFlowRate m_flow_nominal "Nominal mass flow rate"; parameter Modelica.Units.SI.PressureDifference dp_nominal @@ -27,18 +19,20 @@ First implementation. "replacing the filter when trigger becomes true" annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); Buildings.Fluid.AirFilters.BaseClasses.PressureDropInputFlowCoefficient res( - redeclare package Medium = Medium, - m_flow_nominal=m_flow_nominal, - dp_nominal=dp_nominal) + redeclare package Medium = Medium, + final m_flow_nominal=m_flow_nominal, + final dp_nominal=dp_nominal) "pressure resistance" annotation (Placement(transformation(extent={{-28,-10},{-8,10}}))); - Buildings.Fluid.AirFilters.BaseClasses.MassTransfer masTra(redeclare package - Medium = Medium, m_flow_nominal=m_flow_nominal) "contaminant removal" + Buildings.Fluid.AirFilters.BaseClasses.MassTransfer masTra( + redeclare package Medium = Medium, + final m_flow_nominal=m_flow_nominal) "contaminant removal" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Buildings.Fluid.AirFilters.BaseClasses.SimpleCharacterization simCha( final mCon_nominal=mCon_nominal, final epsFun=epsFun, - final b=b) "filter characterization" + final b=b) + "filter characterization" annotation (Placement(transformation(extent={{22,50},{42,70}}))); Buildings.Fluid.AirFilters.BaseClasses.MassAccumulation masAcc( final mCon_nominal=mCon_nominal, @@ -46,14 +40,13 @@ First implementation. "contaminant accumulation" annotation (Placement(transformation(extent={{-20,50},{0,70}}))); Modelica.Fluid.Interfaces.FluidPort_a port_a( - redeclare package Medium = Medium) - "Fluid connector a (positive design flow direction is from port_a to port_b)" + redeclare package Medium = Medium) + "fluid connector a (positive design flow direction is from port_a to port_b)" annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); Modelica.Fluid.Interfaces.FluidPort_b port_b( - redeclare package Medium = Medium) - "Fluid connector b (positive design flow direction is from port_a to port_b)" + redeclare package Medium = Medium) + "fluid connector b (positive design flow direction is from port_a to port_b)" annotation (Placement(transformation(extent={{90,-10},{110,10}}))); - Modelica.Blocks.Sources.RealExpression traceSubstancesFlow( y=inStream(port_a.C_outflow[1])) "trace substances flow rate" @@ -69,13 +62,17 @@ equation annotation (Line(points={{-8,0},{40,0}}, color={0,127,255})); connect(masTra.port_b, port_b) annotation (Line(points={{60,0},{100,0}}, color={0,127,255})); - connect(masAcc.triRep, triRep) annotation (Line(points={{-22,53.8},{-22,54},{-94, + connect(masAcc.triRep, triRep) + annotation (Line(points={{-22,53.8},{-22,54},{-94, 54},{-94,60},{-120,60}}, color={255,0,255})); - connect(traceSubstancesFlow.y, masAcc.mCon_flow) annotation (Line(points={{-51, + connect(traceSubstancesFlow.y, masAcc.mCon_flow) + annotation (Line(points={{-51, 80},{-40,80},{-40,66},{-22,66}}, color={0,0,127})); - connect(simCha.eps, masTra.eps) annotation (Line(points={{44,65.8},{52,65.8},{ + connect(simCha.eps, masTra.eps) + annotation (Line(points={{44,65.8},{52,65.8},{ 52,66},{60,66},{60,28},{26,28},{26,6},{38,6}}, color={0,0,127})); - connect(masTra.m_flow_in[1], traceSubstancesFlow.y) annotation (Line(points={{ + connect(masTra.m_flow_in[1], traceSubstancesFlow.y) + annotation (Line(points={{ 50,12},{50,20},{-40,20},{-40,80},{-51,80}}, color={0,0,127})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( @@ -279,5 +276,6 @@ of the contaminants that the filter holds, mCon = 0.

          Note: A warning will be triggered when mCon > mCon_nominal. +In addition, this model can only be used when extraPropertiesNames is defined in the medium model. ")); end Generic; From 4702143a959675f95e660b47c4031aa006d18d58 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 11 Jan 2024 16:40:34 -0500 Subject: [PATCH 07/47] model restruct --- .../BaseClasses/FiltrationEfficiency.mo | 85 +++++++++++ .../BaseClasses/FlowCoefficientCorrection.mo | 67 +++++++++ .../BaseClasses/MassAccumulation.mo | 34 ++--- .../AirFilters/BaseClasses/MassTransfer.mo | 8 +- ...PressureDropWithVaryingFlowCoefficient.mo} | 8 +- .../BaseClasses/SimpleCharacterization.mo | 96 ------------- ...cterization.mo => FiltrationEfficiency.mo} | 29 ++-- .../Validation/FlowCoefficientCorrection.mo | 38 +++++ .../Validation/MassAccumulation.mo | 10 +- .../BaseClasses/Validation/MassTransfer.mo | 69 ++++----- ...PressureDropWithVaryingFlowCoefficient.mo} | 33 ++--- .../BaseClasses/Validation/package.order | 5 +- .../AirFilters/BaseClasses/package.order | 5 +- .../AirFilters/{Generic.mo => Empirical.mo} | 134 ++++++++++-------- .../Fluid/AirFilters/Examples/Empirical.mo | 85 +++++++++++ .../Fluid/AirFilters/Examples/Generic.mo | 89 ------------ .../Fluid/AirFilters/Examples/package.order | 2 +- Buildings/Fluid/AirFilters/package.order | 2 +- ...lters_BaseClasses_FiltrationEfficiency.txt | 10 ++ ..._BaseClasses_FlowCoefficientCorrection.txt | 10 ++ ...id_AirFilters_BaseClasses_MassTransfer.txt | 11 +- ...PressureDropWithVaryingFlowCoefficient.txt | 13 ++ ...gs_Fluid_AirFilters_Examples_Empirical.txt | 14 ++ .../BaseClasses/FiltrationEfficiency.mos | 3 + .../BaseClasses/FlowCoefficientCorrection.mos | 3 + .../AirFilters/BaseClasses/MassTransfer.mos | 2 +- ...ressureDropWithVaryingFlowCoefficient.mos} | 5 +- .../BaseClasses/SimpleCharacterization.mos | 5 - .../Fluid/AirFilters/Examples/Empirical.mos | 5 + .../Fluid/AirFilters/Examples/Generic.mos | 6 - ...asses.Validation.FiltrationEfficiency.mos} | 3 +- ...s.Validation.FlowCoefficientCorrection.mos | 5 + ...ressureDropWithVaryingFlowCoefficient.mos} | 0 ...gs.Fluid.AirFilters.Examples.Empirical.mos | 8 ++ ...ings.Fluid.AirFilters.Examples.Generic.mos | 8 -- 35 files changed, 539 insertions(+), 371 deletions(-) create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo rename Buildings/Fluid/AirFilters/BaseClasses/{PressureDropInputFlowCoefficient.mo => PressureDropWithVaryingFlowCoefficient.mo} (97%) delete mode 100644 Buildings/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mo rename Buildings/Fluid/AirFilters/BaseClasses/Validation/{SimpleCharacterization.mo => FiltrationEfficiency.mo} (53%) create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo rename Buildings/Fluid/AirFilters/BaseClasses/Validation/{PressureDropInputFlowCoefficient.mo => PressureDropWithVaryingFlowCoefficient.mo} (79%) rename Buildings/Fluid/AirFilters/{Generic.mo => Empirical.mo} (69%) create mode 100644 Buildings/Fluid/AirFilters/Examples/Empirical.mo delete mode 100644 Buildings/Fluid/AirFilters/Examples/Generic.mo create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_FiltrationEfficiency.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_FlowCoefficientCorrection.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_PressureDropWithVaryingFlowCoefficient.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_Empirical.txt create mode 100644 Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mos rename Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/{PressureDropInputFlowCoefficient.mos => PressureDropWithVaryingFlowCoefficient.mos} (80%) delete mode 100644 Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos delete mode 100644 Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Generic.mos rename Buildings/Resources/Scripts/OpenModelica/compareVars/{Buildings.Fluid.AirFilters.BaseClasses.Validation.SimpleCharacterization.mos => Buildings.Fluid.AirFilters.BaseClasses.Validation.FiltrationEfficiency.mos} (51%) create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.FlowCoefficientCorrection.mos rename Buildings/Resources/Scripts/OpenModelica/compareVars/{Buildings.Fluid.AirFilters.BaseClasses.Validation.PressureDropInputFlowCoefficient.mos => Buildings.Fluid.AirFilters.BaseClasses.Validation.PressureDropWithVaryingFlowCoefficient.mos} (100%) create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Empirical.mos delete mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Generic.mos diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo new file mode 100644 index 00000000000..3303c114f09 --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo @@ -0,0 +1,85 @@ +within Buildings.Fluid.AirFilters.BaseClasses; +model FiltrationEfficiency + "Component that calculates the filtration efficiency" + parameter Real mCon_nominal( + final unit="kg") + "Maximum mass of the contaminant captured by the filter"; + parameter Real epsFun[:] + "Filtration efficiency curve"; + Modelica.Blocks.Interfaces.RealInput mCon( + final unit="kg") + "Mass of the contaminant captured by the filter" + annotation (Placement( + transformation( + extent={{20,-20},{-20,20}}, + rotation=180, + origin={-120,0}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={-120,0}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput y( + final unit="1", + final min=0, + final max=1) + "Filtration efficiency" annotation (Placement(transformation( + extent={{100,-80},{140,-40}}), iconTransformation(extent={{100,-80},{ + 140,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput rat( + final unit="1", + final min=0, + final max=1) + "Relative mass of the contaminant captured by the filter" + annotation (Placement(transformation(extent={{100,40},{140,80}}), iconTransformation( + extent={{100,40},{140,80}}))); + +equation + rat = Buildings.Utilities.Math.Functions.smoothMin(x1=1, x2= mCon/mCon_nominal, deltaX=0.1); + y = Buildings.Utilities.Math.Functions.polynomial(a=epsFun, x=rat); + assert( + y > 0 and y < 1, + "In " + getInstanceName() + ": The filter efficiency should be in the range of [0, 1], + check the filter efficiency curve.", + level=AssertionLevel.error); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={28,108,200}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-143,-98},{157,-138}}, + textColor={0,0,255}, + textString="%name")}), + Diagram(coordinateSystem(preserveAspectRatio=false)), + defaultComponentName="eps", + Documentation(revisions=" +
            +
          • +December 22, 2023, by Sen Huang:
            +First implementation. +
          • +
          +", info=" +

          +This model calculates the filtration efficiency, eps, by +

          +

          +eps = epsFun1 + epsFun2rat + epsFun3 rat2 + ..., +

          +

          +where the coefficients epsFuni are declared by the parameter epsFun; +rat is the relative mass of the contaminant captured by the filter and is calculated by +

          +

          +rat = mCon/mCon_nominal, +

          +

          +where mCon is the mass of the contaminant captured by the filter, +mCon_nominal is the maximum mass of the contaminant captured by the filter. +

          +

          +Note: +The upper limit of rat is 1 and any value above it is overwritten by 1. +

          +")); +end FiltrationEfficiency; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo new file mode 100644 index 00000000000..8198a5fb685 --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo @@ -0,0 +1,67 @@ +within Buildings.Fluid.AirFilters.BaseClasses; +model FlowCoefficientCorrection + "Component that calculates the flow coefficient correction factor" + parameter Real b( + final min = 1 + 1E-3) + "resistance coefficient"; + Modelica.Blocks.Interfaces.RealInput rat( + final unit="1", + final min=0, + final max=1) + "Relative mass of the contaminant captured by the filter" + annotation (Placement( + transformation( + extent={{20,-20},{-20,20}}, + rotation=180, + origin={-120,0}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={-120,0}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput y( + final unit="1", + final min=1) + "Flow coefficient correction" annotation (Placement(transformation( + extent={{100,-20},{140,20}}), iconTransformation(extent={{100,-20},{ + 140,20}}))); +equation + y = b^rat; + annotation (Dialog(group="Pressure"), + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={28,108,200}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-143,-98},{157,-138}}, + textColor={0,0,255}, + textString="%name")}), + Diagram(coordinateSystem(preserveAspectRatio=false)), + defaultComponentName="kCor", + Documentation(revisions=" +
            +
          • +December 22, 2023, by Sen Huang:
            +First implementation. +
          • +
          +", info=" +

          +This model calculates the flow coefficient of the filter by +

          +

          + kCor = brat, +

          +

          +where b is a constant that is larger than 1, +rat is the relative mass of the contaminant captured by the filter (see descriptions in + +Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency). +

          +

          References

          +

          +Qiang Li ta al., (2022). Experimental study on the synthetic dust loading characteristics of air filters. +Separation and Purification Technology 284 (2022), 120209 +

          +")); +end FlowCoefficientCorrection; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo index 8ab0ff9490e..b271edf300d 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo @@ -2,12 +2,12 @@ within Buildings.Fluid.AirFilters.BaseClasses; model MassAccumulation "Component that mimics the accumulation of the contaminants" parameter Real mCon_nominal - "contaminant held capacity of the filter"; + "Maximum mass of the contaminant captured by the filter"; parameter Real mCon_reset( - final min = 0) - "initial contaminant mass of the filter"; + final min = 0) + "Initial contaminant mass of the filter after replacement"; Modelica.Blocks.Interfaces.BooleanInput triRep - "replacing the filter when trigger becomes true" + "Replacing the filter when trigger becomes true" annotation (Placement( transformation( extent={{20,-20},{-20,20}}, @@ -18,7 +18,7 @@ model MassAccumulation origin={-120,-62}))); Modelica.Blocks.Interfaces.RealInput mCon_flow( final unit = "kg/s") - "contaminant mass flow rate" + "Contaminant mass flow rate" annotation (Placement(transformation( extent={{20,-20},{-20,20}}, rotation=180, @@ -28,32 +28,34 @@ model MassAccumulation origin={-120,60}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput mCon( final unit = "kg") - "mass of the contaminant held by the filter" + "Mass of the contaminant captured by the filter" annotation (Placement( transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={ {100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Reals.IntegratorWithReset intWitRes - "calculate the mass of contaminant" + "Calculate the mass of contaminant" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant con(k=mCon_reset) - "constant" + Buildings.Controls.OBC.CDL.Reals.Sources.Constant con( + final k=mCon_reset) + "Constant" annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); Modelica.Blocks.Logical.Greater greater - "check if the filter is full" + "Check if the filter is full" annotation (Placement(transformation(extent={{40,-48},{60,-28}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(k=mCon_nominal) - "constant" + Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1( + final k=mCon_nominal) + "Constant" annotation (Placement(transformation(extent={{0,40},{20,60}}))); - Buildings.Controls.OBC.CDL.Utilities.Assert assMes(message="*** Warning in " + - getInstanceName() + ":the filter needs to be replaced") - "Error message when the filter is full, i.e., the mass held by the filter is larger than its capacity" + Buildings.Controls.OBC.CDL.Utilities.Assert assMes( + message="In " + getInstanceName() + ":the filter needs to be replaced") + "Error message when the filter is full, i.e., the mass captured by the filter is larger than the nominal value" annotation (Placement(transformation(extent={{72,-48},{92,-28}}))); equation connect(intWitRes.u, mCon_flow) annotation (Line(points={{-12,0},{-40,0},{-40, 60},{-120,60}}, color={0,0,127})); connect(intWitRes.y, mCon) annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); - connect(con.y, intWitRes.y_reset_in) + connect(con.y, intWitRes.y_reset_in) annotation (Line(points={{-58,-20},{-20,-20}, {-20,-8},{-12,-8}},color={0,0,127})); connect(intWitRes.trigger, triRep) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo index 76817b47c31..54f15195795 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -4,7 +4,7 @@ model MassTransfer and an input mass transfer efficiency" extends Buildings.Fluid.Interfaces.PartialTwoPortInterface; Modelica.Blocks.Interfaces.RealInput m_flow_in[Medium.nC] - "input trace substance rate" annotation (Placement(transformation( + "Input trace substance rate" annotation (Placement(transformation( extent={{-20,-20},{20,20}}, rotation=270, origin={0,120}), iconTransformation( @@ -15,7 +15,7 @@ model MassTransfer final unit = "1", final min = 0, final max= 1) - "mass transfer coefficient" + "Mass transfer coefficient" annotation (Placement(transformation( extent={{20,-20},{-20,20}}, rotation=180, @@ -26,7 +26,7 @@ model MassTransfer equation if allowFlowReversal then port_b.C_outflow = inStream(port_a.C_outflow) - eps * m_flow_in; - port_a.C_outflow = inStream(port_b.C_outflow) + eps * m_flow_in; + port_a.C_outflow = inStream(port_a.C_outflow); else port_b.C_outflow = inStream(port_a.C_outflow); port_a.C_outflow = inStream(port_b.C_outflow); @@ -43,7 +43,7 @@ equation if not allowFlowReversal then assert(m_flow > -m_flow_small, - "*** Error in " + getInstanceName() + ":Reverting flow occurs even though allowFlowReversal is false", + "In " + getInstanceName() + ":Reverting flow occurs even though allowFlowReversal is false", level=AssertionLevel.error); end if; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo similarity index 97% rename from Buildings/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mo rename to Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo index 2dac344f2a4..7759fe57ff9 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo @@ -1,5 +1,5 @@ within Buildings.Fluid.AirFilters.BaseClasses; -model PressureDropInputFlowCoefficient +model PressureDropWithVaryingFlowCoefficient "Flow resistance with a varying flow coefficient" extends Buildings.Fluid.BaseClasses.PartialResistance( final m_flow_turbulent = if computeFlowResistance then deltaM * m_flow_nominal_pos else 0); @@ -12,8 +12,8 @@ model PressureDropInputFlowCoefficient Real k "flow coefficient, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2)"; Modelica.Blocks.Interfaces.RealInput kCor( - unit = "1", - min = 1) + final unit = "1", + final min = 1) "flow coefficient" annotation (Placement(transformation( extent={{-20,-20},{20,20}}, @@ -180,4 +180,4 @@ First implementation.
        ")); -end PressureDropInputFlowCoefficient; +end PressureDropWithVaryingFlowCoefficient; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mo b/Buildings/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mo deleted file mode 100644 index 59e5ac698b7..00000000000 --- a/Buildings/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mo +++ /dev/null @@ -1,96 +0,0 @@ -within Buildings.Fluid.AirFilters.BaseClasses; -model SimpleCharacterization - "Component that calculates the filter efficiency and the flow coefficient correction factor" - parameter Real mCon_nominal - "contaminant held capacity of the filter"; - parameter Real epsFun[:] - "filter efficiency curve"; - parameter Real b( - final min = 1 + 1E-3) - "resistance coefficient"; - Modelica.Blocks.Interfaces.RealInput mCon( - final unit="kg") - "mass of the contaminant held by the filter" - annotation (Placement( - transformation( - extent={{20,-20},{-20,20}}, - rotation=180, - origin={-120,0}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-120,0}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput eps( - final unit="1", - final min = 0, - final max = 1) - "filter efficiency" - annotation (Placement(transformation(extent={{100,38},{140,78}}), iconTransformation( - extent={{100,38},{140,78}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput kCor( - final unit="1", - final min = 1) - "Flow coefficient correction" - annotation ( - Placement(transformation(extent={{100,-60},{140,-20}}), - iconTransformation(extent={{100,-82},{140,-42}}))); -protected - Real Phi "ratio of the mass of the contaminant held by the filter to the nominal capactiy of the filter"; -equation - Phi = Buildings.Utilities.Math.Functions.smoothMin(x1= 1, x2= mCon/mCon_nominal, deltaX=0.1); - eps = Buildings.Utilities.Math.Functions.polynomial(a=epsFun,x=Phi); - assert(noEvent(eps > 0) and noEvent(eps < 1), - "*** Error in " + getInstanceName() + ": The filter efficiency should be in the range of [0, 1], - check the filter efficiency curve.", - level=AssertionLevel.error); - kCor = b^Phi; - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,100},{100,-100}}, - lineColor={28,108,200}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Text( - extent={{-143,-98},{157,-138}}, - textColor={0,0,255}, - textString="%name")}), - Diagram(coordinateSystem(preserveAspectRatio=false)), - defaultComponentName="simCha", - Documentation(revisions=" -
          -
        • -December 22, 2023, by Sen Huang:
          -First implementation. -
        • -
        -", info=" -

        -This model calculates the filter efficiency based on the mass of the contaminants held by the filter. -

        -

        - eps = epsFun1 + epsFun2 ɸ + epsFun3 ɸ2 + ..., -

        -

        -where ɸ is the ratio of the contaminant mass to the capacity of the filter for holding -the contaminants, and the coefficients epsFuni -are declared by the parameter epsFun. -

        -

        -This model also calculates the flow coefficient of the filter by -

        -

        - kCor = bɸ, -

        -

        -where b is a constant that is larger than 1. -

        -

        -Note: -The upper limit of ɸ is 1 and any value above it is overwritten by 1. -

        -

        References

        -

        -Qiang Li ta al., (2022). Experimental study on the synthetic dust loading characteristics of air filters. -Separation and Purification Technology 284 (2022), 120209 -

        -")); -end SimpleCharacterization; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/SimpleCharacterization.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo similarity index 53% rename from Buildings/Fluid/AirFilters/BaseClasses/Validation/SimpleCharacterization.mo rename to Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo index 466bd2a2ef1..b584a672dc5 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/SimpleCharacterization.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo @@ -1,39 +1,34 @@ within Buildings.Fluid.AirFilters.BaseClasses.Validation; -model SimpleCharacterization +model FiltrationEfficiency "Validation model for the calculation of the filter efficiency and the flow coefficient correction factor" extends Modelica.Icons.Example; - Buildings.Fluid.AirFilters.BaseClasses.SimpleCharacterization simCha( + Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency eps( mCon_nominal=1, - epsFun={0.98,-0.1}, - b=1.2) - "filter characterization" + epsFun={0.98,-0.1}) + "Filtration efficiency" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Modelica.Blocks.Sources.Ramp mCon( duration=1, height=1.2, offset=0) - "mass of the contaminant held by the filter" + "Mass of the contaminant captured by the filter" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); equation - connect(mCon.y, simCha.mCon) + connect(mCon.y, eps.mCon) annotation (Line(points={{-39,0},{-12,0}}, color={0,0,127})); annotation (experiment(Tolerance=1e-6, StopTime=1.0), -__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mos" +__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mos" "Simulate and plot"), Documentation(info="

        -The input mass of the contaminant held by the filter mCon +The input mass of the contaminant captured by the filter mCon changes from 0 to 1.2 from 0 to 1 second.

        -The eps changes from 0.98 to 0.88 during the period from +The filtration efficiency, eps.y, changes from 0.98 to 0.88 during the period from 0 to 0.85 seconds. -After 0.85 seconds, the eps remains unchanged when mCon changes. -This is because the Phi already reaches the maximum value. -

        -

        -Likewise, the kCor changes from 1 to 1.2 during the period from -0 to 0.85 seconds and then keeps constant afterward. +After 0.85 seconds, the eps.y remains unchanged when mCon changes. +This is because the relative mass of contaminant captured by the filter already reaches the maximum value.

        ", revisions="
          @@ -43,4 +38,4 @@ First implementation.
        ")); -end SimpleCharacterization; +end FiltrationEfficiency; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo new file mode 100644 index 00000000000..f13f9f83c1b --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo @@ -0,0 +1,38 @@ +within Buildings.Fluid.AirFilters.BaseClasses.Validation; +model FlowCoefficientCorrection + "Validation model for the calculation of the filter efficiency and the flow coefficient correction factor" + extends Modelica.Icons.Example; + Modelica.Blocks.Sources.Ramp rat( + duration=1, + height=1, + offset=0) + "Relative mass of the contaminant captured by the filter" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection kCor( + b=1.2) + "Flow coefficient correction" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); +equation + connect(rat.y, kCor.rat) + annotation (Line(points={{-39,0},{-12,0}}, color={0,0,127})); + annotation (experiment(Tolerance=1e-6, StopTime=1.0), +__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mos" + "Simulate and plot"), + Documentation(info=" +

        +The input relative mass of the contaminant captured by the filter rat +changes from 0 to 1 from 0 to 1 second. +

        +

        +The kCor.y changes from 1 to 1.2 during the period from +0 to 1 second. +

        +", revisions=" +
          +
        • +December 22, 2023, by Sen Huang:
          +First implementation. +
        • +
        +")); +end FlowCoefficientCorrection; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo index 37252286f72..73dd0d49495 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo @@ -4,16 +4,18 @@ model MassAccumulation extends Modelica.Icons.Example; Buildings.Fluid.AirFilters.BaseClasses.MassAccumulation masAcc(mCon_nominal=1, mCon_reset=0) - "contaminant accumulation" + "Contaminant accumulation" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Modelica.Blocks.Sources.Ramp mCon_flow( duration=1, height=1.2, offset=0) - "contaminant mass flow rate" + "Contaminant mass flow rate" annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.Pulse RepSig(period=1, shift=0.5) - "filter replacement signal" + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse RepSig( + period=1, + shift=0.5) + "Filter replacement signal" annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); equation connect(RepSig.y, masAcc.triRep) annotation (Line(points={{-38,-20},{-20,-20}, diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo index 94fafcc71b9..1ea6352bc3c 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo @@ -8,62 +8,65 @@ model MassTransfer redeclare package Medium = Medium, m_flow=1, nPorts=1) - "air source" + "Air source" annotation (Placement(transformation( - extent={{-60,-10},{-40,10}}))); + extent={{-82,-10},{-62,10}}))); Buildings.Fluid.Sources.Boundary_pT sin( - redeclare package Medium = Medium, - nPorts=1) - "air sink" + redeclare package Medium = Medium, nPorts=1) + "Air sink" annotation (Placement(transformation( - extent={{82,-10},{62,10}}))); + extent={{96,-10},{76,10}}))); Buildings.Fluid.AirFilters.BaseClasses.MassTransfer masTra( redeclare package Medium = Medium, allowFlowReversal=true, - m_flow_nominal=1) "mass transfer" + m_flow_nominal=1) + "Mass transfer" annotation (Placement(transformation(extent={{8,-10},{28,10}}))); Modelica.Blocks.Sources.Ramp eps( - duration=1, + duration=20, height=-0.7, - offset=1) - "mass transfer efficiency" + offset=0.9, + startTime=5) + "Mass transfer efficiency" annotation (Placement(transformation(extent={{-60,40},{-40,60}}))); Modelica.Blocks.Sources.RealExpression traceSubstancesFlow( y=inStream(masTra.port_a.C_outflow[1])) - "trace substances flow rate" + "Trace substances flow rate" annotation (Placement(transformation(extent={{-20,50},{0,70}}))); - Buildings.Fluid.Sensors.TraceSubstances C_out(redeclare package Medium = Medium) - "trace substance sensor of outlet air" - annotation (Placement(transformation(extent={{30,10},{50,30}}))); - Buildings.Fluid.Sensors.TraceSubstances C_in(redeclare package Medium = Medium) - "trace substance sensor of inlet air" - annotation (Placement(transformation(extent={{-38,-40},{-18,-20}}))); + Buildings.Fluid.Sensors.TraceSubstancesTwoPort C_out( + redeclare package Medium = Medium, m_flow_nominal=1) + "Trace substance sensor of outlet air" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + Buildings.Fluid.Sensors.TraceSubstancesTwoPort C_in( + redeclare package Medium = Medium, m_flow_nominal=1) + "Trace substance sensor of inlet air" + annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); equation - connect(eps.y, masTra.eps) + connect(eps.y, masTra.eps) annotation (Line(points={{-39,50},{-24,50},{-24,6}, - {6,6}}, color={0,0,127})); + {6,6}}, color={0,0,127})); connect(traceSubstancesFlow.y, masTra.m_flow_in[1]) annotation (Line(points={{1,60},{18,60},{18,12}}, color={0,0,127})); - connect(C_out.port, masTra.port_b) - annotation (Line(points={{40,10},{40,0},{28,0}}, color={0,127,255})); - connect(C_in.port, masTra.port_a) annotation (Line(points={{-28,-40},{-28,-50}, - {0,-50},{0,0},{8,0}}, color={0,127,255})); - connect(sin.ports[1], masTra.port_b) - annotation (Line(points={{62,0},{28,0}}, color={0,127,255})); - connect(masTra.port_a, sou.ports[1]) - annotation (Line(points={{8,0},{-40,0}}, color={0,127,255})); - annotation (experiment(Tolerance=1e-6, StopTime=1.0), + connect(C_out.port_b, sin.ports[1]) + annotation (Line(points={{60,0},{76,0}}, color={0,127,255})); + connect(C_out.port_a, masTra.port_b) + annotation (Line(points={{40,0},{28,0}}, color={0,127,255})); + connect(C_in.port_b, masTra.port_a) + annotation (Line(points={{-30,0},{8,0}}, color={0,127,255})); + connect(C_in.port_a, sou.ports[1]) + annotation (Line(points={{-50,0},{-62,0},{-62,0}}, color={0,127,255})); + annotation (experiment(Tolerance=1e-6, StopTime=30), __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassTransfer.mos" "Simulate and plot"), Documentation(info="

        -The input mass transfer efficiency eps changes from 1 to 0.3 from 0 to 1 second; -The trace substance concentration of the inlet port is fixed as 1. +From 0 to 5 seconds, the testing case is warming-up and the input mass transfer efficiency eps is fixed at 0.9. +From 5 to 25 seconds, the input mass transfer efficiency eps changes from 0.9 to 0.2. +After 25 seconds, the input mass transfer efficiency eps is fixed at 0.2.

        -The trace substance concentration of the outlet port is 0 at the 0 second when the eps is 1, -meaning all the trace substance has been removed. -As the eps decreases, the trace substance concentration of the outlet port increases to 0.7. +The trace substance of the outlet port changes from 0.1 to 0.8 during the period from +5 seconds to 30 seconds.

        ", revisions="
          diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropInputFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo similarity index 79% rename from Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropInputFlowCoefficient.mo rename to Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo index fee11de30fb..467eaf6d59f 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropInputFlowCoefficient.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo @@ -1,14 +1,15 @@ within Buildings.Fluid.AirFilters.BaseClasses.Validation; -model PressureDropInputFlowCoefficient +model PressureDropWithVaryingFlowCoefficient "Validation model for flow resistances with a varying flow coefficient" extends Modelica.Icons.Example; - package Medium = Buildings.Media.Air - "air"; + package Medium = Buildings.Media.Air + "Air"; Modelica.Blocks.Sources.Ramp P( duration=1, height=20, - offset=101325 - 10) "Ramp pressure signal" + offset=101325 - 10) + "Ramp pressure signal" annotation (Placement(transformation(extent={{-92,-2},{-72,18}}))); Buildings.Fluid.Sources.Boundary_pT sou( redeclare package Medium = Medium, @@ -30,10 +31,10 @@ model PressureDropInputFlowCoefficient redeclare package Medium = Medium, m_flow_nominal=0.2, from_dp=true, - dp_nominal=10) "Fixed resistance" + dp_nominal=10) + "Fixed resistance" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - - Buildings.Fluid.AirFilters.BaseClasses.PressureDropInputFlowCoefficient + Buildings.Fluid.AirFilters.BaseClasses.PressureDropWithVaryingFlowCoefficient resVarying( redeclare package Medium = Medium, m_flow_nominal=0.2, @@ -43,28 +44,28 @@ model PressureDropInputFlowCoefficient width=100, period=0.5, offset=1, - startTime=0.5) - "flow coefficient correction factor" + startTime=0.5) + "Flow coefficient correction factor" annotation (Placement(transformation(extent={{-80,62},{-60,82}}))); equation - connect(P.y, sou.p_in) + connect(P.y, sou.p_in) annotation (Line(points={{-71,8},{-62,8},{-52,8}}, color={0,0,127})); - connect(sou.ports[1], resFixed.port_a) + connect(sou.ports[1], resFixed.port_a) annotation (Line(points={{-30,-1},{-20, -1},{-20,0},{-10,0}}, color={0,127,255})); connect(resFixed.port_b, sin.ports[1]) annotation (Line(points={{10,0},{10,-1},{30,-1}}, color={0,127,255})); - connect(resVarying.port_a, sou.ports[2]) + connect(resVarying.port_a, sou.ports[2]) annotation (Line(points={{-10,40},{-20, 40},{-20,1},{-30,1}}, color={0,127,255})); - connect(resVarying.port_b, sin.ports[2]) + connect(resVarying.port_b, sin.ports[2]) annotation (Line(points={{10,40},{18, 40},{18,1},{30,1}}, color={0,127,255})); connect(kCor.y, resVarying.kCor) annotation (Line(points={{-59,72},{0,72},{0,52}}, color={0,0,127})); annotation (experiment(Tolerance=1e-6, StopTime=1.0), -__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mos" +__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mos" "Simulate and plot"), Documentation(info="

          @@ -72,7 +73,7 @@ Before 0.5 seconds, the flow rates of the resFixed (pressure resist (pressure resistance with a varying flow coefficient) are the same with the identical pressure drop.

          -After 0.5 seconds, however, the flow rate of the resVarying is lower than that of resFixed as the flow coefficient +After 0.5 seconds, the flow rate of the resVarying is lower than that of resFixed as the flow coefficient of the former decreases by √2.

          ", revisions=" @@ -88,4 +89,4 @@ First implementation for
        ")); -end PressureDropInputFlowCoefficient; +end PressureDropWithVaryingFlowCoefficient; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.order b/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.order index 6a39732295b..cf83473e1ba 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.order +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.order @@ -1,4 +1,5 @@ +FiltrationEfficiency +FlowCoefficientCorrection MassAccumulation MassTransfer -PressureDropInputFlowCoefficient -SimpleCharacterization \ No newline at end of file +PressureDropWithVaryingFlowCoefficient \ No newline at end of file diff --git a/Buildings/Fluid/AirFilters/BaseClasses/package.order b/Buildings/Fluid/AirFilters/BaseClasses/package.order index 0bbdcfaaedb..177dde1d3bd 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/package.order +++ b/Buildings/Fluid/AirFilters/BaseClasses/package.order @@ -1,5 +1,6 @@ +FiltrationEfficiency +FlowCoefficientCorrection MassAccumulation MassTransfer -PressureDropInputFlowCoefficient -SimpleCharacterization +PressureDropWithVaryingFlowCoefficient Validation diff --git a/Buildings/Fluid/AirFilters/Generic.mo b/Buildings/Fluid/AirFilters/Empirical.mo similarity index 69% rename from Buildings/Fluid/AirFilters/Generic.mo rename to Buildings/Fluid/AirFilters/Empirical.mo index 6d696e1ea8d..9b35c28fe28 100644 --- a/Buildings/Fluid/AirFilters/Generic.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -1,79 +1,99 @@ within Buildings.Fluid.AirFilters; -model Generic - "Generic air filter model" +model Empirical "Empirical air filter model" replaceable package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2"}) - "air"; - parameter Real mCon_nominal - "contaminant held capacity of the filter"; + "Air"; + parameter Real mCon_nominal( + final unit = "kg") + "Maximum mass of the contaminant captured by the filter"; parameter Real epsFun[:] - "filter efficiency curve"; + "filter efficiency curve" + annotation (Dialog(group="Efficiency")); parameter Real b( final min = 1 + 1E-3) - "resistance coefficient"; + "resistance coefficient" + annotation (Dialog(group="Pressure")); parameter Modelica.Units.SI.MassFlowRate m_flow_nominal - "Nominal mass flow rate"; + "Nominal mass flow rate" + annotation (Dialog(group="Nominal")); parameter Modelica.Units.SI.PressureDifference dp_nominal - "Nominal pressure drop"; + "Nominal pressure drop" + annotation (Dialog(group="Nominal")); Modelica.Blocks.Interfaces.BooleanInput triRep - "replacing the filter when trigger becomes true" + "Replacing the filter when trigger becomes true" annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); - Buildings.Fluid.AirFilters.BaseClasses.PressureDropInputFlowCoefficient res( + Buildings.Controls.OBC.CDL.Interfaces.RealOutput eps( + final unit="1", + final min=0, + final max=1) "Filtration efficiency" annotation (Placement(transformation( + extent={{100,40},{140,80}}), iconTransformation(extent={{100,-80},{140,-40}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_a( + redeclare package Medium = Medium) + "Fluid connector a (positive design flow direction is from port_a to port_b)" + annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_b( + redeclare package Medium = Medium) + "Fluid connector b (positive design flow direction is from port_a to port_b)" + annotation (Placement(transformation(extent={{90,-10},{110,10}}))); +protected + Buildings.Fluid.AirFilters.BaseClasses.PressureDropWithVaryingFlowCoefficient + res( redeclare package Medium = Medium, final m_flow_nominal=m_flow_nominal, final dp_nominal=dp_nominal) - "pressure resistance" - annotation (Placement(transformation(extent={{-28,-10},{-8,10}}))); + "Pressure resistance" + annotation (Placement(transformation(extent={{-30,-10},{-10,10}}))); Buildings.Fluid.AirFilters.BaseClasses.MassTransfer masTra( redeclare package Medium = Medium, - final m_flow_nominal=m_flow_nominal) "contaminant removal" + final m_flow_nominal=m_flow_nominal) + "Contaminant removal" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); - Buildings.Fluid.AirFilters.BaseClasses.SimpleCharacterization simCha( + Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency epsCal( final mCon_nominal=mCon_nominal, - final epsFun=epsFun, - final b=b) - "filter characterization" - annotation (Placement(transformation(extent={{22,50},{42,70}}))); + final epsFun=epsFun) + "Filter characterization" + annotation (Placement(transformation(extent={{-8,70},{12,90}}))); Buildings.Fluid.AirFilters.BaseClasses.MassAccumulation masAcc( final mCon_nominal=mCon_nominal, final mCon_reset=0) - "contaminant accumulation" - annotation (Placement(transformation(extent={{-20,50},{0,70}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_a( - redeclare package Medium = Medium) - "fluid connector a (positive design flow direction is from port_a to port_b)" - annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_b( - redeclare package Medium = Medium) - "fluid connector b (positive design flow direction is from port_a to port_b)" - annotation (Placement(transformation(extent={{90,-10},{110,10}}))); - Modelica.Blocks.Sources.RealExpression traceSubstancesFlow( - y=inStream(port_a.C_outflow[1])) - "trace substances flow rate" - annotation (Placement(transformation(extent={{-72,70},{-52,90}}))); + "Contaminant accumulation" + annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); + Modelica.Blocks.Sources.RealExpression traceSubstancesFlow(y(unit="kg/s")= + inStream(port_a.C_outflow[1])*port_a.m_flow) + "Trace substances flow rate" + annotation (Placement(transformation(extent={{-92,70},{-72,90}}))); + Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection kCor( + final b=b) + annotation (Placement(transformation(extent={{40,70},{60,90}}))); equation - connect(masAcc.mCon, simCha.mCon) - annotation (Line(points={{2,60},{20,60}}, color={0,0,127})); - connect(simCha.kCor, res.kCor) annotation (Line(points={{44,53.8},{50,53.8},{50, - 54},{56,54},{56,38},{-18,38},{-18,12}}, color={0,0,127})); + connect(masAcc.mCon, epsCal.mCon) + annotation (Line(points={{-18,80},{-10,80}}, color={0,0,127})); connect(res.port_a, port_a) - annotation (Line(points={{-28,0},{-100,0}}, color={0,127,255})); + annotation (Line(points={{-30,0},{-100,0}}, color={0,127,255})); connect(res.port_b, masTra.port_a) - annotation (Line(points={{-8,0},{40,0}}, color={0,127,255})); + annotation (Line(points={{-10,0},{40,0}},color={0,127,255})); connect(masTra.port_b, port_b) annotation (Line(points={{60,0},{100,0}}, color={0,127,255})); connect(masAcc.triRep, triRep) - annotation (Line(points={{-22,53.8},{-22,54},{-94, - 54},{-94,60},{-120,60}}, color={255,0,255})); + annotation (Line(points={{-42,73.8},{-42,74},{-68,74},{-68,60},{-120,60}}, + color={255,0,255})); connect(traceSubstancesFlow.y, masAcc.mCon_flow) - annotation (Line(points={{-51, - 80},{-40,80},{-40,66},{-22,66}}, color={0,0,127})); - connect(simCha.eps, masTra.eps) - annotation (Line(points={{44,65.8},{52,65.8},{ - 52,66},{60,66},{60,28},{26,28},{26,6},{38,6}}, color={0,0,127})); + annotation (Line(points={{-71,80},{-60,80},{-60,86},{-42,86}}, + color={0,0,127})); + connect(epsCal.y, masTra.eps) + annotation (Line(points={{14,74},{28,74},{28,6},{38,6}}, color={0,0,127})); connect(masTra.m_flow_in[1], traceSubstancesFlow.y) - annotation (Line(points={{ - 50,12},{50,20},{-40,20},{-40,80},{-51,80}}, color={0,0,127})); + annotation (Line(points={{50,12},{50,28},{-60,28},{-60,80},{-71,80}}, + color={0,0,127})); + connect(epsCal.rat, kCor.rat) + annotation (Line(points={{14,86},{32,86},{32,80}, + {38,80}}, color={0,0,127})); + connect(kCor.y, res.kCor) + annotation (Line(points={{62,80},{80,80},{80,60},{-20, + 60},{-20,12}}, color={0,0,127})); + connect(epsCal.y, eps) + annotation (Line(points={{14,74},{34,74},{34,38},{88,38}, + {88,60},{120,60}}, color={0,0,127})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-20,90},{22,-80}}, @@ -235,7 +255,7 @@ equation extent={{-145,-100},{155,-140}}, textColor={0,0,255}, textString="%name")}), - defaultComponentName="genFilter", + defaultComponentName="fil", Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions="
          @@ -246,8 +266,8 @@ First implementation.
        ", info="

        -Model of a generic air filter, which captures the impacts of the contamination accumulation on -the pressure drop and the filter efficiency. +An empirical model of air filters, which considers the impacts of the contamination accumulation on +the pressure drop and the filtration efficiency.

        This model does not require detailed information of filters, such as filter type or geometric data. @@ -256,10 +276,10 @@ and b.

        • -mCon_nominal determines the maximum mass of the contaminants that the filter can hold; +mCon_nominal determines the maximum mass of the contaminants that the filter can capture;
        • -epsFun is a vector of coefficients that determines how the filter efficiency changes by the accumulation +epsFun is a vector of coefficients that determines how the filtration efficiency changes by the accumulation of contaminants;
        • @@ -267,8 +287,10 @@ of contaminants; of contaminants.
        -See more detailed descriptions in -Buildings.Fluid.AirFilters.BaseClasses.SimpleCharacterization. +See more detailed descriptions in +Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency and + +Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection.

        The input boolean flag, triRep, triggers the filter replacement. Specifically, when triRep changes from false to true, the mass @@ -278,4 +300,4 @@ of the contaminants that the filter holds, mCon = 0. A warning will be triggered when mCon > mCon_nominal. In addition, this model can only be used when extraPropertiesNames is defined in the medium model. ")); -end Generic; +end Empirical; diff --git a/Buildings/Fluid/AirFilters/Examples/Empirical.mo b/Buildings/Fluid/AirFilters/Examples/Empirical.mo new file mode 100644 index 00000000000..69439af548e --- /dev/null +++ b/Buildings/Fluid/AirFilters/Examples/Empirical.mo @@ -0,0 +1,85 @@ +within Buildings.Fluid.AirFilters.Examples; +model Empirical "Example for using the empirical air filter model" + extends Modelica.Icons.Example; + package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Air"; + Buildings.Fluid.AirFilters.Empirical fil( + redeclare package Medium = Medium, + mCon_nominal=10, + epsFun={0.98,-0.5}, + b=1.2, + m_flow_nominal=1, + dp_nominal(displayUnit="Pa") = 100) + "Air filter" + annotation (Placement(transformation(extent={{4,-10},{24,10}}))); + Buildings.Fluid.Sources.Boundary_pT sou( + redeclare package Medium = Medium, + use_C_in=true, + p(displayUnit="Pa") = 101325 + 100, + nPorts=1) + "Air source" + annotation (Placement(transformation( + extent={{-60,-10},{-40,10}}))); + Buildings.Fluid.Sources.Boundary_pT sin( + redeclare package Medium = Medium, + p(displayUnit="Pa") = 101325, + nPorts=1) + "Air sink" + annotation (Placement(transformation( + extent={{92,-10},{72,10}}))); + Buildings.Fluid.Sensors.TraceSubstancesTwoPort C_in( + redeclare package Medium = Medium, m_flow_nominal=1) + "Trace substance sensor of inlet air" + annotation (Placement(transformation(extent={{-30,-10},{-10,10}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse repSig(period=60, shift=30) + "Filter replacement signal" + annotation (Placement(transformation(extent={{-50,40},{-30,60}}))); + Modelica.Blocks.Sources.Ramp C_inflow( + duration=30, + height=-0.3, + offset=1, + startTime=20) + "Contaminant mass flow rate fraction" + annotation (Placement(transformation(extent={{-94,12},{-74,32}}))); + Buildings.Fluid.Sensors.TraceSubstancesTwoPort C_out( + redeclare package Medium = Medium, m_flow_nominal=1) + "Trace substance sensor of outlet air" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); +equation + connect(repSig.y, fil.triRep) + annotation (Line(points={{-28,50},{-4,50},{-4,6}, + {2,6}}, color={255,0,255})); + connect(C_inflow.y, sou.C_in[1]) annotation (Line(points={{-73,22},{-68,22},{-68, + -8},{-62,-8}}, color={0,0,127})); + connect(C_out.port_b, sin.ports[1]) + annotation (Line(points={{60,0},{72,0}}, color={0,127,255})); + connect(C_out.port_a, fil.port_b) + annotation (Line(points={{40,0},{24,0}}, color={0,127,255})); + connect(C_in.port_b, fil.port_a) + annotation (Line(points={{-10,0},{4,0}}, color={0,127,255})); + connect(sou.ports[1], C_in.port_a) + annotation (Line(points={{-40,0},{-30,0}}, color={0,127,255})); + annotation (experiment( + StopTime=50, + Tolerance=1e-06, + __Dymola_Algorithm="Dassl"), + __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos" + "Simulate and plot"), + Documentation(revisions=" +

          +
        • +December 22, 2023, by Sen Huang:
          +First implementation. +
        • +
        +", info=" +

        +From 0 to 12 seconds, the testing case is warming-up and the trace substance of the inlet C_inflow is fixed at 1. +From 20 to 50 seconds, the C_inflow changes from 1 to 0.7. +At the 30 seconds, the filter replacement signal repSig changes from false to true. +

        +

        +From 12 to 30 seconds, the trace substance of the outlet port C_out doesn't change much; +From 30 to 45 seconds, C_out first decreases and then increases. +

        +")); +end Empirical; diff --git a/Buildings/Fluid/AirFilters/Examples/Generic.mo b/Buildings/Fluid/AirFilters/Examples/Generic.mo deleted file mode 100644 index 9b982b11199..00000000000 --- a/Buildings/Fluid/AirFilters/Examples/Generic.mo +++ /dev/null @@ -1,89 +0,0 @@ -within Buildings.Fluid.AirFilters.Examples; -model Generic - "Example for using the generic air filter model" - extends Modelica.Icons.Example; - package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Air"; - Buildings.Fluid.AirFilters.Generic filter( - redeclare package Medium = Medium, - mCon_nominal=1, - epsFun={0.98,-0.1}, - b=1.2, - m_flow_nominal=1, - dp_nominal(displayUnit="Pa") = 100) - "air filter" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Sources.Boundary_pT sou( - redeclare package Medium = Medium, - use_C_in=true, - p(displayUnit="Pa") = 101325 + 100, - nPorts=1) - "air source" - annotation (Placement(transformation( - extent={{-58,-10},{-38,10}}))); - Buildings.Fluid.Sources.Boundary_pT sin( - redeclare package Medium = Medium, - p(displayUnit="Pa") = 101325, - nPorts=1) - "air sink" - annotation (Placement(transformation( - extent={{80,-10},{60,10}}))); - Buildings.Fluid.Sensors.TraceSubstances C_in( - redeclare package Medium = Medium) - "trace substance sensor of inlet air" - annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); - Buildings.Fluid.Sensors.TraceSubstances C_out( - redeclare package Medium = Medium) - "trace substance sensor of outlet air" - annotation (Placement(transformation(extent={{30,28},{50,48}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.Pulse RepSig( - period=1, - shift=0.5) - "filter replacement signal" - annotation (Placement(transformation(extent={{-50,40},{-30,60}}))); - Modelica.Blocks.Sources.Ramp mCon_flow( - duration=1, - height=1.2, - offset=0) - "contaminant mass flow rate" - annotation (Placement(transformation(extent={{-96,-30},{-76,-10}}))); -equation - connect(filter.port_b, sin.ports[1]) - annotation (Line(points={{10,0},{60,0}}, color={0,127,255})); - connect(RepSig.y, filter.triRep) - annotation (Line(points={{-28,50},{-20,50},{-20, - 6},{-12,6}}, color={255,0,255})); - connect(C_in.port, filter.port_a) - annotation (Line(points={{-30,-50},{-30,-60}, - {-14,-60},{-14,0},{-10,0}}, color={0,127,255})); - connect(C_out.port, filter.port_b) - annotation (Line(points={{40,28},{40,0},{10,0}}, color={0,127,255})); - connect(sou.ports[1], filter.port_a) - annotation (Line(points={{-38,0},{-10,0}}, color={0,127,255})); - connect(mCon_flow.y, sou.C_in[1]) annotation (Line(points={{-75,-20},{-66,-20}, - {-66,-8},{-60,-8}}, color={0,0,127})); - annotation (experiment(Tolerance=1e-6, StopTime=1.0), - __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Generic.mos" - "Simulate and plot"), - Documentation(revisions=" -
          -
        • -December 22, 2023, by Sen Huang:
          -First implementation. -
        • -
        -", info=" -

        -The input contaminant mass flow rate mCon_flow changes -from 0 to 1.2 during the period from 0 to 1 second; -The filter replacement signal changes from false to true at 0.5 seconds. -

        -

        -The filter efficiency eps decreases during the period -from 0 to 0.5 seconds due to the accumulation of the contaminants; -At 0.5 seconds, it gets a sudden increase as the filter is replaced; -After 0.5 seconds, it keeps decreasing again till the end. -The same pattern is also applied to the flow coefficient of the filter and thereby -the mass flow rate of the air through the filter. -

        -")); -end Generic; diff --git a/Buildings/Fluid/AirFilters/Examples/package.order b/Buildings/Fluid/AirFilters/Examples/package.order index 8470d611953..e56c800cd7b 100644 --- a/Buildings/Fluid/AirFilters/Examples/package.order +++ b/Buildings/Fluid/AirFilters/Examples/package.order @@ -1 +1 @@ -Generic +Empirical diff --git a/Buildings/Fluid/AirFilters/package.order b/Buildings/Fluid/AirFilters/package.order index 3ba361f7e25..221827672ea 100644 --- a/Buildings/Fluid/AirFilters/package.order +++ b/Buildings/Fluid/AirFilters/package.order @@ -1,3 +1,3 @@ -Generic +Empirical Examples BaseClasses diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_FiltrationEfficiency.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_FiltrationEfficiency.txt new file mode 100644 index 00000000000..dd54200775c --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_FiltrationEfficiency.txt @@ -0,0 +1,10 @@ +last-generated=2024-01-11 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +mCon.y=[0e+00, 1.200000037252895e-02, 2.400000074505789e-02, 3.599999925494219e-02, 4.800000149011579e-02, 5.99999977648261e-02, 7.199999850988588e-02, 8.399999850988389e-02, 9.600000298022425e-02, 1.079999985098865e-01, 1.199999955296583e-01, 1.319999999999973e-01, 1.439999970197758e-01, 1.560000089406754e-01, 1.679999970197704e-01, 1.799999999999822e-01, 1.920000059604485e-01, 2.039999940395435e-01, 2.159999970197464e-01, 2.280000029802216e-01, 2.399999910593166e-01, 2.520000119209485e-01, 2.640000000000036e-01, 2.759999880791208e-01, 2.879999940395515e-01, 3.00000011920929e-01, 3.120000178812797e-01, 3.239999880790391e-01, 3.359999940395498e-01, 3.480000000000248e-01, 3.599999999999645e-01, 3.720000059604573e-01, 3.840000119209503e-01, 3.959999821185675e-01, 4.079999880791137e-01, 4.199999940395532e-01, 4.319999940394929e-01, 4.439999999999858e-01, 4.560000059604787e-01, 4.680000119209716e-01, 4.799999821186777e-01, 4.920000178813508e-01, 5.040000238417016e-01, 5.159999642372984e-01, 5.279999999999716e-01, 5.400000357626448e-01, 5.519999761582416e-01, 5.640000119209148e-01, 5.759999880792629e-01, 5.879999880791847e-01, 6.000000238418579e-01, 6.12e-01, 6.240000357622184e-01, 6.36000011920929e-01, 6.479999761587816e-01, 6.600000119209291e-01, 6.719999880790569e-01, 6.840000238416447e-01, 6.96e-01, 7.080000357620052e-01, 7.2e-01, 7.319999761585684e-01, 7.440000119209289e-01, 7.559999880790711e-01, 7.680000238414316e-01, 7.8e-01, 7.919999642379948e-01, 8.04e-01, 8.159999761583553e-01, 8.280000119209431e-01, 8.399999880790709e-01, 8.520000238412184e-01, 8.63999988079071e-01, 8.759999642377816e-01, 8.88e-01, 8.999999761581421e-01, 9.120000119206447e-01, 9.240000476831474e-01, 9.360000238410053e-01, 9.47999988079071e-01, 9.599999642375685e-01, 9.719999999999859e-01, 9.840000357625737e-01, 9.960000119204315e-01, 1.008000047683716e+00, 1.019999952317705e+00, 1.031999928475279e+00, 1.044000023841858e+00, 1.056e+00, 1.067999976158142e+00, 1.080000071524153e+00, 1.091999976158142e+00, 1.103999952317279e+00, 1.116000047683716e+00, 1.128000023841801e+00, 1.14e+00, 1.151999976158142e+00, 1.164e+00, 1.175999976158142e+00, 1.187999952316853e+00, 1.200000047683716e+00] +eps.y=[9.800000190734863e-01, 9.787999987333982e-01, 9.775999783933234e-01, 9.764000176578668e-01, 9.751999973178052e-01, 9.739999772012338e-01, 9.72800016242247e-01, 9.715999961257024e-01, 9.703999755621244e-01, 9.692000154971501e-01, 9.679999949336257e-01, 9.667999743700123e-01, 9.656000134110083e-01, 9.643999928475193e-01, 9.631999731779181e-01, 9.620000131129259e-01, 9.607999916554073e-01, 9.595999719858415e-01, 9.584000119208138e-01, 9.571999904632952e-01, 9.559999707937649e-01, 9.548000089406068e-01, 9.535999892711832e-01, 9.524000292062088e-01, 9.512000077485303e-01, 9.49999988079071e-01, 9.48800026225913e-01, 9.476000083444776e-01, 9.463999868869944e-01, 9.452000250338364e-01, 9.440000071523655e-01, 9.42799985694918e-01, 9.416000238417599e-01, 9.404000059602534e-01, 9.391999845028414e-01, 9.380000226496833e-01, 9.368000047681414e-01, 9.355999833107649e-01, 9.344000214576067e-01, 9.331999999998039e-01, 9.319999821186883e-01, 9.308000202655302e-01, 9.295999988077274e-01, 9.283999809266117e-01, 9.272000190734536e-01, 9.259999976156508e-01, 9.247999797345352e-01, 9.236000178813771e-01, 9.22399996423894e-01, 9.211999785424586e-01, 9.200000166893005e-01, 9.187999952317989e-01, 9.175999737742974e-01, 9.164000119205878e-01, 9.1519999761607e-01, 9.139999761582842e-01, 9.128000143050806e-01, 9.115999928475705e-01, 9.103999713900689e-01, 9.092000095364305e-01, 9.079999952319127e-01, 9.067999737741268e-01, 9.056000119208437e-01, 9.043999904633421e-01, 9.031999690058405e-01, 9.020000071522731e-01, 9.007999928477552e-01, 8.996000309941169e-01, 8.984000095366153e-01, 8.971999880791052e-01, 8.960000262259016e-01, 8.948000047681158e-01, 8.935999904635979e-01, 8.924000286098884e-01, 8.912000071523869e-01, 8.899999856948853e-01, 8.887087689614868e-01, 8.872979255792655e-01, 8.858525712017934e-01, 8.844451933840741e-01, 8.831359759064158e-01, 8.819726112117399e-01, 8.809903853923335e-01, 8.802120078673326e-01, 8.796479094530463e-01, 8.792960054152166e-01, 8.791418076712583e-01, 8.79158318006376e-01, 8.793061376595671e-01, 8.795334700316684e-01, 8.797760014988025e-01, 8.799570199263431e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01] \ No newline at end of file diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_FlowCoefficientCorrection.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_FlowCoefficientCorrection.txt new file mode 100644 index 00000000000..3b66a689b3d --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_FlowCoefficientCorrection.txt @@ -0,0 +1,10 @@ +last-generated=2024-01-11 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +rat.y=[0e+00, 1e-02, 2e-02, 3e-02, 4e-02, 5e-02, 6e-02, 7.000000000000001e-02, 8e-02, 9e-02, 1e-01, 1.1e-01, 1.2e-01, 1.3e-01, 1.4e-01, 1.5e-01, 1.6e-01, 1.7e-01, 1.8e-01, 1.9e-01, 2e-01, 2.1e-01, 2.2e-01, 2.3e-01, 2.4e-01, 2.5e-01, 2.6e-01, 2.7e-01, 2.8e-01, 2.9e-01, 3e-01, 3.1e-01, 3.2e-01, 3.3e-01, 3.4e-01, 3.5e-01, 3.6e-01, 3.7e-01, 3.8e-01, 3.9e-01, 4e-01, 4.1e-01, 4.2e-01, 4.3e-01, 4.4e-01, 4.5e-01, 4.6e-01, 4.7e-01, 4.8e-01, 4.9e-01, 5e-01, 5.1e-01, 5.2e-01, 5.3e-01, 5.4e-01, 5.5e-01, 5.600000000000001e-01, 5.7e-01, 5.8e-01, 5.9e-01, 6e-01, 6.1e-01, 6.2e-01, 6.3e-01, 6.4e-01, 6.5e-01, 6.6e-01, 6.7e-01, 6.8e-01, 6.899999999999999e-01, 7e-01, 7.1e-01, 7.2e-01, 7.3e-01, 7.4e-01, 7.5e-01, 7.6e-01, 7.7e-01, 7.8e-01, 7.9e-01, 8e-01, 8.100000000000001e-01, 8.2e-01, 8.3e-01, 8.4e-01, 8.5e-01, 8.6e-01, 8.7e-01, 8.8e-01, 8.9e-01, 9e-01, 9.1e-01, 9.2e-01, 9.3e-01, 9.399999999999999e-01, 9.5e-01, 9.6e-01, 9.7e-01, 9.8e-01, 9.9e-01, 1e+00] +kCor.y=[1e+00, 1.001824855845277e+00, 1.003653049550822e+00, 1.005484581116634e+00, 1.007319569751896e+00, 1.009157776695535e+00, 1.010999322184803e+00, 1.012844324056907e+00, 1.014692664477251e+00, 1.016544341378294e+00, 1.018399357519137e+00, 1.020257830730692e+00, 1.022119641803935e+00, 1.023984909948068e+00, 1.025853514559877e+00, 1.027725576237815e+00, 1.029601097778395e+00, 1.031479954383386e+00, 1.033362268054364e+00, 1.035248041603153e+00, 1.037137269410296e+00, 1.039029957106299e+00, 1.040926099049784e+00, 1.042825578850179e+00, 1.044728637763539e+00, 1.046635150909424e+00, 1.04854512397014e+00, 1.050458548399153e+00, 1.052375554809729e+00, 1.054296018297162e+00, 1.056219933122127e+00, 1.05814742996006e+00, 1.060078383875063e+00, 1.062012908304274e+00, 1.063951014778782e+00, 1.065892578329863e+00, 1.067837712364172e+00, 1.069786428475256e+00, 1.071738601662842e+00, 1.07369435113622e+00, 1.075653790258772e+00, 1.077616692292152e+00, 1.079583170611395e+00, 1.081553338547909e+00, 1.083526969427083e+00, 1.08550429580148e+00, 1.087485192552453e+00, 1.089469790695503e+00, 1.091457965125055e+00, 1.093449709898781e+00, 1.095445156097412e+00, 1.097444178582091e+00, 1.099446896561566e+00, 1.101453190828254e+00, 1.103463287805413e+00, 1.105476973038675e+00, 1.107494353766577e+00, 1.109515310781152e+00, 1.111540082499942e+00, 1.113568549711966e+00, 1.115600581088839e+00, 1.117636439270135e+00, 1.11967599294623e+00, 1.12171924211769e+00, 1.123766305993805e+00, 1.125817065364717e+00, 1.127871507975334e+00, 1.129929777522251e+00, 1.131991742565529e+00, 1.134057403103902e+00, 1.136126997556475e+00, 1.138200287503859e+00, 1.140277379763675e+00, 1.142358179889765e+00, 1.144442913926957e+00, 1.146531343460083e+00, 1.148623587698433e+00, 1.150719765850159e+00, 1.152819639498387e+00, 1.154923434508609e+00, 1.157031056750569e+00, 1.159142493697879e+00, 1.161257745350158e+00, 1.163376930916084e+00, 1.165499931187659e+00, 1.167626852682958e+00, 1.169757601548264e+00, 1.171892284328368e+00, 1.174030781813127e+00, 1.17617333242112e+00, 1.178319697734621e+00, 1.180469984132013e+00, 1.182624098041803e+00, 1.18478226507227e+00, 1.186944366017549e+00, 1.189110400877452e+00, 1.191280369652026e+00, 1.193454378579523e+00, 1.195632215158255e+00, 1.197814104859084e+00, 1.200000047683716e+00] \ No newline at end of file diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_MassTransfer.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_MassTransfer.txt index a7fa45fe03b..5e4b819c144 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_MassTransfer.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_MassTransfer.txt @@ -1,11 +1,12 @@ -last-generated=2023-12-28 +last-generated=2024-01-11 statistics-simulation= { "linear": " ", "nonlinear": " ", + "number of continuous time states": "2", "numerical Jacobians": "0" } -time=[0e+00, 1e+00] -C_in.C=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -C_out.C=[0e+00, 7.000000372528947e-03, 1.400000074505789e-02, 2.100000018626383e-02, 2.800000149011579e-02, 3.499999962747056e-02, 4.200000037252978e-02, 4.899999850988389e-02, 5.600000298022758e-02, 6.299999850988654e-02, 6.999999925494306e-02, 7.699999999999955e-02, 8.400000074505606e-02, 9.100000149011257e-02, 9.799999701977044e-02, 1.04999992549446e-01, 1.120000059604485e-01, 1.190000014901175e-01, 1.259999970197731e-01, 1.330000029802216e-01, 1.399999985098972e-01, 1.470000044703191e-01, 1.539999999999947e-01, 1.609999955296703e-01, 1.680000014901321e-01, 1.749999970197678e-01, 1.820000029802607e-01, 1.88999988079119e-01, 1.959999940395409e-01, 2.030000000000249e-01, 2.099999850988921e-01, 2.169999910593139e-01, 2.24000011920897e-01, 2.309999970197287e-01, 2.380000029802216e-01, 2.450000089406701e-01, 2.519999940395994e-01, 2.590000000000213e-01, 2.660000059604432e-01, 2.73000011920865e-01, 2.799999970197944e-01, 2.870000029802162e-01, 2.940000089406381e-01, 3.009999940395675e-01, 3.079999999999893e-01, 3.150000059604112e-01, 3.219999910593406e-01, 3.289999970197624e-01, 3.360000029801843e-01, 3.429999880791137e-01, 3.499999940395355e-01, 3.569999999998579e-01, 3.640000059601803e-01, 3.710000119205026e-01, 3.779999761584619e-01, 3.849999821187842e-01, 3.919999880790569e-01, 3.989999940395355e-01, 4.06e-01, 4.130000059604644e-01, 4.199999701980329e-01, 4.269999761583552e-01, 4.339999821186776e-01, 4.410000178813224e-01, 4.480000238416448e-01, 4.550000298019671e-01, 4.619999940395356e-01, 4.69e-01, 4.760000059604645e-01, 4.830000119209431e-01, 4.900000178812158e-01, 4.970000238415381e-01, 5.039999880794973e-01, 5.109999642374974e-01, 5.180000000001421e-01, 5.249999761581421e-01, 5.320000119207868e-01, 5.389999880793552e-01, 5.460000238414316e-01, 5.529999582770684e-01, 5.599999940397132e-01, 5.669999701976635e-01, 5.740000059603578e-01, 5.809999821188552e-01, 5.880000178810026e-01, 5.950000119205737e-01, 6.019999880792842e-01, 6.090000238417869e-01, 6.159999999999289e-01, 6.230000357625737e-01, 6.300000119205738e-01, 6.370000059600737e-01, 6.439999821188552e-01, 6.510000178815001e-01, 6.579999940395497e-01, 6.650000298021447e-01, 6.720000059601448e-01, 6.790000000004263e-01, 6.859999761584263e-01, 6.930000119210711e-01, 6.99999988079071e-01] -masTra.eps=[1e+00, 9.929999707564718e-01, 9.860000011175885e-01, 9.789999718740608e-01, 9.72000002235177e-01, 9.649999742955168e-01, 9.580000033527655e-01, 9.509999754130923e-01, 9.440000044703564e-01, 9.369999791383583e-01, 9.30000008195632e-01, 9.229999776482609e-01, 9.160000067055345e-01, 9.089999761581634e-01, 9.020000104308101e-01, 8.949999850988122e-01, 8.880000089407127e-01, 8.809999836087147e-01, 8.740000178813615e-01, 8.669999821186172e-01, 8.60000016391264e-01, 8.529999806285198e-01, 8.460000149011665e-01, 8.389999895691685e-01, 8.320000134110691e-01, 8.24999988079071e-01, 8.180000119209716e-01, 8.109999970197198e-01, 8.040000208616204e-01, 7.969999850988762e-01, 7.900000298022691e-01, 7.829999940395249e-01, 7.760000178814254e-01, 7.690000029801736e-01, 7.620000268220741e-01, 7.549999910593299e-01, 7.480000357627229e-01, 7.409999999999787e-01, 7.340000238417371e-01, 7.26999988079135e-01, 7.20000032782528e-01, 7.129999970197838e-01, 7.059999612570396e-01, 6.990000059604325e-01, 6.919999701976882e-01, 6.849999940395888e-01, 6.779999791385857e-01, 6.710000029802375e-01, 6.639999672174933e-01, 6.570000119208863e-01, 6.499999761581421e-01, 6.430000000001421e-01, 6.359999642374974e-01, 6.289999880794973e-01, 6.219999940392158e-01, 6.150000178812157e-01, 6.079999821186207e-01, 6.010000059605711e-01, 5.939999701979263e-01, 5.869999940399263e-01, 5.799999999996448e-01, 5.730000238416447e-01, 5.65999988079e-01, 5.59000011921e-01, 5.519999761583553e-01, 5.450000000003552e-01, 5.380000059600737e-01, 5.310000298020737e-01, 5.239999940394289e-01, 5.170000178813793e-01, 5.099999821187843e-01, 5.030000059607842e-01, 4.960000119205026e-01, 4.890000059601803e-01, 4.819999999998579e-01, 4.749999940395355e-01, 4.679999880792132e-01, 4.609999821188908e-01, 4.539999761585684e-01, 4.470000119206092e-01, 4.400000059602868e-01, 4.330000000000142e-01, 4.259999940396421e-01, 4.189999880793198e-01, 4.119999821189974e-01, 4.050000178810382e-01, 3.980000119207158e-01, 3.910000059603934e-01, 3.840000000000711e-01, 3.769999940397487e-01, 3.699999880794263e-01, 3.630000238414671e-01, 3.560000178811447e-01, 3.490000119208224e-01, 3.420000059604503e-01, 3.350000000001777e-01, 3.279999940395356e-01, 3.210000298018961e-01, 3.140000238415737e-01, 3.070000178812513e-01, 3.00000011920929e-01] +time=[0e+00, 3e+01] +C_in.C=[0e+00, 2.591803280896766e-01, 4.511871501062317e-01, 5.934327934896777e-01, 6.988113970561151e-01, 7.768788933753967e-01, 8.347108440604545e-01, 8.775540703640217e-01, 9.092924505717674e-01, 9.328040447588124e-01, 9.502216577529907e-01, 9.631246345423029e-01, 9.726842667125689e-01, 9.797661284581582e-01, 9.850102094735003e-01, 9.888943433761597e-01, 9.917724116366002e-01, 9.939044123572108e-01, 9.954845900866375e-01, 9.966545707217122e-01, 9.975214004516602e-01, 9.981635805337065e-01, 9.986393452949757e-01, 9.989920257531062e-01, 9.992535711719853e-01, 9.994474053382874e-01, 9.995908736375446e-01, 9.996970294712364e-01, 9.997756482000563e-01, 9.998338818857062e-01, 9.998769760131836e-01, 9.999089240847829e-01, 9.999325275155875e-01, 9.999500513262469e-01, 9.999629855226051e-01, 9.999726414680481e-01, 9.999797344167973e-01, 9.99985039228477e-01, 9.99988973144885e-01, 9.999918341651816e-01, 9.999939799308777e-01, 9.999955296506945e-01, 9.999966621383768e-01, 9.999974966060563e-01, 9.999981522563909e-01, 9.999986886978149e-01, 9.999990463254941e-01, 9.999994635578181e-01, 9.999998211864446e-01, 1e+00, 1.00000011920929e+00, 1.000000238418579e+00, 1.000000238418579e+00, 1.00000011920929e+00, 1.00000011920929e+00, 1.00000011920929e+00, 1e+00, 1e+00, 9.999999403953552e-01, 9.999998807907104e-01, 9.999997615814209e-01, 9.999997019760182e-01, 9.999996423721313e-01, 9.999995827674866e-01, 9.999996423721313e-01, 9.999997019767761e-01, 9.999997019767761e-01, 9.999997019767761e-01, 9.999997615814209e-01, 9.999998211860657e-01, 9.999998211860657e-01, 9.999998807907104e-01, 9.999999403953552e-01, 9.999999403953552e-01, 9.999999403953552e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +C_out.C=[0e+00, 2.591803392655445e-02, 4.511871426556511e-02, 5.934327562368013e-02, 6.988113970561269e-02, 7.768788933753967e-02, 8.347108291592933e-02, 8.775540554628368e-02, 9.092924654728576e-02, 9.328040447588243e-02, 9.502216428518295e-02, 9.631246345422911e-02, 9.726842518114077e-02, 9.797660986559069e-02, 9.850101945723864e-02, 9.888943284749985e-02, 9.917724116366002e-02, 9.956052945525846e-02, 1.020086918436637e-01, 1.065469493909452e-01, 1.126299500465393e-01, 1.198575224782044e-01, 1.279332664749382e-01, 1.366362245363482e-01, 1.458036363218164e-01, 1.553159058094025e-01, 1.650847580964753e-01, 1.750437489867467e-01, 1.851432452733894e-01, 1.953465854744554e-01, 2.056268751621246e-01, 2.159641617258962e-01, 2.26343693034283e-01, 2.367545349844914e-01, 2.471884704478394e-01, 2.576394975185394e-01, 2.681031458583231e-01, 2.78576092512081e-01, 2.890561654355884e-01, 2.995415098589649e-01, 3.100307583808899e-01, 3.205228977247706e-01, 3.310170338219777e-01, 3.415126934004524e-01, 3.520093328934031e-01, 3.62506777048111e-01, 3.730047576441481e-01, 3.835027382399958e-01, 3.940010502317945e-01, 4.044999248976928e-01, 4.149994254112244e-01, 4.254989855291165e-01, 4.359989628789536e-01, 4.464991524221787e-01, 4.569993646144565e-01, 4.674996137619019e-01, 4.779998927112908e-01, 4.88499985694635e-01, 4.990002646454413e-01, 5.095007152549491e-01, 5.200011730194092e-01, 5.305016307831114e-01, 5.410019025798217e-01, 5.515020623207698e-01, 5.620019168861036e-01, 5.725016593933105e-01, 5.830015807144519e-01, 5.935013756755197e-01, 6.040012373921073e-01, 6.145009727492882e-01, 6.250007748603821e-01, 6.355005769722337e-01, 6.460003719333016e-01, 6.565002932549129e-01, 6.670001478202466e-01, 6.775000691413879e-01, 6.879999904625292e-01, 6.984999046325078e-01, 7.089999451637875e-01, 7.19499859333766e-01, 7.29999840259552e-01, 7.404998807899829e-01, 7.509997949599613e-01, 7.61499835491241e-01, 7.713453544187366e-01, 7.787787914276123e-01, 7.842784044292244e-01, 7.883510543836461e-01, 7.913678320409853e-01, 7.936052629714079e-01, 7.952654361724854e-01, 7.964963939027873e-01, 7.974072684557905e-01, 7.980807430716053e-01, 7.985789764654281e-01, 7.989479303359985e-01, 7.992212182105675e-01, 7.994235155692857e-01, 7.99573302427387e-01, 7.99684107054272e-01, 7.997661232948303e-01] +masTra.eps=[8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.964999880790824e-01, 8.85999980926597e-01, 8.755000166891869e-01, 8.650000095367432e-01, 8.545000023841101e-01, 8.439999785423392e-01, 8.33500030994404e-01, 8.230000071526332e-01, 8.125e-01, 8.019999928473668e-01, 7.914999856951126e-01, 7.810000047685232e-01, 7.704999976158901e-01, 7.599999904632568e-01, 7.494999833108131e-01, 7.390000357626353e-01, 7.2849999523178e-01, 7.179999880791468e-01, 7.074999809265137e-01, 6.970000333785253e-01, 6.865000262258921e-01, 6.759999856950368e-01, 6.654999785424036e-01, 6.549999713897705e-01, 6.445000238417822e-01, 6.34000016689149e-01, 6.234999761582937e-01, 6.129999690056606e-01, 6.025000214576721e-01, 5.920000143050389e-01, 5.815000071524058e-01, 5.709999666215505e-01, 5.605000190733727e-01, 5.50000011920929e-01, 5.395000047682957e-01, 5.289999976156626e-01, 5.184999570848073e-01, 5.080000429146165e-01, 4.975000023841858e-01, 4.869999618537549e-01, 4.765000178814541e-01, 4.659999773501744e-01, 4.555000333778735e-01, 4.449999928474426e-01, 4.344999821189552e-01, 4.240000083447109e-01, 4.134999976155642e-01, 4.030000238411304e-01, 3.925000131130219e-01, 3.819999725825909e-01, 3.714999988081572e-01, 3.609999880790103e-01, 3.505000143047661e-01, 3.400000035762787e-01, 3.294999630458479e-01, 3.19000019073547e-01, 3.084999785422673e-01, 2.980000345699664e-01, 2.874999940395355e-01, 2.769999833110481e-01, 2.665000095368038e-01, 2.559999988076569e-01, 2.455000250334126e-01, 2.349999994039536e-01, 2.244999737744944e-01, 2.140000149013166e-01, 2.034999892710086e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_PressureDropWithVaryingFlowCoefficient.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_PressureDropWithVaryingFlowCoefficient.txt new file mode 100644 index 00000000000..0d3b3f03c40 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_PressureDropWithVaryingFlowCoefficient.txt @@ -0,0 +1,13 @@ +last-generated=2024-01-11 +statistics-simulation= +{ + "linear": " ", + "nonlinear": "0", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +resFixed.m_flow=[-2.000000029802322e-01, -1.979898958946231e-01, -1.959591805021437e-01, -1.939072011516565e-01, -1.918332574885402e-01, -1.897366644520932e-01, -1.876166311024133e-01, -1.854723692582306e-01, -1.833030279544347e-01, -1.811077006599772e-01, -1.788854453315187e-01, -1.766352205117044e-01, -1.743559533156626e-01, -1.720465112551915e-01, -1.697056294890468e-01, -1.673320099037958e-01, -1.649242183820423e-01, -1.624807719811363e-01, -1.599999982090629e-01, -1.574801498546433e-01, -1.549193419747568e-01, -1.523154658712195e-01, -1.49666294136362e-01, -1.469693791280017e-01, -1.442220494145431e-01, -1.414213627576828e-01, -1.385640623400149e-01, -1.356465997078498e-01, -1.326649937639523e-01, -1.296148125345321e-01, -1.264911033563857e-01, -1.232882820334267e-01, -1.199999949269616e-01, -1.166190400862151e-01, -1.13137082525932e-01, -1.09544505975423e-01, -1.058300563925127e-01, -1.019803900276839e-01, -9.797958834188632e-02, -9.38083095666595e-02, -8.944272515175461e-02, -8.485281297903036e-02, -7.999999161387633e-02, -7.483315102402641e-02, -6.928203116120561e-02, -6.324554218165301e-02, -5.649876082379961e-02, -4.748456791606166e-02, -3.469959892482991e-02, -1.838472658598184e-02, 0e+00, 1.838472658573401e-02, 3.469964244690851e-02, 4.748459906110715e-02, 5.649873818139389e-02, 6.324554218176653e-02, 6.928203116118495e-02, 7.483315102396981e-02, 8.000000650484644e-02, 8.485282696927646e-02, 8.944271178323525e-02, 9.380830956675082e-02, 9.797958834191545e-02, 1.019803900276561e-01, 1.058300563924324e-01, 1.095445168360728e-01, 1.131370719642118e-01, 1.166190298603946e-01, 1.199999949269973e-01, 1.232882820334382e-01, 1.264911033563297e-01, 1.296148217220524e-01, 1.326649847593913e-01, 1.356465909143014e-01, 1.38564062340056e-01, 1.414213627576828e-01, 1.442220535451335e-01, 1.469693831760115e-01, 1.496663020881202e-01, 1.523154619512251e-01, 1.549193381234691e-01, 1.574801498546343e-01, 1.599999982090363e-01, 1.624807756439156e-01, 1.649242256020242e-01, 1.673320027736878e-01, 1.69705625972313e-01, 1.72046511255208e-01, 1.743559550243205e-01, 1.766352238820822e-01, 1.78885450323103e-01, 1.811076940717116e-01, 1.833030246988776e-01, 1.854723676496923e-01, 1.876166318964068e-01, 1.897366668055015e-01, 1.918332621444801e-01, 1.939071953819967e-01, 1.959591766960876e-01, 1.979898940111624e-01, 2.000000029802322e-01] +resVarying.port_a.m_flow=[-2.000000029802322e-01, -1.979898958946231e-01, -1.959591805021437e-01, -1.939072011516565e-01, -1.918332574885402e-01, -1.897366644520932e-01, -1.876166311024133e-01, -1.854723692582306e-01, -1.833030279544347e-01, -1.811077006599772e-01, -1.788854453315187e-01, -1.766352205117044e-01, -1.743559533156626e-01, -1.720465112551915e-01, -1.697056294890468e-01, -1.673320099037958e-01, -1.649242183820423e-01, -1.624807719811363e-01, -1.599999982090629e-01, -1.574801498546433e-01, -1.549193419747568e-01, -1.523154658712195e-01, -1.49666294136362e-01, -1.469693791280017e-01, -1.442220494145431e-01, -1.414213627576828e-01, -1.385640623400149e-01, -1.356465997078498e-01, -1.326649937639523e-01, -1.296148125345321e-01, -1.264911033563857e-01, -1.232882820334267e-01, -1.199999949269616e-01, -1.166190400862151e-01, -1.13137082525932e-01, -1.09544505975423e-01, -1.058300563925127e-01, -1.019803900276839e-01, -9.797958834188632e-02, -9.38083095666595e-02, -8.944272515175461e-02, -8.485281297903036e-02, -7.999999161387633e-02, -7.483315102402641e-02, -6.928203116120561e-02, -6.324554218165301e-02, -5.649876082379961e-02, -4.748456791606166e-02, -3.469959892482991e-02, -1.838472658598184e-02, 0e+00, 9.328871433143119e-03, 1.838472669582187e-02, 2.691360276525823e-02, 3.469959911413636e-02, 4.15841002789629e-02, 4.748456793967205e-02, 5.241376103124395e-02, 5.649876091157317e-02, 6.000000735274495e-02, 6.324554222064585e-02, 6.633249236978374e-02, 6.928203116711482e-02, 7.211102677004434e-02, 7.483315103734557e-02, 7.745967673870797e-02, 7.999999163483316e-02, 8.246210556573119e-02, 8.485281298381174e-02, 8.717797751144819e-02, 8.944272515826529e-02, 9.165151884385822e-02, 9.380830958081933e-02, 9.591662485186343e-02, 9.797958834601876e-02, 1.000000014901161e-01, 1.019803900312265e-01, 1.039230487627042e-01, 1.058300564019713e-01, 1.077032943388475e-01, 1.095445059791192e-01, 1.113552893879406e-01, 1.131370825278849e-01, 1.148912563125648e-01, 1.16619040092694e-01, 1.183215935404157e-01, 1.199999949303545e-01, 1.216552473205672e-01, 1.232882820344277e-01, 1.248999633420031e-01, 1.264911033611258e-01, 1.280624825477849e-01, 1.296148125376792e-01, 1.311487693595311e-01, 1.326649937643662e-01, 1.341640817988489e-01, 1.356465997112399e-01, 1.371130901521266e-01, 1.385640623428981e-01, 1.399999992322538e-01, 1.414213627576828e-01] +resFixed.k=[6.324554979801178e-02, 6.324554979801178e-02] +resVarying.k=[6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02] +kCor.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00] \ No newline at end of file diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_Empirical.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_Empirical.txt new file mode 100644 index 00000000000..4dc35d1d075 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_Empirical.txt @@ -0,0 +1,14 @@ +last-generated=2024-01-11 +statistics-simulation= +{ + "linear": " ", + "nonlinear": "0", + "number of continuous time states": "3", + "numerical Jacobians": "0" +} +time=[0e+00, 5e+01] +C_in.C=[0e+00, 3.927775621414185e-01, 6.304492950439453e-01, 7.745949625968933e-01, 8.622074723243713e-01, 9.155803322792053e-01, 9.481724500656128e-01, 9.681046009063721e-01, 9.803336262702942e-01, 9.878488183021545e-01, 9.924752116203308e-01, 9.953334331512451e-01, 9.970952272415161e-01, 9.981944561004639e-01, 9.988678097724915e-01, 9.992950558662415e-01, 9.995574951171875e-01, 9.997221231460571e-01, 9.998252391815186e-01, 9.998899698257446e-01, 9.999304413795471e-01, 9.99955952167511e-01, 9.999721050262451e-01, 9.999822974205017e-01, 9.999887943267822e-01, 9.999929070472717e-01, 9.999955296516418e-01, 9.999971389770508e-01, 9.999982118606567e-01, 9.999988675117493e-01, 9.999992847442627e-01, 9.999995231628418e-01, 9.999997019767761e-01, 9.999998211860657e-01, 9.999998807907104e-01, 9.999999403953552e-01, 9.999999403953552e-01, 1e+00, 1e+00, 1e+00, 1e+00, 9.990199208259583e-01, 9.965596199035645e-01, 9.931674003601074e-01, 9.891873002052307e-01, 9.848339557647705e-01, 9.802436828613281e-01, 9.755038022994995e-01, 9.706692695617676e-01, 9.657739996910095e-01, 9.608402848243713e-01, 9.558824896812439e-01, 9.509093165397644e-01, 9.459261894226074e-01, 9.409367442131042e-01, 9.359433054924011e-01, 9.30947482585907e-01, 9.259502291679382e-01, 9.209520816802979e-01, 9.159532189369202e-01, 9.109539985656738e-01, 9.05587911605835e-01, 9.003822803497314e-01, 8.952734470367432e-01, 8.9022296667099e-01, 8.852078318595886e-01, 8.802139759063721e-01, 8.752330541610718e-01, 8.702598810195923e-01, 8.652913570404053e-01, 8.603256344795227e-01, 8.553614616394043e-01, 8.503982424736023e-01, 8.454354405403137e-01, 8.404728770256042e-01, 8.355103731155396e-01, 8.305478096008301e-01, 8.255850672721863e-01, 8.206222057342529e-01, 8.156591653823853e-01, 8.106958866119385e-01, 8.057324290275574e-01, 8.007687926292419e-01, 7.958053350448608e-01, 7.90843665599823e-01, 7.858802676200867e-01, 7.809096574783325e-01, 7.759286165237427e-01, 7.70938515663147e-01, 7.659443616867065e-01, 7.609480619430542e-01, 7.55950391292572e-01, 7.50951886177063e-01, 7.45952844619751e-01, 7.409534454345703e-01, 7.359538078308105e-01, 7.309540510177612e-01, 7.259541749954224e-01, 7.209542989730835e-01, 7.159543633460999e-01, 7.109543681144714e-01] +C_out.C=[0e+00, 1.408941857516766e-02, 3.399187326431274e-02, 5.72541318833828e-02, 8.240439742803574e-02, 1.085584610700607e-01, 1.351840198040009e-01, 1.61966010928154e-01, 1.88705787062645e-01, 2.152918130159378e-01, 2.41661012172699e-01, 2.677615284919739e-01, 2.93597012758255e-01, 3.191121816635132e-01, 3.443658649921418e-01, 3.692891299724579e-01, 3.939225673675537e-01, 4.182553589344025e-01, 4.422971308231354e-01, 4.660653173923492e-01, 4.904727339744568e-01, 5.142959952354431e-01, 5.329899191856384e-01, 5.442420840263367e-01, 5.506784319877625e-01, 5.547605156898499e-01, 5.573458671569824e-01, 5.58984637260437e-01, 5.600231885910034e-01, 5.606819987297058e-01, 5.6110018491745e-01, 5.613648891448975e-01, 5.615327954292297e-01, 5.616394281387329e-01, 5.617067813873291e-01, 5.617491602897644e-01, 5.617759227752686e-01, 5.617929697036743e-01, 5.618038773536682e-01, 5.618109703063965e-01, 5.618153810501099e-01, 5.612671971321106e-01, 5.598864555358887e-01, 5.579816102981567e-01, 5.557460784912109e-01, 5.53300678730011e-01, 5.507220029830933e-01, 5.480591654777527e-01, 5.453431606292725e-01, 5.425929427146912e-01, 5.398210883140564e-01, 5.370357036590576e-01, 5.342416763305664e-01, 5.314421057701111e-01, 5.286388993263245e-01, 5.258334875106812e-01, 5.23026704788208e-01, 5.202191472053528e-01, 5.174111127853394e-01, 5.146026015281677e-01, 5.117939710617065e-01, 3.22805255651474e-01, 2.174559980630875e-01, 1.62314236164093e-01, 1.372750103473663e-01, 1.302445083856583e-01, 1.339020729064941e-01, 1.438322365283966e-01, 1.573605835437775e-01, 1.728708148002625e-01, 1.893791258335114e-01, 2.062887102365494e-01, 2.232441306114197e-01, 2.400308549404144e-01, 2.565203011035919e-01, 2.72638738155365e-01, 2.883451581001282e-01, 3.036181032657623e-01, 3.184458911418915e-01, 3.328239917755127e-01, 3.467555344104767e-01, 3.602470457553864e-01, 3.733063936233521e-01, 3.86130154132843e-01, 3.992938101291656e-01, 4.114479124546051e-01, 4.205203652381897e-01, 4.253678023815155e-01, 4.266061782836914e-01, 4.261919856071472e-01, 4.248991310596466e-01, 4.23051655292511e-01, 4.208511710166931e-01, 4.184277951717377e-01, 4.158640801906586e-01, 4.132104218006134e-01, 4.10499095916748e-01, 4.077515304088593e-01, 4.049813151359558e-01, 4.02196854352951e-01, 3.994037210941315e-01] +fil.eps=[9.800000190734863e-01, 9.550567865371704e-01, 9.302265048027039e-01, 9.055081605911255e-01, 8.809006810188293e-01, 8.56403112411499e-01, 8.320145010948181e-01, 8.077337741851807e-01, 7.835601568222046e-01, 7.594925761222839e-01, 7.355301380157471e-01, 7.116719484329224e-01, 6.879170536994934e-01, 6.642646193504333e-01, 6.407137513160706e-01, 6.172635555267334e-01, 5.939132571220398e-01, 5.706619024276733e-01, 5.475086569786072e-01, 5.240578055381775e-01, 4.972604513168335e-01, 4.793534576892853e-01, 4.759936332702637e-01, 4.798731207847595e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 9.576082825660706e-01, 9.354315400123596e-01, 9.134676456451416e-01, 8.917143940925598e-01, 8.701695203781128e-01, 8.488309979438782e-01, 8.276968002319336e-01, 8.067647814750671e-01, 7.86033034324646e-01, 7.654995918273926e-01, 7.451624274253845e-01, 7.250197529792786e-01, 7.050696611404419e-01, 6.853103041648865e-01, 6.65739893913269e-01, 6.463567614555359e-01, 6.27159059047699e-01, 6.081451177597046e-01, 5.89313268661499e-01, 5.706619024276733e-01, 5.521892905235291e-01, 5.338940024375916e-01, 5.138107538223267e-01, 4.934934973716736e-01, 4.800394177436829e-01, 4.756554365158081e-01, 4.778833091259003e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01] +fil.triRep=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +C_inflow.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.950000047683716e-01, 9.900000095367432e-01, 9.850000143051147e-01, 9.800000190734863e-01, 9.750000238418579e-01, 9.700000286102295e-01, 9.649999737739563e-01, 9.599999785423279e-01, 9.549999833106995e-01, 9.49999988079071e-01, 9.449999928474426e-01, 9.399999976158142e-01, 9.350000023841858e-01, 9.300000071525574e-01, 9.25000011920929e-01, 9.200000166893005e-01, 9.150000214576721e-01, 9.100000262260437e-01, 9.049999713897705e-01, 8.999999761581421e-01, 8.949999809265137e-01, 8.899999856948853e-01, 8.849999904632568e-01, 8.799999952316284e-01, 8.75e-01, 8.700000047683716e-01, 8.650000095367432e-01, 8.600000143051147e-01, 8.550000190734863e-01, 8.500000238418579e-01, 8.450000286102295e-01, 8.399999737739563e-01, 8.349999785423279e-01, 8.299999833106995e-01, 8.24999988079071e-01, 8.199999928474426e-01, 8.149999976158142e-01, 8.100000023841858e-01, 8.050000071525574e-01, 8.00000011920929e-01, 7.950000166893005e-01, 7.900000214576721e-01, 7.850000262260437e-01, 7.799999713897705e-01, 7.749999761581421e-01, 7.699999809265137e-01, 7.649999856948853e-01, 7.599999904632568e-01, 7.549999952316284e-01, 7.5e-01, 7.450000047683716e-01, 7.400000095367432e-01, 7.350000143051147e-01, 7.300000190734863e-01, 7.250000238418579e-01, 7.200000286102295e-01, 7.149999737739563e-01, 7.099999785423279e-01, 7.049999833106995e-01, 6.99999988079071e-01] diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mos new file mode 100644 index 00000000000..4928114a36a --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mos @@ -0,0 +1,3 @@ +simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.FiltrationEfficiency",tolerance=1e-06, method="CVode", resultFile="SimpleCharacterization"); +createPlot(id=1, position={26, 26, 824, 615}, y={"mCon.y"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={26, 26, 824, 615}, y={"eps.y"}, range={0.0, 1.0, 0.8500000000000001, 1.05}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mos new file mode 100644 index 00000000000..8b21d74c63b --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mos @@ -0,0 +1,3 @@ +simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.FlowCoefficientCorrection",tolerance=1e-06, method="CVode", resultFile="SimpleCharacterization"); +createPlot(id=1, position={26, 26, 824, 615}, y={"rat.y"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={26, 26, 824, 615}, y={"kCor.y"}, range={0.0, 1.0, 0.8500000000000001, 1.05}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassTransfer.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassTransfer.mos index 98ccef08f20..d3f560c46d6 100644 --- a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassTransfer.mos +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassTransfer.mos @@ -1,3 +1,3 @@ -simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.MassTransfer", tolerance=1e-06, method="CVode", resultFile="MassTransfer"); +simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.MassTransfer", stopTime=30, tolerance=1e-06, method="CVode", resultFile="MassTransfer"); createPlot(id=1, position={49, 30, 734, 454}, y={"C_in.C", "C_out.C"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); createPlot(id=1, position={49, 30, 734, 454}, y={"masTra.eps"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mos similarity index 80% rename from Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mos rename to Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mos index d217f67a2b3..e1f92084794 100644 --- a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/PressureDropInputFlowCoefficient.mos +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mos @@ -1,5 +1,4 @@ -simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.PressureDropInputFlowCoefficient", tolerance=1e-06, method="CVode", resultFile="PressureDropInputFlowCoefficient"); +simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.PressureDropWithVaryingFlowCoefficient", tolerance=1e-06, method="CVode", resultFile="PressureDropInputFlowCoefficient"); createPlot(id=1, position={13, 36, 845, 624}, y={"resFixed.m_flow", "resVarying.port_a.m_flow"}, range={0.0, 1.0, -0.4, 0.4}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"kg/s", "kg/s"}); createPlot(id=1, position={13, 36, 845, 624}, y={"resFixed.k", "resVarying.k"}, range={0.0, 1.0, 0.04, 0.065}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); -createPlot(id=1, position={13, 36, 845, 624}, y={"kCor.y"}, range={0.0, 1.0, 0.5, 2.5}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); - +createPlot(id=1, position={13, 36, 845, 624}, y={"kCor.y"}, range={0.0, 1.0, 0.5, 2.5}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mos deleted file mode 100644 index cffd158fcef..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/SimpleCharacterization.mos +++ /dev/null @@ -1,5 +0,0 @@ -simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.SimpleCharacterization",tolerance=1e-06, method="CVode", resultFile="SimpleCharacterization"); -createPlot(id=1, position={26, 26, 824, 615}, y={"mCon.y"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={26, 26, 824, 615}, y={"simCha.eps"}, range={0.0, 1.0, 0.8500000000000001, 1.05}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={26, 26, 824, 615}, y={"simCha.kCor"}, range={0.0, 1.0, 0.9, 1.3}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); - diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos new file mode 100644 index 00000000000..553f8159f5f --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos @@ -0,0 +1,5 @@ +simulateModel("Buildings.Fluid.AirFilters.Examples.Empirical", stopTime=50, method="Cvode", tolerance=1e-06, resultFile="Generic"); +createPlot(id=1, position={35, -11, 642, 588}, y={"C_in.C", "C_out.C"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={35, -11, 642, 588}, y={"fil.eps"}, range={0.0, 1.0, 0.9, 1.0}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={35, -11, 642, 588}, y={"fil.triRep"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={35, -11, 642, 588}, y={"C_inflow.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s"); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Generic.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Generic.mos deleted file mode 100644 index 9ff6841b4c4..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Generic.mos +++ /dev/null @@ -1,6 +0,0 @@ -simulateModel("Buildings.Fluid.AirFilters.Examples.Generic", method="Cvode", tolerance=1e-06, resultFile="Generic"); -createPlot(id=1, position={35, -11, 642, 588}, y={"C_in.C", "C_out.C"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); -createPlot(id=1, position={35, -11, 642, 588}, y={"filter.simCha.eps"}, range={0.0, 1.0, 0.9, 1.0}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={35, -11, 642, 588}, y={"filter.triRep"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={35, -11, 642, 588}, y={"mCon_flow.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s"); - diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.SimpleCharacterization.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.FiltrationEfficiency.mos similarity index 51% rename from Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.SimpleCharacterization.mos rename to Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.FiltrationEfficiency.mos index 29af9d5c7b5..3305e6bea63 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.SimpleCharacterization.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.FiltrationEfficiency.mos @@ -1,6 +1,5 @@ compareVars := { "mCon.y", - "simCha.eps", - "simCha.kCor" + "eps.y" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.FlowCoefficientCorrection.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.FlowCoefficientCorrection.mos new file mode 100644 index 00000000000..4e2f3a6a9b2 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.FlowCoefficientCorrection.mos @@ -0,0 +1,5 @@ +compareVars := + { + "rat.y", + "kCor.y" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.PressureDropInputFlowCoefficient.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.PressureDropWithVaryingFlowCoefficient.mos similarity index 100% rename from Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.PressureDropInputFlowCoefficient.mos rename to Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.PressureDropWithVaryingFlowCoefficient.mos diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Empirical.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Empirical.mos new file mode 100644 index 00000000000..74a66a52081 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Empirical.mos @@ -0,0 +1,8 @@ +compareVars := + { + "C_in.C", + "C_out.C", + "fil.eps", + "fil.triRep", + "C_inflow.y" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Generic.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Generic.mos deleted file mode 100644 index b0f59ca030f..00000000000 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Generic.mos +++ /dev/null @@ -1,8 +0,0 @@ -compareVars := - { - "C_in.C", - "C_out.C", - "filter.simCha.eps", - "filter.triRep", - "mCon_flow.y" - }; From 763d5d29a67773d9898fd617881257caf6f91546 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Sun, 14 Jan 2024 09:13:37 -0500 Subject: [PATCH 08/47] model doc update --- .../BaseClasses/FiltrationEfficiency.mo | 6 ++++-- .../BaseClasses/FlowCoefficientCorrection.mo | 4 ++-- .../Fluid/AirFilters/BaseClasses/MassTransfer.mo | 10 +++++----- .../PressureDropWithVaryingFlowCoefficient.mo | 8 ++++---- .../Validation/FiltrationEfficiency.mo | 6 +++--- .../Validation/FlowCoefficientCorrection.mo | 2 +- .../BaseClasses/Validation/MassAccumulation.mo | 6 +++--- .../BaseClasses/Validation/MassTransfer.mo | 6 ++++-- .../PressureDropWithVaryingFlowCoefficient.mo | 3 ++- .../AirFilters/BaseClasses/Validation/package.mo | 7 +++++++ Buildings/Fluid/AirFilters/Empirical.mo | 15 +++++++-------- Buildings/Fluid/AirFilters/Examples/Empirical.mo | 7 +++++-- 12 files changed, 47 insertions(+), 33 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo index 3303c114f09..5800d7bc244 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo @@ -3,12 +3,12 @@ model FiltrationEfficiency "Component that calculates the filtration efficiency" parameter Real mCon_nominal( final unit="kg") - "Maximum mass of the contaminant captured by the filter"; + "Maximum mass of the contaminant can be captured by the filter"; parameter Real epsFun[:] "Filtration efficiency curve"; Modelica.Blocks.Interfaces.RealInput mCon( final unit="kg") - "Mass of the contaminant captured by the filter" + "Mass of the contaminant captured by the filter" annotation (Placement( transformation( extent={{20,-20},{-20,20}}, @@ -68,6 +68,8 @@ eps = epsFun1 + epsFun2rat + epsFun3 rat2<

        where the coefficients epsFuni are declared by the parameter epsFun; +

        +

        rat is the relative mass of the contaminant captured by the filter and is calculated by

        diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo index 8198a5fb685..8b555678984 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo @@ -2,8 +2,8 @@ within Buildings.Fluid.AirFilters.BaseClasses; model FlowCoefficientCorrection "Component that calculates the flow coefficient correction factor" parameter Real b( - final min = 1 + 1E-3) - "resistance coefficient"; + final min = 1 + 1E-3) + "Resistance coefficient"; Modelica.Blocks.Interfaces.RealInput rat( final unit="1", final min=0, diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo index 54f15195795..744d3c38c19 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -3,8 +3,8 @@ model MassTransfer "Component that sets the trace substance at port_b based on an input trace substance mass flow rate and an input mass transfer efficiency" extends Buildings.Fluid.Interfaces.PartialTwoPortInterface; - Modelica.Blocks.Interfaces.RealInput m_flow_in[Medium.nC] - "Input trace substance rate" annotation (Placement(transformation( + Modelica.Blocks.Interfaces.RealInput C_inflow[Medium.nC] + "Input trace substance rate" annotation (Placement(transformation( extent={{-20,-20},{20,20}}, rotation=270, origin={0,120}), iconTransformation( @@ -25,7 +25,7 @@ model MassTransfer origin={-120,60}))); equation if allowFlowReversal then - port_b.C_outflow = inStream(port_a.C_outflow) - eps * m_flow_in; + port_b.C_outflow =inStream(port_a.C_outflow) - eps*C_inflow; port_a.C_outflow = inStream(port_a.C_outflow); else port_b.C_outflow = inStream(port_a.C_outflow); @@ -56,11 +56,11 @@ This model sets the trace substance of the medium that leaves port_b by

        -  port_b.C_outflow = inStream(port_a.C_outflow) - eps * m_flow_in;
        +  port_b.C_outflow = inStream(port_a.C_outflow) - eps * C_inflow;
         

        where eps is an input mass transfer efficiency and -m_flow_in is an input trace substance mass flow rate. +C_inflow is an input trace substance rate.

        This model has no pressure drop. diff --git a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo index 7759fe57ff9..978c6e59488 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo @@ -5,16 +5,16 @@ model PressureDropWithVaryingFlowCoefficient final m_flow_turbulent = if computeFlowResistance then deltaM * m_flow_nominal_pos else 0); parameter Real deltaM(min=1E-6) = 0.3 - "fraction of nominal mass flow rate where transition to turbulent occurs" - annotation(Evaluate=true, + "Fraction of nominal mass flow rate where transition to turbulent occurs" + annotation(Evaluate=true, Dialog(group = "Transition to laminar", enable = not linearized)); Real k - "flow coefficient, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2)"; + "Flow coefficient, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2)"; Modelica.Blocks.Interfaces.RealInput kCor( final unit = "1", final min = 1) - "flow coefficient" + "Flow coefficient" annotation (Placement(transformation( extent={{-20,-20},{20,20}}, rotation=270, diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo index b584a672dc5..47d3251ed90 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo @@ -1,8 +1,8 @@ within Buildings.Fluid.AirFilters.BaseClasses.Validation; model FiltrationEfficiency - "Validation model for the calculation of the filter efficiency and the flow coefficient correction factor" + "Validation model for the calculation of the filtration efficiency" extends Modelica.Icons.Example; - Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency eps( + Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency eps( mCon_nominal=1, epsFun={0.98,-0.1}) "Filtration efficiency" @@ -22,7 +22,7 @@ __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirF Documentation(info="

        The input mass of the contaminant captured by the filter mCon -changes from 0 to 1.2 from 0 to 1 second. +changes from 0 to 1.2kg/s from 0 to 1 second.

        The filtration efficiency, eps.y, changes from 0.98 to 0.88 during the period from diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo index f13f9f83c1b..f6926445397 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo @@ -1,6 +1,6 @@ within Buildings.Fluid.AirFilters.BaseClasses.Validation; model FlowCoefficientCorrection - "Validation model for the calculation of the filter efficiency and the flow coefficient correction factor" + "Validation model for the calculation of the flow coefficient correction factor" extends Modelica.Icons.Example; Modelica.Blocks.Sources.Ramp rat( duration=1, diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo index 73dd0d49495..d5cf0553263 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo @@ -35,13 +35,13 @@ First implementation. ", info="

        The input contaminant mass flow rate mCon_flow changes -from 0 to 1.2 during the period from 0 to 1 second; +from 0 to 1.2kg/s during the period from 0 to 1 second; The filter replacement signal changes from false to true at 0.5 seconds.

        -The contaminant mass masAcc.mCon increases from 0 to 0.15 +The contaminant mass masAcc.mCon increases from 0 to 0.15kg/s during the period from 0 to 0.5 seconds; -It drops to 0 at 0.5 seconds and keeps increasing again after that. +It drops to 0kg at 0.5 seconds and keeps increasing again after that.

        ")); end MassAccumulation; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo index 1ea6352bc3c..87df5883d74 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo @@ -45,7 +45,7 @@ equation connect(eps.y, masTra.eps) annotation (Line(points={{-39,50},{-24,50},{-24,6}, {6,6}}, color={0,0,127})); - connect(traceSubstancesFlow.y, masTra.m_flow_in[1]) + connect(traceSubstancesFlow.y, masTra.C_inflow[1]) annotation (Line(points={{1,60},{18,60},{18,12}}, color={0,0,127})); connect(C_out.port_b, sin.ports[1]) annotation (Line(points={{60,0},{76,0}}, color={0,127,255})); @@ -61,11 +61,13 @@ __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirF Documentation(info="

        From 0 to 5 seconds, the testing case is warming-up and the input mass transfer efficiency eps is fixed at 0.9. +

        +

        From 5 to 25 seconds, the input mass transfer efficiency eps changes from 0.9 to 0.2. After 25 seconds, the input mass transfer efficiency eps is fixed at 0.2.

        -The trace substance of the outlet port changes from 0.1 to 0.8 during the period from +The trace substance of the outlet port changes from 0.1 to 0.8kg/kg during the period from 5 seconds to 30 seconds.

        ", revisions=" diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo index 467eaf6d59f..4f49d132bb3 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo @@ -38,7 +38,8 @@ model PressureDropWithVaryingFlowCoefficient resVarying( redeclare package Medium = Medium, m_flow_nominal=0.2, - dp_nominal=10) "Varying resistance" + dp_nominal=10) + "Varying resistance" annotation (Placement(transformation(extent={{-10,30},{10,50}}))); Modelica.Blocks.Sources.Pulse kCor( width=100, diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.mo index 8c2ddc7f468..a1210e42bb8 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.mo @@ -3,4 +3,11 @@ package Validation "Collection of models that illustrate model use and test mode extends Modelica.Icons.ExamplesPackage; +annotation (Documentation(info=" +

        +This package contains examples for the use of models that can be found in + +Buildings.Fluid.AirFilters.BaseClasses. +

        +")); end Validation; diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index 9b35c28fe28..9c02ee85b00 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -5,13 +5,13 @@ model Empirical "Empirical air filter model" "Air"; parameter Real mCon_nominal( final unit = "kg") - "Maximum mass of the contaminant captured by the filter"; + "Maximum mass of the contaminant can be captured by the filter"; parameter Real epsFun[:] - "filter efficiency curve" + "Filter efficiency curve" annotation (Dialog(group="Efficiency")); parameter Real b( final min = 1 + 1E-3) - "resistance coefficient" + "Resistance coefficient" annotation (Dialog(group="Pressure")); parameter Modelica.Units.SI.MassFlowRate m_flow_nominal "Nominal mass flow rate" @@ -58,8 +58,8 @@ protected final mCon_reset=0) "Contaminant accumulation" annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); - Modelica.Blocks.Sources.RealExpression traceSubstancesFlow(y(unit="kg/s")= - inStream(port_a.C_outflow[1])*port_a.m_flow) + Modelica.Blocks.Sources.RealExpression traceSubstancesFlow( + y(unit="kg/s")= inStream(port_a.C_outflow[1])*port_a.m_flow) "Trace substances flow rate" annotation (Placement(transformation(extent={{-92,70},{-72,90}}))); Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection kCor( @@ -82,9 +82,8 @@ equation color={0,0,127})); connect(epsCal.y, masTra.eps) annotation (Line(points={{14,74},{28,74},{28,6},{38,6}}, color={0,0,127})); - connect(masTra.m_flow_in[1], traceSubstancesFlow.y) - annotation (Line(points={{50,12},{50,28},{-60,28},{-60,80},{-71,80}}, - color={0,0,127})); + connect(masTra.C_inflow[1], traceSubstancesFlow.y) annotation (Line(points={{ + 50,12},{50,28},{-60,28},{-60,80},{-71,80}}, color={0,0,127})); connect(epsCal.rat, kCor.rat) annotation (Line(points={{14,86},{32,86},{32,80}, {38,80}}, color={0,0,127})); diff --git a/Buildings/Fluid/AirFilters/Examples/Empirical.mo b/Buildings/Fluid/AirFilters/Examples/Empirical.mo index 69439af548e..e3a8ad79049 100644 --- a/Buildings/Fluid/AirFilters/Examples/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Examples/Empirical.mo @@ -41,7 +41,8 @@ model Empirical "Example for using the empirical air filter model" "Contaminant mass flow rate fraction" annotation (Placement(transformation(extent={{-94,12},{-74,32}}))); Buildings.Fluid.Sensors.TraceSubstancesTwoPort C_out( - redeclare package Medium = Medium, m_flow_nominal=1) + redeclare package Medium = Medium, + m_flow_nominal=1) "Trace substance sensor of outlet air" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); equation @@ -74,7 +75,9 @@ First implementation. ", info="

        From 0 to 12 seconds, the testing case is warming-up and the trace substance of the inlet C_inflow is fixed at 1. -From 20 to 50 seconds, the C_inflow changes from 1 to 0.7. +

        +

        +From 20 to 50 seconds, the C_inflow changes from 1 to 0.7kg/kg. At the 30 seconds, the filter replacement signal repSig changes from false to true.

        From b0477ad1d15e3fd25dc1373b16d2494080cdcbd3 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Sun, 14 Jan 2024 09:28:28 -0500 Subject: [PATCH 09/47] update release note --- Buildings/package.mo | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Buildings/package.mo b/Buildings/package.mo index 0288107fe3a..e4b11b0e665 100644 --- a/Buildings/package.mo +++ b/Buildings/package.mo @@ -264,6 +264,15 @@ have been improved in a This is for issue 3517. +Buildings.Fluid + + +Buildings.Fluid.AirFilters + + Package of models for air filters.
        + This is for issue 3618. + + Buildings.Fluid.Interfaces From 27d9538a12692ba1388fbc290dcebfe00383392a Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 1 Mar 2024 10:01:40 -0800 Subject: [PATCH 10/47] deleted invalid word [ci skip] --- Buildings/Fluid/AirFilters/Examples/Empirical.mo | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Buildings/Fluid/AirFilters/Examples/Empirical.mo b/Buildings/Fluid/AirFilters/Examples/Empirical.mo index e3a8ad79049..2bbdefaf686 100644 --- a/Buildings/Fluid/AirFilters/Examples/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Examples/Empirical.mo @@ -61,9 +61,8 @@ equation annotation (Line(points={{-40,0},{-30,0}}, color={0,127,255})); annotation (experiment( StopTime=50, - Tolerance=1e-06, - __Dymola_Algorithm="Dassl"), - __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos" + Tolerance=1e-06), + __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos" "Simulate and plot"), Documentation(revisions="

          From 8e2a6085643a44e3774e113516fc2798857a65c0 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 1 Mar 2024 10:48:28 -0800 Subject: [PATCH 11/47] refactored formatting --- .../BaseClasses/FiltrationEfficiency.mo | 34 ++++----- .../BaseClasses/FlowCoefficientCorrection.mo | 2 +- .../BaseClasses/MassAccumulation.mo | 9 ++- .../AirFilters/BaseClasses/MassTransfer.mo | 17 ++--- .../PressureDropWithVaryingFlowCoefficient.mo | 2 +- .../Validation/FiltrationEfficiency.mo | 7 +- .../Validation/FlowCoefficientCorrection.mo | 4 +- .../Validation/MassAccumulation.mo | 5 +- .../BaseClasses/Validation/MassTransfer.mo | 46 ++++++------ .../PressureDropWithVaryingFlowCoefficient.mo | 34 ++++----- .../BaseClasses/Validation/package.order | 2 +- Buildings/Fluid/AirFilters/Empirical.mo | 72 +++++++++++-------- 12 files changed, 125 insertions(+), 109 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo index 5800d7bc244..c183e0b0c78 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo @@ -2,14 +2,14 @@ within Buildings.Fluid.AirFilters.BaseClasses; model FiltrationEfficiency "Component that calculates the filtration efficiency" parameter Real mCon_nominal( - final unit="kg") - "Maximum mass of the contaminant can be captured by the filter"; + final unit="kg") + "Maximum mass of the contaminant can be captured by the filter"; parameter Real epsFun[:] - "Filtration efficiency curve"; - Modelica.Blocks.Interfaces.RealInput mCon( - final unit="kg") - "Mass of the contaminant captured by the filter" - annotation (Placement( + "Filtration efficiency curve"; + Buildings.Controls.OBC.CDL.Interfaces.RealInput mCon( + final unit="kg") + "Mass of the contaminant captured by the filter" + annotation (Placement( transformation( extent={{20,-20},{-20,20}}, rotation=180, @@ -21,16 +21,16 @@ model FiltrationEfficiency final unit="1", final min=0, final max=1) - "Filtration efficiency" annotation (Placement(transformation( - extent={{100,-80},{140,-40}}), iconTransformation(extent={{100,-80},{ - 140,-40}}))); + "Filtration efficiency" + annotation (Placement(transformation(extent={{100,-80},{140,-40}}), + iconTransformation(extent={{100,-80},{140,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput rat( final unit="1", final min=0, final max=1) "Relative mass of the contaminant captured by the filter" - annotation (Placement(transformation(extent={{100,40},{140,80}}), iconTransformation( - extent={{100,40},{140,80}}))); + annotation (Placement(transformation(extent={{100,40},{140,80}}), + iconTransformation(extent={{100,40},{140,80}}))); equation rat = Buildings.Utilities.Math.Functions.smoothMin(x1=1, x2= mCon/mCon_nominal, deltaX=0.1); @@ -40,7 +40,8 @@ equation "In " + getInstanceName() + ": The filter efficiency should be in the range of [0, 1], check the filter efficiency curve.", level=AssertionLevel.error); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + +annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,100},{100,-100}}, lineColor={28,108,200}, @@ -51,8 +52,8 @@ equation textColor={0,0,255}, textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false)), - defaultComponentName="eps", - Documentation(revisions=" + defaultComponentName="eps", +Documentation(revisions="
          • December 22, 2023, by Sen Huang:
            @@ -70,7 +71,8 @@ eps = epsFun1 + epsFun2rat + epsFun3 rat2< where the coefficients epsFuni are declared by the parameter epsFun;

            -rat is the relative mass of the contaminant captured by the filter and is calculated by +The rat is the relative mass of the contaminant captured by the filter +and is calculated by

            rat = mCon/mCon_nominal, diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo index 8b555678984..ab7e7c437a9 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo @@ -4,7 +4,7 @@ model FlowCoefficientCorrection parameter Real b( final min = 1 + 1E-3) "Resistance coefficient"; - Modelica.Blocks.Interfaces.RealInput rat( + Buildings.Controls.OBC.CDL.Interfaces.RealInput rat( final unit="1", final min=0, final max=1) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo index b271edf300d..413ff2e41e9 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo @@ -6,7 +6,7 @@ model MassAccumulation parameter Real mCon_reset( final min = 0) "Initial contaminant mass of the filter after replacement"; - Modelica.Blocks.Interfaces.BooleanInput triRep + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triRep "Replacing the filter when trigger becomes true" annotation (Placement( transformation( @@ -16,7 +16,7 @@ model MassAccumulation extent={{-20,-20},{20,20}}, rotation=0, origin={-120,-62}))); - Modelica.Blocks.Interfaces.RealInput mCon_flow( + Buildings.Controls.OBC.CDL.Interfaces.RealInput mCon_flow( final unit = "kg/s") "Contaminant mass flow rate" annotation (Placement(transformation( @@ -29,9 +29,8 @@ model MassAccumulation Buildings.Controls.OBC.CDL.Interfaces.RealOutput mCon( final unit = "kg") "Mass of the contaminant captured by the filter" - annotation (Placement( - transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={ - {100,-20},{140,20}}))); + annotation (Placement(transformation(extent={{100,-20},{140,20}}), + iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Reals.IntegratorWithReset intWitRes "Calculate the mass of contaminant" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo index 744d3c38c19..d601424052f 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -3,19 +3,20 @@ model MassTransfer "Component that sets the trace substance at port_b based on an input trace substance mass flow rate and an input mass transfer efficiency" extends Buildings.Fluid.Interfaces.PartialTwoPortInterface; - Modelica.Blocks.Interfaces.RealInput C_inflow[Medium.nC] - "Input trace substance rate" annotation (Placement(transformation( + Buildings.Controls.OBC.CDL.Interfaces.RealInput C_inflow[Medium.nC] + "Input trace substance rate" + annotation (Placement(transformation( extent={{-20,-20},{20,20}}, rotation=270, origin={0,120}), iconTransformation( extent={{-20,-20},{20,20}}, rotation=270, origin={0,120}))); - Modelica.Blocks.Interfaces.RealInput eps( - final unit = "1", - final min = 0, - final max= 1) - "Mass transfer coefficient" + Buildings.Controls.OBC.CDL.Interfaces.RealInput eps( + final unit = "1", + final min = 0, + final max= 1) + "Mass transfer coefficient" annotation (Placement(transformation( extent={{20,-20},{-20,20}}, rotation=180, @@ -36,7 +37,7 @@ equation port_b.Xi_outflow = inStream(port_a.Xi_outflow); port_a.m_flow = -port_b.m_flow; // Pressure balance (no pressure drop). - port_a. p = port_b.p; + port_a.p = port_b.p; // Energy balance (no heat exchange). port_a.h_outflow = inStream(port_b.h_outflow); port_b.h_outflow = inStream(port_a.h_outflow); diff --git a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo index 978c6e59488..9e5d12727fd 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo @@ -11,7 +11,7 @@ model PressureDropWithVaryingFlowCoefficient enable = not linearized)); Real k "Flow coefficient, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2)"; - Modelica.Blocks.Interfaces.RealInput kCor( + Buildings.Controls.OBC.CDL.Interfaces.RealInput kCor( final unit = "1", final min = 1) "Flow coefficient" diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo index 47d3251ed90..f364da48748 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo @@ -2,12 +2,12 @@ within Buildings.Fluid.AirFilters.BaseClasses.Validation; model FiltrationEfficiency "Validation model for the calculation of the filtration efficiency" extends Modelica.Icons.Example; - Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency eps( + Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency eps( mCon_nominal=1, epsFun={0.98,-0.1}) "Filtration efficiency" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Modelica.Blocks.Sources.Ramp mCon( + Modelica.Blocks.Sources.Ramp mCon( duration=1, height=1.2, offset=0) @@ -28,7 +28,8 @@ changes from 0 to 1.2kg/s from 0 to 1 second. The filtration efficiency, eps.y, changes from 0.98 to 0.88 during the period from 0 to 0.85 seconds. After 0.85 seconds, the eps.y remains unchanged when mCon changes. -This is because the relative mass of contaminant captured by the filter already reaches the maximum value. +This is because the relative mass of contaminant captured by the filter already +reaches the maximum value.

            ", revisions="
              diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo index f6926445397..3fa4aa89d65 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo @@ -2,13 +2,13 @@ within Buildings.Fluid.AirFilters.BaseClasses.Validation; model FlowCoefficientCorrection "Validation model for the calculation of the flow coefficient correction factor" extends Modelica.Icons.Example; - Modelica.Blocks.Sources.Ramp rat( + Modelica.Blocks.Sources.Ramp rat( duration=1, height=1, offset=0) "Relative mass of the contaminant captured by the filter" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection kCor( + Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection kCor( b=1.2) "Flow coefficient correction" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo index d5cf0553263..5f571da2945 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo @@ -2,8 +2,9 @@ within Buildings.Fluid.AirFilters.BaseClasses.Validation; model MassAccumulation "Validation model for the accumulation of the contaminants" extends Modelica.Icons.Example; - Buildings.Fluid.AirFilters.BaseClasses.MassAccumulation masAcc(mCon_nominal=1, - mCon_reset=0) + Buildings.Fluid.AirFilters.BaseClasses.MassAccumulation masAcc( + mCon_nominal=1, + mCon_reset=0) "Contaminant accumulation" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Modelica.Blocks.Sources.Ramp mCon_flow( diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo index 87df5883d74..b8556f580e1 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo @@ -9,20 +9,18 @@ model MassTransfer m_flow=1, nPorts=1) "Air source" - annotation (Placement(transformation( - extent={{-82,-10},{-62,10}}))); + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); Buildings.Fluid.Sources.Boundary_pT sin( redeclare package Medium = Medium, nPorts=1) "Air sink" - annotation (Placement(transformation( - extent={{96,-10},{76,10}}))); + annotation (Placement(transformation(extent={{80,-10},{60,10}}))); Buildings.Fluid.AirFilters.BaseClasses.MassTransfer masTra( redeclare package Medium = Medium, allowFlowReversal=true, m_flow_nominal=1) "Mass transfer" - annotation (Placement(transformation(extent={{8,-10},{28,10}}))); - Modelica.Blocks.Sources.Ramp eps( + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Modelica.Blocks.Sources.Ramp eps( duration=20, height=-0.7, offset=0.9, @@ -32,42 +30,48 @@ model MassTransfer Modelica.Blocks.Sources.RealExpression traceSubstancesFlow( y=inStream(masTra.port_a.C_outflow[1])) "Trace substances flow rate" - annotation (Placement(transformation(extent={{-20,50},{0,70}}))); + annotation (Placement(transformation(extent={{-60,70},{-40,90}}))); Buildings.Fluid.Sensors.TraceSubstancesTwoPort C_out( - redeclare package Medium = Medium, m_flow_nominal=1) + redeclare package Medium = Medium, + m_flow_nominal=1) "Trace substance sensor of outlet air" - annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Buildings.Fluid.Sensors.TraceSubstancesTwoPort C_in( - redeclare package Medium = Medium, m_flow_nominal=1) + redeclare package Medium = Medium, + m_flow_nominal=1) "Trace substance sensor of inlet air" annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); equation connect(eps.y, masTra.eps) - annotation (Line(points={{-39,50},{-24,50},{-24,6}, - {6,6}}, color={0,0,127})); + annotation (Line(points={{-39,50},{-20,50},{-20,6},{-12,6}}, + color={0,0,127})); connect(traceSubstancesFlow.y, masTra.C_inflow[1]) - annotation (Line(points={{1,60},{18,60},{18,12}}, color={0,0,127})); + annotation (Line(points={{-39,80},{0,80},{0,12}}, color={0,0,127})); connect(C_out.port_b, sin.ports[1]) - annotation (Line(points={{60,0},{76,0}}, color={0,127,255})); + annotation (Line(points={{40,0},{60,0}}, color={0,127,255})); connect(C_out.port_a, masTra.port_b) - annotation (Line(points={{40,0},{28,0}}, color={0,127,255})); + annotation (Line(points={{20,0},{10,0}}, color={0,127,255})); connect(C_in.port_b, masTra.port_a) - annotation (Line(points={{-30,0},{8,0}}, color={0,127,255})); + annotation (Line(points={{-30,0},{-10,0}}, + color={0,127,255})); connect(C_in.port_a, sou.ports[1]) - annotation (Line(points={{-50,0},{-62,0},{-62,0}}, color={0,127,255})); + annotation (Line(points={{-50,0},{-60,0}}, color={0,127,255})); annotation (experiment(Tolerance=1e-6, StopTime=30), __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassTransfer.mos" "Simulate and plot"), Documentation(info="

              -From 0 to 5 seconds, the testing case is warming-up and the input mass transfer efficiency eps is fixed at 0.9. +From 0 to 5 seconds, the testing case is warming-up and the input mass transfer +efficiency eps is fixed at 0.9.

              -From 5 to 25 seconds, the input mass transfer efficiency eps changes from 0.9 to 0.2. -After 25 seconds, the input mass transfer efficiency eps is fixed at 0.2. +From 5 to 25 seconds, the input mass transfer efficiency eps changes +from 0.9 to 0.2. After 25 seconds, the input mass transfer efficiency +eps is fixed at 0.2.

              -The trace substance of the outlet port changes from 0.1 to 0.8kg/kg during the period from +The trace substance of the outlet port changes from 0.1 to 0.8kg/kg +during the period from 5 seconds to 30 seconds.

              ", revisions=" diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo index 4f49d132bb3..c2974487950 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo @@ -17,16 +17,14 @@ model PressureDropWithVaryingFlowCoefficient use_p_in=true, nPorts=2) "Pressure boundary condition" - annotation (Placement(transformation( - extent={{-50,-10},{-30,10}}))); + annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); Buildings.Fluid.Sources.Boundary_pT sin( redeclare package Medium = Medium, T=273.15 + 10, nPorts=2, p(displayUnit="Pa") = 101325) "Pressure boundary condition" - annotation (Placement(transformation( - extent={{50,-10},{30,10}}))); + annotation (Placement(transformation(extent={{50,-10},{30,10}}))); Buildings.Fluid.FixedResistances.PressureDrop resFixed( redeclare package Medium = Medium, m_flow_nominal=0.2, @@ -50,19 +48,15 @@ model PressureDropWithVaryingFlowCoefficient annotation (Placement(transformation(extent={{-80,62},{-60,82}}))); equation connect(P.y, sou.p_in) - annotation (Line(points={{-71,8},{-62,8},{-52,8}}, - color={0,0,127})); + annotation (Line(points={{-71,8},{-62,8},{-52,8}},color={0,0,127})); connect(sou.ports[1], resFixed.port_a) - annotation (Line(points={{-30,-1},{-20, - -1},{-20,0},{-10,0}}, color={0,127,255})); + annotation (Line(points={{-30,-1},{-20,-1},{-20,0},{-10,0}}, color={0,127,255})); connect(resFixed.port_b, sin.ports[1]) annotation (Line(points={{10,0},{10,-1},{30,-1}}, color={0,127,255})); connect(resVarying.port_a, sou.ports[2]) - annotation (Line(points={{-10,40},{-20, - 40},{-20,1},{-30,1}}, color={0,127,255})); + annotation (Line(points={{-10,40},{-20,40},{-20,1},{-30,1}}, color={0,127,255})); connect(resVarying.port_b, sin.ports[2]) - annotation (Line(points={{10,40},{18, - 40},{18,1},{30,1}}, color={0,127,255})); + annotation (Line(points={{10,40},{18,40},{18,1},{30,1}}, color={0,127,255})); connect(kCor.y, resVarying.kCor) annotation (Line(points={{-59,72},{0,72},{0,52}}, color={0,0,127})); annotation (experiment(Tolerance=1e-6, StopTime=1.0), @@ -70,23 +64,21 @@ __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirF "Simulate and plot"), Documentation(info="

              -Before 0.5 seconds, the flow rates of the resFixed (pressure resistance with a constant flow coefficient) and the resVarying -(pressure resistance with a varying flow coefficient) are the same with the identical pressure drop. +Before 0.5 seconds, the flow rates of the resFixed (pressure +resistance with a constant flow coefficient) and the resVarying +(pressure resistance with a varying flow coefficient) are the same with the +identical pressure drop.

              -After 0.5 seconds, the flow rate of the resVarying is lower than that of resFixed as the flow coefficient +After 0.5 seconds, the flow rate of the resVarying is lower than +that of resFixed as the flow coefficient of the former decreases by √2.

              ", revisions="
              • December 22, 2023, by Sen Huang:
                -Added a resistance with a varying flow coefficient. -
              • -
              • -December 1, 2016, by Michael Wetter:
                -First implementation for -#480. +First implementation.
              ")); diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.order b/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.order index cf83473e1ba..fc5920ce49a 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.order +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/package.order @@ -2,4 +2,4 @@ FiltrationEfficiency FlowCoefficientCorrection MassAccumulation MassTransfer -PressureDropWithVaryingFlowCoefficient \ No newline at end of file +PressureDropWithVaryingFlowCoefficient diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index 9c02ee85b00..62a2bc58c55 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -19,14 +19,17 @@ model Empirical "Empirical air filter model" parameter Modelica.Units.SI.PressureDifference dp_nominal "Nominal pressure drop" annotation (Dialog(group="Nominal")); - Modelica.Blocks.Interfaces.BooleanInput triRep + + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triRep "Replacing the filter when trigger becomes true" annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput eps( final unit="1", final min=0, - final max=1) "Filtration efficiency" annotation (Placement(transformation( - extent={{100,40},{140,80}}), iconTransformation(extent={{100,-80},{140,-40}}))); + final max=1) + "Filtration efficiency" + annotation (Placement(transformation(extent={{100,40},{140,80}}), + iconTransformation(extent={{100,-80},{140,-40}}))); Modelica.Fluid.Interfaces.FluidPort_a port_a( redeclare package Medium = Medium) "Fluid connector a (positive design flow direction is from port_a to port_b)" @@ -76,24 +79,30 @@ equation annotation (Line(points={{60,0},{100,0}}, color={0,127,255})); connect(masAcc.triRep, triRep) annotation (Line(points={{-42,73.8},{-42,74},{-68,74},{-68,60},{-120,60}}, - color={255,0,255})); + color={255,0,255})); connect(traceSubstancesFlow.y, masAcc.mCon_flow) annotation (Line(points={{-71,80},{-60,80},{-60,86},{-42,86}}, - color={0,0,127})); + color={0,0,127})); connect(epsCal.y, masTra.eps) annotation (Line(points={{14,74},{28,74},{28,6},{38,6}}, color={0,0,127})); - connect(masTra.C_inflow[1], traceSubstancesFlow.y) annotation (Line(points={{ - 50,12},{50,28},{-60,28},{-60,80},{-71,80}}, color={0,0,127})); + connect(masTra.C_inflow[1], traceSubstancesFlow.y) + annotation (Line(points={{50,12},{50,28},{-60,28},{-60,80},{-71,80}}, + color={0,0,127})); connect(epsCal.rat, kCor.rat) - annotation (Line(points={{14,86},{32,86},{32,80}, - {38,80}}, color={0,0,127})); + annotation (Line(points={{14,86},{32,86},{32,80},{38,80}}, color={0,0,127})); connect(kCor.y, res.kCor) - annotation (Line(points={{62,80},{80,80},{80,60},{-20, - 60},{-20,12}}, color={0,0,127})); + annotation (Line(points={{62,80},{80,80},{80,60},{-20,60},{-20,12}}, + color={0,0,127})); connect(epsCal.y, eps) - annotation (Line(points={{14,74},{34,74},{34,38},{88,38}, - {88,60},{120,60}}, color={0,0,127})); + annotation (Line(points={{14,74},{34,74},{34,38},{88,38},{88,60},{120,60}}, + color={0,0,127})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={28,108,200}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), Rectangle( extent={{-20,90},{22,-80}}, lineColor={28,108,200}, @@ -265,38 +274,45 @@ First implementation.
            ", info="

            -An empirical model of air filters, which considers the impacts of the contamination accumulation on -the pressure drop and the filtration efficiency. +An empirical model of air filters, which considers the impacts of the contamination +accumulation on the pressure drop and the filtration efficiency.

            -This model does not require detailed information of filters, such as filter type or geometric data. -Instead, its dynamic characteristics are defined by three parameters, mCon_nominal,epsFun, -and b. +This model does not require detailed information of filters, such as filter type +or geometric data. Instead, its dynamic characteristics are defined by three +parameters, mCon_nominal,epsFun, and b.

            • -mCon_nominal determines the maximum mass of the contaminants that the filter can capture; +The mCon_nominal determines the maximum mass of the contaminants that the +filter can capture;
            • -epsFun is a vector of coefficients that determines how the filtration efficiency changes by the accumulation -of contaminants; +The epsFun is a vector of coefficients that determines how the +filtration efficiency changes by the accumulation of contaminants;
            • -b is a constant that determines how the flow coefficient changes by the accumulation -of contaminants. +The b is a constant that determines how the flow coefficient changes +by the accumulation of contaminants.
            -See more detailed descriptions in +

            +See more detailed descriptions in + Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency and Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection. +

            The input boolean flag, triRep, triggers the filter replacement. -Specifically, when triRep changes from false to true, the mass -of the contaminants that the filter holds, mCon = 0. +Specifically, when triRep changes from false to true, the +mass of the contaminants that the filter holds, mCon = 0.

            -Note: +Note: +

            A warning will be triggered when mCon > mCon_nominal. -In addition, this model can only be used when extraPropertiesNames is defined in the medium model. +In addition, this model can only be used when extraPropertiesNames +is defined in the medium model. +

            ")); end Empirical; From d3f0636b520a4927e4259847d3169b33b183047d Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 1 Mar 2024 13:17:05 -0800 Subject: [PATCH 12/47] fixed validation folder --- .../AirFilters/BaseClasses/MassTransfer.mo | 3 +- .../PressureDropWithVaryingFlowCoefficient.mo | 109 +++--------------- .../Validation/FiltrationEfficiency.mo | 2 +- .../Validation/FlowCoefficientCorrection.mo | 2 +- .../Validation/MassAccumulation.mo | 2 +- .../BaseClasses/Validation/MassTransfer.mo | 7 +- .../PressureDropWithVaryingFlowCoefficient.mo | 2 +- ...asses_PressureDropInputFlowCoefficient.txt | 13 --- ...ers_BaseClasses_SimpleCharacterization.txt | 11 -- ...asses_Validation_FiltrationEfficiency.txt} | 0 ..._Validation_FlowCoefficientCorrection.txt} | 0 ...seClasses_Validation_MassAccumulation.txt} | 0 ...s_BaseClasses_Validation_MassTransfer.txt} | 0 ...ressureDropWithVaryingFlowCoefficient.txt} | 0 .../{ => Validation}/FiltrationEfficiency.mos | 0 .../FlowCoefficientCorrection.mos | 0 .../{ => Validation}/MassAccumulation.mos | 0 .../{ => Validation}/MassTransfer.mos | 0 ...PressureDropWithVaryingFlowCoefficient.mos | 0 19 files changed, 24 insertions(+), 127 deletions(-) delete mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_PressureDropInputFlowCoefficient.txt delete mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_SimpleCharacterization.txt rename Buildings/Resources/ReferenceResults/Dymola/{Buildings_Fluid_AirFilters_BaseClasses_FiltrationEfficiency.txt => Buildings_Fluid_AirFilters_BaseClasses_Validation_FiltrationEfficiency.txt} (100%) rename Buildings/Resources/ReferenceResults/Dymola/{Buildings_Fluid_AirFilters_BaseClasses_FlowCoefficientCorrection.txt => Buildings_Fluid_AirFilters_BaseClasses_Validation_FlowCoefficientCorrection.txt} (100%) rename Buildings/Resources/ReferenceResults/Dymola/{Buildings_Fluid_AirFilters_BaseClasses_MassAccumulation.txt => Buildings_Fluid_AirFilters_BaseClasses_Validation_MassAccumulation.txt} (100%) rename Buildings/Resources/ReferenceResults/Dymola/{Buildings_Fluid_AirFilters_BaseClasses_MassTransfer.txt => Buildings_Fluid_AirFilters_BaseClasses_Validation_MassTransfer.txt} (100%) rename Buildings/Resources/ReferenceResults/Dymola/{Buildings_Fluid_AirFilters_BaseClasses_PressureDropWithVaryingFlowCoefficient.txt => Buildings_Fluid_AirFilters_BaseClasses_Validation_PressureDropWithVaryingFlowCoefficient.txt} (100%) rename Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/{ => Validation}/FiltrationEfficiency.mos (100%) rename Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/{ => Validation}/FlowCoefficientCorrection.mos (100%) rename Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/{ => Validation}/MassAccumulation.mos (100%) rename Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/{ => Validation}/MassTransfer.mos (100%) rename Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/{ => Validation}/PressureDropWithVaryingFlowCoefficient.mos (100%) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo index d601424052f..55c43bdf566 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -64,8 +64,7 @@ where eps is an input mass transfer efficiency and C_inflow is an input trace substance rate.

            -This model has no pressure drop. -In the case of reverse flow, +This model has no pressure drop. In the case of reverse flow, the fluid that leaves port_a has the same properties as the fluid that enters port_b.

            diff --git a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo index 9e5d12727fd..ed654751d3d 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo @@ -5,16 +5,13 @@ model PressureDropWithVaryingFlowCoefficient final m_flow_turbulent = if computeFlowResistance then deltaM * m_flow_nominal_pos else 0); parameter Real deltaM(min=1E-6) = 0.3 - "Fraction of nominal mass flow rate where transition to turbulent occurs" - annotation(Evaluate=true, - Dialog(group = "Transition to laminar", - enable = not linearized)); - Real k - "Flow coefficient, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2)"; + "Fraction of nominal mass flow rate where transition to turbulent occurs" + annotation(Evaluate=true, Dialog(group = "Transition to laminar", enable = not linearized)); + Real k "Flow coefficient, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2)"; Buildings.Controls.OBC.CDL.Interfaces.RealInput kCor( - final unit = "1", - final min = 1) - "Flow coefficient" + final unit = "1", + final min = 1) + "Flow coefficient" annotation (Placement(transformation( extent={{-20,-20},{20,20}}, rotation=270, @@ -28,11 +25,11 @@ protected annotation(Evaluate=true); initial equation - if computeFlowResistance then - assert(m_flow_turbulent > 0, "m_flow_turbulent must be bigger than zero."); - end if; + if computeFlowResistance then + assert(m_flow_turbulent > 0, "m_flow_turbulent must be bigger than zero."); + end if; - assert(m_flow_nominal_pos > 0, "m_flow_nominal_pos must be non-zero. Check parameters."); + assert(m_flow_nominal_pos > 0, "m_flow_nominal_pos must be non-zero. Check parameters."); equation // Pressure drop calculation if computeFlowResistance then @@ -79,7 +76,7 @@ equation dp = 0; end if; // computeFlowResistance - annotation (defaultComponentName="res", +annotation (defaultComponentName="res", Documentation(info="

            Model of a flow resistance with a varying flow coefficient. @@ -89,93 +86,19 @@ This block is implemented based on Buildings.Fluid.FixedResistances.PressureDrop and inherits most of its configuration. -However, when calculating the mass flow rate +However, it is different when calculating the mass flow rate +

            ṁ = m_flow_nominal/(√dp_nominal*kCor) √Δp,

            -where -kCor is a correction factor of the flow coefficient. +

            +where kCor is a correction factor of the flow coefficient. +

            ", revisions="
            • December 22, 2023, by Sen Huang:
              -Added a flow coefficient correction factor. -
            • -
            • -September 21, 2018, by Michael Wetter:
              -Decrease value of deltaM(min=...) attribute. -See #1026. -
            • -
            • -February 3, 2018, by Filip Jorissen:
              -Revised implementation of pressure drop equation -such that it depends on from_dp -when linearized=true. -See #884. -
            • -
            • -December 1, 2016, by Michael Wetter:
              -Simplified model by removing the geometry dependent parameters into the new -model - -Buildings.Fluid.FixedResistances.HydraulicDiameter. -
            • -
            • -November 23, 2016, by Filip Jorissen:
              -Removed dp_nominal and -m_flow_nominal labels from icon. -
            • -
            • -October 14, 2016, by Michael Wetter:
              -Updated comment for parameter use_dh. -
            • -
            • -November 26, 2014, by Michael Wetter:
              -Added the required annotation(Evaluate=true) so -that the system of nonlinear equations in - -Buildings.Fluid.FixedResistances.Validation.PressureDropsExplicit -remains the same. -
            • -
            • -November 20, 2014, by Michael Wetter:
              -Rewrote the warning message using an assert with -AssertionLevel.warning -as this is the proper way to write warnings in Modelica. -
            • -
            • -August 5, 2014, by Michael Wetter:
              -Corrected error in documentation of computation of k. -
            • -
            • -May 29, 2014, by Michael Wetter:
              -Removed undesirable annotation Evaluate=true. -
            • -
            • -October 8, 2013, by Michael Wetter:
              -Removed parameter show_V_flow. -
            • -
            • -December 14, 2012 by Michael Wetter:
              -Renamed protected parameters for consistency with the naming conventions. -
            • -
            • -January 16, 2012 by Michael Wetter:
              -To simplify object inheritance tree, revised base classes -Buildings.Fluid.BaseClasses.PartialResistance, -Buildings.Fluid.Actuators.BaseClasses.PartialTwoWayValve, -Buildings.Fluid.Actuators.BaseClasses.PartialDamperExponential, -Buildings.Fluid.Actuators.BaseClasses.PartialActuator -and model -Buildings.Fluid.FixedResistances.PressureDrop. -
            • -
            • -May 30, 2008 by Michael Wetter:
              -Added parameters use_dh and deltaM for easier parameterization. -
            • -
            • -July 20, 2007 by Michael Wetter:
              First implementation.
            diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo index f364da48748..17e89b1c2be 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo @@ -17,7 +17,7 @@ equation connect(mCon.y, eps.mCon) annotation (Line(points={{-39,0},{-12,0}}, color={0,0,127})); annotation (experiment(Tolerance=1e-6, StopTime=1.0), -__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mos" +__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mos" "Simulate and plot"), Documentation(info="

            diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo index 3fa4aa89d65..7ce93420a46 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo @@ -16,7 +16,7 @@ equation connect(rat.y, kCor.rat) annotation (Line(points={{-39,0},{-12,0}}, color={0,0,127})); annotation (experiment(Tolerance=1e-6, StopTime=1.0), -__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mos" +__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mos" "Simulate and plot"), Documentation(info="

            diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo index 5f571da2945..0509842c0b1 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo @@ -24,7 +24,7 @@ equation connect(mCon_flow.y, masAcc.mCon_flow) annotation (Line(points={{-39,30},{-20, 30},{-20,6},{-12,6}}, color={0,0,127})); annotation (experiment(Tolerance=1e-6, StopTime=1.0), -__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassAccumulation.mos" +__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mos" "Simulate and plot"), Documentation(revisions="

              diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo index b8556f580e1..c26240773cd 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo @@ -52,12 +52,11 @@ equation connect(C_out.port_a, masTra.port_b) annotation (Line(points={{20,0},{10,0}}, color={0,127,255})); connect(C_in.port_b, masTra.port_a) - annotation (Line(points={{-30,0},{-10,0}}, - color={0,127,255})); + annotation (Line(points={{-30,0},{-10,0}}, color={0,127,255})); connect(C_in.port_a, sou.ports[1]) - annotation (Line(points={{-50,0},{-60,0}}, color={0,127,255})); + annotation (Line(points={{-50,0},{-60,0}}, color={0,127,255})); annotation (experiment(Tolerance=1e-6, StopTime=30), -__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassTransfer.mos" +__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mos" "Simulate and plot"), Documentation(info="

              diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo index c2974487950..e1858fc29b5 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo @@ -60,7 +60,7 @@ equation connect(kCor.y, resVarying.kCor) annotation (Line(points={{-59,72},{0,72},{0,52}}, color={0,0,127})); annotation (experiment(Tolerance=1e-6, StopTime=1.0), -__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mos" +__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mos" "Simulate and plot"), Documentation(info="

              diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_PressureDropInputFlowCoefficient.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_PressureDropInputFlowCoefficient.txt deleted file mode 100644 index dcf11924a61..00000000000 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_PressureDropInputFlowCoefficient.txt +++ /dev/null @@ -1,13 +0,0 @@ -last-generated=2023-12-28 -statistics-simulation= -{ - "linear": " ", - "nonlinear": "0", - "numerical Jacobians": "0" -} -time=[0e+00, 1e+00] -resFixed.m_flow=[-2.000000029802322e-01, -1.979898958946231e-01, -1.959591805021437e-01, -1.939072011516565e-01, -1.918332574885402e-01, -1.897366644520932e-01, -1.876166311024133e-01, -1.854723692582306e-01, -1.833030279544347e-01, -1.811077006599772e-01, -1.788854453315187e-01, -1.766352205117044e-01, -1.743559533156626e-01, -1.720465112551915e-01, -1.697056294890468e-01, -1.673320099037958e-01, -1.649242183820423e-01, -1.624807719811363e-01, -1.599999982090629e-01, -1.574801498546433e-01, -1.549193419747568e-01, -1.523154658712195e-01, -1.49666294136362e-01, -1.469693791280017e-01, -1.442220494145431e-01, -1.414213627576828e-01, -1.385640623400149e-01, -1.356465997078498e-01, -1.326649937639523e-01, -1.296148125345321e-01, -1.264911033563857e-01, -1.232882820334267e-01, -1.199999949269616e-01, -1.166190400862151e-01, -1.13137082525932e-01, -1.09544505975423e-01, -1.058300563925127e-01, -1.019803900276839e-01, -9.797958834188632e-02, -9.38083095666595e-02, -8.944272515175461e-02, -8.485281297903036e-02, -7.999999161387633e-02, -7.483315102402641e-02, -6.928203116120561e-02, -6.324554218165301e-02, -5.649876082379961e-02, -4.748456791606166e-02, -3.469959892482991e-02, -1.838472658598184e-02, 0e+00, 1.838472658573401e-02, 3.469964244690851e-02, 4.748459906110715e-02, 5.649873818139389e-02, 6.324554218176653e-02, 6.928203116118495e-02, 7.483315102396981e-02, 8.000000650484644e-02, 8.485282696927646e-02, 8.944271178323525e-02, 9.380830956675082e-02, 9.797958834191545e-02, 1.019803900276561e-01, 1.058300563924324e-01, 1.095445168360728e-01, 1.131370719642118e-01, 1.166190298603946e-01, 1.199999949269973e-01, 1.232882820334382e-01, 1.264911033563297e-01, 1.296148217220524e-01, 1.326649847593913e-01, 1.356465909143014e-01, 1.38564062340056e-01, 1.414213627576828e-01, 1.442220535451335e-01, 1.469693831760115e-01, 1.496663020881202e-01, 1.523154619512251e-01, 1.549193381234691e-01, 1.574801498546343e-01, 1.599999982090363e-01, 1.624807756439156e-01, 1.649242256020242e-01, 1.673320027736878e-01, 1.69705625972313e-01, 1.72046511255208e-01, 1.743559550243205e-01, 1.766352238820822e-01, 1.78885450323103e-01, 1.811076940717116e-01, 1.833030246988776e-01, 1.854723676496923e-01, 1.876166318964068e-01, 1.897366668055015e-01, 1.918332621444801e-01, 1.939071953819967e-01, 1.959591766960876e-01, 1.979898940111624e-01, 2.000000029802322e-01] -resVarying.port_a.m_flow=[-2.000000029802322e-01, -1.979898958946231e-01, -1.959591805021437e-01, -1.939072011516565e-01, -1.918332574885402e-01, -1.897366644520932e-01, -1.876166311024133e-01, -1.854723692582306e-01, -1.833030279544347e-01, -1.811077006599772e-01, -1.788854453315187e-01, -1.766352205117044e-01, -1.743559533156626e-01, -1.720465112551915e-01, -1.697056294890468e-01, -1.673320099037958e-01, -1.649242183820423e-01, -1.624807719811363e-01, -1.599999982090629e-01, -1.574801498546433e-01, -1.549193419747568e-01, -1.523154658712195e-01, -1.49666294136362e-01, -1.469693791280017e-01, -1.442220494145431e-01, -1.414213627576828e-01, -1.385640623400149e-01, -1.356465997078498e-01, -1.326649937639523e-01, -1.296148125345321e-01, -1.264911033563857e-01, -1.232882820334267e-01, -1.199999949269616e-01, -1.166190400862151e-01, -1.13137082525932e-01, -1.09544505975423e-01, -1.058300563925127e-01, -1.019803900276839e-01, -9.797958834188632e-02, -9.38083095666595e-02, -8.944272515175461e-02, -8.485281297903036e-02, -7.999999161387633e-02, -7.483315102402641e-02, -6.928203116120561e-02, -6.324554218165301e-02, -5.649876082379961e-02, -4.748456791606166e-02, -3.469959892482991e-02, -1.838472658598184e-02, 0e+00, 9.328871433143119e-03, 1.838472669582187e-02, 2.691360276525823e-02, 3.469959911413636e-02, 4.15841002789629e-02, 4.748456793967205e-02, 5.241376103124395e-02, 5.649876091157317e-02, 6.000000735274495e-02, 6.324554222064585e-02, 6.633249236978374e-02, 6.928203116711482e-02, 7.211102677004434e-02, 7.483315103734557e-02, 7.745967673870797e-02, 7.999999163483316e-02, 8.246210556573119e-02, 8.485281298381174e-02, 8.717797751144819e-02, 8.944272515826529e-02, 9.165151884385822e-02, 9.380830958081933e-02, 9.591662485186343e-02, 9.797958834601876e-02, 1.000000014901161e-01, 1.019803900312265e-01, 1.039230487627042e-01, 1.058300564019713e-01, 1.077032943388475e-01, 1.095445059791192e-01, 1.113552893879406e-01, 1.131370825278849e-01, 1.148912563125648e-01, 1.16619040092694e-01, 1.183215935404157e-01, 1.199999949303545e-01, 1.216552473205672e-01, 1.232882820344277e-01, 1.248999633420031e-01, 1.264911033611258e-01, 1.280624825477849e-01, 1.296148125376792e-01, 1.311487693595311e-01, 1.326649937643662e-01, 1.341640817988489e-01, 1.356465997112399e-01, 1.371130901521266e-01, 1.385640623428981e-01, 1.399999992322538e-01, 1.414213627576828e-01] -resFixed.k=[6.324554979801178e-02, 6.324554979801178e-02] -resVarying.k=[6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 6.324554979801178e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02, 4.472136124968529e-02] -kCor.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_SimpleCharacterization.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_SimpleCharacterization.txt deleted file mode 100644 index 8be6a219007..00000000000 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_SimpleCharacterization.txt +++ /dev/null @@ -1,11 +0,0 @@ -last-generated=2023-12-28 -statistics-simulation= -{ - "linear": " ", - "nonlinear": " ", - "numerical Jacobians": "0" -} -time=[0e+00, 1e+00] -mCon.y=[0e+00, 1.200000037252895e-02, 2.400000074505789e-02, 3.599999925494219e-02, 4.800000149011579e-02, 5.99999977648261e-02, 7.199999850988588e-02, 8.399999850988389e-02, 9.600000298022425e-02, 1.079999985098865e-01, 1.199999955296583e-01, 1.319999999999973e-01, 1.439999970197758e-01, 1.560000089406754e-01, 1.679999970197704e-01, 1.799999999999822e-01, 1.920000059604485e-01, 2.039999940395435e-01, 2.159999970197464e-01, 2.280000029802216e-01, 2.399999910593166e-01, 2.520000119209485e-01, 2.640000000000036e-01, 2.759999880791208e-01, 2.879999940395515e-01, 3.00000011920929e-01, 3.120000178812797e-01, 3.239999880790391e-01, 3.359999940395498e-01, 3.480000000000248e-01, 3.599999999999645e-01, 3.720000059604573e-01, 3.840000119209503e-01, 3.959999821185675e-01, 4.079999880791137e-01, 4.199999940395532e-01, 4.319999940394929e-01, 4.439999999999858e-01, 4.560000059604787e-01, 4.680000119209716e-01, 4.799999821186777e-01, 4.920000178813508e-01, 5.040000238417016e-01, 5.159999642372984e-01, 5.279999999999716e-01, 5.400000357626448e-01, 5.519999761582416e-01, 5.640000119209148e-01, 5.759999880792629e-01, 5.879999880791847e-01, 6.000000238418579e-01, 6.12e-01, 6.240000357622184e-01, 6.36000011920929e-01, 6.479999761587816e-01, 6.600000119209291e-01, 6.719999880790569e-01, 6.840000238416447e-01, 6.96e-01, 7.080000357620052e-01, 7.2e-01, 7.319999761585684e-01, 7.440000119209289e-01, 7.559999880790711e-01, 7.680000238414316e-01, 7.8e-01, 7.919999642379948e-01, 8.04e-01, 8.159999761583553e-01, 8.280000119209431e-01, 8.399999880790709e-01, 8.520000238412184e-01, 8.63999988079071e-01, 8.759999642377816e-01, 8.88e-01, 8.999999761581421e-01, 9.120000119206447e-01, 9.240000476831474e-01, 9.360000238410053e-01, 9.47999988079071e-01, 9.599999642375685e-01, 9.719999999999859e-01, 9.840000357625737e-01, 9.960000119204315e-01, 1.008000047683716e+00, 1.019999952317705e+00, 1.031999928475279e+00, 1.044000023841858e+00, 1.056e+00, 1.067999976158142e+00, 1.080000071524153e+00, 1.091999976158142e+00, 1.103999952317279e+00, 1.116000047683716e+00, 1.128000023841801e+00, 1.14e+00, 1.151999976158142e+00, 1.164e+00, 1.175999976158142e+00, 1.187999952316853e+00, 1.200000047683716e+00] -simCha.eps=[9.800000190734863e-01, 9.787999987333982e-01, 9.775999783933234e-01, 9.764000176578668e-01, 9.751999973178052e-01, 9.739999772012338e-01, 9.72800016242247e-01, 9.715999961257024e-01, 9.703999755621244e-01, 9.692000154971501e-01, 9.679999949336257e-01, 9.667999743700123e-01, 9.656000134110083e-01, 9.643999928475193e-01, 9.631999731779181e-01, 9.620000131129259e-01, 9.607999916554073e-01, 9.595999719858415e-01, 9.584000119208138e-01, 9.571999904632952e-01, 9.559999707937649e-01, 9.548000089406068e-01, 9.535999892711832e-01, 9.524000292062088e-01, 9.512000077485303e-01, 9.49999988079071e-01, 9.48800026225913e-01, 9.476000083444776e-01, 9.463999868869944e-01, 9.452000250338364e-01, 9.440000071523655e-01, 9.42799985694918e-01, 9.416000238417599e-01, 9.404000059602534e-01, 9.391999845028414e-01, 9.380000226496833e-01, 9.368000047681414e-01, 9.355999833107649e-01, 9.344000214576067e-01, 9.331999999998039e-01, 9.319999821186883e-01, 9.308000202655302e-01, 9.295999988077274e-01, 9.283999809266117e-01, 9.272000190734536e-01, 9.259999976156508e-01, 9.247999797345352e-01, 9.236000178813771e-01, 9.22399996423894e-01, 9.211999785424586e-01, 9.200000166893005e-01, 9.187999952317989e-01, 9.175999737742974e-01, 9.164000119205878e-01, 9.1519999761607e-01, 9.139999761582842e-01, 9.128000143050806e-01, 9.115999928475705e-01, 9.103999713900689e-01, 9.092000095364305e-01, 9.079999952319127e-01, 9.067999737741268e-01, 9.056000119208437e-01, 9.043999904633421e-01, 9.031999690058405e-01, 9.020000071522731e-01, 9.007999928477552e-01, 8.996000309941169e-01, 8.984000095366153e-01, 8.971999880791052e-01, 8.960000262259016e-01, 8.948000047681158e-01, 8.935999904635979e-01, 8.924000286098884e-01, 8.912000071523869e-01, 8.899999856948853e-01, 8.887087689614868e-01, 8.872979255792655e-01, 8.858525712017934e-01, 8.844451933840741e-01, 8.831359759064158e-01, 8.819726112117399e-01, 8.809903853923335e-01, 8.802120078673326e-01, 8.796479094530463e-01, 8.792960054152166e-01, 8.791418076712583e-01, 8.79158318006376e-01, 8.793061376595671e-01, 8.795334700316684e-01, 8.797760014988025e-01, 8.799570199263431e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01] -simCha.kCor=[1e+00, 1.002190232325944e+00, 1.004385352232946e+00, 1.006585121302507e+00, 1.008789897162362e+00, 1.010999321772804e+00, 1.013213634788329e+00, 1.015432834559057e+00, 1.01765692273858e+00, 1.019885896838547e+00, 1.022119640970861e+00, 1.024358391895397e+00, 1.026602030402972e+00, 1.028850556493408e+00, 1.031103968485866e+00, 1.033362268054364e+00, 1.035625696992694e+00, 1.037893890928566e+00, 1.040167210858985e+00, 1.04244542176272e+00, 1.044728636060584e+00, 1.047016860556792e+00, 1.049310088431354e+00, 1.051608323091211e+00, 1.053911687180692e+00, 1.056219935417175e+00, 1.058533313099697e+00, 1.060851809873147e+00, 1.063175320348123e+00, 1.065503956833136e+00, 1.067837712364314e+00, 1.070176481642563e+00, 1.072520496139927e+00, 1.074869629637553e+00, 1.077223776928365e+00, 1.079583169438078e+00, 1.081947800111443e+00, 1.084317563833113e+00, 1.086692453564749e+00, 1.089072588514789e+00, 1.091457961566593e+00, 1.093848467729229e+00, 1.0962443383197e+00, 1.098645327756461e+00, 1.101051688768677e+00, 1.10346329500029e+00, 1.105880139239379e+00, 1.108302235892452e+00, 1.110729696974284e+00, 1.113162515225558e+00, 1.1156005859375e+00, 1.118044021078805e+00, 1.120492820648372e+00, 1.1229469846462e+00, 1.125406617604573e+00, 1.127871510425813e+00, 1.130341767675297e+00, 1.132817508563219e+00, 1.13529873308896e+00, 1.137785322042962e+00, 1.140277379764528e+00, 1.1427748167518e+00, 1.145277856585912e+00, 1.147786260848855e+00, 1.150300148750769e+00, 1.15281963949924e+00, 1.155344598818031e+00, 1.157875056808493e+00, 1.160411117645796e+00, 1.162952781330241e+00, 1.165499928653764e+00, 1.168052678824004e+00, 1.170611016577037e+00, 1.173174972407279e+00, 1.175744531086066e+00, 1.178319692611694e+00, 1.181096914259976e+00, 1.18413890002911e+00, 1.187263497647186e+00, 1.190313809660433e+00, 1.193158504086482e+00, 1.195691942599204e+00, 1.19783520833264e+00, 1.19953632592082e+00, 1.200770619030877e+00, 1.201541183972177e+00, 1.201879143461672e+00, 1.201842904170745e+00, 1.20151901223716e+00, 1.201021193681256e+00, 1.200490235138394e+00, 1.200093985383903e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00, 1.200000047683716e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_FiltrationEfficiency.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_FiltrationEfficiency.txt similarity index 100% rename from Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_FiltrationEfficiency.txt rename to Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_FiltrationEfficiency.txt diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_FlowCoefficientCorrection.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_FlowCoefficientCorrection.txt similarity index 100% rename from Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_FlowCoefficientCorrection.txt rename to Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_FlowCoefficientCorrection.txt diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_MassAccumulation.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_MassAccumulation.txt similarity index 100% rename from Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_MassAccumulation.txt rename to Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_MassAccumulation.txt diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_MassTransfer.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_MassTransfer.txt similarity index 100% rename from Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_MassTransfer.txt rename to Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_MassTransfer.txt diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_PressureDropWithVaryingFlowCoefficient.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_PressureDropWithVaryingFlowCoefficient.txt similarity index 100% rename from Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_PressureDropWithVaryingFlowCoefficient.txt rename to Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_PressureDropWithVaryingFlowCoefficient.txt diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mos rename to Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mos diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mos rename to Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mos diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassAccumulation.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassAccumulation.mos rename to Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mos diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassTransfer.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/MassTransfer.mos rename to Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mos diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mos rename to Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mos From 87e537044de9f81460e99015bef602610b24318f Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 1 Mar 2024 13:27:46 -0800 Subject: [PATCH 13/47] improved graphic arrangement --- Buildings/Fluid/AirFilters/Empirical.mo | 39 ++++++++++++------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index 62a2bc58c55..2db7bf01262 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -28,7 +28,7 @@ model Empirical "Empirical air filter model" final min=0, final max=1) "Filtration efficiency" - annotation (Placement(transformation(extent={{100,40},{140,80}}), + annotation (Placement(transformation(extent={{100,20},{140,60}}), iconTransformation(extent={{100,-80},{140,-40}}))); Modelica.Fluid.Interfaces.FluidPort_a port_a( redeclare package Medium = Medium) @@ -50,51 +50,48 @@ protected redeclare package Medium = Medium, final m_flow_nominal=m_flow_nominal) "Contaminant removal" - annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + annotation (Placement(transformation(extent={{50,-10},{70,10}}))); Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency epsCal( final mCon_nominal=mCon_nominal, final epsFun=epsFun) "Filter characterization" - annotation (Placement(transformation(extent={{-8,70},{12,90}}))); + annotation (Placement(transformation(extent={{0,70},{20,90}}))); Buildings.Fluid.AirFilters.BaseClasses.MassAccumulation masAcc( final mCon_nominal=mCon_nominal, final mCon_reset=0) "Contaminant accumulation" annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); - Modelica.Blocks.Sources.RealExpression traceSubstancesFlow( - y(unit="kg/s")= inStream(port_a.C_outflow[1])*port_a.m_flow) - "Trace substances flow rate" + Modelica.Blocks.Sources.RealExpression traSubFlo(y(unit="kg/s") = inStream( + port_a.C_outflow[1])*port_a.m_flow) "Trace substances flow rate" annotation (Placement(transformation(extent={{-92,70},{-72,90}}))); Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection kCor( final b=b) - annotation (Placement(transformation(extent={{40,70},{60,90}}))); + annotation (Placement(transformation(extent={{60,70},{80,90}}))); equation connect(masAcc.mCon, epsCal.mCon) - annotation (Line(points={{-18,80},{-10,80}}, color={0,0,127})); + annotation (Line(points={{-18,80},{-2,80}}, color={0,0,127})); connect(res.port_a, port_a) annotation (Line(points={{-30,0},{-100,0}}, color={0,127,255})); connect(res.port_b, masTra.port_a) - annotation (Line(points={{-10,0},{40,0}},color={0,127,255})); + annotation (Line(points={{-10,0},{50,0}},color={0,127,255})); connect(masTra.port_b, port_b) - annotation (Line(points={{60,0},{100,0}}, color={0,127,255})); + annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); connect(masAcc.triRep, triRep) - annotation (Line(points={{-42,73.8},{-42,74},{-68,74},{-68,60},{-120,60}}, + annotation (Line(points={{-42,73.8},{-42,74},{-70,74},{-70,60},{-120,60}}, color={255,0,255})); - connect(traceSubstancesFlow.y, masAcc.mCon_flow) - annotation (Line(points={{-71,80},{-60,80},{-60,86},{-42,86}}, - color={0,0,127})); + connect(traSubFlo.y, masAcc.mCon_flow) annotation (Line(points={{-71,80},{-60, + 80},{-60,86},{-42,86}}, color={0,0,127})); connect(epsCal.y, masTra.eps) - annotation (Line(points={{14,74},{28,74},{28,6},{38,6}}, color={0,0,127})); - connect(masTra.C_inflow[1], traceSubstancesFlow.y) - annotation (Line(points={{50,12},{50,28},{-60,28},{-60,80},{-71,80}}, - color={0,0,127})); + annotation (Line(points={{22,74},{40,74},{40,6},{48,6}}, color={0,0,127})); + connect(masTra.C_inflow[1], traSubFlo.y) annotation (Line(points={{60,12},{60, + 28},{-60,28},{-60,80},{-71,80}}, color={0,0,127})); connect(epsCal.rat, kCor.rat) - annotation (Line(points={{14,86},{32,86},{32,80},{38,80}}, color={0,0,127})); + annotation (Line(points={{22,86},{40,86},{40,80},{58,80}}, color={0,0,127})); connect(kCor.y, res.kCor) - annotation (Line(points={{62,80},{80,80},{80,60},{-20,60},{-20,12}}, + annotation (Line(points={{82,80},{90,80},{90,50},{-20,50},{-20,12}}, color={0,0,127})); connect(epsCal.y, eps) - annotation (Line(points={{14,74},{34,74},{34,38},{88,38},{88,60},{120,60}}, + annotation (Line(points={{22,74},{40,74},{40,40},{120,40}}, color={0,0,127})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( From 2602d9c54b9caab279801de74641cb037b37610f Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Mon, 4 Mar 2024 11:59:21 -0800 Subject: [PATCH 14/47] corrected release note --- Buildings/package.mo | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Buildings/package.mo b/Buildings/package.mo index a43b452c324..c77e2894a6d 100644 --- a/Buildings/package.mo +++ b/Buildings/package.mo @@ -217,6 +217,12 @@ Version 11.0.0 is ... The following new libraries have been added:

              + + + - - - - - From 0a6a806d0972c8874e8269d8b7b50b09f54cca30 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Wed, 10 Apr 2024 16:29:25 -0700 Subject: [PATCH 15/47] changed connector name --- .../BaseClasses/FiltrationEfficiency.mo | 2 +- .../BaseClasses/FlowCoefficientCorrection.mo | 9 +-- .../BaseClasses/MassAccumulation.mo | 12 ++-- .../AirFilters/BaseClasses/MassTransfer.mo | 7 +- .../Validation/MassAccumulation.mo | 4 +- Buildings/Fluid/AirFilters/Empirical.mo | 66 +++++++++---------- .../Fluid/AirFilters/Examples/Empirical.mo | 8 +-- ...gs_Fluid_AirFilters_Examples_Empirical.txt | 10 +-- .../Validation/FiltrationEfficiency.mos | 2 +- .../Validation/FlowCoefficientCorrection.mos | 2 +- .../Validation/MassAccumulation.mos | 2 +- .../Fluid/AirFilters/Examples/Empirical.mos | 4 +- ...gs.Fluid.AirFilters.Examples.Empirical.mos | 2 +- 13 files changed, 68 insertions(+), 62 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo index c183e0b0c78..ee78eae1819 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo @@ -48,7 +48,7 @@ annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-143,-98},{157,-138}}, + extent={{-100,140},{100,100}}, textColor={0,0,255}, textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false)), diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo index ab7e7c437a9..dc2d4a3b4d3 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo @@ -25,7 +25,7 @@ model FlowCoefficientCorrection 140,20}}))); equation y = b^rat; - annotation (Dialog(group="Pressure"), + annotation (Dialog(group="Pressure"), Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,100},{100,-100}}, @@ -33,7 +33,7 @@ equation fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-143,-98},{157,-138}}, + extent={{-100,140},{100,100}}, textColor={0,0,255}, textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false)), @@ -53,8 +53,9 @@ This model calculates the flow coefficient of the filter by kCor = brat,

              -where b is a constant that is larger than 1, -rat is the relative mass of the contaminant captured by the filter (see descriptions in +where b is the resistance coefficient and it has to be greater than 1, +rat is the relative mass of the contaminant captured by the filter +(see descriptions in Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency).

              diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo index 413ff2e41e9..18dab821ada 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo @@ -6,9 +6,9 @@ model MassAccumulation parameter Real mCon_reset( final min = 0) "Initial contaminant mass of the filter after replacement"; - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triRep + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uRep "Replacing the filter when trigger becomes true" - annotation (Placement( + annotation (Placement( transformation( extent={{20,-20},{-20,20}}, rotation=180, @@ -57,7 +57,7 @@ equation connect(con.y, intWitRes.y_reset_in) annotation (Line(points={{-58,-20},{-20,-20}, {-20,-8},{-12,-8}},color={0,0,127})); - connect(intWitRes.trigger, triRep) + connect(intWitRes.trigger, uRep) annotation (Line(points={{0,-12},{0,-60},{-120,-60}}, color={255,0,255})); connect(assMes.u, greater.y) annotation (Line(points={{70,-38},{61,-38}}, color={255,0,255})); @@ -74,7 +74,7 @@ equation fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-153,-102},{147,-142}}, + extent={{-100,140},{100,100}}, textColor={0,0,255}, textString="%name")}), Diagram(coordinateSystem( @@ -84,8 +84,8 @@ equation

              This model mimics the process for a filter to capture the contaminants. The mass of the contaminants, mCon, increases by time. -However, when the input signal triRep changes from false -to true, mCon is reinitialized to a constant, mCon_reset. +However, when the input signal uRep changes from false +to true, mCon is reinitialized to a constant, mCon_reset.

              ", revisions="
                diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo index 55c43bdf566..d46e872bf3a 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -48,7 +48,12 @@ equation level=AssertionLevel.error); end if; - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None)}), Diagram( coordinateSystem(preserveAspectRatio=false)), defaultComponentName="masTra", Documentation(info=" diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo index 0509842c0b1..d4f2494974a 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo @@ -19,8 +19,8 @@ model MassAccumulation "Filter replacement signal" annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); equation - connect(RepSig.y, masAcc.triRep) annotation (Line(points={{-38,-20},{-20,-20}, - {-20,-6.2},{-12,-6.2}}, color={255,0,255})); + connect(RepSig.y, masAcc.uRep) annotation (Line(points={{-38,-20},{-20,-20},{ + -20,-6.2},{-12,-6.2}}, color={255,0,255})); connect(mCon_flow.y, masAcc.mCon_flow) annotation (Line(points={{-39,30},{-20, 30},{-20,6},{-12,6}}, color={0,0,127})); annotation (experiment(Tolerance=1e-6, StopTime=1.0), diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index 2db7bf01262..406dac843f8 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -20,7 +20,7 @@ model Empirical "Empirical air filter model" "Nominal pressure drop" annotation (Dialog(group="Nominal")); - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triRep + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uRep "Replacing the filter when trigger becomes true" annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput eps( @@ -65,7 +65,7 @@ protected port_a.C_outflow[1])*port_a.m_flow) "Trace substances flow rate" annotation (Placement(transformation(extent={{-92,70},{-72,90}}))); Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection kCor( - final b=b) + final b=b) "Flow coefficient correction" annotation (Placement(transformation(extent={{60,70},{80,90}}))); equation connect(masAcc.mCon, epsCal.mCon) @@ -76,9 +76,8 @@ equation annotation (Line(points={{-10,0},{50,0}},color={0,127,255})); connect(masTra.port_b, port_b) annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); - connect(masAcc.triRep, triRep) - annotation (Line(points={{-42,73.8},{-42,74},{-70,74},{-70,60},{-120,60}}, - color={255,0,255})); + connect(masAcc.uRep, uRep) annotation (Line(points={{-42,73.8},{-42,74},{-70,74}, + {-70,60},{-120,60}}, color={255,0,255})); connect(traSubFlo.y, masAcc.mCon_flow) annotation (Line(points={{-71,80},{-60, 80},{-60,86},{-42,86}}, color={0,0,127})); connect(epsCal.y, masTra.eps) @@ -93,7 +92,9 @@ equation connect(epsCal.y, eps) annotation (Line(points={{22,74},{40,74},{40,40},{120,40}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + +annotation (defaultComponentName="airFil", +Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,100},{100,-100}}, lineColor={28,108,200}, @@ -260,19 +261,11 @@ equation extent={{-145,-100},{155,-140}}, textColor={0,0,255}, textString="%name")}), - defaultComponentName="fil", - Diagram(coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" -
                  -
                • -December 22, 2023, by Sen Huang:
                  -First implementation. -
                • -
                -", info=" +Diagram(coordinateSystem(preserveAspectRatio=false)), +Documentation(info="

                -An empirical model of air filters, which considers the impacts of the contamination -accumulation on the pressure drop and the filtration efficiency. +An empirical model of air filters, which considers the impacts of the contaminant +accumulation on the pressure drop and the filtration efficiency.

                This model does not require detailed information of filters, such as filter type @@ -280,36 +273,43 @@ or geometric data. Instead, its dynamic characteristics are defined by three parameters, mCon_nominal,epsFun, and b.

                  -
                • +
                • The mCon_nominal determines the maximum mass of the contaminants that the -filter can capture; -
                • -
                • +filter can capture. +
                • +
                • The epsFun is a vector of coefficients that determines how the -filtration efficiency changes by the accumulation of contaminants; -
                • -
                • +filtration efficiency changes with the contaminant accumulation. +
                • +
                • The b is a constant that determines how the flow coefficient changes -by the accumulation of contaminants. +with the contaminant accumulation.

                See more detailed descriptions in -Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency and +Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency and Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection.

                -The input boolean flag, triRep, triggers the filter replacement. -Specifically, when triRep changes from false to true, the -mass of the contaminants that the filter holds, mCon = 0. +The input boolean flag, uRep, triggers the filter replacement. +When uRep changes from false to true, the +mass of the captured contaminant becomes zero.

                Note:

                -A warning will be triggered when mCon > mCon_nominal. -In addition, this model can only be used when extraPropertiesNames -is defined in the medium model. +A warning will be triggered when the captured contaminant mass becomes greater than the +maximum contaminant mass (mCon_nominal). +In addition, the extraPropertiesNames has to be defined in the medium model.

                +", revisions=" +
                  +
                • +December 22, 2023, by Sen Huang:
                  +First implementation. +
                • +
                ")); end Empirical; diff --git a/Buildings/Fluid/AirFilters/Examples/Empirical.mo b/Buildings/Fluid/AirFilters/Examples/Empirical.mo index 2bbdefaf686..1046292ea5a 100644 --- a/Buildings/Fluid/AirFilters/Examples/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Examples/Empirical.mo @@ -46,9 +46,8 @@ model Empirical "Example for using the empirical air filter model" "Trace substance sensor of outlet air" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); equation - connect(repSig.y, fil.triRep) - annotation (Line(points={{-28,50},{-4,50},{-4,6}, - {2,6}}, color={255,0,255})); + connect(repSig.y, fil.uRep) annotation (Line(points={{-28,50},{-4,50},{-4,6},{ + 2,6}}, color={255,0,255})); connect(C_inflow.y, sou.C_in[1]) annotation (Line(points={{-73,22},{-68,22},{-68, -8},{-62,-8}}, color={0,0,127})); connect(C_out.port_b, sin.ports[1]) @@ -73,7 +72,8 @@ First implementation.
              ", info="

              -From 0 to 12 seconds, the testing case is warming-up and the trace substance of the inlet C_inflow is fixed at 1. +From 0 to 12 seconds, the testing case is warming-up and the trace substance of the inlet +C_inflow is fixed at 1.

              From 20 to 50 seconds, the C_inflow changes from 1 to 0.7kg/kg. diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_Empirical.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_Empirical.txt index 4dc35d1d075..32a60bfe364 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_Empirical.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_Empirical.txt @@ -1,4 +1,4 @@ -last-generated=2024-01-11 +last-generated=2024-04-10 statistics-simulation= { "linear": " ", @@ -7,8 +7,8 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 5e+01] -C_in.C=[0e+00, 3.927775621414185e-01, 6.304492950439453e-01, 7.745949625968933e-01, 8.622074723243713e-01, 9.155803322792053e-01, 9.481724500656128e-01, 9.681046009063721e-01, 9.803336262702942e-01, 9.878488183021545e-01, 9.924752116203308e-01, 9.953334331512451e-01, 9.970952272415161e-01, 9.981944561004639e-01, 9.988678097724915e-01, 9.992950558662415e-01, 9.995574951171875e-01, 9.997221231460571e-01, 9.998252391815186e-01, 9.998899698257446e-01, 9.999304413795471e-01, 9.99955952167511e-01, 9.999721050262451e-01, 9.999822974205017e-01, 9.999887943267822e-01, 9.999929070472717e-01, 9.999955296516418e-01, 9.999971389770508e-01, 9.999982118606567e-01, 9.999988675117493e-01, 9.999992847442627e-01, 9.999995231628418e-01, 9.999997019767761e-01, 9.999998211860657e-01, 9.999998807907104e-01, 9.999999403953552e-01, 9.999999403953552e-01, 1e+00, 1e+00, 1e+00, 1e+00, 9.990199208259583e-01, 9.965596199035645e-01, 9.931674003601074e-01, 9.891873002052307e-01, 9.848339557647705e-01, 9.802436828613281e-01, 9.755038022994995e-01, 9.706692695617676e-01, 9.657739996910095e-01, 9.608402848243713e-01, 9.558824896812439e-01, 9.509093165397644e-01, 9.459261894226074e-01, 9.409367442131042e-01, 9.359433054924011e-01, 9.30947482585907e-01, 9.259502291679382e-01, 9.209520816802979e-01, 9.159532189369202e-01, 9.109539985656738e-01, 9.05587911605835e-01, 9.003822803497314e-01, 8.952734470367432e-01, 8.9022296667099e-01, 8.852078318595886e-01, 8.802139759063721e-01, 8.752330541610718e-01, 8.702598810195923e-01, 8.652913570404053e-01, 8.603256344795227e-01, 8.553614616394043e-01, 8.503982424736023e-01, 8.454354405403137e-01, 8.404728770256042e-01, 8.355103731155396e-01, 8.305478096008301e-01, 8.255850672721863e-01, 8.206222057342529e-01, 8.156591653823853e-01, 8.106958866119385e-01, 8.057324290275574e-01, 8.007687926292419e-01, 7.958053350448608e-01, 7.90843665599823e-01, 7.858802676200867e-01, 7.809096574783325e-01, 7.759286165237427e-01, 7.70938515663147e-01, 7.659443616867065e-01, 7.609480619430542e-01, 7.55950391292572e-01, 7.50951886177063e-01, 7.45952844619751e-01, 7.409534454345703e-01, 7.359538078308105e-01, 7.309540510177612e-01, 7.259541749954224e-01, 7.209542989730835e-01, 7.159543633460999e-01, 7.109543681144714e-01] -C_out.C=[0e+00, 1.408941857516766e-02, 3.399187326431274e-02, 5.72541318833828e-02, 8.240439742803574e-02, 1.085584610700607e-01, 1.351840198040009e-01, 1.61966010928154e-01, 1.88705787062645e-01, 2.152918130159378e-01, 2.41661012172699e-01, 2.677615284919739e-01, 2.93597012758255e-01, 3.191121816635132e-01, 3.443658649921418e-01, 3.692891299724579e-01, 3.939225673675537e-01, 4.182553589344025e-01, 4.422971308231354e-01, 4.660653173923492e-01, 4.904727339744568e-01, 5.142959952354431e-01, 5.329899191856384e-01, 5.442420840263367e-01, 5.506784319877625e-01, 5.547605156898499e-01, 5.573458671569824e-01, 5.58984637260437e-01, 5.600231885910034e-01, 5.606819987297058e-01, 5.6110018491745e-01, 5.613648891448975e-01, 5.615327954292297e-01, 5.616394281387329e-01, 5.617067813873291e-01, 5.617491602897644e-01, 5.617759227752686e-01, 5.617929697036743e-01, 5.618038773536682e-01, 5.618109703063965e-01, 5.618153810501099e-01, 5.612671971321106e-01, 5.598864555358887e-01, 5.579816102981567e-01, 5.557460784912109e-01, 5.53300678730011e-01, 5.507220029830933e-01, 5.480591654777527e-01, 5.453431606292725e-01, 5.425929427146912e-01, 5.398210883140564e-01, 5.370357036590576e-01, 5.342416763305664e-01, 5.314421057701111e-01, 5.286388993263245e-01, 5.258334875106812e-01, 5.23026704788208e-01, 5.202191472053528e-01, 5.174111127853394e-01, 5.146026015281677e-01, 5.117939710617065e-01, 3.22805255651474e-01, 2.174559980630875e-01, 1.62314236164093e-01, 1.372750103473663e-01, 1.302445083856583e-01, 1.339020729064941e-01, 1.438322365283966e-01, 1.573605835437775e-01, 1.728708148002625e-01, 1.893791258335114e-01, 2.062887102365494e-01, 2.232441306114197e-01, 2.400308549404144e-01, 2.565203011035919e-01, 2.72638738155365e-01, 2.883451581001282e-01, 3.036181032657623e-01, 3.184458911418915e-01, 3.328239917755127e-01, 3.467555344104767e-01, 3.602470457553864e-01, 3.733063936233521e-01, 3.86130154132843e-01, 3.992938101291656e-01, 4.114479124546051e-01, 4.205203652381897e-01, 4.253678023815155e-01, 4.266061782836914e-01, 4.261919856071472e-01, 4.248991310596466e-01, 4.23051655292511e-01, 4.208511710166931e-01, 4.184277951717377e-01, 4.158640801906586e-01, 4.132104218006134e-01, 4.10499095916748e-01, 4.077515304088593e-01, 4.049813151359558e-01, 4.02196854352951e-01, 3.994037210941315e-01] -fil.eps=[9.800000190734863e-01, 9.550567865371704e-01, 9.302265048027039e-01, 9.055081605911255e-01, 8.809006810188293e-01, 8.56403112411499e-01, 8.320145010948181e-01, 8.077337741851807e-01, 7.835601568222046e-01, 7.594925761222839e-01, 7.355301380157471e-01, 7.116719484329224e-01, 6.879170536994934e-01, 6.642646193504333e-01, 6.407137513160706e-01, 6.172635555267334e-01, 5.939132571220398e-01, 5.706619024276733e-01, 5.475086569786072e-01, 5.240578055381775e-01, 4.972604513168335e-01, 4.793534576892853e-01, 4.759936332702637e-01, 4.798731207847595e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 9.576082825660706e-01, 9.354315400123596e-01, 9.134676456451416e-01, 8.917143940925598e-01, 8.701695203781128e-01, 8.488309979438782e-01, 8.276968002319336e-01, 8.067647814750671e-01, 7.86033034324646e-01, 7.654995918273926e-01, 7.451624274253845e-01, 7.250197529792786e-01, 7.050696611404419e-01, 6.853103041648865e-01, 6.65739893913269e-01, 6.463567614555359e-01, 6.27159059047699e-01, 6.081451177597046e-01, 5.89313268661499e-01, 5.706619024276733e-01, 5.521892905235291e-01, 5.338940024375916e-01, 5.138107538223267e-01, 4.934934973716736e-01, 4.800394177436829e-01, 4.756554365158081e-01, 4.778833091259003e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01] -fil.triRep=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +C_in.C=[0e+00, 3.927775621414185e-01, 6.304492950439453e-01, 7.745949625968933e-01, 8.622074723243713e-01, 9.155803322792053e-01, 9.481724500656128e-01, 9.681046009063721e-01, 9.803336262702942e-01, 9.878488183021545e-01, 9.924752116203308e-01, 9.953334331512451e-01, 9.970952272415161e-01, 9.981944561004639e-01, 9.988678097724915e-01, 9.992950558662415e-01, 9.995574951171875e-01, 9.997221231460571e-01, 9.998252391815186e-01, 9.998899698257446e-01, 9.999304413795471e-01, 9.99955952167511e-01, 9.999721050262451e-01, 9.999822974205017e-01, 9.999887943267822e-01, 9.999929070472717e-01, 9.999955296516418e-01, 9.999971389770508e-01, 9.999982118606567e-01, 9.999988675117493e-01, 9.999992847442627e-01, 9.999995231628418e-01, 9.999997019767761e-01, 9.999998211860657e-01, 9.999998807907104e-01, 9.999999403953552e-01, 9.999999403953552e-01, 1e+00, 1e+00, 1e+00, 1e+00, 9.99018669128418e-01, 9.96558666229248e-01, 9.931673407554626e-01, 9.891875982284546e-01, 9.848340153694153e-01, 9.802442789077759e-01, 9.755049347877502e-01, 9.706698656082153e-01, 9.657744169235229e-01, 9.608408808708191e-01, 9.558829665184021e-01, 9.50909435749054e-01, 9.459260702133179e-01, 9.409365653991699e-01, 9.359433650970459e-01, 9.309478402137756e-01, 9.259505867958069e-01, 9.209522604942322e-01, 9.159531593322754e-01, 9.1095370054245e-01, 9.055877327919006e-01, 9.003822207450867e-01, 8.952734470367432e-01, 8.9022296667099e-01, 8.852078318595886e-01, 8.802139759063721e-01, 8.752330541610718e-01, 8.702598810195923e-01, 8.652913570404053e-01, 8.603256344795227e-01, 8.553614616394043e-01, 8.503982424736023e-01, 8.454354405403137e-01, 8.404728770256042e-01, 8.355103731155396e-01, 8.305478096008301e-01, 8.255850672721863e-01, 8.206222057342529e-01, 8.156591653823853e-01, 8.106958866119385e-01, 8.057324290275574e-01, 8.007687926292419e-01, 7.958053350448608e-01, 7.90843665599823e-01, 7.858802676200867e-01, 7.809096574783325e-01, 7.759286165237427e-01, 7.70938515663147e-01, 7.659443616867065e-01, 7.609480619430542e-01, 7.55950391292572e-01, 7.50951886177063e-01, 7.45952844619751e-01, 7.409534454345703e-01, 7.359538078308105e-01, 7.309540510177612e-01, 7.259541749954224e-01, 7.209542989730835e-01, 7.159543633460999e-01, 7.109543681144714e-01] +C_out.C=[0e+00, 1.408941857516766e-02, 3.399187326431274e-02, 5.72541318833828e-02, 8.240439742803574e-02, 1.085584610700607e-01, 1.351840198040009e-01, 1.61966010928154e-01, 1.88705787062645e-01, 2.152918130159378e-01, 2.41661012172699e-01, 2.677615284919739e-01, 2.93597012758255e-01, 3.191121816635132e-01, 3.443658649921418e-01, 3.692891299724579e-01, 3.939225673675537e-01, 4.182553589344025e-01, 4.422971308231354e-01, 4.660653173923492e-01, 4.904727339744568e-01, 5.142959952354431e-01, 5.329899191856384e-01, 5.442420840263367e-01, 5.506784319877625e-01, 5.547605156898499e-01, 5.573458671569824e-01, 5.58984637260437e-01, 5.600231885910034e-01, 5.606819987297058e-01, 5.6110018491745e-01, 5.613648891448975e-01, 5.615327954292297e-01, 5.616394281387329e-01, 5.617067813873291e-01, 5.617491602897644e-01, 5.617759227752686e-01, 5.617929697036743e-01, 5.618038773536682e-01, 5.618109703063965e-01, 5.618153810501099e-01, 5.612664818763733e-01, 5.598859190940857e-01, 5.57981550693512e-01, 5.557462573051453e-01, 5.533007383346558e-01, 5.507223606109619e-01, 5.480598211288452e-01, 5.453434586524963e-01, 5.425931811332703e-01, 5.39821445941925e-01, 5.370360016822815e-01, 5.34241795539856e-01, 5.314419865608215e-01, 5.286388397216797e-01, 5.258334875106812e-01, 5.230269432067871e-01, 5.202193856239319e-01, 5.174111723899841e-01, 5.146026015281677e-01, 5.117937922477722e-01, 3.228160738945007e-01, 2.174762189388275e-01, 1.623359173536301e-01, 1.373002827167511e-01, 1.302543431520462e-01, 1.339030414819717e-01, 1.438299715518951e-01, 1.573575884103775e-01, 1.728655993938446e-01, 1.893721073865891e-01, 2.062825411558151e-01, 2.232398390769958e-01, 2.400279194116592e-01, 2.565183639526367e-01, 2.726388871669769e-01, 2.883477807044983e-01, 3.036189675331116e-01, 3.184423446655273e-01, 3.328191041946411e-01, 3.467526137828827e-01, 3.602461218833923e-01, 3.73305469751358e-01, 3.861236572265625e-01, 3.992943465709686e-01, 4.114478230476379e-01, 4.205203056335449e-01, 4.253677427768707e-01, 4.266061782836914e-01, 4.261919856071472e-01, 4.248991310596466e-01, 4.23051655292511e-01, 4.208511710166931e-01, 4.184277951717377e-01, 4.158640801906586e-01, 4.132104218006134e-01, 4.10499095916748e-01, 4.077515304088593e-01, 4.049813151359558e-01, 4.02196854352951e-01, 3.994037210941315e-01] +fil.eps=[9.800000190734863e-01, 9.550567865371704e-01, 9.302265048027039e-01, 9.055081605911255e-01, 8.809006810188293e-01, 8.56403112411499e-01, 8.320145010948181e-01, 8.077337741851807e-01, 7.835601568222046e-01, 7.594925761222839e-01, 7.355301380157471e-01, 7.116719484329224e-01, 6.879170536994934e-01, 6.642646193504333e-01, 6.407137513160706e-01, 6.172635555267334e-01, 5.939132571220398e-01, 5.706619024276733e-01, 5.475086569786072e-01, 5.240578055381775e-01, 4.972604513168335e-01, 4.793534576892853e-01, 4.759936332702637e-01, 4.798731207847595e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 9.576082825660706e-01, 9.354315400123596e-01, 9.134676456451416e-01, 8.917143940925598e-01, 8.701695203781128e-01, 8.488310575485229e-01, 8.276968002319336e-01, 8.067647814750671e-01, 7.86033034324646e-01, 7.654995918273926e-01, 7.451624274253845e-01, 7.250197529792786e-01, 7.050696611404419e-01, 6.853103041648865e-01, 6.65739893913269e-01, 6.463567614555359e-01, 6.27159059047699e-01, 6.081451177597046e-01, 5.89313268661499e-01, 5.706619024276733e-01, 5.521892905235291e-01, 5.338940024375916e-01, 5.138106942176819e-01, 4.934934973716736e-01, 4.800394177436829e-01, 4.756554365158081e-01, 4.778833091259003e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01] +fil.uRep=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] C_inflow.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.950000047683716e-01, 9.900000095367432e-01, 9.850000143051147e-01, 9.800000190734863e-01, 9.750000238418579e-01, 9.700000286102295e-01, 9.649999737739563e-01, 9.599999785423279e-01, 9.549999833106995e-01, 9.49999988079071e-01, 9.449999928474426e-01, 9.399999976158142e-01, 9.350000023841858e-01, 9.300000071525574e-01, 9.25000011920929e-01, 9.200000166893005e-01, 9.150000214576721e-01, 9.100000262260437e-01, 9.049999713897705e-01, 8.999999761581421e-01, 8.949999809265137e-01, 8.899999856948853e-01, 8.849999904632568e-01, 8.799999952316284e-01, 8.75e-01, 8.700000047683716e-01, 8.650000095367432e-01, 8.600000143051147e-01, 8.550000190734863e-01, 8.500000238418579e-01, 8.450000286102295e-01, 8.399999737739563e-01, 8.349999785423279e-01, 8.299999833106995e-01, 8.24999988079071e-01, 8.199999928474426e-01, 8.149999976158142e-01, 8.100000023841858e-01, 8.050000071525574e-01, 8.00000011920929e-01, 7.950000166893005e-01, 7.900000214576721e-01, 7.850000262260437e-01, 7.799999713897705e-01, 7.749999761581421e-01, 7.699999809265137e-01, 7.649999856948853e-01, 7.599999904632568e-01, 7.549999952316284e-01, 7.5e-01, 7.450000047683716e-01, 7.400000095367432e-01, 7.350000143051147e-01, 7.300000190734863e-01, 7.250000238418579e-01, 7.200000286102295e-01, 7.149999737739563e-01, 7.099999785423279e-01, 7.049999833106995e-01, 6.99999988079071e-01] diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mos index 4928114a36a..98d94e448f4 100644 --- a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mos +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mos @@ -1,3 +1,3 @@ simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.FiltrationEfficiency",tolerance=1e-06, method="CVode", resultFile="SimpleCharacterization"); createPlot(id=1, position={26, 26, 824, 615}, y={"mCon.y"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={26, 26, 824, 615}, y={"eps.y"}, range={0.0, 1.0, 0.8500000000000001, 1.05}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); \ No newline at end of file +createPlot(id=1, position={26, 26, 824, 615}, y={"eps.y"}, range={0.0, 1.0, 0.85, 1.05}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mos index 8b21d74c63b..ce21b5180d9 100644 --- a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mos +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mos @@ -1,3 +1,3 @@ simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.FlowCoefficientCorrection",tolerance=1e-06, method="CVode", resultFile="SimpleCharacterization"); createPlot(id=1, position={26, 26, 824, 615}, y={"rat.y"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={26, 26, 824, 615}, y={"kCor.y"}, range={0.0, 1.0, 0.8500000000000001, 1.05}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); \ No newline at end of file +createPlot(id=1, position={26, 26, 824, 615}, y={"kCor.y"}, range={0.0, 1.0, 0.85, 1.05}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mos index a5af88707b5..e6adc5b7614 100644 --- a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mos +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mos @@ -1,3 +1,3 @@ simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.MassAccumulation", tolerance=1e-06, method="CVode", resultFile="MassAccumulation"); -createPlot(id=1, position={69, -7, 584, 381}, y={"masAcc.mCon"}, range={0.0, 1.0, -0.2, 0.6000000000000001}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={69, -7, 584, 381}, y={"masAcc.mCon"}, range={0.0, 1.0, -0.2, 0.6}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); createPlot(id=1, position={69, -7, 584, 381}, y={"masAcc.mCon_flow"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos index 553f8159f5f..826b1d87546 100644 --- a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Fluid.AirFilters.Examples.Empirical", stopTime=50, method="Cvode", tolerance=1e-06, resultFile="Generic"); createPlot(id=1, position={35, -11, 642, 588}, y={"C_in.C", "C_out.C"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); createPlot(id=1, position={35, -11, 642, 588}, y={"fil.eps"}, range={0.0, 1.0, 0.9, 1.0}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={35, -11, 642, 588}, y={"fil.triRep"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={35, -11, 642, 588}, y={"C_inflow.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s"); \ No newline at end of file +createPlot(id=1, position={35, -11, 642, 588}, y={"fil.uRep"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={35, -11, 642, 588}, y={"C_inflow.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Empirical.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Empirical.mos index 74a66a52081..8a13eff1779 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Empirical.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Empirical.mos @@ -3,6 +3,6 @@ compareVars := "C_in.C", "C_out.C", "fil.eps", - "fil.triRep", + "fil.uRep", "C_inflow.y" }; From 0be4dbb9d47a56deb9b0cdfd4090d105c1dfdc0b Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Wed, 10 Apr 2024 16:34:25 -0700 Subject: [PATCH 16/47] improved text [ci skip] --- .../BaseClasses/FiltrationEfficiency.mo | 18 +++++++-------- .../BaseClasses/FlowCoefficientCorrection.mo | 22 +++++++++---------- .../BaseClasses/MassAccumulation.mo | 2 +- .../AirFilters/BaseClasses/MassTransfer.mo | 5 ++--- .../PressureDropWithVaryingFlowCoefficient.mo | 2 +- 5 files changed, 24 insertions(+), 25 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo index ee78eae1819..17fc18b98ee 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo @@ -53,14 +53,7 @@ annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false)), defaultComponentName="eps", -Documentation(revisions=" -

                -
              • -December 22, 2023, by Sen Huang:
                -First implementation. -
              • -
              -", info=" +Documentation(info="

              This model calculates the filtration efficiency, eps, by

              @@ -82,8 +75,15 @@ where mCon is the mass of the contaminant captured by the filter, mCon_nominal is the maximum mass of the contaminant captured by the filter.

              -Note: +Note: The upper limit of rat is 1 and any value above it is overwritten by 1.

              +", revisions=" +
                +
              • +December 22, 2023, by Sen Huang:
                +First implementation. +
              • +
              ")); end FiltrationEfficiency; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo index dc2d4a3b4d3..3988b3f5d56 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo @@ -20,9 +20,9 @@ model FlowCoefficientCorrection Buildings.Controls.OBC.CDL.Interfaces.RealOutput y( final unit="1", final min=1) - "Flow coefficient correction" annotation (Placement(transformation( - extent={{100,-20},{140,20}}), iconTransformation(extent={{100,-20},{ - 140,20}}))); + "Flow coefficient correction" + annotation (Placement(transformation(extent={{100,-20},{140,20}}), + iconTransformation(extent={{100,-20},{140,20}}))); equation y = b^rat; annotation (Dialog(group="Pressure"), @@ -38,14 +38,7 @@ equation textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false)), defaultComponentName="kCor", - Documentation(revisions=" -
                -
              • -December 22, 2023, by Sen Huang:
                -First implementation. -
              • -
              -", info=" + Documentation(info="

              This model calculates the flow coefficient of the filter by

              @@ -64,5 +57,12 @@ Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency). Qiang Li ta al., (2022). Experimental study on the synthetic dust loading characteristics of air filters. Separation and Purification Technology 284 (2022), 120209

              +", revisions=" +
                +
              • +December 22, 2023, by Sen Huang:
                +First implementation. +
              • +
              ")); end FlowCoefficientCorrection; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo index 18dab821ada..adb37786978 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo @@ -46,7 +46,7 @@ model MassAccumulation "Constant" annotation (Placement(transformation(extent={{0,40},{20,60}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes( - message="In " + getInstanceName() + ":the filter needs to be replaced") + message="In " + getInstanceName() + ":the filter needs to be replaced") "Error message when the filter is full, i.e., the mass captured by the filter is larger than the nominal value" annotation (Placement(transformation(extent={{72,-48},{92,-28}}))); equation diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo index d46e872bf3a..6447ab77b4a 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -1,7 +1,6 @@ within Buildings.Fluid.AirFilters.BaseClasses; model MassTransfer - "Component that sets the trace substance at port_b based on an input trace substance mass flow rate - and an input mass transfer efficiency" + "Component that sets the trace substance at port_b based on an input trace substance mass flow rate and an input mass transfer efficiency" extends Buildings.Fluid.Interfaces.PartialTwoPortInterface; Buildings.Controls.OBC.CDL.Interfaces.RealInput C_inflow[Medium.nC] "Input trace substance rate" @@ -65,7 +64,7 @@ of the medium that leaves port_b by port_b.C_outflow = inStream(port_a.C_outflow) - eps * C_inflow;

              -where eps is an input mass transfer efficiency and +where eps is an input mass transfer efficiency and C_inflow is an input trace substance rate.

              diff --git a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo index ed654751d3d..50a5be02774 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo @@ -93,7 +93,7 @@ ṁ = m_flow_nominal/(√dp_no √Δp,

              -where kCor is a correction factor of the flow coefficient. +where kCor is a correction factor of the flow coefficient.

              ", revisions="
                From e37292ad0ee6c1627fdc599b14b267742c48fb35 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Mon, 15 Apr 2024 12:43:35 -0400 Subject: [PATCH 17/47] add asserts --- .../BaseClasses/FlowCoefficientCorrection.mo | 7 +++++-- Buildings/Fluid/AirFilters/Empirical.mo | 18 ++++++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo index 3988b3f5d56..644055c74d4 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo @@ -1,8 +1,7 @@ within Buildings.Fluid.AirFilters.BaseClasses; model FlowCoefficientCorrection "Component that calculates the flow coefficient correction factor" - parameter Real b( - final min = 1 + 1E-3) + parameter Real b "Resistance coefficient"; Buildings.Controls.OBC.CDL.Interfaces.RealInput rat( final unit="1", @@ -23,6 +22,10 @@ model FlowCoefficientCorrection "Flow coefficient correction" annotation (Placement(transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={{100,-20},{140,20}}))); +initial equation + assert(b > 1, + "In " + getInstanceName() + ":Resistance coefficient should be larger than 1", + level=AssertionLevel.error); equation y = b^rat; annotation (Dialog(group="Pressure"), diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index 406dac843f8..ca2708518df 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -9,8 +9,7 @@ model Empirical "Empirical air filter model" parameter Real epsFun[:] "Filter efficiency curve" annotation (Dialog(group="Efficiency")); - parameter Real b( - final min = 1 + 1E-3) + parameter Real b "Resistance coefficient" annotation (Dialog(group="Pressure")); parameter Modelica.Units.SI.MassFlowRate m_flow_nominal @@ -19,6 +18,7 @@ model Empirical "Empirical air filter model" parameter Modelica.Units.SI.PressureDifference dp_nominal "Nominal pressure drop" annotation (Dialog(group="Nominal")); + parameter String substanceName = "CO2" "Name of trace substance"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uRep "Replacing the filter when trigger becomes true" @@ -67,6 +67,19 @@ protected Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection kCor( final b=b) "Flow coefficient correction" annotation (Placement(transformation(extent={{60,70},{80,90}}))); + + parameter Real s[:]= { + if ( Modelica.Utilities.Strings.isEqual(string1=Medium.extraPropertiesNames[i], + string2=substanceName, + caseSensitive=false)) + then 1 else 0 for i in 1:Medium.nC} + "Vector with zero everywhere except where species is" + annotation(Evaluate=true); +initial equation + assert(max(s) > 0.9, "Trace substance '" + substanceName + "' is not present in medium '" + + Medium.mediumName + "'.\n" + + "Check filter parameter and medium model."); + equation connect(masAcc.mCon, epsCal.mCon) annotation (Line(points={{-18,80},{-2,80}}, color={0,0,127})); @@ -302,6 +315,7 @@ mass of the captured contaminant becomes zero.

                A warning will be triggered when the captured contaminant mass becomes greater than the maximum contaminant mass (mCon_nominal). +
                In addition, the extraPropertiesNames has to be defined in the medium model.

                ", revisions=" From 1b6cbaeb5009ba71e468bfbb584b95f4477afaf9 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Tue, 16 Apr 2024 15:30:50 -0400 Subject: [PATCH 18/47] format update --- .../BaseClasses/FiltrationEfficiency.mo | 20 +++--- .../BaseClasses/FlowCoefficientCorrection.mo | 20 +++--- .../BaseClasses/MassAccumulation.mo | 65 ++++++++++--------- .../AirFilters/BaseClasses/MassTransfer.mo | 38 +++++------ .../PressureDropWithVaryingFlowCoefficient.mo | 14 ++-- .../Validation/FiltrationEfficiency.mo | 2 +- .../Validation/MassAccumulation.mo | 10 +-- .../BaseClasses/Validation/MassTransfer.mo | 2 +- Buildings/Fluid/AirFilters/Empirical.mo | 45 +++++++------ .../Fluid/AirFilters/Examples/Empirical.mo | 10 +-- 10 files changed, 119 insertions(+), 107 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo index 17fc18b98ee..372d1b025f3 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo @@ -10,27 +10,27 @@ model FiltrationEfficiency final unit="kg") "Mass of the contaminant captured by the filter" annotation (Placement( - transformation( - extent={{20,-20},{-20,20}}, - rotation=180, - origin={-120,0}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-120,0}))); + transformation( + extent={{20,-20},{-20,20}}, + rotation=180, + origin={-120,0}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={-120,0}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y( final unit="1", final min=0, final max=1) "Filtration efficiency" annotation (Placement(transformation(extent={{100,-80},{140,-40}}), - iconTransformation(extent={{100,-80},{140,-40}}))); + iconTransformation(extent={{100,-80},{140,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput rat( final unit="1", final min=0, final max=1) "Relative mass of the contaminant captured by the filter" - annotation (Placement(transformation(extent={{100,40},{140,80}}), - iconTransformation(extent={{100,40},{140,80}}))); + annotation (Placement(transformation(extent={{100,40},{140,80}}), + iconTransformation(extent={{100,40},{140,80}}))); equation rat = Buildings.Utilities.Math.Functions.smoothMin(x1=1, x2= mCon/mCon_nominal, deltaX=0.1); diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo index 644055c74d4..22c8b6122a8 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo @@ -8,20 +8,20 @@ model FlowCoefficientCorrection final min=0, final max=1) "Relative mass of the contaminant captured by the filter" - annotation (Placement( - transformation( - extent={{20,-20},{-20,20}}, - rotation=180, - origin={-120,0}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-120,0}))); + annotation (Placement( + transformation( + extent={{20,-20},{-20,20}}, + rotation=180, + origin={-120,0}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={-120,0}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y( final unit="1", final min=1) "Flow coefficient correction" annotation (Placement(transformation(extent={{100,-20},{140,20}}), - iconTransformation(extent={{100,-20},{140,20}}))); + iconTransformation(extent={{100,-20},{140,20}}))); initial equation assert(b > 1, "In " + getInstanceName() + ":Resistance coefficient should be larger than 1", @@ -46,7 +46,7 @@ equation This model calculates the flow coefficient of the filter by

                - kCor = brat, + kCor = brat,

                where b is the resistance coefficient and it has to be greater than 1, diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo index adb37786978..e1a0360c67d 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo @@ -9,28 +9,28 @@ model MassAccumulation Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uRep "Replacing the filter when trigger becomes true" annotation (Placement( - transformation( - extent={{20,-20},{-20,20}}, - rotation=180, - origin={-120,-60}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-120,-62}))); + transformation( + extent={{20,-20},{-20,20}}, + rotation=180, + origin={-120,-60}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={-120,-62}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput mCon_flow( final unit = "kg/s") "Contaminant mass flow rate" annotation (Placement(transformation( - extent={{20,-20},{-20,20}}, - rotation=180, - origin={-120,60}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-120,60}))); + extent={{20,-20},{-20,20}}, + rotation=180, + origin={-120,60}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={-120,60}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput mCon( final unit = "kg") "Mass of the contaminant captured by the filter" annotation (Placement(transformation(extent={{100,-20},{140,20}}), - iconTransformation(extent={{100,-20},{140,20}}))); + iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Reals.IntegratorWithReset intWitRes "Calculate the mass of contaminant" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); @@ -50,36 +50,37 @@ model MassAccumulation "Error message when the filter is full, i.e., the mass captured by the filter is larger than the nominal value" annotation (Placement(transformation(extent={{72,-48},{92,-28}}))); equation - connect(intWitRes.u, mCon_flow) annotation (Line(points={{-12,0},{-40,0},{-40, - 60},{-120,60}}, color={0,0,127})); + connect(intWitRes.u, mCon_flow) + annotation (Line(points={{-12,0},{-40,0},{-40,60}, + {-120,60}}, color={0,0,127})); connect(intWitRes.y, mCon) annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); connect(con.y, intWitRes.y_reset_in) annotation (Line(points={{-58,-20},{-20,-20}, - {-20,-8},{-12,-8}},color={0,0,127})); + {-20,-8},{-12,-8}},color={0,0,127})); connect(intWitRes.trigger, uRep) annotation (Line(points={{0,-12},{0,-60},{-120,-60}}, color={255,0,255})); connect(assMes.u, greater.y) annotation (Line(points={{70,-38},{61,-38}}, color={255,0,255})); connect(greater.u2, intWitRes.y) - annotation (Line(points={{38,-46},{20,-46},{20, - 0},{12,0}}, color={0,0,127})); + annotation (Line(points={{38,-46},{20,-46},{20,0}, + {12,0}}, color={0,0,127})); connect(con1.y, greater.u1) annotation (Line(points={{22,50},{30,50},{30,-38}, - {38,-38}}, color={0,0,127})); + {38,-38}}, color={0,0,127})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,100},{100,-100}}, - lineColor={28,108,200}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Text( - extent={{-100,140},{100,100}}, - textColor={0,0,255}, - textString="%name")}), - Diagram(coordinateSystem( - preserveAspectRatio=false)), - defaultComponentName="masAcc", + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={28,108,200}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-100,140},{100,100}}, + textColor={0,0,255}, + textString="%name")}), + Diagram(coordinateSystem( + preserveAspectRatio=false)), + defaultComponentName="masAcc", Documentation(info="

                This model mimics the process for a filter to capture the contaminants. diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo index 6447ab77b4a..f0d0f826efe 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -5,24 +5,24 @@ model MassTransfer Buildings.Controls.OBC.CDL.Interfaces.RealInput C_inflow[Medium.nC] "Input trace substance rate" annotation (Placement(transformation( - extent={{-20,-20},{20,20}}, - rotation=270, - origin={0,120}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=270, - origin={0,120}))); + extent={{-20,-20},{20,20}}, + rotation=270, + origin={0,120}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=270, + origin={0,120}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput eps( final unit = "1", final min = 0, final max= 1) "Mass transfer coefficient" annotation (Placement(transformation( - extent={{20,-20},{-20,20}}, - rotation=180, - origin={-120,60}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-120,60}))); + extent={{20,-20},{-20,20}}, + rotation=180, + origin={-120,60}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={-120,60}))); equation if allowFlowReversal then port_b.C_outflow =inStream(port_a.C_outflow) - eps*C_inflow; @@ -48,12 +48,12 @@ equation end if; annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,100},{100,-100}}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None)}), Diagram( - coordinateSystem(preserveAspectRatio=false)), + Rectangle( + extent={{-100,100},{100,-100}}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None)}), Diagram( + coordinateSystem(preserveAspectRatio=false)), defaultComponentName="masTra", Documentation(info="

                @@ -61,7 +61,7 @@ This model sets the trace substance of the medium that leaves port_b by

                -  port_b.C_outflow = inStream(port_a.C_outflow) - eps * C_inflow;
                +port_b.C_outflow = inStream(port_a.C_outflow) - eps * C_inflow;
                 

                where eps is an input mass transfer efficiency and diff --git a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo index 50a5be02774..a3a98dfe80a 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo @@ -13,16 +13,16 @@ model PressureDropWithVaryingFlowCoefficient final min = 1) "Flow coefficient" annotation (Placement(transformation( - extent={{-20,-20},{20,20}}, - rotation=270, - origin={0,120}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=270, - origin={0,120}))); + extent={{-20,-20},{20,20}}, + rotation=270, + origin={0,120}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=270, + origin={0,120}))); protected final parameter Boolean computeFlowResistance=(dp_nominal_pos > Modelica.Constants.eps) "Flag to enable/disable computation of flow resistance" - annotation(Evaluate=true); + annotation(Evaluate=true); initial equation if computeFlowResistance then diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo index 17e89b1c2be..5ba92d99700 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo @@ -15,7 +15,7 @@ model FiltrationEfficiency annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); equation connect(mCon.y, eps.mCon) - annotation (Line(points={{-39,0},{-12,0}}, color={0,0,127})); + annotation (Line(points={{-39,0},{-12,0}}, color={0,0,127})); annotation (experiment(Tolerance=1e-6, StopTime=1.0), __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mos" "Simulate and plot"), diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo index d4f2494974a..1e8abc3d02d 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo @@ -19,10 +19,12 @@ model MassAccumulation "Filter replacement signal" annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); equation - connect(RepSig.y, masAcc.uRep) annotation (Line(points={{-38,-20},{-20,-20},{ - -20,-6.2},{-12,-6.2}}, color={255,0,255})); - connect(mCon_flow.y, masAcc.mCon_flow) annotation (Line(points={{-39,30},{-20, - 30},{-20,6},{-12,6}}, color={0,0,127})); + connect(RepSig.y, masAcc.uRep) + annotation (Line(points={{-38,-20},{-20,-20},{-20,-6.2}, + {-12,-6.2}}, color={255,0,255})); + connect(mCon_flow.y, masAcc.mCon_flow) + annotation (Line(points={{-39,30},{-20,30}, + {-20,6},{-12,6}}, color={0,0,127})); annotation (experiment(Tolerance=1e-6, StopTime=1.0), __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mos" "Simulate and plot"), diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo index c26240773cd..ed263a237e8 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo @@ -44,7 +44,7 @@ model MassTransfer equation connect(eps.y, masTra.eps) annotation (Line(points={{-39,50},{-20,50},{-20,6},{-12,6}}, - color={0,0,127})); + color={0,0,127})); connect(traceSubstancesFlow.y, masTra.C_inflow[1]) annotation (Line(points={{-39,80},{0,80},{0,12}}, color={0,0,127})); connect(C_out.port_b, sin.ports[1]) diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index ca2708518df..012c1faca4f 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -1,6 +1,6 @@ within Buildings.Fluid.AirFilters; model Empirical "Empirical air filter model" - replaceable package Medium = + replaceable package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Air"; parameter Real mCon_nominal( @@ -18,8 +18,8 @@ model Empirical "Empirical air filter model" parameter Modelica.Units.SI.PressureDifference dp_nominal "Nominal pressure drop" annotation (Dialog(group="Nominal")); - parameter String substanceName = "CO2" "Name of trace substance"; - + parameter String substanceName = "CO2" + "Name of trace substance"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uRep "Replacing the filter when trigger becomes true" annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); @@ -29,7 +29,7 @@ model Empirical "Empirical air filter model" final max=1) "Filtration efficiency" annotation (Placement(transformation(extent={{100,20},{140,60}}), - iconTransformation(extent={{100,-80},{140,-40}}))); + iconTransformation(extent={{100,-80},{140,-40}}))); Modelica.Fluid.Interfaces.FluidPort_a port_a( redeclare package Medium = Medium) "Fluid connector a (positive design flow direction is from port_a to port_b)" @@ -38,6 +38,7 @@ model Empirical "Empirical air filter model" redeclare package Medium = Medium) "Fluid connector b (positive design flow direction is from port_a to port_b)" annotation (Placement(transformation(extent={{90,-10},{110,10}}))); + protected Buildings.Fluid.AirFilters.BaseClasses.PressureDropWithVaryingFlowCoefficient res( @@ -61,11 +62,13 @@ protected final mCon_reset=0) "Contaminant accumulation" annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); - Modelica.Blocks.Sources.RealExpression traSubFlo(y(unit="kg/s") = inStream( - port_a.C_outflow[1])*port_a.m_flow) "Trace substances flow rate" + Modelica.Blocks.Sources.RealExpression traSubFlo( + y(unit="kg/s") = inStream(port_a.C_outflow[1])*port_a.m_flow) + "Trace substances flow rate" annotation (Placement(transformation(extent={{-92,70},{-72,90}}))); Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection kCor( - final b=b) "Flow coefficient correction" + final b=b) + "Flow coefficient correction" annotation (Placement(transformation(extent={{60,70},{80,90}}))); parameter Real s[:]= { @@ -77,8 +80,8 @@ protected annotation(Evaluate=true); initial equation assert(max(s) > 0.9, "Trace substance '" + substanceName + "' is not present in medium '" - + Medium.mediumName + "'.\n" - + "Check filter parameter and medium model."); + + Medium.mediumName + "'.\n" + + "Check filter parameter and medium model."); equation connect(masAcc.mCon, epsCal.mCon) @@ -89,22 +92,25 @@ equation annotation (Line(points={{-10,0},{50,0}},color={0,127,255})); connect(masTra.port_b, port_b) annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); - connect(masAcc.uRep, uRep) annotation (Line(points={{-42,73.8},{-42,74},{-70,74}, - {-70,60},{-120,60}}, color={255,0,255})); - connect(traSubFlo.y, masAcc.mCon_flow) annotation (Line(points={{-71,80},{-60, - 80},{-60,86},{-42,86}}, color={0,0,127})); + connect(masAcc.uRep, uRep) + annotation (Line(points={{-42,73.8},{-42,74},{-70,74}, + {-70,60},{-120,60}}, color={255,0,255})); + connect(traSubFlo.y, masAcc.mCon_flow) + annotation (Line(points={{-71,80},{-60,80}, + {-60,86},{-42,86}}, color={0,0,127})); connect(epsCal.y, masTra.eps) annotation (Line(points={{22,74},{40,74},{40,6},{48,6}}, color={0,0,127})); - connect(masTra.C_inflow[1], traSubFlo.y) annotation (Line(points={{60,12},{60, - 28},{-60,28},{-60,80},{-71,80}}, color={0,0,127})); + connect(masTra.C_inflow[1], traSubFlo.y) + annotation (Line(points={{60,12},{60,28}, + {-60,28},{-60,80},{-71,80}}, color={0,0,127})); connect(epsCal.rat, kCor.rat) annotation (Line(points={{22,86},{40,86},{40,80},{58,80}}, color={0,0,127})); connect(kCor.y, res.kCor) annotation (Line(points={{82,80},{90,80},{90,50},{-20,50},{-20,12}}, - color={0,0,127})); + color={0,0,127})); connect(epsCal.y, eps) annotation (Line(points={{22,74},{40,74},{40,40},{120,40}}, - color={0,0,127})); + color={0,0,127})); annotation (defaultComponentName="airFil", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ @@ -307,9 +313,10 @@ Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency and Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection.

                -The input boolean flag, uRep, triggers the filter replacement. +The input boolean flag, uRep, triggers the filter replacement: +
                When uRep changes from false to true, the -mass of the captured contaminant becomes zero. +mass of the captured contaminant becomes 0.

                Note:

                diff --git a/Buildings/Fluid/AirFilters/Examples/Empirical.mo b/Buildings/Fluid/AirFilters/Examples/Empirical.mo index 1046292ea5a..3a06f7fc569 100644 --- a/Buildings/Fluid/AirFilters/Examples/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Examples/Empirical.mo @@ -46,10 +46,12 @@ model Empirical "Example for using the empirical air filter model" "Trace substance sensor of outlet air" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); equation - connect(repSig.y, fil.uRep) annotation (Line(points={{-28,50},{-4,50},{-4,6},{ - 2,6}}, color={255,0,255})); - connect(C_inflow.y, sou.C_in[1]) annotation (Line(points={{-73,22},{-68,22},{-68, - -8},{-62,-8}}, color={0,0,127})); + connect(repSig.y, fil.uRep) + annotation (Line(points={{-28,50},{-4,50},{-4,6},{2,6}}, + color={255,0,255})); + connect(C_inflow.y, sou.C_in[1]) + annotation (Line(points={{-73,22},{-68,22},{-68,-8}, + {-62,-8}}, color={0,0,127})); connect(C_out.port_b, sin.ports[1]) annotation (Line(points={{60,0},{72,0}}, color={0,127,255})); connect(C_out.port_a, fil.port_b) From f7c67eec33eab5dc7c3169c119a79ef5ccce54dc Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 19 Apr 2024 12:03:24 -0700 Subject: [PATCH 19/47] improved text and documentation --- .../BaseClasses/FiltrationEfficiency.mo | 17 ++--- .../BaseClasses/FlowCoefficientCorrection.mo | 25 +++---- .../BaseClasses/MassAccumulation.mo | 71 +++++++------------ .../AirFilters/BaseClasses/MassTransfer.mo | 35 +++------ .../PressureDropWithVaryingFlowCoefficient.mo | 10 +-- .../Validation/FiltrationEfficiency.mo | 7 +- .../Validation/FlowCoefficientCorrection.mo | 7 +- .../Validation/MassAccumulation.mo | 13 ++-- .../BaseClasses/Validation/MassTransfer.mo | 7 +- .../PressureDropWithVaryingFlowCoefficient.mo | 7 +- Buildings/Fluid/AirFilters/Empirical.mo | 40 +++++------ 11 files changed, 92 insertions(+), 147 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo index 372d1b025f3..2b214637a70 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo @@ -9,35 +9,26 @@ model FiltrationEfficiency Buildings.Controls.OBC.CDL.Interfaces.RealInput mCon( final unit="kg") "Mass of the contaminant captured by the filter" - annotation (Placement( - transformation( - extent={{20,-20},{-20,20}}, - rotation=180, - origin={-120,0}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-120,0}))); + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y( final unit="1", final min=0, final max=1) "Filtration efficiency" - annotation (Placement(transformation(extent={{100,-80},{140,-40}}), - iconTransformation(extent={{100,-80},{140,-40}}))); + annotation (Placement(transformation(extent={{100,-80},{140,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput rat( final unit="1", final min=0, final max=1) "Relative mass of the contaminant captured by the filter" - annotation (Placement(transformation(extent={{100,40},{140,80}}), - iconTransformation(extent={{100,40},{140,80}}))); + annotation (Placement(transformation(extent={{100,40},{140,80}}))); equation rat = Buildings.Utilities.Math.Functions.smoothMin(x1=1, x2= mCon/mCon_nominal, deltaX=0.1); y = Buildings.Utilities.Math.Functions.polynomial(a=epsFun, x=rat); assert( y > 0 and y < 1, - "In " + getInstanceName() + ": The filter efficiency should be in the range of [0, 1], + "In " + getInstanceName() + ": The filter efficiency has to be in the range of [0, 1], check the filter efficiency curve.", level=AssertionLevel.error); diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo index 22c8b6122a8..11f9de2e972 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo @@ -8,28 +8,22 @@ model FlowCoefficientCorrection final min=0, final max=1) "Relative mass of the contaminant captured by the filter" - annotation (Placement( - transformation( - extent={{20,-20},{-20,20}}, - rotation=180, - origin={-120,0}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-120,0}))); + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y( final unit="1", final min=1) "Flow coefficient correction" - annotation (Placement(transformation(extent={{100,-20},{140,20}}), - iconTransformation(extent={{100,-20},{140,20}}))); + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + initial equation assert(b > 1, - "In " + getInstanceName() + ":Resistance coefficient should be larger than 1", + "In " + getInstanceName() + ": Resistance coefficient has to be greater than 1.", level=AssertionLevel.error); equation y = b^rat; - annotation (Dialog(group="Pressure"), - Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + +annotation (defaultComponentName="kCor", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,100},{100,-100}}, lineColor={28,108,200}, @@ -39,9 +33,8 @@ equation extent={{-100,140},{100,100}}, textColor={0,0,255}, textString="%name")}), - Diagram(coordinateSystem(preserveAspectRatio=false)), - defaultComponentName="kCor", - Documentation(info=" + Diagram(coordinateSystem(preserveAspectRatio=false)), +Documentation(info="

                This model calculates the flow coefficient of the filter by

                diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo index e1a0360c67d..43d29179296 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo @@ -6,31 +6,17 @@ model MassAccumulation parameter Real mCon_reset( final min = 0) "Initial contaminant mass of the filter after replacement"; - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uRep - "Replacing the filter when trigger becomes true" - annotation (Placement( - transformation( - extent={{20,-20},{-20,20}}, - rotation=180, - origin={-120,-60}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-120,-62}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput mCon_flow( final unit = "kg/s") "Contaminant mass flow rate" - annotation (Placement(transformation( - extent={{20,-20},{-20,20}}, - rotation=180, - origin={-120,60}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-120,60}))); + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uRep + "Replacing the filter when trigger becomes true" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput mCon( final unit = "kg") "Mass of the contaminant captured by the filter" - annotation (Placement(transformation(extent={{100,-20},{140,20}}), - iconTransformation(extent={{100,-20},{140,20}}))); + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Reals.IntegratorWithReset intWitRes "Calculate the mass of contaminant" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); @@ -40,48 +26,39 @@ model MassAccumulation annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); Modelica.Blocks.Logical.Greater greater "Check if the filter is full" - annotation (Placement(transformation(extent={{40,-48},{60,-28}}))); + annotation (Placement(transformation(extent={{40,40},{60,60}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1( final k=mCon_nominal) "Constant" - annotation (Placement(transformation(extent={{0,40},{20,60}}))); + annotation (Placement(transformation(extent={{-20,40},{0,60}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes( - message="In " + getInstanceName() + ":the filter needs to be replaced") - "Error message when the filter is full, i.e., the mass captured by the filter is larger than the nominal value" - annotation (Placement(transformation(extent={{72,-48},{92,-28}}))); + message="In " + getInstanceName() + ": The filter needs to be replaced.") + "Warning message when the filter is full" + annotation (Placement(transformation(extent={{72,40},{92,60}}))); + equation connect(intWitRes.u, mCon_flow) - annotation (Line(points={{-12,0},{-40,0},{-40,60}, - {-120,60}}, color={0,0,127})); + annotation (Line(points={{-12,0},{-120,0}}, color={0,0,127})); connect(intWitRes.y, mCon) annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); connect(con.y, intWitRes.y_reset_in) - annotation (Line(points={{-58,-20},{-20,-20}, - {-20,-8},{-12,-8}},color={0,0,127})); + annotation (Line(points={{-58,-20},{-20,-20}, {-20,-8},{-12,-8}}, color={0,0,127})); connect(intWitRes.trigger, uRep) annotation (Line(points={{0,-12},{0,-60},{-120,-60}}, color={255,0,255})); connect(assMes.u, greater.y) - annotation (Line(points={{70,-38},{61,-38}}, color={255,0,255})); + annotation (Line(points={{70,50},{61,50}}, color={255,0,255})); connect(greater.u2, intWitRes.y) - annotation (Line(points={{38,-46},{20,-46},{20,0}, - {12,0}}, color={0,0,127})); + annotation (Line(points={{38,42},{20,42},{20,0},{12,0}}, color={0,0,127})); connect(con1.y, greater.u1) - annotation (Line(points={{22,50},{30,50},{30,-38}, - {38,-38}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,100},{100,-100}}, - lineColor={28,108,200}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Text( - extent={{-100,140},{100,100}}, - textColor={0,0,255}, - textString="%name")}), - Diagram(coordinateSystem( - preserveAspectRatio=false)), - defaultComponentName="masAcc", - Documentation(info=" + annotation (Line(points={{2,50},{38,50}}, color={0,0,127})); + +annotation (defaultComponentName="masAcc", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle(extent={{-100,100},{100,-100}}, lineColor={28,108,200}, + fillColor={255,255,255}, fillPattern=FillPattern.Solid), + Text(extent={{-100,140},{100,100}}, textColor={0,0,255}, textString="%name")}), + Diagram(coordinateSystem(preserveAspectRatio=false)), +Documentation(info="

                This model mimics the process for a filter to capture the contaminants. The mass of the contaminants, mCon, increases by time. diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo index f0d0f826efe..7c1bdc1505b 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -4,25 +4,15 @@ model MassTransfer extends Buildings.Fluid.Interfaces.PartialTwoPortInterface; Buildings.Controls.OBC.CDL.Interfaces.RealInput C_inflow[Medium.nC] "Input trace substance rate" - annotation (Placement(transformation( - extent={{-20,-20},{20,20}}, - rotation=270, - origin={0,120}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=270, - origin={0,120}))); + annotation (Placement(transformation(extent={{-20,-20},{20,20}}, + rotation=-90, origin={0,120}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput eps( final unit = "1", final min = 0, final max= 1) "Mass transfer coefficient" - annotation (Placement(transformation( - extent={{20,-20},{-20,20}}, - rotation=180, - origin={-120,60}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-120,60}))); + annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + equation if allowFlowReversal then port_b.C_outflow =inStream(port_a.C_outflow) - eps*C_inflow; @@ -43,19 +33,16 @@ equation if not allowFlowReversal then assert(m_flow > -m_flow_small, - "In " + getInstanceName() + ":Reverting flow occurs even though allowFlowReversal is false", + "In " + getInstanceName() + ": Reverting flow occurs even though allowFlowReversal is false.", level=AssertionLevel.error); end if; - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,100},{100,-100}}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None)}), Diagram( - coordinateSystem(preserveAspectRatio=false)), - defaultComponentName="masTra", - Documentation(info=" +annotation (defaultComponentName="masTra", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle(extent={{-100,100},{100,-100}}, fillColor={255,255,255}, + fillPattern=FillPattern.Solid, pattern=LinePattern.None)}), + Diagram(coordinateSystem(preserveAspectRatio=false)), +Documentation(info="

                This model sets the trace substance of the medium that leaves port_b by diff --git a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo index a3a98dfe80a..55970d8d372 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo @@ -12,13 +12,9 @@ model PressureDropWithVaryingFlowCoefficient final unit = "1", final min = 1) "Flow coefficient" - annotation (Placement(transformation( - extent={{-20,-20},{20,20}}, - rotation=270, - origin={0,120}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=270, - origin={0,120}))); + annotation (Placement(transformation(extent={{-20,-20},{20,20}}, + rotation=-90, origin={0,120}))); + protected final parameter Boolean computeFlowResistance=(dp_nominal_pos > Modelica.Constants.eps) "Flag to enable/disable computation of flow resistance" diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo index 5ba92d99700..b2e4283b699 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo @@ -16,10 +16,11 @@ model FiltrationEfficiency equation connect(mCon.y, eps.mCon) annotation (Line(points={{-39,0},{-12,0}}, color={0,0,127})); - annotation (experiment(Tolerance=1e-6, StopTime=1.0), -__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mos" + +annotation (experiment(Tolerance=1e-6, StopTime=1.0), + __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mos" "Simulate and plot"), - Documentation(info=" +Documentation(info="

                The input mass of the contaminant captured by the filter mCon changes from 0 to 1.2kg/s from 0 to 1 second. diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo index 7ce93420a46..de1e33fc0ee 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo @@ -15,10 +15,11 @@ model FlowCoefficientCorrection equation connect(rat.y, kCor.rat) annotation (Line(points={{-39,0},{-12,0}}, color={0,0,127})); - annotation (experiment(Tolerance=1e-6, StopTime=1.0), -__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mos" + +annotation (experiment(Tolerance=1e-6, StopTime=1.0), + __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mos" "Simulate and plot"), - Documentation(info=" +Documentation(info="

                The input relative mass of the contaminant captured by the filter rat changes from 0 to 1 from 0 to 1 second. diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo index 1e8abc3d02d..c418f33ce62 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo @@ -20,15 +20,14 @@ model MassAccumulation annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); equation connect(RepSig.y, masAcc.uRep) - annotation (Line(points={{-38,-20},{-20,-20},{-20,-6.2}, - {-12,-6.2}}, color={255,0,255})); + annotation (Line(points={{-38,-20},{-20,-20},{-20,-6},{-12,-6}}, color={255,0,255})); connect(mCon_flow.y, masAcc.mCon_flow) - annotation (Line(points={{-39,30},{-20,30}, - {-20,6},{-12,6}}, color={0,0,127})); - annotation (experiment(Tolerance=1e-6, StopTime=1.0), -__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mos" + annotation (Line(points={{-39,30},{-20,30},{-20,0},{-12,0}}, color={0,0,127})); + +annotation (experiment(Tolerance=1e-6, StopTime=1.0), + __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mos" "Simulate and plot"), - Documentation(revisions=" +Documentation(revisions="

                • December 22, 2023, by Sen Huang:
                  diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo index ed263a237e8..20ca7a93fbb 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo @@ -55,10 +55,11 @@ equation annotation (Line(points={{-30,0},{-10,0}}, color={0,127,255})); connect(C_in.port_a, sou.ports[1]) annotation (Line(points={{-50,0},{-60,0}}, color={0,127,255})); - annotation (experiment(Tolerance=1e-6, StopTime=30), -__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mos" + +annotation (experiment(Tolerance=1e-6, StopTime=30), + __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mos" "Simulate and plot"), - Documentation(info=" +Documentation(info="

                  From 0 to 5 seconds, the testing case is warming-up and the input mass transfer efficiency eps is fixed at 0.9. diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo index e1858fc29b5..7500449fd8b 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mo @@ -59,10 +59,11 @@ equation annotation (Line(points={{10,40},{18,40},{18,1},{30,1}}, color={0,127,255})); connect(kCor.y, resVarying.kCor) annotation (Line(points={{-59,72},{0,72},{0,52}}, color={0,0,127})); - annotation (experiment(Tolerance=1e-6, StopTime=1.0), -__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mos" + +annotation (experiment(Tolerance=1e-6, StopTime=1.0), + __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/PressureDropWithVaryingFlowCoefficient.mos" "Simulate and plot"), - Documentation(info=" +Documentation(info="

                  Before 0.5 seconds, the flow rates of the resFixed (pressure resistance with a constant flow coefficient) and the resVarying diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index 012c1faca4f..2e1bc751664 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -1,6 +1,6 @@ within Buildings.Fluid.AirFilters; model Empirical "Empirical air filter model" - replaceable package Medium = + replaceable package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Air"; parameter Real mCon_nominal( @@ -85,32 +85,31 @@ initial equation equation connect(masAcc.mCon, epsCal.mCon) - annotation (Line(points={{-18,80},{-2,80}}, color={0,0,127})); + annotation (Line(points={{-18,80},{-2,80}}, color={0,0,127})); connect(res.port_a, port_a) annotation (Line(points={{-30,0},{-100,0}}, color={0,127,255})); connect(res.port_b, masTra.port_a) - annotation (Line(points={{-10,0},{50,0}},color={0,127,255})); + annotation (Line(points={{-10,0},{50,0}}, color={0,127,255})); connect(masTra.port_b, port_b) annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); connect(masAcc.uRep, uRep) - annotation (Line(points={{-42,73.8},{-42,74},{-70,74}, - {-70,60},{-120,60}}, color={255,0,255})); + annotation (Line(points={{-42,74},{-42,74},{-70,74},{-70,60},{-120,60}}, + color={255,0,255})); connect(traSubFlo.y, masAcc.mCon_flow) - annotation (Line(points={{-71,80},{-60,80}, - {-60,86},{-42,86}}, color={0,0,127})); + annotation (Line(points={{-71,80},{-60,80},{-60,80},{-42,80}}, color={0,0,127})); connect(epsCal.y, masTra.eps) annotation (Line(points={{22,74},{40,74},{40,6},{48,6}}, color={0,0,127})); connect(masTra.C_inflow[1], traSubFlo.y) - annotation (Line(points={{60,12},{60,28}, - {-60,28},{-60,80},{-71,80}}, color={0,0,127})); + annotation (Line(points={{60,12},{60,28},{-60,28},{-60,80},{-71,80}}, + color={0,0,127})); connect(epsCal.rat, kCor.rat) annotation (Line(points={{22,86},{40,86},{40,80},{58,80}}, color={0,0,127})); connect(kCor.y, res.kCor) annotation (Line(points={{82,80},{90,80},{90,50},{-20,50},{-20,12}}, - color={0,0,127})); + color={0,0,127})); connect(epsCal.y, eps) annotation (Line(points={{22,74},{40,74},{40,40},{120,40}}, - color={0,0,127})); + color={0,0,127})); annotation (defaultComponentName="airFil", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ @@ -285,10 +284,7 @@ Documentation(info="

                  An empirical model of air filters, which considers the impacts of the contaminant accumulation on the pressure drop and the filtration efficiency. -

                  -

                  -This model does not require detailed information of filters, such as filter type -or geometric data. Instead, its dynamic characteristics are defined by three +The dynamic characteristics of the filters are defined by three parameters, mCon_nominal,epsFun, and b.

                    @@ -313,18 +309,20 @@ Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency and Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection.

                    -The input boolean flag, uRep, triggers the filter replacement: -
                    +The input boolean flag, uRep, triggers the filter replacement. When uRep changes from false to true, the mass of the captured contaminant becomes 0.

                    Note: -

                    +

                      +
                    • A warning will be triggered when the captured contaminant mass becomes greater than the maximum contaminant mass (mCon_nominal). -
                      -In addition, the extraPropertiesNames has to be defined in the medium model. -

                      +
                    • +
                    • +The extraPropertiesNames has to be defined in the medium model. +
                    • +
                    ", revisions="
                    • From ed0bd65b27f3be95f430c56c21fcd1703d27c5e1 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 19 Apr 2024 12:23:18 -0700 Subject: [PATCH 20/47] added variable in reference results --- .../BaseClasses/FlowCoefficientCorrection.mo | 2 +- Buildings/Fluid/AirFilters/Empirical.mo | 11 +++++------ .../Buildings_Fluid_AirFilters_Examples_Empirical.txt | 3 ++- .../Dymola/Fluid/AirFilters/Examples/Empirical.mos | 10 ++++++---- .../Buildings.Fluid.AirFilters.Examples.Empirical.mos | 3 ++- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo index 11f9de2e972..c3070756b77 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo @@ -22,7 +22,7 @@ initial equation equation y = b^rat; -annotation (defaultComponentName="kCor", +annotation (defaultComponentName="coeCor", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,100},{100,-100}}, diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index 2e1bc751664..0a77eec0522 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -66,7 +66,7 @@ protected y(unit="kg/s") = inStream(port_a.C_outflow[1])*port_a.m_flow) "Trace substances flow rate" annotation (Placement(transformation(extent={{-92,70},{-72,90}}))); - Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection kCor( + Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection coeCor( final b=b) "Flow coefficient correction" annotation (Placement(transformation(extent={{60,70},{80,90}}))); @@ -102,11 +102,10 @@ equation connect(masTra.C_inflow[1], traSubFlo.y) annotation (Line(points={{60,12},{60,28},{-60,28},{-60,80},{-71,80}}, color={0,0,127})); - connect(epsCal.rat, kCor.rat) - annotation (Line(points={{22,86},{40,86},{40,80},{58,80}}, color={0,0,127})); - connect(kCor.y, res.kCor) - annotation (Line(points={{82,80},{90,80},{90,50},{-20,50},{-20,12}}, - color={0,0,127})); + connect(epsCal.rat, coeCor.rat) annotation (Line(points={{22,86},{40,86},{40,80}, + {58,80}}, color={0,0,127})); + connect(coeCor.y, res.kCor) annotation (Line(points={{82,80},{90,80},{90,50},{ + -20,50},{-20,12}}, color={0,0,127})); connect(epsCal.y, eps) annotation (Line(points={{22,74},{40,74},{40,40},{120,40}}, color={0,0,127})); diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_Empirical.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_Empirical.txt index 32a60bfe364..a14065c6822 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_Empirical.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_Empirical.txt @@ -1,4 +1,4 @@ -last-generated=2024-04-10 +last-generated=2024-04-19 statistics-simulation= { "linear": " ", @@ -12,3 +12,4 @@ C_out.C=[0e+00, 1.408941857516766e-02, 3.399187326431274e-02, 5.72541318833828e- fil.eps=[9.800000190734863e-01, 9.550567865371704e-01, 9.302265048027039e-01, 9.055081605911255e-01, 8.809006810188293e-01, 8.56403112411499e-01, 8.320145010948181e-01, 8.077337741851807e-01, 7.835601568222046e-01, 7.594925761222839e-01, 7.355301380157471e-01, 7.116719484329224e-01, 6.879170536994934e-01, 6.642646193504333e-01, 6.407137513160706e-01, 6.172635555267334e-01, 5.939132571220398e-01, 5.706619024276733e-01, 5.475086569786072e-01, 5.240578055381775e-01, 4.972604513168335e-01, 4.793534576892853e-01, 4.759936332702637e-01, 4.798731207847595e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 9.576082825660706e-01, 9.354315400123596e-01, 9.134676456451416e-01, 8.917143940925598e-01, 8.701695203781128e-01, 8.488310575485229e-01, 8.276968002319336e-01, 8.067647814750671e-01, 7.86033034324646e-01, 7.654995918273926e-01, 7.451624274253845e-01, 7.250197529792786e-01, 7.050696611404419e-01, 6.853103041648865e-01, 6.65739893913269e-01, 6.463567614555359e-01, 6.27159059047699e-01, 6.081451177597046e-01, 5.89313268661499e-01, 5.706619024276733e-01, 5.521892905235291e-01, 5.338940024375916e-01, 5.138106942176819e-01, 4.934934973716736e-01, 4.800394177436829e-01, 4.756554365158081e-01, 4.778833091259003e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01, 4.799999892711639e-01] fil.uRep=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] C_inflow.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.950000047683716e-01, 9.900000095367432e-01, 9.850000143051147e-01, 9.800000190734863e-01, 9.750000238418579e-01, 9.700000286102295e-01, 9.649999737739563e-01, 9.599999785423279e-01, 9.549999833106995e-01, 9.49999988079071e-01, 9.449999928474426e-01, 9.399999976158142e-01, 9.350000023841858e-01, 9.300000071525574e-01, 9.25000011920929e-01, 9.200000166893005e-01, 9.150000214576721e-01, 9.100000262260437e-01, 9.049999713897705e-01, 8.999999761581421e-01, 8.949999809265137e-01, 8.899999856948853e-01, 8.849999904632568e-01, 8.799999952316284e-01, 8.75e-01, 8.700000047683716e-01, 8.650000095367432e-01, 8.600000143051147e-01, 8.550000190734863e-01, 8.500000238418579e-01, 8.450000286102295e-01, 8.399999737739563e-01, 8.349999785423279e-01, 8.299999833106995e-01, 8.24999988079071e-01, 8.199999928474426e-01, 8.149999976158142e-01, 8.100000023841858e-01, 8.050000071525574e-01, 8.00000011920929e-01, 7.950000166893005e-01, 7.900000214576721e-01, 7.850000262260437e-01, 7.799999713897705e-01, 7.749999761581421e-01, 7.699999809265137e-01, 7.649999856948853e-01, 7.599999904632568e-01, 7.549999952316284e-01, 7.5e-01, 7.450000047683716e-01, 7.400000095367432e-01, 7.350000143051147e-01, 7.300000190734863e-01, 7.250000238418579e-01, 7.200000286102295e-01, 7.149999737739563e-01, 7.099999785423279e-01, 7.049999833106995e-01, 6.99999988079071e-01] +C_in.port_a.m_flow=[1e+00, 9.954626560211182e-01, 9.90966260433197e-01, 9.865103363990784e-01, 9.820942878723145e-01, 9.777176380157471e-01, 9.733797907829285e-01, 9.690802693367004e-01, 9.6481853723526e-01, 9.605941772460938e-01, 9.564065933227539e-01, 9.522554278373718e-01, 9.481400847434998e-01, 9.44060206413269e-01, 9.400152564048767e-01, 9.360048174858093e-01, 9.320284724235535e-01, 9.280857443809509e-01, 9.241762161254883e-01, 9.202332496643066e-01, 9.157482385635376e-01, 9.127632975578308e-01, 9.12204384803772e-01, 9.128497838973999e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.959258437156677e-01, 9.919071197509766e-01, 9.879429936408997e-01, 9.840324521064758e-01, 9.80174720287323e-01, 9.7636878490448e-01, 9.726138114929199e-01, 9.689090847969055e-01, 9.652536511421204e-01, 9.616467952728271e-01, 9.58087682723999e-01, 9.545756578445435e-01, 9.511098265647888e-01, 9.476895928382874e-01, 9.443141222000122e-01, 9.409828782081604e-01, 9.376950263977051e-01, 9.344499707221985e-01, 9.312471151351929e-01, 9.280857443809509e-01, 9.249652624130249e-01, 9.21885073184967e-01, 9.185156226158142e-01, 9.151195287704468e-01, 9.128775000572205e-01, 9.12148118019104e-01, 9.125186800956726e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01, 9.128709435462952e-01] diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos index 826b1d87546..aa75cc8e5c0 100644 --- a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos @@ -1,5 +1,7 @@ simulateModel("Buildings.Fluid.AirFilters.Examples.Empirical", stopTime=50, method="Cvode", tolerance=1e-06, resultFile="Generic"); -createPlot(id=1, position={35, -11, 642, 588}, y={"C_in.C", "C_out.C"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); -createPlot(id=1, position={35, -11, 642, 588}, y={"fil.eps"}, range={0.0, 1.0, 0.9, 1.0}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={35, -11, 642, 588}, y={"fil.uRep"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={35, -11, 642, 588}, y={"C_inflow.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={35, 10, 1013, 993}, y={"C_in.C", "C_out.C"}, range={0.0, 50.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={35, 10, 1013, 993}, y={"fil.eps"}, range={0.0, 50.0, 0.4, 1.2}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s", displayUnits={"1"}); +createPlot(id=1, position={35, 10, 1013, 993}, y={"fil.uRep"}, range={0.0, 50.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={35, 10, 1013, 993}, y={"C_inflow.y"}, range={0.0, 50.0, 0.6, 1.2}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={35, 10, 1013, 993}, y={"C_in.port_a.m_flow"}, range={0.0, 50.0, 0.9, 1.05}, grid=true, subPlot=105, colors={{28,108,200}}, timeUnit="s", displayUnits={"kg/s"}); + diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Empirical.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Empirical.mos index 8a13eff1779..ef1b9247f86 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Empirical.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Empirical.mos @@ -4,5 +4,6 @@ compareVars := "C_out.C", "fil.eps", "fil.uRep", - "C_inflow.y" + "C_inflow.y", + "C_in.port_a.m_flow" }; From 2a98e8a3b0e60b4d18feb64a579b951a8226cca0 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Sun, 25 Aug 2024 23:32:19 -0400 Subject: [PATCH 21/47] refactoring and adding an example --- .../filtrationEfficiencyParameters.mo | 27 ++ .../BaseClasses/Characteristics/package.mo | 4 + .../BaseClasses/Characteristics/package.order | 1 + .../AirFilters/BaseClasses/Data/Generic.mo | 46 +++ .../AirFilters/BaseClasses/Data/package.mo | 4 + .../AirFilters/BaseClasses/Data/package.order | 1 + .../BaseClasses/FiltrationEfficiency.mo | 55 ++- .../BaseClasses/FlowCoefficientCorrection.mo | 25 +- .../BaseClasses/MassAccumulation.mo | 22 +- .../AirFilters/BaseClasses/MassTransfer.mo | 77 ++++- .../Validation/FiltrationEfficiency.mo | 12 +- .../Validation/FlowCoefficientCorrection.mo | 8 +- .../Validation/MassAccumulation.mo | 23 +- .../BaseClasses/Validation/MassTransfer.mo | 124 ++++--- .../AirFilters/BaseClasses/package.order | 2 + Buildings/Fluid/AirFilters/Empirical.mo | 129 +++---- .../Fluid/AirFilters/Examples/Empirical.mo | 89 ----- .../Fluid/AirFilters/Examples/SpaceCooling.mo | 324 ++++++++++++++++++ .../Fluid/AirFilters/Examples/package.mo | 12 +- .../Fluid/AirFilters/Examples/package.order | 2 +- .../Fluid/AirFilters/Validation/Empirical.mo | 118 +++++++ .../Fluid/AirFilters/Validation/package.mo | 12 + .../Fluid/AirFilters/Validation/package.order | 1 + Buildings/Fluid/AirFilters/package.order | 1 + 24 files changed, 821 insertions(+), 298 deletions(-) create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/Characteristics/filtrationEfficiencyParameters.mo create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/Characteristics/package.mo create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/Characteristics/package.order create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/Data/package.mo create mode 100644 Buildings/Fluid/AirFilters/BaseClasses/Data/package.order delete mode 100644 Buildings/Fluid/AirFilters/Examples/Empirical.mo create mode 100644 Buildings/Fluid/AirFilters/Examples/SpaceCooling.mo create mode 100644 Buildings/Fluid/AirFilters/Validation/Empirical.mo create mode 100644 Buildings/Fluid/AirFilters/Validation/package.mo create mode 100644 Buildings/Fluid/AirFilters/Validation/package.order diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/filtrationEfficiencyParameters.mo b/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/filtrationEfficiencyParameters.mo new file mode 100644 index 00000000000..5126fb6b3c2 --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/filtrationEfficiencyParameters.mo @@ -0,0 +1,27 @@ +within Buildings.Fluid.AirFilters.BaseClasses.Characteristics; +record filtrationEfficiencyParameters + "Record for filteration efficiency vs. relative mass of the contaminant captured by the filter" + extends Modelica.Icons.Record; + parameter Real rat[:,:](each max=1, each min=0) + "Relative mass of the contaminant captured by the filter"; + parameter Real eps[:,:](each max=1, each min=0) + "Filteration efficiency"; + + annotation (Documentation(info=" +

                      +Data record that describes the relative mass of the contaminant captured by the filter rat versus +the filteration efficiency eps. +The rat must be increasing, +i.e.,rat[i] < rat[i+1]. +Both vectors, rat and eps +must have the same size. +

                      +", revisions=" +
                        +
                      • +June 27, 2023, by Sen Huang:
                        +First implementation. +
                      • +
                      +")); +end filtrationEfficiencyParameters; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/package.mo b/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/package.mo new file mode 100644 index 00000000000..e9d0ab9fc4c --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/package.mo @@ -0,0 +1,4 @@ +within Buildings.Fluid.AirFilters.BaseClasses; +package Characteristics "Functions for filter characteristics" + +end Characteristics; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/package.order b/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/package.order new file mode 100644 index 00000000000..dd311205de6 --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/package.order @@ -0,0 +1 @@ +filtrationEfficiencyParameters diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo b/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo new file mode 100644 index 00000000000..db50e8b5147 --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo @@ -0,0 +1,46 @@ +within Buildings.Fluid.AirFilters.BaseClasses.Data; +record Generic "Generic data record for air filters" + extends Modelica.Icons.Record; + parameter Real mCon_nominal( + final unit = "kg") + "Maximum mass of the contaminant can be captured by the filter"; + parameter String substanceName[:] = {"CO2"} + "Name of trace substance"; + parameter + Buildings.Fluid.AirFilters.BaseClasses.Characteristics.filtrationEfficiencyParameters + filterationEfficiencyParameters + "Filteration efficiency vs. relative mass of the contaminant"; + parameter Real b = 1.1 + "Resistance coefficient"; + annotation (Documentation(revisions=" +
                        +
                      • +June 27, 2023, by Sen Huang:
                        +First implementation. +
                      • +
                      +", info=" +

                      +Record containing performance parameters for air filters. +

                      +

                      +It is used as a template of performance data +for the variable-speed wheel models in + +Buildings.Fluid.AirFilters. +

                      +

                      +The record contains one dataset: +relative mass of the contaminant +(see +Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency) +versus filteration efficiency. +

                      +

                      +It also contains a parameter that defines how the pressure drop +changes by the relative mass of the contaminant +(see +Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection). +

                      +")); +end Generic; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Data/package.mo b/Buildings/Fluid/AirFilters/BaseClasses/Data/package.mo new file mode 100644 index 00000000000..17b631912ad --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/Data/package.mo @@ -0,0 +1,4 @@ +within Buildings.Fluid.AirFilters.BaseClasses; +package Data "Performance data for air filters" +extends Modelica.Icons.MaterialPropertiesPackage; +end Data; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Data/package.order b/Buildings/Fluid/AirFilters/BaseClasses/Data/package.order new file mode 100644 index 00000000000..8470d611953 --- /dev/null +++ b/Buildings/Fluid/AirFilters/BaseClasses/Data/package.order @@ -0,0 +1 @@ +Generic diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo index 2b214637a70..7afb24602e6 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo @@ -1,37 +1,37 @@ within Buildings.Fluid.AirFilters.BaseClasses; model FiltrationEfficiency "Component that calculates the filtration efficiency" - parameter Real mCon_nominal( - final unit="kg") - "Maximum mass of the contaminant can be captured by the filter"; - parameter Real epsFun[:] - "Filtration efficiency curve"; + parameter Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per + "Record with performance dat" + annotation (Placement(transformation(extent={{20,62},{40,82}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput mCon( final unit="kg") "Mass of the contaminant captured by the filter" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput y( - final unit="1", - final min=0, - final max=1) - "Filtration efficiency" + Buildings.Controls.OBC.CDL.Interfaces.RealOutput y[size(per.substanceName, 1)]( + each final unit="1", + each final min=0, + each final max=1) "Filtration efficiency" annotation (Placement(transformation(extent={{100,-80},{140,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput rat( - final unit="1", - final min=0, - final max=1) + each final unit="1", + each final min=0, + each final max=1) "Relative mass of the contaminant captured by the filter" annotation (Placement(transformation(extent={{100,40},{140,80}}))); - equation - rat = Buildings.Utilities.Math.Functions.smoothMin(x1=1, x2= mCon/mCon_nominal, deltaX=0.1); - y = Buildings.Utilities.Math.Functions.polynomial(a=epsFun, x=rat); - assert( - y > 0 and y < 1, - "In " + getInstanceName() + ": The filter efficiency has to be in the range of [0, 1], - check the filter efficiency curve.", - level=AssertionLevel.error); - + rat = Buildings.Utilities.Math.Functions.smoothMin( + x1=1, + x2= mCon/per.mCon_nominal, + deltaX=0.1) + "Calculate the relative mass of the contaminant captured by the filter"; + for i in 1:size(per.substanceName, 1) loop + y[i] = Buildings.Utilities.Math.Functions.smoothInterpolation( + x=rat, + xSup=per.filterationEfficiencyParameters.rat[i], + ySup=per.filterationEfficiencyParameters.eps[i]) + "Calculate the filtration efficiency"; + end for; annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,100},{100,-100}}, @@ -46,13 +46,10 @@ annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ defaultComponentName="eps", Documentation(info="

                      -This model calculates the filtration efficiency, eps, by -

                      -

                      -eps = epsFun1 + epsFun2rat + epsFun3 rat2 + ..., -

                      -

                      -where the coefficients epsFuni are declared by the parameter epsFun; +This model calculates the filtration efficiency, eps, based on the cubic hermite spline interpolation of +the filter dataset (see + +Buildings.Fluid.AirFilters.BaseClasses.Characteristics.filterationEfficiencyParameters).

                      The rat is the relative mass of the contaminant captured by the filter diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo index c3070756b77..ea7fe960049 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo @@ -1,26 +1,27 @@ within Buildings.Fluid.AirFilters.BaseClasses; model FlowCoefficientCorrection "Component that calculates the flow coefficient correction factor" - parameter Real b - "Resistance coefficient"; + parameter Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per + "Record with performance dat" + annotation (Placement(transformation(extent={{20,62},{40,82}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput rat( - final unit="1", - final min=0, - final max=1) + each final unit="1", + each final min=0, + each final max=1) "Relative mass of the contaminant captured by the filter" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y( - final unit="1", - final min=1) + each final unit="1", + each final min=1) "Flow coefficient correction" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); - initial equation - assert(b > 1, - "In " + getInstanceName() + ": Resistance coefficient has to be greater than 1.", - level=AssertionLevel.error); + assert(per.b - 1.0 > 0.01, + "In " + getInstanceName() + ":The resistance coefficient should be larger + than 1") + "Validate the resistance coefficient"; equation - y = b^rat; + y = per.b^rat; annotation (defaultComponentName="coeCor", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo index 43d29179296..59b753056c9 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo @@ -1,13 +1,17 @@ within Buildings.Fluid.AirFilters.BaseClasses; model MassAccumulation "Component that mimics the accumulation of the contaminants" - parameter Real mCon_nominal - "Maximum mass of the contaminant captured by the filter"; + parameter Integer nin( + min=1)=1 + "Number of input connections"; + parameter Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per + "Record with performance dat" + annotation (Placement(transformation(extent={{20,62},{40,82}}))); parameter Real mCon_reset( final min = 0) "Initial contaminant mass of the filter after replacement"; - Buildings.Controls.OBC.CDL.Interfaces.RealInput mCon_flow( - final unit = "kg/s") + Buildings.Controls.OBC.CDL.Interfaces.RealInput mCon_flow[nin]( + each final unit="kg/s") "Contaminant mass flow rate" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uRep @@ -28,7 +32,7 @@ model MassAccumulation "Check if the filter is full" annotation (Placement(transformation(extent={{40,40},{60,60}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1( - final k=mCon_nominal) + final k=per.mCon_nominal) "Constant" annotation (Placement(transformation(extent={{-20,40},{0,60}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes( @@ -36,9 +40,9 @@ model MassAccumulation "Warning message when the filter is full" annotation (Placement(transformation(extent={{72,40},{92,60}}))); + Controls.OBC.CDL.Reals.MultiSum mulSum(nin=nin) "Summation of the inputs" + annotation (Placement(transformation(extent={{-52,-10},{-32,10}}))); equation - connect(intWitRes.u, mCon_flow) - annotation (Line(points={{-12,0},{-120,0}}, color={0,0,127})); connect(intWitRes.y, mCon) annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); connect(con.y, intWitRes.y_reset_in) @@ -52,6 +56,10 @@ equation connect(con1.y, greater.u1) annotation (Line(points={{2,50},{38,50}}, color={0,0,127})); + connect(mulSum.y, intWitRes.u) + annotation (Line(points={{-30,0},{-12,0}}, color={0,0,127})); + connect(mulSum.u, mCon_flow) + annotation (Line(points={{-54,0},{-120,0}}, color={0,0,127})); annotation (defaultComponentName="masAcc", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle(extent={{-100,100},{100,-100}}, lineColor={28,108,200}, diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo index 7c1bdc1505b..2d78e74f730 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -2,25 +2,72 @@ within Buildings.Fluid.AirFilters.BaseClasses; model MassTransfer "Component that sets the trace substance at port_b based on an input trace substance mass flow rate and an input mass transfer efficiency" extends Buildings.Fluid.Interfaces.PartialTwoPortInterface; - Buildings.Controls.OBC.CDL.Interfaces.RealInput C_inflow[Medium.nC] - "Input trace substance rate" - annotation (Placement(transformation(extent={{-20,-20},{20,20}}, - rotation=-90, origin={0,120}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput eps( - final unit = "1", - final min = 0, - final max= 1) + parameter String substanceName[:] = {"CO2"} + "Name of trace substance"; + Buildings.Controls.OBC.CDL.Interfaces.RealInput eps[size(substanceName,1)]( + each final unit = "1", + each final min = 0, + each final max= 1) "Mass transfer coefficient" annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput mCon_flow[size(substanceName,1)]( + each final unit = "kg/s") + "Contaminant mass flow rate" + annotation (Placement(transformation(extent={{100,40},{140,80}}))); + parameter Real s1[:,:]= { + {if (Modelica.Utilities.Strings.isEqual(string1=Medium.extraPropertiesNames[i], + string2=substanceName[j], + caseSensitive=false)) + then 1 else 0 for i in 1:Medium.nC} + for j in 1:size(substanceName,1)} + "Vector with zero everywhere except where species is" + annotation(Evaluate=true); + parameter Real s2[:,:]= { + {if (Modelica.Utilities.Strings.isEqual(string1=Medium.extraPropertiesNames[i], + string2=substanceName[j], + caseSensitive=false)) + then 1 else 0 for i in 1:size(substanceName,1)} + for j in 1:Medium.nC} + "Vector with zero everywhere except where species is" + annotation(Evaluate=true); +initial equation + assert(abs(sum(s1) - size(substanceName,1)) < 0.1, + "In " + getInstanceName() + ":Some specified trace substances are + not present in medium '" + Medium.mediumName + "'.\n" + + "Check sensor parameter and medium model.", + level = AssertionLevel.warning) + "Check if all the specificed substances are included in the medium"; equation - if allowFlowReversal then - port_b.C_outflow =inStream(port_a.C_outflow) - eps*C_inflow; - port_a.C_outflow = inStream(port_a.C_outflow); - else - port_b.C_outflow = inStream(port_a.C_outflow); - port_a.C_outflow = inStream(port_b.C_outflow); - end if; + // Modify the substances individually. + for i in 1:Medium.nC loop + if max(s2[i]) > 0.9 then + for j in 1:size(substanceName,1) loop + if (Modelica.Utilities.Strings.isEqual(string1=Medium.extraPropertiesNames[i], + string2=substanceName[j], + caseSensitive=false)) then + port_b.C_outflow[i] =inStream(port_a.C_outflow[i])*(1 - eps[j]); + port_a.C_outflow[i] = inStream(port_a.C_outflow[i]); + end if; + end for; + else + port_b.C_outflow[i] = inStream(port_a.C_outflow[i]); + port_a.C_outflow[i] = inStream(port_b.C_outflow[i]); + end if; + end for; + for i in 1:size(substanceName,1) loop + if max(s1[i]) > 0.9 then + for j in 1:Medium.nC loop + if (Modelica.Utilities.Strings.isEqual(string1=Medium.extraPropertiesNames[j], + string2=substanceName[i], + caseSensitive=false)) then + mCon_flow[i] = inStream(port_a.C_outflow[j])* eps[i]; + end if; + end for; + else + mCon_flow[i] = 0; + end if; + end for; // Mass balance (no storage). port_a.Xi_outflow = inStream(port_b.Xi_outflow); port_b.Xi_outflow = inStream(port_a.Xi_outflow); diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo index b2e4283b699..541ea75e0f4 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo @@ -3,19 +3,23 @@ model FiltrationEfficiency "Validation model for the calculation of the filtration efficiency" extends Modelica.Icons.Example; Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency eps( - mCon_nominal=1, - epsFun={0.98,-0.1}) + per=per) "Filtration efficiency" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); Modelica.Blocks.Sources.Ramp mCon( duration=1, height=1.2, offset=0) "Mass of the contaminant captured by the filter" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + parameter Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per( + mCon_nominal=1, + filterationEfficiencyParameters(rat={{0,0.5,1}}, eps={{0.7,0.6,0.5}})) + "Performance dataset" + annotation (Placement(transformation(extent={{-60,62},{-40,82}}))); equation connect(mCon.y, eps.mCon) - annotation (Line(points={{-39,0},{-12,0}}, color={0,0,127})); + annotation (Line(points={{-39,0},{-10,0}}, color={0,0,127})); annotation (experiment(Tolerance=1e-6, StopTime=1.0), __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mos" diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo index de1e33fc0ee..e5c5ff87979 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo @@ -8,10 +8,14 @@ model FlowCoefficientCorrection offset=0) "Relative mass of the contaminant captured by the filter" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection kCor( - b=1.2) + Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection kCor(per=per) "Flow coefficient correction" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + parameter Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per( + mCon_nominal=1, filterationEfficiencyParameters(rat={{0,0.5,1}}, eps={{ + 0.7,0.6,0.5}})) + "Performance dataset" + annotation (Placement(transformation(extent={{-60,66},{-40,86}}))); equation connect(rat.y, kCor.rat) annotation (Line(points={{-39,0},{-12,0}}, color={0,0,127})); diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo index c418f33ce62..cace6b6c9a1 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo @@ -3,27 +3,32 @@ model MassAccumulation "Validation model for the accumulation of the contaminants" extends Modelica.Icons.Example; Buildings.Fluid.AirFilters.BaseClasses.MassAccumulation masAcc( - mCon_nominal=1, - mCon_reset=0) + per=per, + mCon_reset=0, + nin=1) "Contaminant accumulation" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Modelica.Blocks.Sources.Ramp mCon_flow( - duration=1, - height=1.2, - offset=0) - "Contaminant mass flow rate" + Modelica.Blocks.Sources.Ramp mCon_flow[1]( + each duration=1, + each height=1.2, + each offset=0) "Contaminant mass flow rate" annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse RepSig( period=1, shift=0.5) "Filter replacement signal" annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); + parameter Data.Generic per( + mCon_nominal=1, filterationEfficiencyParameters(rat={{0,0.5,1}}, eps={{ + 0.7,0.6,0.5}})) + "Performance dataset" + annotation (Placement(transformation(extent={{-60,66},{-40,86}}))); equation connect(RepSig.y, masAcc.uRep) annotation (Line(points={{-38,-20},{-20,-20},{-20,-6},{-12,-6}}, color={255,0,255})); - connect(mCon_flow.y, masAcc.mCon_flow) - annotation (Line(points={{-39,30},{-20,30},{-20,0},{-12,0}}, color={0,0,127})); + connect(mCon_flow.y, masAcc.mCon_flow) annotation (Line(points={{-39,30},{-20, + 30},{-20,0},{-12,0}}, color={0,0,127})); annotation (experiment(Tolerance=1e-6, StopTime=1.0), __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mos" "Simulate and plot"), diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo index 20ca7a93fbb..504b5878cf3 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo @@ -2,77 +2,107 @@ within Buildings.Fluid.AirFilters.BaseClasses.Validation; model MassTransfer "Validation model for the MassTransfer model" extends Modelica.Icons.Example; - package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2"}) + package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2","VOC"}) "Air"; - Buildings.Fluid.Sources.TraceSubstancesFlowSource sou( - redeclare package Medium = Medium, - m_flow=1, - nPorts=1) - "Air source" - annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); Buildings.Fluid.Sources.Boundary_pT sin( redeclare package Medium = Medium, nPorts=1) "Air sink" - annotation (Placement(transformation(extent={{80,-10},{60,10}}))); + annotation (Placement(transformation(extent={{144,-10},{124,10}}))); Buildings.Fluid.AirFilters.BaseClasses.MassTransfer masTra( redeclare package Medium = Medium, - allowFlowReversal=true, - m_flow_nominal=1) + m_flow_nominal=1, + substanceName={"CO2","VOC"}) "Mass transfer" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Modelica.Blocks.Sources.Ramp eps( + Modelica.Blocks.Sources.Ramp eps[2]( + each duration=20, + each height=-0.7, + each offset=0.9, + each startTime=5) + "Mass transfer efficiency" + annotation (Placement(transformation(extent={{-60,40},{-40,60}}))); + Buildings.Fluid.Sensors.TraceSubstancesTwoPort senTraSubCO2Out(redeclare + package Medium = Medium, m_flow_nominal=1) + "Trace substance sensor of CO2 in outlet air" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + Buildings.Fluid.Sensors.TraceSubstancesTwoPort senTraSubCO2In(redeclare + package Medium = Medium, m_flow_nominal=1) + "Trace substance sensor of CO2 in inlet air" + annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); + Sources.Boundary_pT sou( + redeclare package Medium = Medium, + use_C_in=true, + p(displayUnit="Pa") = 101325 + 100, + nPorts=1) + "Air source" + annotation (Placement(transformation( + extent={{-170,-10},{-150,10}}))); + Modelica.Blocks.Sources.Ramp C_CO2_inflow( duration=20, height=-0.7, offset=0.9, - startTime=5) - "Mass transfer efficiency" - annotation (Placement(transformation(extent={{-60,40},{-40,60}}))); - Modelica.Blocks.Sources.RealExpression traceSubstancesFlow( - y=inStream(masTra.port_a.C_outflow[1])) - "Trace substances flow rate" - annotation (Placement(transformation(extent={{-60,70},{-40,90}}))); - Buildings.Fluid.Sensors.TraceSubstancesTwoPort C_out( + startTime=5) "Contaminant mass flow rate fraction for CO2" + annotation (Placement(transformation(extent={{-208,20},{-188,40}}))); + Modelica.Blocks.Sources.Ramp C_VOC_inflow( + duration=20, + height=-0.6, + offset=1, + startTime=5) "Contaminant mass flow rate fraction for VOC" + annotation (Placement(transformation(extent={{-210,-40},{-190,-20}}))); + Buildings.Fluid.FixedResistances.PressureDrop res( redeclare package Medium = Medium, - m_flow_nominal=1) - "Trace substance sensor of outlet air" - annotation (Placement(transformation(extent={{20,-10},{40,10}}))); - Buildings.Fluid.Sensors.TraceSubstancesTwoPort C_in( + m_flow_nominal=1, + dp_nominal=100) + "Resistance" + annotation (Placement(transformation(extent={{-140,-10},{-120,10}}))); + Buildings.Fluid.Sensors.TraceSubstancesTwoPort senTraSubVOCIn( + redeclare package Medium = Medium, + m_flow_nominal=1, + substanceName="VOC") "Trace substance sensor of VOC in inlet air" + annotation (Placement(transformation(extent={{-58,-10},{-38,10}}))); + Buildings.Fluid.Sensors.TraceSubstancesTwoPort senTraSubVOCOut( redeclare package Medium = Medium, - m_flow_nominal=1) - "Trace substance sensor of inlet air" - annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); + m_flow_nominal=1, + substanceName="VOC") "Trace substance sensor of VOC in outlet air" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); equation - connect(eps.y, masTra.eps) - annotation (Line(points={{-39,50},{-20,50},{-20,6},{-12,6}}, - color={0,0,127})); - connect(traceSubstancesFlow.y, masTra.C_inflow[1]) - annotation (Line(points={{-39,80},{0,80},{0,12}}, color={0,0,127})); - connect(C_out.port_b, sin.ports[1]) - annotation (Line(points={{40,0},{60,0}}, color={0,127,255})); - connect(C_out.port_a, masTra.port_b) + connect(senTraSubCO2Out.port_a, masTra.port_b) annotation (Line(points={{20,0},{10,0}}, color={0,127,255})); - connect(C_in.port_b, masTra.port_a) - annotation (Line(points={{-30,0},{-10,0}}, color={0,127,255})); - connect(C_in.port_a, sou.ports[1]) - annotation (Line(points={{-50,0},{-60,0}}, color={0,127,255})); + connect(C_VOC_inflow.y, sou.C_in[2]) annotation (Line(points={{-189,-30},{-180, + -30},{-180,-8},{-172,-8}}, color={0,0,127})); + connect(C_CO2_inflow.y, sou.C_in[1]) annotation (Line(points={{-187,30},{-180, + 30},{-180,-8},{-172,-8}}, color={0,0,127})); + connect(eps.y, masTra.eps) annotation (Line(points={{-39,50},{-20,50},{-20,6}, + {-12,6}}, color={0,0,127})); + connect(res.port_b, senTraSubCO2In.port_a) + annotation (Line(points={{-120,0},{-100,0}}, color={0,127,255})); + connect(res.port_a, sou.ports[1]) + annotation (Line(points={{-140,0},{-150,0}}, + color={0,127,255})); + connect(senTraSubCO2In.port_b, senTraSubVOCIn.port_a) + annotation (Line(points={{-80,0},{-58,0}}, color={0,127,255})); + connect(senTraSubVOCIn.port_b, masTra.port_a) + annotation (Line(points={{-38,0},{-10,0}}, color={0,127,255})); + connect(senTraSubCO2Out.port_b, senTraSubVOCOut.port_a) + annotation (Line(points={{40,0},{60,0}}, color={0,127,255})); + connect(senTraSubVOCOut.port_b, sin.ports[1]) + annotation (Line(points={{80,0},{124,0}}, color={0,127,255})); annotation (experiment(Tolerance=1e-6, StopTime=30), __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mos" "Simulate and plot"), Documentation(info="

                      From 0 to 5 seconds, the testing case is warming-up and the input mass transfer -efficiency eps is fixed at 0.9. +efficiencies are fixed at 0.9.

                      -From 5 to 25 seconds, the input mass transfer efficiency eps changes -from 0.9 to 0.2. After 25 seconds, the input mass transfer efficiency -eps is fixed at 0.2. +From 5 to 25 seconds, the input mass transfer efficiencies change +from 0.9 to 0.2. After 25 seconds, they are fixed at 0.2.

                      -The trace substance of the outlet port changes from 0.1 to 0.8kg/kg -during the period from -5 seconds to 30 seconds. +The differences between the trace substances of inlet ports and that of the outlet port first +increase and then decrease.

                      ", revisions="
                        @@ -81,5 +111,7 @@ December 22, 2023, by Sen Huang:
                        First implementation.
                      -")); +"), + Diagram(coordinateSystem(extent={{-220,-100},{160,100}})), + Icon(coordinateSystem(extent={{-100,-100},{100,100}}))); end MassTransfer; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/package.order b/Buildings/Fluid/AirFilters/BaseClasses/package.order index 177dde1d3bd..7810f1a87c1 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/package.order +++ b/Buildings/Fluid/AirFilters/BaseClasses/package.order @@ -4,3 +4,5 @@ MassAccumulation MassTransfer PressureDropWithVaryingFlowCoefficient Validation +Characteristics +Data diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index 0a77eec0522..6284b19f7cf 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -1,44 +1,37 @@ within Buildings.Fluid.AirFilters; model Empirical "Empirical air filter model" replaceable package Medium = - Buildings.Media.Air(extraPropertiesNames={"CO2"}) + Modelica.Media.Interfaces.PartialCondensingGases "Air"; - parameter Real mCon_nominal( - final unit = "kg") - "Maximum mass of the contaminant can be captured by the filter"; - parameter Real epsFun[:] - "Filter efficiency curve" - annotation (Dialog(group="Efficiency")); - parameter Real b - "Resistance coefficient" - annotation (Dialog(group="Pressure")); parameter Modelica.Units.SI.MassFlowRate m_flow_nominal "Nominal mass flow rate" annotation (Dialog(group="Nominal")); parameter Modelica.Units.SI.PressureDifference dp_nominal "Nominal pressure drop" annotation (Dialog(group="Nominal")); - parameter String substanceName = "CO2" - "Name of trace substance"; + parameter Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per + "Performance dataset" + annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uRep "Replacing the filter when trigger becomes true" annotation (Placement(transformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput eps( - final unit="1", - final min=0, - final max=1) - "Filtration efficiency" - annotation (Placement(transformation(extent={{100,20},{140,60}}), - iconTransformation(extent={{100,-80},{140,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput eps[size(per.substanceName, 1)]( + each final unit="1", + each final min=0, + each final max=1) + "Filtration efficiency" annotation (Placement(transformation( + extent={{100,20},{140,60}}), iconTransformation(extent={{100,-80},{140, + -40}}))); Modelica.Fluid.Interfaces.FluidPort_a port_a( - redeclare package Medium = Medium) + redeclare final package Medium = Medium, + h_outflow(start = Medium.h_default, nominal = Medium.h_default)) "Fluid connector a (positive design flow direction is from port_a to port_b)" annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); Modelica.Fluid.Interfaces.FluidPort_b port_b( - redeclare package Medium = Medium) + redeclare final package Medium = Medium, + h_outflow(start = Medium.h_default, nominal = Medium.h_default)) "Fluid connector b (positive design flow direction is from port_a to port_b)" annotation (Placement(transformation(extent={{90,-10},{110,10}}))); - protected Buildings.Fluid.AirFilters.BaseClasses.PressureDropWithVaryingFlowCoefficient res( @@ -46,70 +39,50 @@ protected final m_flow_nominal=m_flow_nominal, final dp_nominal=dp_nominal) "Pressure resistance" - annotation (Placement(transformation(extent={{-30,-10},{-10,10}}))); + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); Buildings.Fluid.AirFilters.BaseClasses.MassTransfer masTra( redeclare package Medium = Medium, - final m_flow_nominal=m_flow_nominal) + final m_flow_nominal=m_flow_nominal, + final substanceName=per.substanceName) "Contaminant removal" - annotation (Placement(transformation(extent={{50,-10},{70,10}}))); + annotation (Placement(transformation(extent={{36,-10},{56,10}}))); Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency epsCal( - final mCon_nominal=mCon_nominal, - final epsFun=epsFun) + final per=per) "Filter characterization" annotation (Placement(transformation(extent={{0,70},{20,90}}))); Buildings.Fluid.AirFilters.BaseClasses.MassAccumulation masAcc( - final mCon_nominal=mCon_nominal, - final mCon_reset=0) + final per=per, + final mCon_reset=0, + final nin=size(per.substanceName, 1)) "Contaminant accumulation" annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); - Modelica.Blocks.Sources.RealExpression traSubFlo( - y(unit="kg/s") = inStream(port_a.C_outflow[1])*port_a.m_flow) - "Trace substances flow rate" - annotation (Placement(transformation(extent={{-92,70},{-72,90}}))); Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection coeCor( - final b=b) + final per=per) "Flow coefficient correction" annotation (Placement(transformation(extent={{60,70},{80,90}}))); - parameter Real s[:]= { - if ( Modelica.Utilities.Strings.isEqual(string1=Medium.extraPropertiesNames[i], - string2=substanceName, - caseSensitive=false)) - then 1 else 0 for i in 1:Medium.nC} - "Vector with zero everywhere except where species is" - annotation(Evaluate=true); -initial equation - assert(max(s) > 0.9, "Trace substance '" + substanceName + "' is not present in medium '" - + Medium.mediumName + "'.\n" - + "Check filter parameter and medium model."); - equation connect(masAcc.mCon, epsCal.mCon) annotation (Line(points={{-18,80},{-2,80}}, color={0,0,127})); - connect(res.port_a, port_a) - annotation (Line(points={{-30,0},{-100,0}}, color={0,127,255})); - connect(res.port_b, masTra.port_a) - annotation (Line(points={{-10,0},{50,0}}, color={0,127,255})); - connect(masTra.port_b, port_b) - annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); connect(masAcc.uRep, uRep) annotation (Line(points={{-42,74},{-42,74},{-70,74},{-70,60},{-120,60}}, color={255,0,255})); - connect(traSubFlo.y, masAcc.mCon_flow) - annotation (Line(points={{-71,80},{-60,80},{-60,80},{-42,80}}, color={0,0,127})); - connect(epsCal.y, masTra.eps) - annotation (Line(points={{22,74},{40,74},{40,6},{48,6}}, color={0,0,127})); - connect(masTra.C_inflow[1], traSubFlo.y) - annotation (Line(points={{60,12},{60,28},{-60,28},{-60,80},{-71,80}}, - color={0,0,127})); connect(epsCal.rat, coeCor.rat) annotation (Line(points={{22,86},{40,86},{40,80}, {58,80}}, color={0,0,127})); - connect(coeCor.y, res.kCor) annotation (Line(points={{82,80},{90,80},{90,50},{ - -20,50},{-20,12}}, color={0,0,127})); - connect(epsCal.y, eps) - annotation (Line(points={{22,74},{40,74},{40,40},{120,40}}, - color={0,0,127})); - + connect(coeCor.y, res.kCor) annotation (Line(points={{82,80},{90,80},{90,20}, + {-50,20},{-50,12}},color={0,0,127})); + connect(masTra.mCon_flow, masAcc.mCon_flow) annotation (Line(points={{58,6},{ + 76,6},{76,48},{-48,48},{-48,80},{-42,80}},color={0,0,127})); + connect(masTra.port_a, res.port_b) + annotation (Line(points={{36,0},{-40,0}}, color={0,127,255})); + connect(masTra.port_b, port_b) + annotation (Line(points={{56,0},{100,0}}, color={0,127,255})); + connect(res.port_a, port_a) + annotation (Line(points={{-60,0},{-100,0}}, color={0,127,255})); + connect(epsCal.y, eps) annotation (Line(points={{22,74},{40,74},{40,40},{120, + 40}}, color={0,0,127})); + connect(masTra.eps, epsCal.y) annotation (Line(points={{34,6},{20,6},{20,40}, + {40,40},{40,74},{22,74}}, color={0,0,127})); annotation (defaultComponentName="airFil", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( @@ -283,8 +256,7 @@ Documentation(info="

                      An empirical model of air filters, which considers the impacts of the contaminant accumulation on the pressure drop and the filtration efficiency. -The dynamic characteristics of the filters are defined by three -parameters, mCon_nominal,epsFun, and b. +The dynamic characteristics of the filters are defined by

                      • @@ -292,12 +264,19 @@ The mCon_nominal determines the maximum mass of the contaminants th filter can capture.
                      • -The epsFun is a vector of coefficients that determines how the -filtration efficiency changes with the contaminant accumulation. +A performance dataset per that determines +
                          +
                        • +how the flow coefficient changes with the contaminant accumulation;
                        • -The b is a constant that determines how the flow coefficient changes -with the contaminant accumulation. +the types of contaminants; +
                        • +
                        • +how the filtration efficiency changes +with the contaminant accumulation for each contaminant. +
                        • +

                      @@ -310,16 +289,18 @@ Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection.

                      The input boolean flag, uRep, triggers the filter replacement. When uRep changes from false to true, the -mass of the captured contaminant becomes 0. +mass of the captured contaminants becomes 0.

                      Note: +A warning will be triggered
                      • -A warning will be triggered when the captured contaminant mass becomes greater than the +when the captured contaminant mass becomes greater than the maximum contaminant mass (mCon_nominal).
                      • -The extraPropertiesNames has to be defined in the medium model. +when the extraPropertiesNames in the medium model don't contain all the contaminants +defined in the per.
                      ", revisions=" diff --git a/Buildings/Fluid/AirFilters/Examples/Empirical.mo b/Buildings/Fluid/AirFilters/Examples/Empirical.mo deleted file mode 100644 index 3a06f7fc569..00000000000 --- a/Buildings/Fluid/AirFilters/Examples/Empirical.mo +++ /dev/null @@ -1,89 +0,0 @@ -within Buildings.Fluid.AirFilters.Examples; -model Empirical "Example for using the empirical air filter model" - extends Modelica.Icons.Example; - package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Air"; - Buildings.Fluid.AirFilters.Empirical fil( - redeclare package Medium = Medium, - mCon_nominal=10, - epsFun={0.98,-0.5}, - b=1.2, - m_flow_nominal=1, - dp_nominal(displayUnit="Pa") = 100) - "Air filter" - annotation (Placement(transformation(extent={{4,-10},{24,10}}))); - Buildings.Fluid.Sources.Boundary_pT sou( - redeclare package Medium = Medium, - use_C_in=true, - p(displayUnit="Pa") = 101325 + 100, - nPorts=1) - "Air source" - annotation (Placement(transformation( - extent={{-60,-10},{-40,10}}))); - Buildings.Fluid.Sources.Boundary_pT sin( - redeclare package Medium = Medium, - p(displayUnit="Pa") = 101325, - nPorts=1) - "Air sink" - annotation (Placement(transformation( - extent={{92,-10},{72,10}}))); - Buildings.Fluid.Sensors.TraceSubstancesTwoPort C_in( - redeclare package Medium = Medium, m_flow_nominal=1) - "Trace substance sensor of inlet air" - annotation (Placement(transformation(extent={{-30,-10},{-10,10}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.Pulse repSig(period=60, shift=30) - "Filter replacement signal" - annotation (Placement(transformation(extent={{-50,40},{-30,60}}))); - Modelica.Blocks.Sources.Ramp C_inflow( - duration=30, - height=-0.3, - offset=1, - startTime=20) - "Contaminant mass flow rate fraction" - annotation (Placement(transformation(extent={{-94,12},{-74,32}}))); - Buildings.Fluid.Sensors.TraceSubstancesTwoPort C_out( - redeclare package Medium = Medium, - m_flow_nominal=1) - "Trace substance sensor of outlet air" - annotation (Placement(transformation(extent={{40,-10},{60,10}}))); -equation - connect(repSig.y, fil.uRep) - annotation (Line(points={{-28,50},{-4,50},{-4,6},{2,6}}, - color={255,0,255})); - connect(C_inflow.y, sou.C_in[1]) - annotation (Line(points={{-73,22},{-68,22},{-68,-8}, - {-62,-8}}, color={0,0,127})); - connect(C_out.port_b, sin.ports[1]) - annotation (Line(points={{60,0},{72,0}}, color={0,127,255})); - connect(C_out.port_a, fil.port_b) - annotation (Line(points={{40,0},{24,0}}, color={0,127,255})); - connect(C_in.port_b, fil.port_a) - annotation (Line(points={{-10,0},{4,0}}, color={0,127,255})); - connect(sou.ports[1], C_in.port_a) - annotation (Line(points={{-40,0},{-30,0}}, color={0,127,255})); - annotation (experiment( - StopTime=50, - Tolerance=1e-06), - __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos" - "Simulate and plot"), - Documentation(revisions=" -
                        -
                      • -December 22, 2023, by Sen Huang:
                        -First implementation. -
                      • -
                      -", info=" -

                      -From 0 to 12 seconds, the testing case is warming-up and the trace substance of the inlet -C_inflow is fixed at 1. -

                      -

                      -From 20 to 50 seconds, the C_inflow changes from 1 to 0.7kg/kg. -At the 30 seconds, the filter replacement signal repSig changes from false to true. -

                      -

                      -From 12 to 30 seconds, the trace substance of the outlet port C_out doesn't change much; -From 30 to 45 seconds, C_out first decreases and then increases. -

                      -")); -end Empirical; diff --git a/Buildings/Fluid/AirFilters/Examples/SpaceCooling.mo b/Buildings/Fluid/AirFilters/Examples/SpaceCooling.mo new file mode 100644 index 00000000000..9592b76a2bf --- /dev/null +++ b/Buildings/Fluid/AirFilters/Examples/SpaceCooling.mo @@ -0,0 +1,324 @@ +within Buildings.Fluid.AirFilters.Examples; +model SpaceCooling + "Space cooling system" + extends Modelica.Icons.Example; + + replaceable package MediumA = Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Medium for air"; + replaceable package MediumW = Buildings.Media.Water "Medium for water"; + + Buildings.Fluid.MixingVolumes.MixingVolume vol( + redeclare package Medium = MediumA, + m_flow_nominal=mA_flow_nominal, + V=V, + nPorts=2, + energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyStateInitial, + mSenFac=3) + annotation (Placement(transformation(extent={{60,20},{80,40}}))); + Modelica.Thermal.HeatTransfer.Components.ThermalConductor theCon(G=10000/30) + "Thermal conductance with the ambient" + annotation (Placement(transformation(extent={{20,40},{40,60}}))); + parameter Modelica.Units.SI.Volume V=6*10*3 "Room volume"; + ////////////////////////////////////////////////////////// + // Heat recovery effectiveness + parameter Real eps = 0.8 "Heat recovery effectiveness"; + + ///////////////////////////////////////////////////////// + // Design air conditions + parameter Modelica.Units.SI.Temperature TASup_nominal=291.15 + "Nominal air temperature supplied to room"; + parameter Modelica.Units.SI.DimensionlessRatio wASup_nominal=0.012 + "Nominal air humidity ratio supplied to room [kg/kg] assuming 90% relative humidity"; + parameter Modelica.Units.SI.Temperature TRooSet=297.15 + "Nominal room air temperature"; + parameter Modelica.Units.SI.Temperature TOut_nominal=303.15 + "Design outlet air temperature"; + parameter Modelica.Units.SI.Temperature THeaRecLvg=TOut_nominal - eps*( + TOut_nominal - TRooSet) "Air temperature leaving the heat recovery"; + parameter Modelica.Units.SI.DimensionlessRatio wHeaRecLvg=0.0135 + "Air humidity ratio leaving the heat recovery [kg/kg]"; + + ///////////////////////////////////////////////////////// + // Cooling loads and air mass flow rates + parameter Modelica.Units.SI.HeatFlowRate QRooInt_flow=1000 + "Internal heat gains of the room"; + parameter Modelica.Units.SI.HeatFlowRate QRooC_flow_nominal=-QRooInt_flow - + 10E3/30*(TOut_nominal - TRooSet) "Nominal cooling load of the room"; + parameter Modelica.Units.SI.MassFlowRate mA_flow_nominal=1.3* + QRooC_flow_nominal/1006/(TASup_nominal - TRooSet) + "Nominal air mass flow rate, increased by factor 1.3 to allow for recovery after temperature setback"; + parameter Modelica.Units.SI.TemperatureDifference dTFan=2 + "Estimated temperature raise across fan that needs to be made up by the cooling coil"; + parameter Modelica.Units.SI.HeatFlowRate QCoiC_flow_nominal=mA_flow_nominal*( + TASup_nominal - THeaRecLvg - dTFan)*1006 + mA_flow_nominal*(wASup_nominal + - wHeaRecLvg)*2458.3e3 + "Cooling load of coil, taking into account outside air sensible and latent heat removal"; + + ///////////////////////////////////////////////////////// + // Water temperatures and mass flow rates + parameter Modelica.Units.SI.Temperature TWSup_nominal=285.15 + "Water supply temperature"; + parameter Modelica.Units.SI.Temperature TWRet_nominal=289.15 + "Water return temperature"; + parameter Modelica.Units.SI.MassFlowRate mW_flow_nominal=-QCoiC_flow_nominal/ + (TWRet_nominal - TWSup_nominal)/4200 "Nominal water mass flow rate"; + + Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature TOut + "Outside temperature" + annotation (Placement(transformation(extent={{-20,40},{0,60}}))); + Modelica.Thermal.HeatTransfer.Sources.FixedHeatFlow preHea(Q_flow= + QRooInt_flow) "Prescribed heat flow" + annotation (Placement(transformation(extent={{20,70},{40,90}}))); + Buildings.Fluid.Movers.FlowControlled_m_flow fan( + redeclare package Medium = MediumA, + per(etaHydMet=Buildings.Fluid.Movers.BaseClasses.Types.HydraulicEfficiencyMethod.NotProvided, + etaMotMet=Buildings.Fluid.Movers.BaseClasses.Types.MotorEfficiencyMethod.NotProvided), + nominalValuesDefineDefaultPressureCurve=true, + m_flow_nominal=mA_flow_nominal, + energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState) "Supply air fan" + annotation (Placement(transformation(extent={{40,-30},{60,-10}}))); + + Buildings.Fluid.HeatExchangers.ConstantEffectiveness hex(redeclare package + Medium1 = + MediumA, redeclare package Medium2 = MediumA, + m1_flow_nominal=mA_flow_nominal, + m2_flow_nominal=mA_flow_nominal, + dp1_nominal=200, + dp2_nominal=200, + eps=eps) "Heat recovery" + annotation (Placement(transformation(extent={{-70,-36},{-50,-16}}))); + Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU cooCoi( + redeclare package Medium1 = MediumW, + redeclare package Medium2 = MediumA, + m1_flow_nominal=mW_flow_nominal, + m2_flow_nominal=mA_flow_nominal, + dp1_nominal=6000, + dp2_nominal=200, + use_Q_flow_nominal=true, + Q_flow_nominal=QCoiC_flow_nominal, + T_a1_nominal=TWSup_nominal, + T_a2_nominal=THeaRecLvg, + w_a2_nominal=wHeaRecLvg, + show_T=true, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) "Cooling coil" + annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=180, + origin={-12,-26}))); + Buildings.Fluid.Sources.Outside out( + redeclare package Medium = MediumA, + use_C_in=true, + nPorts=2) + annotation (Placement(transformation(extent={{-162,-32},{-142,-12}}))); + Buildings.Fluid.Sources.MassFlowSource_T souWat( + nPorts=1, + redeclare package Medium = MediumW, + use_m_flow_in=true, + T=TWSup_nominal) "Source for water flow rate" + annotation (Placement(transformation(extent={{-20,-110},{0,-90}}))); + Buildings.Fluid.Sources.Boundary_pT sinWat(nPorts=1, redeclare package Medium = + MediumW) "Sink for water circuit" + annotation (Placement(transformation(extent={{-80,-76},{-60,-56}}))); + BoundaryConditions.WeatherData.ReaderTMY3 weaDat( + pAtmSou=Buildings.BoundaryConditions.Types.DataSource.Parameter, + TDryBul=TOut_nominal, + filNam=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/weatherdata/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.mos"), + TDryBulSou=Buildings.BoundaryConditions.Types.DataSource.File) + "Weather data reader" + annotation (Placement(transformation(extent={{-160,40},{-140,60}}))); + BoundaryConditions.WeatherData.Bus weaBus + annotation (Placement(transformation(extent={{-120,40},{-100,60}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant mAir_flow(k=mA_flow_nominal) + "Fan air flow rate" + annotation (Placement(transformation(extent={{0,0},{20,20}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package + Medium = + MediumA, m_flow_nominal=mA_flow_nominal) + "Temperature sensor for heat recovery outlet on supply side" + annotation (Placement(transformation(extent={{-38,-26},{-26,-14}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemSupAir(redeclare package + Medium = + MediumA, m_flow_nominal=mA_flow_nominal) + "Temperature sensor for supply air" + annotation (Placement(transformation(extent={{6,-26},{18,-14}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant TRooSetPoi(k=TRooSet) + "Room temperature set point" + annotation (Placement(transformation(extent={{-142,-102},{-122,-82}}))); + Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor senTemRoo + "Room temperature sensor" + annotation (Placement(transformation(extent={{70,70},{90,90}}))); + Buildings.Controls.Continuous.LimPID conRoo( + k=0.1, + Ti=60, + yMax=mW_flow_nominal, + reverseActing=false) + "Room controller" + annotation (Placement(transformation(extent={{-100,-102},{-80,-82}}))); + Buildings.Fluid.AirFilters.Empirical airFil( + redeclare package Medium = MediumA, + m_flow_nominal=mA_flow_nominal, + dp_nominal(displayUnit="Pa") = 50, + per=per) + annotation (Placement(transformation(extent={{-128,-10},{-108,10}}))); + Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per( + mCon_nominal=5, + filterationEfficiencyParameters(rat={{0,0.5,1}}, eps={{0.5,0.4,0.2}}), b=1.2) + "Performance dataset of the air filter" + annotation (Placement(transformation(extent={{-80,64},{-60,84}}))); + Modelica.Blocks.Sources.Ramp C_inflow( + duration=87600/2, + height=50/1000000*1.53, + offset=100/1000000*1.53, + startTime=15552000 + 87600/2) + "Contaminant mass flow rate fraction" + annotation (Placement(transformation(extent={{-170,-70},{-150,-50}}))); + Buildings.Fluid.Sensors.TraceSubstancesTwoPort C_out(redeclare package + Medium =MediumA, + m_flow_nominal=mA_flow_nominal) + "Trace substance sensor of outlet air" + annotation (Placement(transformation(extent={{-102,-10},{-82,10}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Constant repSig(k=false) + "Filter replacement signal" + annotation (Placement(transformation(extent={{-160,0},{-140,20}}))); +equation + connect(theCon.port_b, vol.heatPort) annotation (Line( + points={{40,50},{50,50},{50,30},{60,30}}, + color={191,0,0}, + smooth=Smooth.None)); + connect(preHea.port, vol.heatPort) annotation (Line( + points={{40,80},{50,80},{50,30},{60,30}}, + color={191,0,0}, + smooth=Smooth.None)); + connect(fan.port_b, vol.ports[1]) annotation (Line( + points={{60,-20},{69,-20},{69,20}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(vol.ports[2], hex.port_a2) annotation (Line( + points={{71,20},{71,-46},{-50,-46},{-50,-32}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(souWat.ports[1], cooCoi.port_a1) annotation (Line( + points={{0,-100},{20,-100},{20,-32},{-2,-32}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(cooCoi.port_b1, sinWat.ports[1]) annotation (Line( + points={{-22,-32},{-30,-32},{-30,-66},{-60,-66}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(weaDat.weaBus, out.weaBus) annotation (Line( + points={{-140,50},{-136,50},{-136,30},{-170,30},{-170,-21.8},{-162,-21.8}}, + color={255,204,51}, + thickness=0.5, + smooth=Smooth.None)); + connect(weaDat.weaBus, weaBus) annotation (Line( + points={{-140,50},{-110,50}}, + color={255,204,51}, + thickness=0.5, + smooth=Smooth.None), Text( + textString="%second", + index=1, + extent={{6,3},{6,3}})); + connect(weaBus.TDryBul, TOut.T) annotation (Line( + points={{-109.95,50.05},{-66,50.05},{-66,50},{-22,50}}, + color={255,204,51}, + thickness=0.5, + smooth=Smooth.None), Text( + textString="%first", + index=-1, + extent={{-6,3},{-6,3}})); + connect(fan.m_flow_in, mAir_flow.y) annotation (Line( + points={{50,-8},{50,10},{22,10}}, + color={0,0,127}, + smooth=Smooth.None)); + connect(hex.port_b1, senTemHXOut.port_a) annotation (Line( + points={{-50,-20},{-38,-20}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(senTemHXOut.port_b, cooCoi.port_a2) annotation (Line( + points={{-26,-20},{-22,-20}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(cooCoi.port_b2, senTemSupAir.port_a) annotation (Line( + points={{-2,-20},{6,-20}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(senTemSupAir.port_b, fan.port_a) annotation (Line( + points={{18,-20},{40,-20}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(TOut.port, theCon.port_a) annotation (Line( + points={{5.55112e-16,50},{20,50}}, + color={191,0,0}, + smooth=Smooth.None)); + connect(vol.heatPort, senTemRoo.port) annotation (Line( + points={{60,30},{50,30},{50,80},{70,80}}, + color={191,0,0}, + smooth=Smooth.None)); + connect(conRoo.y, souWat.m_flow_in) + annotation (Line(points={{-79,-92},{-22,-92}}, color={0,0,127})); + connect(conRoo.u_s, TRooSetPoi.y) + annotation (Line(points={{-102,-92},{-120,-92}}, color={0,0,127})); + connect(conRoo.u_m, senTemRoo.T) annotation (Line(points={{-90,-104},{-90,-142}, + {100,-142},{100,80},{91,80}}, color={0,0,127})); + connect(out.ports[1], airFil.port_a) annotation (Line(points={{-142,-23},{ + -136,-23},{-136,0},{-128,0}}, + color={0,127,255})); + connect(out.ports[2], hex.port_b2) annotation (Line(points={{-142,-21},{-136, + -21},{-136,-46},{-70,-46},{-70,-32}}, + color={0,127,255})); + connect(C_inflow.y, out.C_in[1]) annotation (Line(points={{-149,-60},{-144,-60}, + {-144,-42},{-170,-42},{-170,-30},{-164,-30}}, color={0,0,127})); + connect(airFil.port_b, C_out.port_a) + annotation (Line(points={{-108,0},{-102,0}}, color={0,127,255})); + connect(C_out.port_b, hex.port_a1) annotation (Line(points={{-82,0},{-76,0},{ + -76,-20},{-70,-20}}, color={0,127,255})); + connect(repSig.y, airFil.uRep) + annotation (Line(points={{-138,10},{-138,6},{-130,6}}, color={255,0,255})); + annotation (Documentation(info=" +

                      +This block is identical to + +Buildings.Examples.Tutorial.SpaceCooling.System3, +except that an air filter is added. +

                      +

                      +The major input signals for the air filter are configured as follows: +

                      +
                        +
                      • +The operating signal uRot changes from false to true at 6:00 (15552000+6*3600 seconds) +and from true to false at 18:00 (15552000+18*3600 seconds). +
                      • +
                      • +The supply air flow rate mAir_flow changes from 0 to 0.646 at around 5:00 +and from 0.646 to 0 at around 17:00. +
                      • +
                      • +The bypass damper positions are controlled to maintain the temperature of the air leaving the thermal wheel, +senTemHXOut.T, at 298.15 K. +
                      • +
                      +

                      +The expected output is: +

                      +
                        +
                      • +senTemHXOut.T is less or equal to 298.15 K. +
                      • +
                      +", revisions=" + +"), + Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-180,-160},{120, + 100}})), + __Dymola_Commands(file= + "modelica://Buildings/Resources/Scripts/Dymola/Examples/Tutorial/SpaceCooling/System3.mos" + "Simulate and plot"), + experiment(StartTime=15552000, Tolerance=1e-6, StopTime=15638400)); +end SpaceCooling; diff --git a/Buildings/Fluid/AirFilters/Examples/package.mo b/Buildings/Fluid/AirFilters/Examples/package.mo index b3bd000d111..79fb49c73b5 100644 --- a/Buildings/Fluid/AirFilters/Examples/package.mo +++ b/Buildings/Fluid/AirFilters/Examples/package.mo @@ -1,12 +1,4 @@ within Buildings.Fluid.AirFilters; -package Examples "Collection of models that illustrate model use and test models" - extends Modelica.Icons.ExamplesPackage; - -annotation (Documentation(info=" -

                      -This package contains examples for the use of models that can be found in - -Buildings.Fluid.AirFilters. -

                      -")); +package Examples "Package with example models" +extends Modelica.Icons.ExamplesPackage; end Examples; diff --git a/Buildings/Fluid/AirFilters/Examples/package.order b/Buildings/Fluid/AirFilters/Examples/package.order index e56c800cd7b..50303e7a6b0 100644 --- a/Buildings/Fluid/AirFilters/Examples/package.order +++ b/Buildings/Fluid/AirFilters/Examples/package.order @@ -1 +1 @@ -Empirical +SpaceCooling diff --git a/Buildings/Fluid/AirFilters/Validation/Empirical.mo b/Buildings/Fluid/AirFilters/Validation/Empirical.mo new file mode 100644 index 00000000000..9597e017601 --- /dev/null +++ b/Buildings/Fluid/AirFilters/Validation/Empirical.mo @@ -0,0 +1,118 @@ +within Buildings.Fluid.AirFilters.Validation; +model Empirical "Example for using the empirical air filter model" + extends Modelica.Icons.Example; + package Medium = Buildings.Media.Air(extraPropertiesNames={"VOC","CO2"}) + "Air"; + parameter Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per( + mCon_nominal=10, + substanceName={"CO2","VOC"}, + filterationEfficiencyParameters( + rat={{0,0.5,1},{0,0.5,1}}, + eps={{0.7,0.6,0.5},{0.8,0.7,0.5}})) + "Performance dataset" + annotation (Placement(transformation(extent={{22,46},{42,66}}))); + Buildings.Fluid.Sources.Boundary_pT sou( + redeclare package Medium = Medium, + use_C_in=true, + p(displayUnit="Pa") = 101325 + 100, + nPorts=1) + "Air source" + annotation (Placement(transformation( + extent={{-106,-10},{-86,10}}))); + Buildings.Fluid.Sources.Boundary_pT sin( + redeclare package Medium = Medium, + p(displayUnit="Pa") = 101325, + nPorts=1) + "Air sink" + annotation (Placement(transformation( + extent={{130,-10},{110,10}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse repSig(period=60, shift=30) + "Filter replacement signal" + annotation (Placement(transformation(extent={{-50,40},{-30,60}}))); + Modelica.Blocks.Sources.Ramp C_CO2_inflow( + duration=30, + height=-0.3, + offset=1, + startTime=20) "Contaminant mass flow rate fraction for CO2" + annotation (Placement(transformation(extent={{-160,20},{-140,40}}))); + Modelica.Blocks.Sources.Ramp C_VOC_inflow( + duration=40, + height=-0.4, + offset=1, + startTime=20) + "Contaminant mass flow rate fraction for VOC" + annotation (Placement(transformation(extent={{-160,-40},{-140,-20}}))); + Buildings.Fluid.AirFilters.Empirical airFil( + redeclare package Medium = Medium, + m_flow_nominal=1, + dp_nominal(displayUnit="Pa") = 100, + per=per) "Air filter" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + Buildings.Fluid.Sensors.TraceSubstancesTwoPort senTraSubCO2In( + redeclare package Medium = Medium, m_flow_nominal=1) + "Trace substance sensor of CO2 in inlet air" + annotation (Placement(transformation(extent={{-72,-10},{-52,10}}))); + Buildings.Fluid.Sensors.TraceSubstancesTwoPort senTraSubVOCIn( + redeclare package Medium = Medium, + m_flow_nominal=1, + substanceName="VOC") "Trace substance sensor of VOC in inlet air" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + Buildings.Fluid.Sensors.TraceSubstancesTwoPort senTraSubCO2Out( + redeclare package Medium = Medium, m_flow_nominal=1) + "Trace substance sensor of CO2 in outlet air" + annotation (Placement(transformation(extent={{32,-10},{52,10}}))); + Buildings.Fluid.Sensors.TraceSubstancesTwoPort senTraSubVOCOut( + redeclare package Medium = Medium, + m_flow_nominal=1, + substanceName="VOC") "Trace substance sensor of VOC in outlet air" + annotation (Placement(transformation(extent={{70,-10},{90,10}}))); +equation + connect(repSig.y, airFil.uRep) annotation (Line(points={{-28,50},{-4,50},{-4, + 6},{-2,6}}, color={255,0,255})); + connect(C_CO2_inflow.y, sou.C_in[2]) annotation (Line(points={{-139,30},{-120, + 30},{-120,-8},{-108,-8}}, color={0,0,127})); + connect(C_VOC_inflow.y, sou.C_in[1]) annotation (Line(points={{-139,-30},{-120, + -30},{-120,-8},{-108,-8}}, color={0,0,127})); + connect(senTraSubVOCIn.port_b, airFil.port_a) + annotation (Line(points={{-20,0},{0,0}}, color={0,127,255})); + connect(senTraSubCO2In.port_b, senTraSubVOCIn.port_a) + annotation (Line(points={{-52,0},{-40,0}}, color={0,127,255})); + connect(sou.ports[1], senTraSubCO2In.port_a) + annotation (Line(points={{-86,0},{-72,0}}, color={0,127,255})); + connect(airFil.port_b, senTraSubCO2Out.port_a) + annotation (Line(points={{20,0},{32,0}}, color={0,127,255})); + connect(senTraSubCO2Out.port_b, senTraSubVOCOut.port_a) + annotation (Line(points={{52,0},{70,0}}, color={0,127,255})); + connect(senTraSubVOCOut.port_b, sin.ports[1]) + annotation (Line(points={{90,0},{110,0}}, color={0,127,255})); + annotation (experiment( + StopTime=50, + Tolerance=1e-06), + __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Validation/Empirical.mos" + "Simulate and plot"), + Documentation(revisions=" +
                        +
                      • +December 22, 2023, by Sen Huang:
                        +First implementation. +
                      • +
                      +", info=" +

                      +From 0 to 12 seconds, the testing case is warming-up and the inlet trace substances of +are fixed at 1kg/kg. +

                      +

                      +From 20 to 50 seconds, the inlet trace substances changes from 1 to 0.7kg/kg. +

                      +

                      +At the 30 seconds and , the filter replacement signal repSig changes from false to true. +

                      +

                      +From 12 to 30 seconds, the trace substance of the outlet port C_out doesn't change much; +From 30 to 45 seconds, the outlet trace substances first decrease and then increase. +

                      +"), + Diagram(coordinateSystem(extent={{-180,-100},{140,100}})), + Icon(coordinateSystem(extent={{-100,-100},{100,100}}))); +end Empirical; diff --git a/Buildings/Fluid/AirFilters/Validation/package.mo b/Buildings/Fluid/AirFilters/Validation/package.mo new file mode 100644 index 00000000000..ea47b2ba4ab --- /dev/null +++ b/Buildings/Fluid/AirFilters/Validation/package.mo @@ -0,0 +1,12 @@ +within Buildings.Fluid.AirFilters; +package Validation "Collection of models that illustrate model use and test models" + extends Modelica.Icons.ExamplesPackage; + +annotation (Documentation(info=" +

                      +This package contains examples for the use of models that can be found in + +Buildings.Fluid.AirFilters. +

                      +")); +end Validation; diff --git a/Buildings/Fluid/AirFilters/Validation/package.order b/Buildings/Fluid/AirFilters/Validation/package.order new file mode 100644 index 00000000000..e56c800cd7b --- /dev/null +++ b/Buildings/Fluid/AirFilters/Validation/package.order @@ -0,0 +1 @@ +Empirical diff --git a/Buildings/Fluid/AirFilters/package.order b/Buildings/Fluid/AirFilters/package.order index 221827672ea..757b965ae4a 100644 --- a/Buildings/Fluid/AirFilters/package.order +++ b/Buildings/Fluid/AirFilters/package.order @@ -1,3 +1,4 @@ Empirical Examples +Validation BaseClasses From 5d10a8ead9204210114d501bfc70bca2a4ed9b83 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Sun, 25 Aug 2024 23:33:03 -0400 Subject: [PATCH 22/47] script update --- .../BaseClasses/Validation/FiltrationEfficiency.mos | 2 +- .../AirFilters/BaseClasses/Validation/MassAccumulation.mos | 2 +- .../AirFilters/BaseClasses/Validation/MassTransfer.mos | 4 ++-- .../Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos | 7 ------- .../Dymola/Fluid/AirFilters/Validation/Empirical.mos | 4 ++++ 5 files changed, 8 insertions(+), 11 deletions(-) delete mode 100644 Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Validation/Empirical.mos diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mos index 98d94e448f4..02f7b84a494 100644 --- a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mos +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mos @@ -1,3 +1,3 @@ simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.FiltrationEfficiency",tolerance=1e-06, method="CVode", resultFile="SimpleCharacterization"); createPlot(id=1, position={26, 26, 824, 615}, y={"mCon.y"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={26, 26, 824, 615}, y={"eps.y"}, range={0.0, 1.0, 0.85, 1.05}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={26, 26, 824, 615}, y={"eps.y[1]"}, range={0.0, 1.0, 0.85, 1.05}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mos index e6adc5b7614..731846baa4e 100644 --- a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mos +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mos @@ -1,3 +1,3 @@ simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.MassAccumulation", tolerance=1e-06, method="CVode", resultFile="MassAccumulation"); createPlot(id=1, position={69, -7, 584, 381}, y={"masAcc.mCon"}, range={0.0, 1.0, -0.2, 0.6}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={69, -7, 584, 381}, y={"masAcc.mCon_flow"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={69, -7, 584, 381}, y={"masAcc.mCon_flow[1]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mos index d3f560c46d6..7029b563cd3 100644 --- a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mos +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mos @@ -1,3 +1,3 @@ simulateModel("Buildings.Fluid.AirFilters.BaseClasses.Validation.MassTransfer", stopTime=30, tolerance=1e-06, method="CVode", resultFile="MassTransfer"); -createPlot(id=1, position={49, 30, 734, 454}, y={"C_in.C", "C_out.C"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); -createPlot(id=1, position={49, 30, 734, 454}, y={"masTra.eps"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); \ No newline at end of file +createPlot(id=1, position={55, 55, 827, 574}, y={"masTra.eps[1]", "masTra.eps[2]"}, range={0.0, 30.0, 0.0, 1.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"1", "1"}); +createPlot(id=1, position={55, 55, 827, 574}, y={"senTraSubCO2In.C", "senTraSubCO2Out.C", "senTraSubVOCIn.C", "senTraSubVOCOut.C"}, range={0.0, 30.0, -0.2, 1.2000000000000002}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}, {250,108,220}, {120,50,47}}, timeUnit="s"); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos deleted file mode 100644 index aa75cc8e5c0..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/Empirical.mos +++ /dev/null @@ -1,7 +0,0 @@ -simulateModel("Buildings.Fluid.AirFilters.Examples.Empirical", stopTime=50, method="Cvode", tolerance=1e-06, resultFile="Generic"); -createPlot(id=1, position={35, 10, 1013, 993}, y={"C_in.C", "C_out.C"}, range={0.0, 50.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); -createPlot(id=1, position={35, 10, 1013, 993}, y={"fil.eps"}, range={0.0, 50.0, 0.4, 1.2}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s", displayUnits={"1"}); -createPlot(id=1, position={35, 10, 1013, 993}, y={"fil.uRep"}, range={0.0, 50.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={35, 10, 1013, 993}, y={"C_inflow.y"}, range={0.0, 50.0, 0.6, 1.2}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={35, 10, 1013, 993}, y={"C_in.port_a.m_flow"}, range={0.0, 50.0, 0.9, 1.05}, grid=true, subPlot=105, colors={{28,108,200}}, timeUnit="s", displayUnits={"kg/s"}); - diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Validation/Empirical.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Validation/Empirical.mos new file mode 100644 index 00000000000..1192e903feb --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Validation/Empirical.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Fluid.AirFilters.Validation.Empirical", stopTime=50, method="Cvode", tolerance=1e-06, resultFile="Generic"); +createPlot(id=1, position={39, 36, 696, 557}, y={"senTraSubCO2In.C", "senTraSubCO2Out.C", "senTraSubVOCIn.C", "senTraSubVOCOut.C"}, range={0.0, 50.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}}, timeUnit="s"); +createPlot(id=1, position={39, 36, 696, 557}, y={"airFil.eps[1]", "airFil.eps[2]"}, range={0.0, 50.0, 0.4, 0.9}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"1", "1"}); +createPlot(id=1, position={39, 36, 696, 557}, y={"airFil.uRep"}, range={0.0, 50.0, -0.2, 1.2000000000000002}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); \ No newline at end of file From 6c49dab7b2295aa73a23078580b94f0f403868db Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Mon, 2 Sep 2024 00:55:16 -0400 Subject: [PATCH 23/47] example update --- .../filtrationEfficiencyParameters.mo | 2 +- Buildings/Fluid/AirFilters/Empirical.mo | 10 +++--- .../Fluid/AirFilters/Examples/SpaceCooling.mo | 36 ++++++++++--------- .../Fluid/AirFilters/Validation/Empirical.mo | 16 ++++----- 4 files changed, 33 insertions(+), 31 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/filtrationEfficiencyParameters.mo b/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/filtrationEfficiencyParameters.mo index 5126fb6b3c2..fe73fbb63c3 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/filtrationEfficiencyParameters.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/filtrationEfficiencyParameters.mo @@ -11,7 +11,7 @@ record filtrationEfficiencyParameters

                      Data record that describes the relative mass of the contaminant captured by the filter rat versus the filteration efficiency eps. -The rat must be increasing, +The elements of the vector rat should be in ascending order, i.e.,rat[i] < rat[i+1]. Both vectors, rat and eps must have the same size. diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index 6284b19f7cf..dcc6784b38a 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -261,7 +261,7 @@ The dynamic characteristics of the filters are defined by

                      • The mCon_nominal determines the maximum mass of the contaminants that the -filter can capture. +filter can held.
                      • A performance dataset per that determines @@ -281,10 +281,10 @@ with the contaminant accumulation for each contaminant.

                      See more detailed descriptions in - -Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency and -Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection. +Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection +and +Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency, respectively.

                      The input boolean flag, uRep, triggers the filter replacement. @@ -299,7 +299,7 @@ when the captured contaminant mass becomes greater than the maximum contaminant mass (mCon_nominal).

                    • -when the extraPropertiesNames in the medium model don't contain all the contaminants +or when the extraPropertiesNames in the medium model don't contain all the contaminants defined in the per.
                    diff --git a/Buildings/Fluid/AirFilters/Examples/SpaceCooling.mo b/Buildings/Fluid/AirFilters/Examples/SpaceCooling.mo index 9592b76a2bf..366dbd9e6c6 100644 --- a/Buildings/Fluid/AirFilters/Examples/SpaceCooling.mo +++ b/Buildings/Fluid/AirFilters/Examples/SpaceCooling.mo @@ -3,7 +3,8 @@ model SpaceCooling "Space cooling system" extends Modelica.Icons.Example; - replaceable package MediumA = Buildings.Media.Air(extraPropertiesNames={"CO2"}) "Medium for air"; + replaceable package MediumA = Buildings.Media.Air(extraPropertiesNames={"PM10"}) + "Medium for air"; replaceable package MediumW = Buildings.Media.Water "Medium for water"; Buildings.Fluid.MixingVolumes.MixingVolume vol( @@ -162,19 +163,22 @@ model SpaceCooling annotation (Placement(transformation(extent={{-128,-10},{-108,10}}))); Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per( mCon_nominal=5, - filterationEfficiencyParameters(rat={{0,0.5,1}}, eps={{0.5,0.4,0.2}}), b=1.2) + substanceName={"PM10"}, + filterationEfficiencyParameters(rat={{0,0.5,1}}, eps={{0.5,0.4,0.2}}), + b=1.3) "Performance dataset of the air filter" annotation (Placement(transformation(extent={{-80,64},{-60,84}}))); Modelica.Blocks.Sources.Ramp C_inflow( duration=87600/2, - height=50/1000000*1.53, - offset=100/1000000*1.53, + height=5/1000000000/1.293, + offset=10/1000000000/1.293, startTime=15552000 + 87600/2) "Contaminant mass flow rate fraction" annotation (Placement(transformation(extent={{-170,-70},{-150,-50}}))); Buildings.Fluid.Sensors.TraceSubstancesTwoPort C_out(redeclare package Medium =MediumA, - m_flow_nominal=mA_flow_nominal) + m_flow_nominal=mA_flow_nominal, + substanceName="PM10") "Trace substance sensor of outlet air" annotation (Placement(transformation(extent={{-102,-10},{-82,10}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Constant repSig(k=false) @@ -279,31 +283,29 @@ equation This block is identical to Buildings.Examples.Tutorial.SpaceCooling.System3, -except that an air filter is added. +except that an air filter is added to the cooling system.

                    The major input signals for the air filter are configured as follows:

                    • -The operating signal uRot changes from false to true at 6:00 (15552000+6*3600 seconds) -and from true to false at 18:00 (15552000+18*3600 seconds). -
                    • -
                    • -The supply air flow rate mAir_flow changes from 0 to 0.646 at around 5:00 -and from 0.646 to 0 at around 17:00. +The input trace substance C_inflow.y changes from 10 µg/m³ (7.73e-9 kg/kg) to 15 µg/m³ +(1.15e-8 kg/kg) at 12:00 (15552000+12*3600 seconds).
                    • -The bypass damper positions are controlled to maintain the temperature of the air leaving the thermal wheel, -senTemHXOut.T, at 298.15 K. +the filter replacement signal repSig is false.

                    -The expected output is: +The expected output are:

                    • -senTemHXOut.T is less or equal to 298.15 K. +The ratio of the outlet trace substance C_out.C to the C_inflow.y slightly decreases. +
                    • +
                    • +The fan power fan.P slightly increases.
                    ", revisions=" @@ -318,7 +320,7 @@ Buildings.Examples.Tutorial.SpaceCooling.System3. Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-180,-160},{120, 100}})), __Dymola_Commands(file= - "modelica://Buildings/Resources/Scripts/Dymola/Examples/Tutorial/SpaceCooling/System3.mos" + "modelica://Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/SpaceCooling.mos" "Simulate and plot"), experiment(StartTime=15552000, Tolerance=1e-6, StopTime=15638400)); end SpaceCooling; diff --git a/Buildings/Fluid/AirFilters/Validation/Empirical.mo b/Buildings/Fluid/AirFilters/Validation/Empirical.mo index 9597e017601..4381bd09f00 100644 --- a/Buildings/Fluid/AirFilters/Validation/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Validation/Empirical.mo @@ -31,14 +31,14 @@ model Empirical "Example for using the empirical air filter model" annotation (Placement(transformation(extent={{-50,40},{-30,60}}))); Modelica.Blocks.Sources.Ramp C_CO2_inflow( duration=30, - height=-0.3, - offset=1, + height=-0.03, + offset=0.1, startTime=20) "Contaminant mass flow rate fraction for CO2" annotation (Placement(transformation(extent={{-160,20},{-140,40}}))); Modelica.Blocks.Sources.Ramp C_VOC_inflow( duration=40, - height=-0.4, - offset=1, + height=-0.04, + offset=0.1, startTime=20) "Contaminant mass flow rate fraction for VOC" annotation (Placement(transformation(extent={{-160,-40},{-140,-20}}))); @@ -100,17 +100,17 @@ First implementation. ", info="

                    From 0 to 12 seconds, the testing case is warming-up and the inlet trace substances of -are fixed at 1kg/kg. +are fixed at 0.1kg/kg.

                    -From 20 to 50 seconds, the inlet trace substances changes from 1 to 0.7kg/kg. +From 20 to 50 seconds, the inlet trace substances changes from 0.1 to 0.07kg/kg.

                    -At the 30 seconds and , the filter replacement signal repSig changes from false to true. +At the 30 seconds, the filter replacement signal repSig changes from false to true.

                    From 12 to 30 seconds, the trace substance of the outlet port C_out doesn't change much; -From 30 to 45 seconds, the outlet trace substances first decrease and then increase. +From 30 to 45 seconds, the outlet trace substances first decrease and then becomes relatively smooth.

                    "), Diagram(coordinateSystem(extent={{-180,-100},{140,100}})), From 63142cea93b553be9c8378ac8321de6e7c4cb39c Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Mon, 2 Sep 2024 00:56:47 -0400 Subject: [PATCH 24/47] ref dataset update --- ...Classes_Validation_FiltrationEfficiency.txt | 4 ++-- ...es_Validation_FlowCoefficientCorrection.txt | 4 ++-- ...BaseClasses_Validation_MassAccumulation.txt | 4 ++-- ...ers_BaseClasses_Validation_MassTransfer.txt | 18 +++++++++++++----- ..._Fluid_AirFilters_Examples_SpaceCooling.txt | 18 ++++++++++++++++++ ...s_Fluid_AirFilters_Validation_Empirical.txt | 16 ++++++++++++++++ .../Fluid/AirFilters/Examples/SpaceCooling.mos | 3 +++ ...Classes.Validation.FiltrationEfficiency.mos | 2 +- ...BaseClasses.Validation.MassAccumulation.mos | 2 +- ...ers.BaseClasses.Validation.MassTransfer.mos | 9 ++++++--- ....Fluid.AirFilters.Examples.SpaceCooling.mos | 6 ++++++ ...s.Fluid.AirFilters.Validation.Empirical.mos | 10 ++++++++++ 12 files changed, 80 insertions(+), 16 deletions(-) create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_SpaceCooling.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Validation_Empirical.txt create mode 100644 Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/SpaceCooling.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.SpaceCooling.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Validation.Empirical.mos diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_FiltrationEfficiency.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_FiltrationEfficiency.txt index dd54200775c..8c3eeae6fe2 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_FiltrationEfficiency.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_FiltrationEfficiency.txt @@ -1,4 +1,4 @@ -last-generated=2024-01-11 +last-generated=2024-09-02 statistics-simulation= { "linear": " ", @@ -7,4 +7,4 @@ statistics-simulation= } time=[0e+00, 1e+00] mCon.y=[0e+00, 1.200000037252895e-02, 2.400000074505789e-02, 3.599999925494219e-02, 4.800000149011579e-02, 5.99999977648261e-02, 7.199999850988588e-02, 8.399999850988389e-02, 9.600000298022425e-02, 1.079999985098865e-01, 1.199999955296583e-01, 1.319999999999973e-01, 1.439999970197758e-01, 1.560000089406754e-01, 1.679999970197704e-01, 1.799999999999822e-01, 1.920000059604485e-01, 2.039999940395435e-01, 2.159999970197464e-01, 2.280000029802216e-01, 2.399999910593166e-01, 2.520000119209485e-01, 2.640000000000036e-01, 2.759999880791208e-01, 2.879999940395515e-01, 3.00000011920929e-01, 3.120000178812797e-01, 3.239999880790391e-01, 3.359999940395498e-01, 3.480000000000248e-01, 3.599999999999645e-01, 3.720000059604573e-01, 3.840000119209503e-01, 3.959999821185675e-01, 4.079999880791137e-01, 4.199999940395532e-01, 4.319999940394929e-01, 4.439999999999858e-01, 4.560000059604787e-01, 4.680000119209716e-01, 4.799999821186777e-01, 4.920000178813508e-01, 5.040000238417016e-01, 5.159999642372984e-01, 5.279999999999716e-01, 5.400000357626448e-01, 5.519999761582416e-01, 5.640000119209148e-01, 5.759999880792629e-01, 5.879999880791847e-01, 6.000000238418579e-01, 6.12e-01, 6.240000357622184e-01, 6.36000011920929e-01, 6.479999761587816e-01, 6.600000119209291e-01, 6.719999880790569e-01, 6.840000238416447e-01, 6.96e-01, 7.080000357620052e-01, 7.2e-01, 7.319999761585684e-01, 7.440000119209289e-01, 7.559999880790711e-01, 7.680000238414316e-01, 7.8e-01, 7.919999642379948e-01, 8.04e-01, 8.159999761583553e-01, 8.280000119209431e-01, 8.399999880790709e-01, 8.520000238412184e-01, 8.63999988079071e-01, 8.759999642377816e-01, 8.88e-01, 8.999999761581421e-01, 9.120000119206447e-01, 9.240000476831474e-01, 9.360000238410053e-01, 9.47999988079071e-01, 9.599999642375685e-01, 9.719999999999859e-01, 9.840000357625737e-01, 9.960000119204315e-01, 1.008000047683716e+00, 1.019999952317705e+00, 1.031999928475279e+00, 1.044000023841858e+00, 1.056e+00, 1.067999976158142e+00, 1.080000071524153e+00, 1.091999976158142e+00, 1.103999952317279e+00, 1.116000047683716e+00, 1.128000023841801e+00, 1.14e+00, 1.151999976158142e+00, 1.164e+00, 1.175999976158142e+00, 1.187999952316853e+00, 1.200000047683716e+00] -eps.y=[9.800000190734863e-01, 9.787999987333982e-01, 9.775999783933234e-01, 9.764000176578668e-01, 9.751999973178052e-01, 9.739999772012338e-01, 9.72800016242247e-01, 9.715999961257024e-01, 9.703999755621244e-01, 9.692000154971501e-01, 9.679999949336257e-01, 9.667999743700123e-01, 9.656000134110083e-01, 9.643999928475193e-01, 9.631999731779181e-01, 9.620000131129259e-01, 9.607999916554073e-01, 9.595999719858415e-01, 9.584000119208138e-01, 9.571999904632952e-01, 9.559999707937649e-01, 9.548000089406068e-01, 9.535999892711832e-01, 9.524000292062088e-01, 9.512000077485303e-01, 9.49999988079071e-01, 9.48800026225913e-01, 9.476000083444776e-01, 9.463999868869944e-01, 9.452000250338364e-01, 9.440000071523655e-01, 9.42799985694918e-01, 9.416000238417599e-01, 9.404000059602534e-01, 9.391999845028414e-01, 9.380000226496833e-01, 9.368000047681414e-01, 9.355999833107649e-01, 9.344000214576067e-01, 9.331999999998039e-01, 9.319999821186883e-01, 9.308000202655302e-01, 9.295999988077274e-01, 9.283999809266117e-01, 9.272000190734536e-01, 9.259999976156508e-01, 9.247999797345352e-01, 9.236000178813771e-01, 9.22399996423894e-01, 9.211999785424586e-01, 9.200000166893005e-01, 9.187999952317989e-01, 9.175999737742974e-01, 9.164000119205878e-01, 9.1519999761607e-01, 9.139999761582842e-01, 9.128000143050806e-01, 9.115999928475705e-01, 9.103999713900689e-01, 9.092000095364305e-01, 9.079999952319127e-01, 9.067999737741268e-01, 9.056000119208437e-01, 9.043999904633421e-01, 9.031999690058405e-01, 9.020000071522731e-01, 9.007999928477552e-01, 8.996000309941169e-01, 8.984000095366153e-01, 8.971999880791052e-01, 8.960000262259016e-01, 8.948000047681158e-01, 8.935999904635979e-01, 8.924000286098884e-01, 8.912000071523869e-01, 8.899999856948853e-01, 8.887087689614868e-01, 8.872979255792655e-01, 8.858525712017934e-01, 8.844451933840741e-01, 8.831359759064158e-01, 8.819726112117399e-01, 8.809903853923335e-01, 8.802120078673326e-01, 8.796479094530463e-01, 8.792960054152166e-01, 8.791418076712583e-01, 8.79158318006376e-01, 8.793061376595671e-01, 8.795334700316684e-01, 8.797760014988025e-01, 8.799570199263431e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01, 8.799999952316284e-01] \ No newline at end of file +eps.y[1]=[6.99999988079071e-01, 6.976000070035462e-01, 6.95200025928008e-01, 6.927999852478519e-01, 6.904000041723268e-01, 6.880000235438333e-01, 6.855999824166323e-01, 6.832000017881389e-01, 6.808000202655835e-01, 6.783999809265051e-01, 6.759999994039499e-01, 6.736000178813949e-01, 6.71199976754195e-01, 6.687999952316398e-01, 6.664000154972062e-01, 6.639999761581279e-01, 6.615999928474512e-01, 6.592000131130176e-01, 6.567999737741524e-01, 6.543999904632625e-01, 6.52000010728829e-01, 6.496000274179569e-01, 6.471999880790739e-01, 6.448000083446404e-01, 6.424000250338038e-01, 6.399999856948853e-01, 6.376000023842086e-01, 6.352000262260181e-01, 6.327999833106966e-01, 6.304000000000199e-01, 6.280000238418295e-01, 6.25599980926508e-01, 6.231999976158312e-01, 6.208000214576409e-01, 6.183999785423193e-01, 6.159999952316426e-01, 6.136000190734522e-01, 6.111999761581307e-01, 6.08799992847454e-01, 6.064000095367773e-01, 6.039999737741197e-01, 6.015999904632654e-01, 5.992000071525886e-01, 5.968000309943983e-01, 5.943999880790767e-01, 5.920000047684e-01, 5.896000286102095e-01, 5.871999856948881e-01, 5.848000023842114e-01, 5.824000262260209e-01, 5.799999833106995e-01, 5.776000000000568e-01, 5.752000166894142e-01, 5.727999737741268e-01, 5.704000047682437e-01, 5.680000214576011e-01, 5.655999785423307e-01, 5.631999952316711e-01, 5.608000119210285e-01, 5.583999690057411e-01, 5.559999999998579e-01, 5.536000166892153e-01, 5.5119997377407e-01, 5.487999904632852e-01, 5.464000071526426e-01, 5.440000238412894e-01, 5.415999952314721e-01, 5.392000119208294e-01, 5.368000286101868e-01, 5.343999856948825e-01, 5.320000023842568e-01, 5.296000190736142e-01, 5.271999904630863e-01, 5.248000071524437e-01, 5.224000238418011e-01, 5.199999809265137e-01, 5.174175474594326e-01, 5.145958606947056e-01, 5.117051519403299e-01, 5.088903963048915e-01, 5.062720209538644e-01, 5.039452915647966e-01, 5.019807207167655e-01, 5.004239656677582e-01, 4.992957986409041e-01, 4.985919905644987e-01, 4.982835652754677e-01, 4.983165859449213e-01, 4.986122848557353e-01, 4.990669197975444e-01, 4.995520125339931e-01, 4.999140195871071e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_FlowCoefficientCorrection.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_FlowCoefficientCorrection.txt index 3b66a689b3d..75ff4530d78 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_FlowCoefficientCorrection.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_FlowCoefficientCorrection.txt @@ -1,4 +1,4 @@ -last-generated=2024-01-11 +last-generated=2024-09-02 statistics-simulation= { "linear": " ", @@ -7,4 +7,4 @@ statistics-simulation= } time=[0e+00, 1e+00] rat.y=[0e+00, 1e-02, 2e-02, 3e-02, 4e-02, 5e-02, 6e-02, 7.000000000000001e-02, 8e-02, 9e-02, 1e-01, 1.1e-01, 1.2e-01, 1.3e-01, 1.4e-01, 1.5e-01, 1.6e-01, 1.7e-01, 1.8e-01, 1.9e-01, 2e-01, 2.1e-01, 2.2e-01, 2.3e-01, 2.4e-01, 2.5e-01, 2.6e-01, 2.7e-01, 2.8e-01, 2.9e-01, 3e-01, 3.1e-01, 3.2e-01, 3.3e-01, 3.4e-01, 3.5e-01, 3.6e-01, 3.7e-01, 3.8e-01, 3.9e-01, 4e-01, 4.1e-01, 4.2e-01, 4.3e-01, 4.4e-01, 4.5e-01, 4.6e-01, 4.7e-01, 4.8e-01, 4.9e-01, 5e-01, 5.1e-01, 5.2e-01, 5.3e-01, 5.4e-01, 5.5e-01, 5.600000000000001e-01, 5.7e-01, 5.8e-01, 5.9e-01, 6e-01, 6.1e-01, 6.2e-01, 6.3e-01, 6.4e-01, 6.5e-01, 6.6e-01, 6.7e-01, 6.8e-01, 6.899999999999999e-01, 7e-01, 7.1e-01, 7.2e-01, 7.3e-01, 7.4e-01, 7.5e-01, 7.6e-01, 7.7e-01, 7.8e-01, 7.9e-01, 8e-01, 8.100000000000001e-01, 8.2e-01, 8.3e-01, 8.4e-01, 8.5e-01, 8.6e-01, 8.7e-01, 8.8e-01, 8.9e-01, 9e-01, 9.1e-01, 9.2e-01, 9.3e-01, 9.399999999999999e-01, 9.5e-01, 9.6e-01, 9.7e-01, 9.8e-01, 9.9e-01, 1e+00] -kCor.y=[1e+00, 1.001824855845277e+00, 1.003653049550822e+00, 1.005484581116634e+00, 1.007319569751896e+00, 1.009157776695535e+00, 1.010999322184803e+00, 1.012844324056907e+00, 1.014692664477251e+00, 1.016544341378294e+00, 1.018399357519137e+00, 1.020257830730692e+00, 1.022119641803935e+00, 1.023984909948068e+00, 1.025853514559877e+00, 1.027725576237815e+00, 1.029601097778395e+00, 1.031479954383386e+00, 1.033362268054364e+00, 1.035248041603153e+00, 1.037137269410296e+00, 1.039029957106299e+00, 1.040926099049784e+00, 1.042825578850179e+00, 1.044728637763539e+00, 1.046635150909424e+00, 1.04854512397014e+00, 1.050458548399153e+00, 1.052375554809729e+00, 1.054296018297162e+00, 1.056219933122127e+00, 1.05814742996006e+00, 1.060078383875063e+00, 1.062012908304274e+00, 1.063951014778782e+00, 1.065892578329863e+00, 1.067837712364172e+00, 1.069786428475256e+00, 1.071738601662842e+00, 1.07369435113622e+00, 1.075653790258772e+00, 1.077616692292152e+00, 1.079583170611395e+00, 1.081553338547909e+00, 1.083526969427083e+00, 1.08550429580148e+00, 1.087485192552453e+00, 1.089469790695503e+00, 1.091457965125055e+00, 1.093449709898781e+00, 1.095445156097412e+00, 1.097444178582091e+00, 1.099446896561566e+00, 1.101453190828254e+00, 1.103463287805413e+00, 1.105476973038675e+00, 1.107494353766577e+00, 1.109515310781152e+00, 1.111540082499942e+00, 1.113568549711966e+00, 1.115600581088839e+00, 1.117636439270135e+00, 1.11967599294623e+00, 1.12171924211769e+00, 1.123766305993805e+00, 1.125817065364717e+00, 1.127871507975334e+00, 1.129929777522251e+00, 1.131991742565529e+00, 1.134057403103902e+00, 1.136126997556475e+00, 1.138200287503859e+00, 1.140277379763675e+00, 1.142358179889765e+00, 1.144442913926957e+00, 1.146531343460083e+00, 1.148623587698433e+00, 1.150719765850159e+00, 1.152819639498387e+00, 1.154923434508609e+00, 1.157031056750569e+00, 1.159142493697879e+00, 1.161257745350158e+00, 1.163376930916084e+00, 1.165499931187659e+00, 1.167626852682958e+00, 1.169757601548264e+00, 1.171892284328368e+00, 1.174030781813127e+00, 1.17617333242112e+00, 1.178319697734621e+00, 1.180469984132013e+00, 1.182624098041803e+00, 1.18478226507227e+00, 1.186944366017549e+00, 1.189110400877452e+00, 1.191280369652026e+00, 1.193454378579523e+00, 1.195632215158255e+00, 1.197814104859084e+00, 1.200000047683716e+00] \ No newline at end of file +kCor.y=[1e+00, 1.000953555128446e+00, 1.001908063931236e+00, 1.002863407199118e+00, 1.003819704141318e+00, 1.004776835370269e+00, 1.005735039839536e+00, 1.006693959207563e+00, 1.0076539518166e+00, 1.008614778175059e+00, 1.009576558923421e+00, 1.010539293346596e+00, 1.011502862235296e+00, 1.012467384798525e+00, 1.013432860316897e+00, 1.0143991702993e+00, 1.015366554606216e+00, 1.016334652727501e+00, 1.017303823731539e+00, 1.01827394985446e+00, 1.019244908996954e+00, 1.020216823261598e+00, 1.021189570542972e+00, 1.022163390706923e+00, 1.023138046787749e+00, 1.024113655090332e+00, 1.025090218521994e+00, 1.02606773271525e+00, 1.027046084287321e+00, 1.028025508744632e+00, 1.029005764746077e+00, 1.029986977343157e+00, 1.030969143616828e+00, 1.031952260635111e+00, 1.032936215048765e+00, 1.033921242347516e+00, 1.034907101173704e+00, 1.035893916613078e+00, 1.036881685728473e+00, 1.03787040851989e+00, 1.038860082036238e+00, 1.039850712176999e+00, 1.040842295993568e+00, 1.041834830527536e+00, 1.042828202484656e+00, 1.043822647326946e+00, 1.044817923668889e+00, 1.04581427586038e+00, 1.046811462519171e+00, 1.047809719087242e+00, 1.048808813095093e+00, 1.049808979988809e+00, 1.050809981349825e+00, 1.051812055595016e+00, 1.052814958327255e+00, 1.053818939919089e+00, 1.054823755978216e+00, 1.055829644922812e+00, 1.056836368334558e+00, 1.057844164632184e+00, 1.058852908589626e+00, 1.059862493024322e+00, 1.060873150343477e+00, 1.061884761339221e+00, 1.062897326011556e+00, 1.06391084436048e+00, 1.064925310335399e+00, 1.065940855237557e+00, 1.066957234609004e+00, 1.067974686865344e+00, 1.068993092797549e+00, 1.070012333198483e+00, 1.071032759606332e+00, 1.072054026562488e+00, 1.073076247193529e+00, 1.074099540710449e+00, 1.07512366869467e+00, 1.076148869563634e+00, 1.077175024109756e+00, 1.07820224541471e+00, 1.079230307307049e+00, 1.080259442083982e+00, 1.08128953053752e+00, 1.08232057266764e+00, 1.083352687682077e+00, 1.084385750213797e+00, 1.085419772575303e+00, 1.086454748613684e+00, 1.087490678328086e+00, 1.0885276809278e+00, 1.089565637204388e+00, 1.090604660169038e+00, 1.091644643000422e+00, 1.092685579508823e+00, 1.093727469692826e+00, 1.094770432762694e+00, 1.09581434950788e+00, 1.096859213700719e+00, 1.097905157001412e+00, 1.098952053978695e+00, 1.100000023841858e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_MassAccumulation.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_MassAccumulation.txt index 283a54ed403..fdab827f9cd 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_MassAccumulation.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_MassAccumulation.txt @@ -1,4 +1,4 @@ -last-generated=2023-12-28 +last-generated=2024-09-02 statistics-simulation= { "linear": " ", @@ -8,4 +8,4 @@ statistics-simulation= } time=[0e+00, 1e+00] masAcc.mCon=[0e+00, 6.09920818949409e-05, 2.410419805420901e-04, 5.410662519616293e-04, 9.610888522426917e-04, 1.501098929865695e-03, 2.1611150404528e-03, 2.941124582200979e-03, 3.841128606931138e-03, 4.86113791343273e-03, 6.001146798878266e-03, 7.261154321253466e-03, 8.641159551381743e-03, 1.014116295134996e-02, 1.176116326195002e-02, 1.350116902559678e-02, 1.536117656332307e-02, 1.734118127322078e-02, 1.944118398273132e-02, 2.1661188999891e-02, 2.400119158983249e-02, 2.646119686078426e-02, 2.904119746708769e-02, 3.174119700574817e-02, 3.456119975614166e-02, 3.750120103359222e-02, 4.056120962571547e-02, 4.374120410657492e-02, 4.704121087813544e-02, 5.046121694970593e-02, 5.40012115681321e-02, 5.766121954727234e-02, 6.144122309827679e-02, 6.534122157952887e-02, 6.936122331572599e-02, 7.350123179673608e-02, 7.776121923972396e-02, 8.214122590876444e-02, 8.664123186922182e-02, 9.126123712109607e-02, 9.600122732639663e-02, 1.008612307663012e-01, 1.058412409510677e-01, 1.109412350192031e-01, 1.16161235938555e-01, 1.215012436056331e-01, 1.269612415366344e-01, 1.32541239935398e-01, 1.382412525352928e-01, 1.440612468786326e-01, 1.500012427568436e-01, 6.060055716994352e-03, 1.224008743087589e-02, 1.854011749336643e-02, 2.496009608538999e-02, 3.150011931311366e-02, 3.816013623282798e-02, 4.494014499918336e-02, 5.18401605017786e-02, 5.886017900960682e-02, 6.600014641794391e-02, 7.326016274754042e-02, 8.064017090660114e-02, 8.814017835707516e-02, 9.576019254954309e-02, 1.03500206021967e-01, 1.113601715596613e-01, 1.193401828539246e-01, 1.274401934281705e-01, 1.356602032881154e-01, 1.440002124450935e-01, 1.524602208821753e-01, 1.610401919998651e-01, 1.697401982586353e-01, 1.785602037975035e-01, 1.875002235174179e-01, 1.965602276390772e-01, 2.057402459417827e-01, 2.150402486234251e-01, 2.244602089618859e-01, 2.340002243663778e-01, 2.436602390508278e-01, 2.534402381314408e-01, 2.633402513987686e-01, 2.733602788471426e-01, 2.835002298643578e-01, 2.937602253324707e-01, 3.041402349816298e-01, 3.146402588232746e-01, 3.252602670552958e-01, 3.36000259666325e-01, 3.468602311642084e-01, 3.578402215971924e-01, 3.689402560130475e-01, 3.801602450113881e-01, 3.915002780100251e-01, 4.029602953878214e-01, 4.145402277628651e-01, 4.262402429621189e-01, 4.380602425406647e-01, 4.500002562999725e-01] -masAcc.mCon_flow=[0e+00, 1.200000037252895e-02, 2.400000074505789e-02, 3.599999925494219e-02, 4.800000149011579e-02, 5.99999977648261e-02, 7.199999850988588e-02, 8.399999850988389e-02, 9.600000298022425e-02, 1.079999985098865e-01, 1.199999955296583e-01, 1.319999999999973e-01, 1.439999970197758e-01, 1.560000089406754e-01, 1.679999970197704e-01, 1.799999999999822e-01, 1.920000059604485e-01, 2.039999940395435e-01, 2.159999970197464e-01, 2.280000029802216e-01, 2.399999910593166e-01, 2.520000119209485e-01, 2.640000000000036e-01, 2.759999880791208e-01, 2.879999940395515e-01, 3.00000011920929e-01, 3.120000178812797e-01, 3.239999880790391e-01, 3.359999940395498e-01, 3.480000000000248e-01, 3.599999999999645e-01, 3.720000059604573e-01, 3.840000119209503e-01, 3.959999821185675e-01, 4.079999880791137e-01, 4.199999940395532e-01, 4.319999940394929e-01, 4.439999999999858e-01, 4.560000059604787e-01, 4.680000119209716e-01, 4.799999821186777e-01, 4.920000178813508e-01, 5.040000238417016e-01, 5.159999642372984e-01, 5.279999999999716e-01, 5.400000357626448e-01, 5.519999761582416e-01, 5.640000119209148e-01, 5.759999880792629e-01, 5.879999880791847e-01, 6.000000238418579e-01, 6.12e-01, 6.240000357622184e-01, 6.36000011920929e-01, 6.479999761587816e-01, 6.600000119209291e-01, 6.719999880790569e-01, 6.840000238416447e-01, 6.96e-01, 7.080000357620052e-01, 7.2e-01, 7.319999761585684e-01, 7.440000119209289e-01, 7.559999880790711e-01, 7.680000238414316e-01, 7.8e-01, 7.919999642379948e-01, 8.04e-01, 8.159999761583553e-01, 8.280000119209431e-01, 8.399999880790709e-01, 8.520000238412184e-01, 8.63999988079071e-01, 8.759999642377816e-01, 8.88e-01, 8.999999761581421e-01, 9.120000119206447e-01, 9.240000476831474e-01, 9.360000238410053e-01, 9.47999988079071e-01, 9.599999642375685e-01, 9.719999999999859e-01, 9.840000357625737e-01, 9.960000119204315e-01, 1.008000047683716e+00, 1.019999952317705e+00, 1.031999928475279e+00, 1.044000023841858e+00, 1.056e+00, 1.067999976158142e+00, 1.080000071524153e+00, 1.091999976158142e+00, 1.103999952317279e+00, 1.116000047683716e+00, 1.128000023841801e+00, 1.14e+00, 1.151999976158142e+00, 1.164e+00, 1.175999976158142e+00, 1.187999952316853e+00, 1.200000047683716e+00] +masAcc.mCon_flow[1]=[0e+00, 1.200000037252895e-02, 2.400000074505789e-02, 3.599999925494219e-02, 4.800000149011579e-02, 5.99999977648261e-02, 7.199999850988588e-02, 8.399999850988389e-02, 9.600000298022425e-02, 1.079999985098865e-01, 1.199999955296583e-01, 1.319999999999973e-01, 1.439999970197758e-01, 1.560000089406754e-01, 1.679999970197704e-01, 1.799999999999822e-01, 1.920000059604485e-01, 2.039999940395435e-01, 2.159999970197464e-01, 2.280000029802216e-01, 2.399999910593166e-01, 2.520000119209485e-01, 2.640000000000036e-01, 2.759999880791208e-01, 2.879999940395515e-01, 3.00000011920929e-01, 3.120000178812797e-01, 3.239999880790391e-01, 3.359999940395498e-01, 3.480000000000248e-01, 3.599999999999645e-01, 3.720000059604573e-01, 3.840000119209503e-01, 3.959999821185675e-01, 4.079999880791137e-01, 4.199999940395532e-01, 4.319999940394929e-01, 4.439999999999858e-01, 4.560000059604787e-01, 4.680000119209716e-01, 4.799999821186777e-01, 4.920000178813508e-01, 5.040000238417016e-01, 5.159999642372984e-01, 5.279999999999716e-01, 5.400000357626448e-01, 5.519999761582416e-01, 5.640000119209148e-01, 5.759999880792629e-01, 5.879999880791847e-01, 6.000000238418579e-01, 6.12e-01, 6.240000357622184e-01, 6.36000011920929e-01, 6.479999761587816e-01, 6.600000119209291e-01, 6.719999880790569e-01, 6.840000238416447e-01, 6.96e-01, 7.080000357620052e-01, 7.2e-01, 7.319999761585684e-01, 7.440000119209289e-01, 7.559999880790711e-01, 7.680000238414316e-01, 7.8e-01, 7.919999642379948e-01, 8.04e-01, 8.159999761583553e-01, 8.280000119209431e-01, 8.399999880790709e-01, 8.520000238412184e-01, 8.63999988079071e-01, 8.759999642377816e-01, 8.88e-01, 8.999999761581421e-01, 9.120000119206447e-01, 9.240000476831474e-01, 9.360000238410053e-01, 9.47999988079071e-01, 9.599999642375685e-01, 9.719999999999859e-01, 9.840000357625737e-01, 9.960000119204315e-01, 1.008000047683716e+00, 1.019999952317705e+00, 1.031999928475279e+00, 1.044000023841858e+00, 1.056e+00, 1.067999976158142e+00, 1.080000071524153e+00, 1.091999976158142e+00, 1.103999952317279e+00, 1.116000047683716e+00, 1.128000023841801e+00, 1.14e+00, 1.151999976158142e+00, 1.164e+00, 1.175999976158142e+00, 1.187999952316853e+00, 1.200000047683716e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_MassTransfer.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_MassTransfer.txt index 5e4b819c144..25cb8d3d65b 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_MassTransfer.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_BaseClasses_Validation_MassTransfer.txt @@ -1,12 +1,20 @@ -last-generated=2024-01-11 +last-generated=2024-09-02 +statistics-initialization= +{ + "nonlinear": "0", + "numerical Jacobians": "0" +} statistics-simulation= { "linear": " ", "nonlinear": " ", - "number of continuous time states": "2", + "number of continuous time states": "4", "numerical Jacobians": "0" } time=[0e+00, 3e+01] -C_in.C=[0e+00, 2.591803280896766e-01, 4.511871501062317e-01, 5.934327934896777e-01, 6.988113970561151e-01, 7.768788933753967e-01, 8.347108440604545e-01, 8.775540703640217e-01, 9.092924505717674e-01, 9.328040447588124e-01, 9.502216577529907e-01, 9.631246345423029e-01, 9.726842667125689e-01, 9.797661284581582e-01, 9.850102094735003e-01, 9.888943433761597e-01, 9.917724116366002e-01, 9.939044123572108e-01, 9.954845900866375e-01, 9.966545707217122e-01, 9.975214004516602e-01, 9.981635805337065e-01, 9.986393452949757e-01, 9.989920257531062e-01, 9.992535711719853e-01, 9.994474053382874e-01, 9.995908736375446e-01, 9.996970294712364e-01, 9.997756482000563e-01, 9.998338818857062e-01, 9.998769760131836e-01, 9.999089240847829e-01, 9.999325275155875e-01, 9.999500513262469e-01, 9.999629855226051e-01, 9.999726414680481e-01, 9.999797344167973e-01, 9.99985039228477e-01, 9.99988973144885e-01, 9.999918341651816e-01, 9.999939799308777e-01, 9.999955296506945e-01, 9.999966621383768e-01, 9.999974966060563e-01, 9.999981522563909e-01, 9.999986886978149e-01, 9.999990463254941e-01, 9.999994635578181e-01, 9.999998211864446e-01, 1e+00, 1.00000011920929e+00, 1.000000238418579e+00, 1.000000238418579e+00, 1.00000011920929e+00, 1.00000011920929e+00, 1.00000011920929e+00, 1e+00, 1e+00, 9.999999403953552e-01, 9.999998807907104e-01, 9.999997615814209e-01, 9.999997019760182e-01, 9.999996423721313e-01, 9.999995827674866e-01, 9.999996423721313e-01, 9.999997019767761e-01, 9.999997019767761e-01, 9.999997019767761e-01, 9.999997615814209e-01, 9.999998211860657e-01, 9.999998211860657e-01, 9.999998807907104e-01, 9.999999403953552e-01, 9.999999403953552e-01, 9.999999403953552e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -C_out.C=[0e+00, 2.591803392655445e-02, 4.511871426556511e-02, 5.934327562368013e-02, 6.988113970561269e-02, 7.768788933753967e-02, 8.347108291592933e-02, 8.775540554628368e-02, 9.092924654728576e-02, 9.328040447588243e-02, 9.502216428518295e-02, 9.631246345422911e-02, 9.726842518114077e-02, 9.797660986559069e-02, 9.850101945723864e-02, 9.888943284749985e-02, 9.917724116366002e-02, 9.956052945525846e-02, 1.020086918436637e-01, 1.065469493909452e-01, 1.126299500465393e-01, 1.198575224782044e-01, 1.279332664749382e-01, 1.366362245363482e-01, 1.458036363218164e-01, 1.553159058094025e-01, 1.650847580964753e-01, 1.750437489867467e-01, 1.851432452733894e-01, 1.953465854744554e-01, 2.056268751621246e-01, 2.159641617258962e-01, 2.26343693034283e-01, 2.367545349844914e-01, 2.471884704478394e-01, 2.576394975185394e-01, 2.681031458583231e-01, 2.78576092512081e-01, 2.890561654355884e-01, 2.995415098589649e-01, 3.100307583808899e-01, 3.205228977247706e-01, 3.310170338219777e-01, 3.415126934004524e-01, 3.520093328934031e-01, 3.62506777048111e-01, 3.730047576441481e-01, 3.835027382399958e-01, 3.940010502317945e-01, 4.044999248976928e-01, 4.149994254112244e-01, 4.254989855291165e-01, 4.359989628789536e-01, 4.464991524221787e-01, 4.569993646144565e-01, 4.674996137619019e-01, 4.779998927112908e-01, 4.88499985694635e-01, 4.990002646454413e-01, 5.095007152549491e-01, 5.200011730194092e-01, 5.305016307831114e-01, 5.410019025798217e-01, 5.515020623207698e-01, 5.620019168861036e-01, 5.725016593933105e-01, 5.830015807144519e-01, 5.935013756755197e-01, 6.040012373921073e-01, 6.145009727492882e-01, 6.250007748603821e-01, 6.355005769722337e-01, 6.460003719333016e-01, 6.565002932549129e-01, 6.670001478202466e-01, 6.775000691413879e-01, 6.879999904625292e-01, 6.984999046325078e-01, 7.089999451637875e-01, 7.19499859333766e-01, 7.29999840259552e-01, 7.404998807899829e-01, 7.509997949599613e-01, 7.61499835491241e-01, 7.713453544187366e-01, 7.787787914276123e-01, 7.842784044292244e-01, 7.883510543836461e-01, 7.913678320409853e-01, 7.936052629714079e-01, 7.952654361724854e-01, 7.964963939027873e-01, 7.974072684557905e-01, 7.980807430716053e-01, 7.985789764654281e-01, 7.989479303359985e-01, 7.992212182105675e-01, 7.994235155692857e-01, 7.99573302427387e-01, 7.99684107054272e-01, 7.997661232948303e-01] -masTra.eps=[8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.964999880790824e-01, 8.85999980926597e-01, 8.755000166891869e-01, 8.650000095367432e-01, 8.545000023841101e-01, 8.439999785423392e-01, 8.33500030994404e-01, 8.230000071526332e-01, 8.125e-01, 8.019999928473668e-01, 7.914999856951126e-01, 7.810000047685232e-01, 7.704999976158901e-01, 7.599999904632568e-01, 7.494999833108131e-01, 7.390000357626353e-01, 7.2849999523178e-01, 7.179999880791468e-01, 7.074999809265137e-01, 6.970000333785253e-01, 6.865000262258921e-01, 6.759999856950368e-01, 6.654999785424036e-01, 6.549999713897705e-01, 6.445000238417822e-01, 6.34000016689149e-01, 6.234999761582937e-01, 6.129999690056606e-01, 6.025000214576721e-01, 5.920000143050389e-01, 5.815000071524058e-01, 5.709999666215505e-01, 5.605000190733727e-01, 5.50000011920929e-01, 5.395000047682957e-01, 5.289999976156626e-01, 5.184999570848073e-01, 5.080000429146165e-01, 4.975000023841858e-01, 4.869999618537549e-01, 4.765000178814541e-01, 4.659999773501744e-01, 4.555000333778735e-01, 4.449999928474426e-01, 4.344999821189552e-01, 4.240000083447109e-01, 4.134999976155642e-01, 4.030000238411304e-01, 3.925000131130219e-01, 3.819999725825909e-01, 3.714999988081572e-01, 3.609999880790103e-01, 3.505000143047661e-01, 3.400000035762787e-01, 3.294999630458479e-01, 3.19000019073547e-01, 3.084999785422673e-01, 2.980000345699664e-01, 2.874999940395355e-01, 2.769999833110481e-01, 2.665000095368038e-01, 2.559999988076569e-01, 2.455000250334126e-01, 2.349999994039536e-01, 2.244999737744944e-01, 2.140000149013166e-01, 2.034999892710086e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01] +masTra.eps[1]=[8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.964999880790824e-01, 8.85999980926597e-01, 8.755000166891869e-01, 8.650000095367432e-01, 8.545000023841101e-01, 8.439999785423392e-01, 8.33500030994404e-01, 8.230000071526332e-01, 8.125e-01, 8.019999928473668e-01, 7.914999856951126e-01, 7.810000047685232e-01, 7.704999976158901e-01, 7.599999904632568e-01, 7.494999833108131e-01, 7.390000357626353e-01, 7.2849999523178e-01, 7.179999880791468e-01, 7.074999809265137e-01, 6.970000333785253e-01, 6.865000262258921e-01, 6.759999856950368e-01, 6.654999785424036e-01, 6.549999713897705e-01, 6.445000238417822e-01, 6.34000016689149e-01, 6.234999761582937e-01, 6.129999690056606e-01, 6.025000214576721e-01, 5.920000143050389e-01, 5.815000071524058e-01, 5.709999666215505e-01, 5.605000190733727e-01, 5.50000011920929e-01, 5.395000047682957e-01, 5.289999976156626e-01, 5.184999570848073e-01, 5.080000429146165e-01, 4.975000023841858e-01, 4.869999618537549e-01, 4.765000178814541e-01, 4.659999773501744e-01, 4.555000333778735e-01, 4.449999928474426e-01, 4.344999821189552e-01, 4.240000083447109e-01, 4.134999976155642e-01, 4.030000238411304e-01, 3.925000131130219e-01, 3.819999725825909e-01, 3.714999988081572e-01, 3.609999880790103e-01, 3.505000143047661e-01, 3.400000035762787e-01, 3.294999630458479e-01, 3.19000019073547e-01, 3.084999785422673e-01, 2.980000345699664e-01, 2.874999940395355e-01, 2.769999833110481e-01, 2.665000095368038e-01, 2.559999988076569e-01, 2.455000250334126e-01, 2.349999994039536e-01, 2.244999737744944e-01, 2.140000149013166e-01, 2.034999892710086e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01] +masTra.eps[2]=[8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.999999761581421e-01, 8.964999880790824e-01, 8.85999980926597e-01, 8.755000166891869e-01, 8.650000095367432e-01, 8.545000023841101e-01, 8.439999785423392e-01, 8.33500030994404e-01, 8.230000071526332e-01, 8.125e-01, 8.019999928473668e-01, 7.914999856951126e-01, 7.810000047685232e-01, 7.704999976158901e-01, 7.599999904632568e-01, 7.494999833108131e-01, 7.390000357626353e-01, 7.2849999523178e-01, 7.179999880791468e-01, 7.074999809265137e-01, 6.970000333785253e-01, 6.865000262258921e-01, 6.759999856950368e-01, 6.654999785424036e-01, 6.549999713897705e-01, 6.445000238417822e-01, 6.34000016689149e-01, 6.234999761582937e-01, 6.129999690056606e-01, 6.025000214576721e-01, 5.920000143050389e-01, 5.815000071524058e-01, 5.709999666215505e-01, 5.605000190733727e-01, 5.50000011920929e-01, 5.395000047682957e-01, 5.289999976156626e-01, 5.184999570848073e-01, 5.080000429146165e-01, 4.975000023841858e-01, 4.869999618537549e-01, 4.765000178814541e-01, 4.659999773501744e-01, 4.555000333778735e-01, 4.449999928474426e-01, 4.344999821189552e-01, 4.240000083447109e-01, 4.134999976155642e-01, 4.030000238411304e-01, 3.925000131130219e-01, 3.819999725825909e-01, 3.714999988081572e-01, 3.609999880790103e-01, 3.505000143047661e-01, 3.400000035762787e-01, 3.294999630458479e-01, 3.19000019073547e-01, 3.084999785422673e-01, 2.980000345699664e-01, 2.874999940395355e-01, 2.769999833110481e-01, 2.665000095368038e-01, 2.559999988076569e-01, 2.455000250334126e-01, 2.349999994039536e-01, 2.244999737744944e-01, 2.140000149013166e-01, 2.034999892710086e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01] +senTraSubCO2In.C=[0e+00, 2.3326264992839e-01, 4.060685811269882e-01, 5.340889776987814e-01, 6.289350853250771e-01, 6.991970539093018e-01, 7.512463400075001e-01, 7.898042900052241e-01, 8.183675924168915e-01, 8.395273059686843e-01, 8.552021980285645e-01, 8.668148532973433e-01, 8.754190825334194e-01, 8.817910534128692e-01, 8.865094209840944e-01, 8.900051712989807e-01, 8.925955877055484e-01, 8.943444491458764e-01, 8.934745198854449e-01, 8.901081652231269e-01, 8.848918080329895e-01, 8.78308479490904e-01, 8.707128141452524e-01, 8.623614338563762e-01, 8.53452617057431e-01, 8.441327810287476e-01, 8.345080079875462e-01, 8.246562011105678e-01, 8.146355619734084e-01, 8.04490082928252e-01, 7.942523956298828e-01, 7.83946639905434e-01, 7.735904587083483e-01, 7.6319693195169e-01, 7.527756624639408e-01, 7.423340082168579e-01, 7.318771548027891e-01, 7.21409095728008e-01, 7.109326586974952e-01, 7.004502348993442e-01, 6.899632811546326e-01, 6.794730491582478e-01, 6.689801349558797e-01, 6.58485339647407e-01, 6.479891471882498e-01, 6.374918818473816e-01, 6.269937224377891e-01, 6.164950861914174e-01, 6.059959397325074e-01, 5.95496528625943e-01, 5.849971175193787e-01, 5.744974679944247e-01, 5.639978780741154e-01, 5.534982547769105e-01, 5.429986982330726e-01, 5.324990153312683e-01, 5.219993920341087e-01, 5.114997758862174e-01, 5.009999737742746e-01, 4.905001490105054e-01, 4.800003468990326e-01, 4.69500485182536e-01, 4.590006008148799e-01, 4.485005006789555e-01, 4.380005269047112e-01, 4.27500456571579e-01, 4.170003862384468e-01, 4.065003230574247e-01, 3.960002229211212e-01, 3.855001597400994e-01, 3.750000596046448e-01, 3.645000190738351e-01, 3.539999558928131e-01, 3.434998259541872e-01, 3.329997627731652e-01, 3.224996328353882e-01, 3.11999562502256e-01, 3.014995589256892e-01, 2.909995183944095e-01, 2.804996340267534e-01, 2.699995636940002e-01, 2.59499493360868e-01, 2.489994897843014e-01, 2.384994194506993e-01, 2.286545412663139e-01, 2.212285548448563e-01, 2.157271835014865e-01, 2.116532073494028e-01, 2.086350587834336e-01, 2.063968976979126e-01, 2.047363370656967e-01, 2.035076592215838e-01, 2.025985280954402e-01, 2.01922952412297e-01, 2.014222454360424e-01, 2.01052337884903e-01, 2.007792288250262e-01, 2.005771251804562e-01, 2.004273085199377e-01, 2.00316280376298e-01, 2.002341002225876e-01] +senTraSubCO2Out.C=[0e+00, 2.332621172119025e-02, 4.060679180253062e-02, 5.340891416115693e-02, 6.28928156287378e-02, 6.991800665855408e-02, 7.512281903927752e-02, 7.897847992868563e-02, 8.183498600345497e-02, 8.395110040980422e-02, 8.551882207393646e-02, 8.668031558857588e-02, 8.754044793937678e-02, 8.817743492104604e-02, 8.865019704097028e-02, 8.900008350610733e-02, 8.92588047716279e-02, 8.958679474946779e-02, 9.153906915877659e-02, 9.508517656949293e-02, 9.975536167621613e-02, 1.051985808832272e-01, 1.111570020298695e-01, 1.174441630224649e-01, 1.239159446765724e-01, 1.304659992456436e-01, 1.370171415973504e-01, 1.435128070201971e-01, 1.499106517382725e-01, 1.561787465757343e-01, 1.622933447360992e-01, 1.68236922464935e-01, 1.739966350048247e-01, 1.79563022625614e-01, 1.849290165858647e-01, 1.900894045829773e-01, 1.950402973945537e-01, 1.997788340291925e-01, 2.043029274791657e-01, 2.086108949520171e-01, 2.12701678276062e-01, 2.165743684544147e-01, 2.202284290740726e-01, 2.236633789820237e-01, 2.268788834150309e-01, 2.298746407032013e-01, 2.326505614119039e-01, 2.352063177442035e-01, 2.375419316892545e-01, 2.396572691889017e-01, 2.415520697832108e-01, 2.432265718626709e-01, 2.446805370369824e-01, 2.459139837915905e-01, 2.46926975878539e-01, 2.477194666862488e-01, 2.482914339757874e-01, 2.486429360140096e-01, 2.487739920600991e-01, 2.486846600517738e-01, 2.483747452497482e-01, 2.478443814353575e-01, 2.470935891805558e-01, 2.461223737274611e-01, 2.449306431179834e-01, 2.435184121131897e-01, 2.418857022938979e-01, 2.40032526339105e-01, 2.379588307701905e-01, 2.356646568564558e-01, 2.331499457359314e-01, 2.304147110972358e-01, 2.274590471348919e-01, 2.242828565489963e-01, 2.20886194627521e-01, 2.172690033912659e-01, 2.134313035378113e-01, 2.093730919634609e-01, 2.050943318543046e-01, 2.005950478153012e-01, 1.958753168582916e-01, 1.909350921856227e-01, 1.857743926035319e-01, 1.803931523785557e-01, 1.751874953779325e-01, 1.712515652179718e-01, 1.683357296272912e-01, 1.66176440757608e-01, 1.645767522801067e-01, 1.633904751979719e-01, 1.625103503465652e-01, 1.61859123522005e-01, 1.613772665909182e-01, 1.61019205667246e-01, 1.607538169628484e-01, 1.605577617883682e-01, 1.604130116023416e-01, 1.60305887581123e-01, 1.602264790885776e-01, 1.601676346194048e-01, 1.601240783929825e-01] +senTraSubVOCIn.C=[0e+00, 2.591807155199209e-01, 4.51187328920166e-01, 5.934321974430878e-01, 6.988167614722974e-01, 7.768856287002563e-01, 8.34718115827496e-01, 8.775603288506809e-01, 9.092973381531128e-01, 9.328080978747992e-01, 9.502246975898743e-01, 9.631276147748259e-01, 9.726879025952371e-01, 9.797678569936147e-01, 9.850104478918899e-01, 9.888946413993835e-01, 9.917728884737584e-01, 9.937592150950348e-01, 9.933746461509073e-01, 9.907566881562553e-01, 9.86483633518219e-01, 9.809876121845986e-01, 9.745859482005299e-01, 9.675081991520474e-01, 9.599317858604353e-01, 9.519875645637512e-01, 9.437705331211352e-01, 9.353504288830363e-01, 9.267793187863552e-01, 9.180964771994325e-01, 9.093311429023743e-01, 9.005049523329172e-01, 8.916336410981449e-01, 8.827288633401658e-01, 8.737993183509634e-01, 8.648514747619629e-01, 8.558901009341354e-01, 8.469186539327095e-01, 8.37939787410282e-01, 8.289555254066292e-01, 8.199671506881714e-01, 8.109758553455301e-01, 8.019822354243953e-01, 7.929869179775668e-01, 7.839903178232459e-01, 7.749927639961243e-01, 7.659943757047337e-01, 7.569956297858534e-01, 7.479963784226172e-01, 7.389969172479997e-01, 7.29997456073761e-01, 7.209977564809432e-01, 7.119981164923913e-01, 7.029984478955048e-01, 6.939988365160606e-01, 6.849991083145142e-01, 6.759994397176123e-01, 6.669997687337055e-01, 6.579999809267866e-01, 6.490001311297031e-01, 6.400002837181091e-01, 6.310004363065151e-01, 6.220005269051658e-01, 6.130004410742653e-01, 6.040004720682712e-01, 5.950004458427429e-01, 5.860003600118119e-01, 5.770002717976652e-01, 5.680001859663856e-01, 5.590001573557468e-01, 5.500000715255737e-01, 5.409999856954008e-01, 5.319999570847619e-01, 5.229998712534822e-01, 5.139997830385776e-01, 5.049996972084045e-01, 4.959996113778525e-01, 4.869995827677821e-01, 4.779995863436591e-01, 4.689996769419309e-01, 4.599996209144592e-01, 4.509995350842861e-01, 4.419995362759698e-01, 4.329994802473915e-01, 4.245610132323664e-01, 4.18195903301239e-01, 4.134804208626227e-01, 4.09988466848325e-01, 4.074014695907847e-01, 4.054830415457747e-01, 4.040597081184387e-01, 4.030065514232071e-01, 4.022273132020172e-01, 4.016482525883345e-01, 4.012190709225334e-01, 4.009020030498505e-01, 4.006679053125897e-01, 4.004946651022406e-01, 4.003662465644299e-01, 4.002710880990082e-01, 4.002006649971008e-01] +senTraSubVOCOut.C=[0e+00, 2.591807304210777e-02, 4.51187328920166e-02, 5.934321601902055e-02, 6.988167614722619e-02, 7.76885598897934e-02, 8.347181307286927e-02, 8.775603139495908e-02, 9.092973828565253e-02, 9.32808142578271e-02, 9.502246975898743e-02, 9.631276147748259e-02, 9.726879025951897e-02, 9.797678122901547e-02, 9.850104180898044e-02, 9.888946264982224e-02, 9.91772858671436e-02, 9.954555375193803e-02, 1.017788117306575e-01, 1.058552147554051e-01, 1.112486273050308e-01, 1.175658511813026e-01, 1.245180987475174e-01, 1.318965232350541e-01, 1.395397235529038e-01, 1.473285555839539e-01, 1.551765898596944e-01, 1.630204369410663e-01, 1.708127060659756e-01, 1.785176295931631e-01, 1.861085891723633e-01, 1.935659599939894e-01, 2.008753773801459e-01, 2.08026224401061e-01, 2.150105877759811e-01, 2.218226492404938e-01, 2.284580278387606e-01, 2.349135198492149e-01, 2.411867905544627e-01, 2.472759821276061e-01, 2.531798779964447e-01, 2.588974797611044e-01, 2.644281615979208e-01, 2.697714037648125e-01, 2.749268444649491e-01, 2.798941135406494e-01, 2.846731215612617e-01, 2.892635109235493e-01, 2.936652953319857e-01, 2.978783275919462e-01, 3.019023239612579e-01, 3.057375526366643e-01, 3.093837156194785e-01, 3.128408832153284e-01, 3.161090829245232e-01, 3.191882967948914e-01, 3.220785032794135e-01, 3.24779685973348e-01, 3.27291998337376e-01, 3.296154084261863e-01, 3.317497074604034e-01, 3.336950885157416e-01, 3.354515411936252e-01, 3.370190877330376e-01, 3.383975889926206e-01, 3.395871222019196e-01, 3.405876778276948e-01, 3.413992514788629e-01, 3.420218235768346e-01, 3.424553862052467e-01, 3.426999449729919e-01, 3.427554665525686e-01, 3.426220419681106e-01, 3.422996396244521e-01, 3.417882040172381e-01, 3.410877883434296e-01, 3.401983354814525e-01, 3.391198828590459e-01, 3.378523570621453e-01, 3.363958040103946e-01, 3.347503542900085e-01, 3.329158971841553e-01, 3.308924463259332e-01, 3.286799460875919e-01, 3.264682343823296e-01, 3.247919380664825e-01, 3.235501024669091e-01, 3.226304958662256e-01, 3.21949213021671e-01, 3.214439761074768e-01, 3.210691511631012e-01, 3.207917803624072e-01, 3.205865623872741e-01, 3.204340635113932e-01, 3.203210535204201e-01, 3.202375471591949e-01, 3.201758860238169e-01, 3.201302886520812e-01, 3.200964629291999e-01, 3.200713992683467e-01, 3.20052832365036e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_SpaceCooling.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_SpaceCooling.txt new file mode 100644 index 00000000000..44b4fb8fda0 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_SpaceCooling.txt @@ -0,0 +1,18 @@ +last-generated=2024-09-02 +statistics-initialization= +{ + "linear": "0, 0, 0", + "nonlinear": "1, 0, 1, 0", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": "0", + "nonlinear": "1, 0, 1, 1, 1", + "number of continuous time states": "17", + "numerical Jacobians": "0" +} +time=[1.5552e+07, 1.56384e+07] +C_inflow.y=[7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.733952145372314e-09, 7.757259723462084e-09, 7.83354003885961e-09, 7.909820354257135e-09, 7.986099781476241e-09, 8.062380096873767e-09, 8.138660412271292e-09, 8.214940727668818e-09, 8.291220154887924e-09, 8.367500470285449e-09, 8.443780785682975e-09, 8.520060212902081e-09, 8.596340528299606e-09, 8.672620843697132e-09, 8.748901159094657e-09, 8.825180586313763e-09, 8.901460901711289e-09, 8.977741217108814e-09, 9.05402153250634e-09, 9.130300959725446e-09, 9.206581275122971e-09, 9.282861590520497e-09, 9.359141017739603e-09, 9.435421333137128e-09, 9.511701648534654e-09, 9.587981963932179e-09, 9.664261391151285e-09, 9.740541706548811e-09, 9.816822021946336e-09, 9.893102337343862e-09, 9.969381764562968e-09, 1.004566207996049e-08, 1.012194239535802e-08, 1.019822182257712e-08, 1.027450213797465e-08, 1.035078245337218e-08, 1.04270627687697e-08, 1.050334219598881e-08, 1.057962251138633e-08, 1.065590282678386e-08, 1.073218314218138e-08, 1.080846256940049e-08, 1.088474288479802e-08, 1.096102320019554e-08, 1.103730351559307e-08, 1.111358294281217e-08, 1.11898632582097e-08, 1.126614357360722e-08, 1.134242300082633e-08, 1.141870331622385e-08, 1.149498363162138e-08] +C_out.C=[0e+00, 3.866976960864577e-09, 3.866978293132206e-09, 3.866979181310626e-09, 3.866980069489045e-09, 3.866981401756675e-09, 3.866982289935095e-09, 3.866983178113514e-09, 3.866984510381144e-09, 3.866985398559564e-09, 3.866986286737983e-09, 3.866987174916403e-09, 3.866988507184033e-09, 3.866989395362452e-09, 3.866990283540872e-09, 3.866991615808502e-09, 3.866992503986921e-09, 3.866993392165341e-09, 3.866994724432971e-09, 3.86699561261139e-09, 3.86699650078981e-09, 3.866997833057439e-09, 3.866998721235859e-09, 3.866999609414279e-09, 3.867000941681908e-09, 3.867001829860328e-09, 3.867002718038748e-09, 3.867004050306377e-09, 3.867004938484797e-09, 3.867005826663217e-09, 3.867007158930846e-09, 3.867008047109266e-09, 3.867008935287686e-09, 3.867010267555315e-09, 3.867011155733735e-09, 3.867012043912155e-09, 3.867013376179784e-09, 3.867014264358204e-09, 3.867015152536624e-09, 3.867016484804253e-09, 3.867017372982673e-09, 3.867018261161093e-09, 3.867019593428722e-09, 3.867020481607142e-09, 3.867021369785562e-09, 3.867022702053191e-09, 3.867023590231611e-09, 3.86702447841003e-09, 3.86702581067766e-09, 3.86702669885608e-09, 3.867027587034499e-09, 3.878638743515239e-09, 3.916780233481632e-09, 3.954921723448024e-09, 3.993063657503626e-09, 4.031205147470018e-09, 4.069347081525621e-09, 4.107489015581223e-09, 4.145630505547615e-09, 4.183772439603217e-09, 4.221914373658819e-09, 4.260056307714422e-09, 4.298198241770024e-09, 4.336340175825626e-09, 4.374482109881228e-09, 4.41262404393683e-09, 4.450766422081642e-09, 4.488908356137244e-09, 4.527050290192847e-09, 4.565192668337659e-09, 4.603335046482471e-09, 4.641476980538073e-09, 4.679619358682885e-09, 4.717761736827697e-09, 4.755904114972509e-09, 4.794046493117321e-09, 4.832188871262133e-09, 4.870331249406945e-09, 4.908474071640967e-09, 4.946616449785779e-09, 4.984759272019801e-09, 5.022901650164613e-09, 5.061044472398635e-09, 5.099187294632657e-09, 5.137329672777469e-09, 5.175472495011491e-09, 5.213615317245512e-09, 5.251758583568744e-09, 5.289901405802766e-09, 5.328044228036788e-09, 5.36618705027081e-09, 5.404330316594042e-09, 5.442473582917273e-09, 5.480616405151295e-09, 5.518759671474527e-09, 5.556902937797759e-09, 5.59504620412099e-09, 5.633189470444222e-09, 5.671332736767454e-09, 5.709476003090685e-09, 5.747619713503127e-09] +fan.P=[0e+00, 7.174381713867188e+02, 7.174381713867188e+02, 7.174381713867188e+02, 7.174381713867188e+02, 7.17438232421875e+02, 7.17438232421875e+02, 7.17438232421875e+02, 7.17438232421875e+02, 7.17438232421875e+02, 7.17438232421875e+02, 7.174382934570312e+02, 7.174382934570312e+02, 7.174382934570312e+02, 7.174382934570312e+02, 7.174382934570312e+02, 7.174382934570312e+02, 7.174382934570312e+02, 7.174383544921875e+02, 7.174383544921875e+02, 7.174383544921875e+02, 7.174383544921875e+02, 7.174383544921875e+02, 7.174383544921875e+02, 7.174384155273438e+02, 7.174384155273438e+02, 7.174384155273438e+02, 7.174384155273438e+02, 7.174384155273438e+02, 7.174384155273438e+02, 7.174384765625e+02, 7.174384765625e+02, 7.174384765625e+02, 7.174384765625e+02, 7.174384765625e+02, 7.174384765625e+02, 7.174385375976562e+02, 7.174385375976562e+02, 7.174385375976562e+02, 7.174385375976562e+02, 7.174385375976562e+02, 7.174385375976562e+02, 7.174385375976562e+02, 7.174385986328125e+02, 7.174385986328125e+02, 7.174385986328125e+02, 7.174385986328125e+02, 7.174385986328125e+02, 7.174385986328125e+02, 7.174386596679688e+02, 7.174386596679688e+02, 7.174386596679688e+02, 7.174386596679688e+02, 7.174386596679688e+02, 7.174386596679688e+02, 7.17438720703125e+02, 7.17438720703125e+02, 7.17438720703125e+02, 7.17438720703125e+02, 7.17438720703125e+02, 7.17438720703125e+02, 7.174387817382812e+02, 7.174387817382812e+02, 7.174387817382812e+02, 7.174387817382812e+02, 7.174387817382812e+02, 7.174387817382812e+02, 7.174388427734375e+02, 7.174388427734375e+02, 7.174388427734375e+02, 7.174388427734375e+02, 7.174388427734375e+02, 7.174389038085938e+02, 7.174389038085938e+02, 7.174389038085938e+02, 7.174389038085938e+02, 7.174389038085938e+02, 7.1743896484375e+02, 7.1743896484375e+02, 7.1743896484375e+02, 7.1743896484375e+02, 7.1743896484375e+02, 7.174390258789062e+02, 7.174390258789062e+02, 7.174390258789062e+02, 7.174390258789062e+02, 7.174390258789062e+02, 7.174390869140625e+02, 7.174390869140625e+02, 7.174390869140625e+02, 7.174390869140625e+02, 7.174391479492188e+02, 7.174391479492188e+02, 7.174391479492188e+02, 7.174391479492188e+02, 7.174391479492188e+02, 7.17439208984375e+02, 7.17439208984375e+02, 7.17439208984375e+02, 7.17439208984375e+02, 7.174392700195312e+02] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Validation_Empirical.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Validation_Empirical.txt new file mode 100644 index 00000000000..9c80cba23f2 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Validation_Empirical.txt @@ -0,0 +1,16 @@ +last-generated=2024-09-02 +statistics-simulation= +{ + "linear": " ", + "nonlinear": "0", + "number of continuous time states": "5", + "numerical Jacobians": "0" +} +time=[0e+00, 5e+01] +senTraSubCO2In.C=[0e+00, 3.934647142887115e-02, 6.31992295384407e-02, 7.766902446746826e-02, 8.644747734069824e-02, 9.177772700786591e-02, 9.500787407159805e-02, 9.69691127538681e-02, 9.815884381532669e-02, 9.888272732496262e-02, 9.932427853345871e-02, 9.959043562412262e-02, 9.975060075521469e-02, 9.984844177961349e-02, 9.990818053483963e-02, 9.994418919086456e-02, 9.996599704027176e-02, 9.997942298650742e-02, 9.998779743909836e-02, 9.999308735132217e-02, 9.999622404575348e-02, 9.999790042638779e-02, 9.999878704547882e-02, 9.999926388263702e-02, 9.99995544552803e-02, 9.999977797269821e-02, 1.00000225007534e-01, 1.000007316470146e-01, 1.000010371208191e-01, 1.000009998679161e-01, 1.000010967254639e-01, 1.000009477138519e-01, 1.00000686943531e-01, 1.000004336237907e-01, 1.000002399086952e-01, 1.000000312924385e-01, 9.999991208314896e-02, 9.999989718198776e-02, 9.999989718198776e-02, 9.999992698431015e-02, 9.999998658895493e-02, 9.989608079195023e-02, 9.963709861040115e-02, 9.928249567747116e-02, 9.887102246284485e-02, 9.842599183320999e-02, 9.796031564474106e-02, 9.74816232919693e-02, 9.699490666389465e-02, 9.650323539972305e-02, 9.600844979286194e-02, 9.551181644201279e-02, 9.50140655040741e-02, 9.451568871736526e-02, 9.401723742485046e-02, 9.35184583067894e-02, 9.301908314228058e-02, 9.251965582370758e-02, 9.201978892087936e-02, 9.151986241340637e-02, 9.10198986530304e-02, 9.051212668418884e-02, 9.000753611326218e-02, 8.950487524271011e-02, 8.900339901447296e-02, 8.850263059139252e-02, 8.80022868514061e-02, 8.750219643115997e-02, 8.700226247310638e-02, 8.650242537260056e-02, 8.600264042615891e-02, 8.550288528203964e-02, 8.500315248966217e-02, 8.45034271478653e-02, 8.400370925664902e-02, 8.350399881601334e-02, 8.300428837537766e-02, 8.250457048416138e-02, 8.20048600435257e-02, 8.150514215230942e-02, 8.100542426109314e-02, 8.050570636987686e-02, 8.000598847866058e-02, 7.950626313686371e-02, 7.900653779506683e-02, 7.850681245326996e-02, 7.800707966089249e-02, 7.750735431909561e-02, 7.700762152671814e-02, 7.650788873434067e-02, 7.60081484913826e-02, 7.550840824842453e-02, 7.500866800546646e-02, 7.450892776250839e-02, 7.400918006896973e-02, 7.350943237543106e-02, 7.30096846818924e-02, 7.250993698835373e-02, 7.201018184423447e-02, 7.15104267001152e-02, 7.101067155599594e-02] +senTraSubCO2Out.C=[0e+00, 1.183587685227394e-02, 1.906991936266422e-02, 2.351702563464642e-02, 2.627363428473473e-02, 2.800579369068146e-02, 2.911398373544216e-02, 2.98449695110321e-02, 3.034666366875172e-02, 3.07095143944025e-02, 3.098827041685581e-02, 3.121511451900005e-02, 3.141012787818909e-02, 3.158601000905037e-02, 3.175024315714836e-02, 3.190725296735764e-02, 3.205977380275726e-02, 3.220950067043304e-02, 3.235745802521706e-02, 3.250424563884735e-02, 3.265015780925751e-02, 3.279538452625275e-02, 3.294010832905769e-02, 3.30844447016716e-02, 3.322846069931984e-02, 3.33721898496151e-02, 3.351571783423424e-02, 3.365900367498398e-02, 3.380196541547775e-02, 3.394457325339317e-02, 3.408695384860039e-02, 3.422899916768074e-02, 3.437075763940811e-02, 3.451225161552429e-02, 3.465350344777107e-02, 3.479448333382607e-02, 3.493523225188255e-02, 3.507574275135994e-02, 3.521599620580673e-02, 3.535599634051323e-02, 3.549573570489883e-02, 3.559785336256027e-02, 3.564345091581345e-02, 3.565331175923347e-02, 3.564097732305527e-02, 3.561460971832275e-02, 3.557873144745827e-02, 3.55360247194767e-02, 3.548825159668922e-02, 3.543649986386299e-02, 3.538142889738083e-02, 3.532349690794945e-02, 3.526297584176064e-02, 3.520005568861961e-02, 3.51349413394928e-02, 3.506756573915482e-02, 3.49978506565094e-02, 3.492599725723267e-02, 3.485189005732536e-02, 3.477567806839943e-02, 3.469738364219666e-02, 3.16569022834301e-02, 2.98009030520916e-02, 2.866425551474094e-02, 2.796336635947227e-02, 2.752609923481941e-02, 2.724540047347546e-02, 2.705798111855984e-02, 2.692667208611965e-02, 2.682876959443092e-02, 2.67504658550024e-02, 2.668318711221218e-02, 2.662166580557823e-02, 2.656284533441067e-02, 2.6504872366786e-02, 2.644700743257999e-02, 2.638846449553967e-02, 2.632869221270084e-02, 2.626735903322697e-02, 2.620425447821617e-02, 2.613930962979794e-02, 2.607230842113495e-02, 2.600323222577572e-02, 2.593234926462173e-02, 2.586004696786404e-02, 2.578582055866718e-02, 2.570989355444908e-02, 2.563237771391869e-02, 2.555304765701294e-02, 2.547191083431244e-02, 2.538895979523659e-02, 2.530422434210777e-02, 2.521762810647488e-02, 2.512927912175655e-02, 2.503919042646885e-02, 2.49473974108696e-02, 2.485391311347485e-02, 2.475879900157452e-02, 2.466203644871712e-02, 2.456361800432205e-02, 2.446360141038895e-02] +senTraSubVOCIn.C=[0e+00, 3.934647142887115e-02, 6.31992295384407e-02, 7.766902446746826e-02, 8.644747734069824e-02, 9.177772700786591e-02, 9.500787407159805e-02, 9.69691127538681e-02, 9.815884381532669e-02, 9.888272732496262e-02, 9.932427853345871e-02, 9.959043562412262e-02, 9.975060075521469e-02, 9.984844177961349e-02, 9.990818053483963e-02, 9.994418919086456e-02, 9.996599704027176e-02, 9.997942298650742e-02, 9.998779743909836e-02, 9.999308735132217e-02, 9.999622404575348e-02, 9.999790042638779e-02, 9.999878704547882e-02, 9.999926388263702e-02, 9.99995544552803e-02, 9.999977797269821e-02, 1.00000225007534e-01, 1.000007316470146e-01, 1.000010371208191e-01, 1.000009998679161e-01, 1.000010967254639e-01, 1.000009477138519e-01, 1.00000686943531e-01, 1.000004336237907e-01, 1.000002399086952e-01, 1.000000312924385e-01, 9.999991208314896e-02, 9.999989718198776e-02, 9.999989718198776e-02, 9.999992698431015e-02, 9.999998658895493e-02, 9.989608079195023e-02, 9.963709861040115e-02, 9.928249567747116e-02, 9.887102246284485e-02, 9.842599183320999e-02, 9.796031564474106e-02, 9.74816232919693e-02, 9.699490666389465e-02, 9.650323539972305e-02, 9.600844979286194e-02, 9.551181644201279e-02, 9.50140655040741e-02, 9.451568871736526e-02, 9.401723742485046e-02, 9.35184583067894e-02, 9.301908314228058e-02, 9.251965582370758e-02, 9.201978892087936e-02, 9.151986241340637e-02, 9.10198986530304e-02, 9.051212668418884e-02, 9.000753611326218e-02, 8.950487524271011e-02, 8.900339901447296e-02, 8.850263059139252e-02, 8.80022868514061e-02, 8.750219643115997e-02, 8.700226247310638e-02, 8.650242537260056e-02, 8.600264042615891e-02, 8.550288528203964e-02, 8.500315248966217e-02, 8.45034271478653e-02, 8.400370925664902e-02, 8.350399881601334e-02, 8.300428837537766e-02, 8.250457048416138e-02, 8.20048600435257e-02, 8.150514215230942e-02, 8.100542426109314e-02, 8.050570636987686e-02, 8.000598847866058e-02, 7.950626313686371e-02, 7.900653779506683e-02, 7.850681245326996e-02, 7.800707966089249e-02, 7.750735431909561e-02, 7.700762152671814e-02, 7.650788873434067e-02, 7.60081484913826e-02, 7.550840824842453e-02, 7.500866800546646e-02, 7.450892776250839e-02, 7.400918006896973e-02, 7.350943237543106e-02, 7.30096846818924e-02, 7.250993698835373e-02, 7.201018184423447e-02, 7.15104267001152e-02, 7.101067155599594e-02] +senTraSubVOCOut.C=[0e+00, 7.901075296103954e-03, 1.274883188307285e-02, 1.574663631618023e-02, 1.762153767049313e-02, 1.881509087979794e-02, 1.959299482405186e-02, 2.011889219284058e-02, 2.049108035862446e-02, 2.076940983533859e-02, 2.099042572081089e-02, 2.117583341896534e-02, 2.133875340223312e-02, 2.148754894733429e-02, 2.162737771868706e-02, 2.176138386130333e-02, 2.189147472381592e-02, 2.201885543763638e-02, 2.214429527521133e-02, 2.226829715073109e-02, 2.239114791154861e-02, 2.251307666301727e-02, 2.263429015874863e-02, 2.275495603680611e-02, 2.287520840764046e-02, 2.299516089260578e-02, 2.311496064066887e-02, 2.323466539382935e-02, 2.33543086796999e-02, 2.347395196557045e-02, 2.359377034008503e-02, 2.371377684175968e-02, 2.383407950401306e-02, 2.395478449761868e-02, 2.407598309218884e-02, 2.419774234294891e-02, 2.432016097009182e-02, 2.444331906735897e-02, 2.456727623939514e-02, 2.46921144425869e-02, 2.481790632009506e-02, 2.491850592195988e-02, 2.498059347271919e-02, 2.501867711544037e-02, 2.504221722483635e-02, 2.505692467093468e-02, 2.506597153842449e-02, 2.507124654948711e-02, 2.507399395108223e-02, 2.507498487830162e-02, 2.507468685507774e-02, 2.507342956960201e-02, 2.507140673696995e-02, 2.506875060498714e-02, 2.506560459733009e-02, 2.506191842257977e-02, 2.505762875080109e-02, 2.505287155508995e-02, 2.50475499778986e-02, 2.504176087677479e-02, 2.503550052642822e-02, 2.226637862622738e-02, 2.059397287666798e-02, 1.958697848021984e-02, 1.898248866200447e-02, 1.862095296382904e-02, 1.84032004326582e-02, 1.827063970267773e-02, 1.818889938294888e-02, 1.813702471554279e-02, 1.810230687260628e-02, 1.807688362896442e-02, 1.805596239864826e-02, 1.803678832948208e-02, 1.801772601902485e-02, 1.799816265702248e-02, 1.797744631767273e-02, 1.795512996613979e-02, 1.793097145855427e-02, 1.790484227240086e-02, 1.787673123180866e-02, 1.784650050103664e-02, 1.781417801976204e-02, 1.778006367385387e-02, 1.774456165730953e-02, 1.770724914968014e-02, 1.766837388277054e-02, 1.762807555496693e-02, 1.758618466556072e-02, 1.754273660480976e-02, 1.749775931239128e-02, 1.745130680501461e-02, 1.740333437919617e-02, 1.73539686948061e-02, 1.730324327945709e-02, 1.725120842456818e-02, 1.719789765775204e-02, 1.714338362216949e-02, 1.708766631782055e-02, 1.70307494699955e-02, 1.697270199656487e-02] +airFil.eps[1]=[6.99999988079071e-01, 6.985014677047729e-01, 6.970059871673584e-01, 6.955133676528931e-01, 6.940237283706665e-01, 6.925369501113892e-01, 6.91053032875061e-01, 6.895719766616821e-01, 6.880937814712524e-01, 6.866183876991272e-01, 6.851457357406616e-01, 6.836758852005005e-01, 6.82208776473999e-01, 6.80744469165802e-01, 6.792828440666199e-01, 6.778239011764526e-01, 6.763677000999451e-01, 6.749141812324524e-01, 6.734633445739746e-01, 6.720151305198669e-01, 6.705695986747742e-01, 6.691267490386963e-01, 6.676865220069885e-01, 6.662489175796509e-01, 6.648139953613281e-01, 6.633816361427307e-01, 6.619519591331482e-01, 6.60524845123291e-01, 6.591004133224487e-01, 6.576786041259766e-01, 6.562593579292297e-01, 6.548427939414978e-01, 6.534287929534912e-01, 6.520174741744995e-01, 6.506087779998779e-01, 6.492027044296265e-01, 6.477992534637451e-01, 6.463984847068787e-01, 6.450003385543823e-01, 6.436048746109009e-01, 6.422120332717896e-01, 6.408253908157349e-01, 6.39448344707489e-01, 6.380808353424072e-01, 6.367229223251343e-01, 6.353744864463806e-01, 6.340355277061462e-01, 6.327060461044312e-01, 6.313859820365906e-01, 6.300753355026245e-01, 6.287740468978882e-01, 6.274821162223816e-01, 6.2619948387146e-01, 6.249262094497681e-01, 6.236621141433716e-01, 6.224073171615601e-01, 6.211617588996887e-01, 6.19925320148468e-01, 6.186981201171875e-01, 6.174800395965576e-01, 6.162710785865784e-01, 6.986549496650696e-01, 6.973198056221008e-01, 6.959944367408752e-01, 6.94678783416748e-01, 6.93372905254364e-01, 6.920766234397888e-01, 6.907899379730225e-01, 6.895127892494202e-01, 6.882451772689819e-01, 6.869869828224182e-01, 6.857381463050842e-01, 6.8449866771698e-01, 6.832684874534607e-01, 6.820476055145264e-01, 6.808359026908875e-01, 6.796333789825439e-01, 6.784399747848511e-01, 6.772556900978088e-01, 6.760804057121277e-01, 6.749141812324524e-01, 6.737568974494934e-01, 6.726085543632507e-01, 6.714691519737244e-01, 6.703385710716248e-01, 6.692168712615967e-01, 6.681039333343506e-01, 6.669997572898865e-01, 6.659042835235596e-01, 6.648175716400146e-01, 6.637395024299622e-01, 6.626700758934021e-01, 6.616092324256897e-01, 6.60556972026825e-01, 6.595132350921631e-01, 6.584780216217041e-01, 6.57451331615448e-01, 6.5643310546875e-01, 6.554232835769653e-01, 6.54421865940094e-01, 6.534287929534912e-01] +airFil.eps[2]=[8.00000011920929e-01, 7.985125780105591e-01, 7.970494627952576e-01, 7.956095337867737e-01, 7.941915988922119e-01, 7.927946448326111e-01, 7.914174795150757e-01, 7.900590300559998e-01, 7.887181639671326e-01, 7.873938679695129e-01, 7.860851287841797e-01, 7.847907543182373e-01, 7.835098505020142e-01, 7.822413444519043e-01, 7.809842228889465e-01, 7.797375321388245e-01, 7.785001993179321e-01, 7.772713303565979e-01, 7.760499715805054e-01, 7.748351097106934e-01, 7.736257910728455e-01, 7.724211812019348e-01, 7.71220326423645e-01, 7.700222730636597e-01, 7.688261270523071e-01, 7.676311135292053e-01, 7.664362192153931e-01, 7.652406096458435e-01, 7.640435099601746e-01, 7.628440260887146e-01, 7.61641263961792e-01, 7.604345083236694e-01, 7.592228651046753e-01, 7.580055594444275e-01, 7.567817568778992e-01, 7.55550742149353e-01, 7.54311740398407e-01, 7.530639171600342e-01, 7.518065571784973e-01, 7.505389451980591e-01, 7.492603063583374e-01, 7.479732036590576e-01, 7.466802000999451e-01, 7.453809380531311e-01, 7.44074821472168e-01, 7.42761492729187e-01, 7.4144047498703e-01, 7.401114702224731e-01, 7.387740612030029e-01, 7.374279499053955e-01, 7.360727787017822e-01, 7.34708309173584e-01, 7.333343029022217e-01, 7.319504618644714e-01, 7.305566668510437e-01, 7.291526198387146e-01, 7.277382612228394e-01, 7.263133525848389e-01, 7.248778343200684e-01, 7.234315872192383e-01, 7.219744920730591e-01, 7.986639142036438e-01, 7.973547577857971e-01, 7.960714101791382e-01, 7.948128581047058e-01, 7.935779094696045e-01, 7.923656702041626e-01, 7.911750078201294e-01, 7.900050282478333e-01, 7.888548374176025e-01, 7.877234816551208e-01, 7.866101264953613e-01, 7.855138778686523e-01, 7.844340205192566e-01, 7.833697199821472e-01, 7.823203206062317e-01, 7.812849879264832e-01, 7.802630662918091e-01, 7.792539000511169e-01, 7.78256893157959e-01, 7.772713303565979e-01, 7.762967348098755e-01, 7.753324508666992e-01, 7.743780016899109e-01, 7.734327912330627e-01, 7.724963426589966e-01, 7.71568238735199e-01, 7.706479430198669e-01, 7.697350382804871e-01, 7.688291072845459e-01, 7.679297924041748e-01, 7.670366764068604e-01, 7.661493420600891e-01, 7.65267550945282e-01, 7.643908858299255e-01, 7.635190486907959e-01, 7.62651801109314e-01, 7.617887854576111e-01, 7.609298229217529e-01, 7.600745558738708e-01, 7.592228651046753e-01] +airFil.uRep=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/SpaceCooling.mos b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/SpaceCooling.mos new file mode 100644 index 00000000000..d4c70614e61 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Fluid/AirFilters/Examples/SpaceCooling.mos @@ -0,0 +1,3 @@ +simulateModel("Buildings.Fluid.AirFilters.Examples.SpaceCooling", startTime=15552000, stopTime=15638400, tolerance=1e-06,method="Cvode", resultFile="SpaceCooling"); +createPlot(id=1, position={15, 15, 636, 459}, y={"C_inflow.y", "C_out.C"}, range={15550000.0, 15640000.0, -5.000000000000002E-09, 1.5000000000000005E-08}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={15, 15, 636, 459}, y={"fan.P"}, range={15550000.0, 15640000.0, -200.0, 800.0}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s", displayUnits={"W"}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.FiltrationEfficiency.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.FiltrationEfficiency.mos index 3305e6bea63..7739b05ca63 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.FiltrationEfficiency.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.FiltrationEfficiency.mos @@ -1,5 +1,5 @@ compareVars := { "mCon.y", - "eps.y" + "eps.y[1]" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.MassAccumulation.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.MassAccumulation.mos index 4908ca13148..3c7855e3ace 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.MassAccumulation.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.MassAccumulation.mos @@ -1,5 +1,5 @@ compareVars := { "masAcc.mCon", - "masAcc.mCon_flow" + "masAcc.mCon_flow[1]" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.MassTransfer.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.MassTransfer.mos index 1cd37100f08..cddbf21ff7e 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.MassTransfer.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.BaseClasses.Validation.MassTransfer.mos @@ -1,6 +1,9 @@ compareVars := { - "C_in.C", - "C_out.C", - "masTra.eps" + "masTra.eps[1]", + "masTra.eps[2]", + "senTraSubCO2In.C", + "senTraSubCO2Out.C", + "senTraSubVOCIn.C", + "senTraSubVOCOut.C" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.SpaceCooling.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.SpaceCooling.mos new file mode 100644 index 00000000000..81f2227a2ed --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.SpaceCooling.mos @@ -0,0 +1,6 @@ +compareVars := + { + "C_inflow.y", + "C_out.C", + "fan.P" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Validation.Empirical.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Validation.Empirical.mos new file mode 100644 index 00000000000..f9d5af7cb97 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Validation.Empirical.mos @@ -0,0 +1,10 @@ +compareVars := + { + "senTraSubCO2In.C", + "senTraSubCO2Out.C", + "senTraSubVOCIn.C", + "senTraSubVOCOut.C", + "airFil.eps[1]", + "airFil.eps[2]", + "airFil.uRep" + }; From db1b8b06ca4929fed37f79cacf581fa7d6c0aee8 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Mon, 2 Sep 2024 17:23:41 -0400 Subject: [PATCH 25/47] model doc update and small issues fix --- .../AirFilters/BaseClasses/FiltrationEfficiency.mo | 6 +++--- .../AirFilters/BaseClasses/MassAccumulation.mo | 2 +- .../Fluid/AirFilters/BaseClasses/MassTransfer.mo | 4 +--- .../BaseClasses/Validation/FiltrationEfficiency.mo | 13 +++++++------ .../Validation/FlowCoefficientCorrection.mo | 11 ++++++----- .../BaseClasses/Validation/MassAccumulation.mo | 11 ++++++----- .../BaseClasses/Validation/MassTransfer.mo | 5 ++--- Buildings/Fluid/AirFilters/Empirical.mo | 6 +++--- Buildings/Fluid/AirFilters/Examples/SpaceCooling.mo | 4 ++-- 9 files changed, 31 insertions(+), 31 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo index 7afb24602e6..2afad870a46 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo @@ -48,8 +48,8 @@ Documentation(info="

                    This model calculates the filtration efficiency, eps, based on the cubic hermite spline interpolation of the filter dataset (see - -Buildings.Fluid.AirFilters.BaseClasses.Characteristics.filterationEfficiencyParameters). + +Buildings.Fluid.AirFilters.BaseClasses.Characteristics.filtrationEfficiencyParameters).

                    The rat is the relative mass of the contaminant captured by the filter @@ -59,7 +59,7 @@ and is calculated by rat = mCon/mCon_nominal,

                    -where mCon is the mass of the contaminant captured by the filter, +where mCon is the mass of the contaminant captured by the filter, and mCon_nominal is the maximum mass of the contaminant captured by the filter.

                    diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo index 59b753056c9..eeb38034ddd 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo @@ -40,7 +40,7 @@ model MassAccumulation "Warning message when the filter is full" annotation (Placement(transformation(extent={{72,40},{92,60}}))); - Controls.OBC.CDL.Reals.MultiSum mulSum(nin=nin) "Summation of the inputs" + Buildings.Controls.OBC.CDL.Reals.MultiSum mulSum(nin=nin) "Summation of the inputs" annotation (Placement(transformation(extent={{-52,-10},{-32,10}}))); equation connect(intWitRes.y, mCon) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo index 2d78e74f730..4fc0083bd98 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -102,9 +102,7 @@ where eps is an input mass transfer efficiency and C_inflow is an input trace substance rate.

                    -This model has no pressure drop. In the case of reverse flow, -the fluid that leaves port_a has the same -properties as the fluid that enters port_b. +This model has no pressure drop.

                    ", revisions="
                      diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo index 541ea75e0f4..80c99c38b03 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo @@ -2,8 +2,13 @@ within Buildings.Fluid.AirFilters.BaseClasses.Validation; model FiltrationEfficiency "Validation model for the calculation of the filtration efficiency" extends Modelica.Icons.Example; + parameter Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per( + mCon_nominal=1, + filterationEfficiencyParameters(rat={{0,0.5,1}}, eps={{0.7,0.6,0.5}})) + "Performance dataset" + annotation (Placement(transformation(extent={{-60,62},{-40,82}}))); Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency eps( - per=per) + per=per) "Filtration efficiency" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); Modelica.Blocks.Sources.Ramp mCon( @@ -12,11 +17,7 @@ model FiltrationEfficiency offset=0) "Mass of the contaminant captured by the filter" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - parameter Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per( - mCon_nominal=1, - filterationEfficiencyParameters(rat={{0,0.5,1}}, eps={{0.7,0.6,0.5}})) - "Performance dataset" - annotation (Placement(transformation(extent={{-60,62},{-40,82}}))); + equation connect(mCon.y, eps.mCon) annotation (Line(points={{-39,0},{-10,0}}, color={0,0,127})); diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo index e5c5ff87979..6be50535f0f 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo @@ -2,6 +2,11 @@ within Buildings.Fluid.AirFilters.BaseClasses.Validation; model FlowCoefficientCorrection "Validation model for the calculation of the flow coefficient correction factor" extends Modelica.Icons.Example; + parameter Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per( + mCon_nominal=1, filterationEfficiencyParameters(rat={{0,0.5,1}}, eps={{ + 0.7,0.6,0.5}})) + "Performance dataset" + annotation (Placement(transformation(extent={{-60,66},{-40,86}}))); Modelica.Blocks.Sources.Ramp rat( duration=1, height=1, @@ -11,11 +16,7 @@ model FlowCoefficientCorrection Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection kCor(per=per) "Flow coefficient correction" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - parameter Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per( - mCon_nominal=1, filterationEfficiencyParameters(rat={{0,0.5,1}}, eps={{ - 0.7,0.6,0.5}})) - "Performance dataset" - annotation (Placement(transformation(extent={{-60,66},{-40,86}}))); + equation connect(rat.y, kCor.rat) annotation (Line(points={{-39,0},{-12,0}}, color={0,0,127})); diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo index cace6b6c9a1..b867d4a0006 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo @@ -2,6 +2,11 @@ within Buildings.Fluid.AirFilters.BaseClasses.Validation; model MassAccumulation "Validation model for the accumulation of the contaminants" extends Modelica.Icons.Example; + parameter Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per( + mCon_nominal=1, filterationEfficiencyParameters(rat={{0,0.5,1}}, eps={{ + 0.7,0.6,0.5}})) + "Performance dataset" + annotation (Placement(transformation(extent={{-60,66},{-40,86}}))); Buildings.Fluid.AirFilters.BaseClasses.MassAccumulation masAcc( per=per, mCon_reset=0, @@ -18,11 +23,7 @@ model MassAccumulation shift=0.5) "Filter replacement signal" annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); - parameter Data.Generic per( - mCon_nominal=1, filterationEfficiencyParameters(rat={{0,0.5,1}}, eps={{ - 0.7,0.6,0.5}})) - "Performance dataset" - annotation (Placement(transformation(extent={{-60,66},{-40,86}}))); + equation connect(RepSig.y, masAcc.uRep) annotation (Line(points={{-38,-20},{-20,-20},{-20,-6},{-12,-6}}, color={255,0,255})); diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo index 504b5878cf3..be6c35f5920 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo @@ -29,7 +29,7 @@ model MassTransfer package Medium = Medium, m_flow_nominal=1) "Trace substance sensor of CO2 in inlet air" annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); - Sources.Boundary_pT sou( + Buildings.Fluid.Sources.Boundary_pT sou( redeclare package Medium = Medium, use_C_in=true, p(displayUnit="Pa") = 101325 + 100, @@ -68,7 +68,6 @@ model MassTransfer equation connect(senTraSubCO2Out.port_a, masTra.port_b) annotation (Line(points={{20,0},{10,0}}, color={0,127,255})); - connect(C_VOC_inflow.y, sou.C_in[2]) annotation (Line(points={{-189,-30},{-180, -30},{-180,-8},{-172,-8}}, color={0,0,127})); connect(C_CO2_inflow.y, sou.C_in[1]) annotation (Line(points={{-187,30},{-180, @@ -79,7 +78,7 @@ equation annotation (Line(points={{-120,0},{-100,0}}, color={0,127,255})); connect(res.port_a, sou.ports[1]) annotation (Line(points={{-140,0},{-150,0}}, - color={0,127,255})); + color={0,127,255})); connect(senTraSubCO2In.port_b, senTraSubVOCIn.port_a) annotation (Line(points={{-80,0},{-58,0}}, color={0,127,255})); connect(senTraSubVOCIn.port_b, masTra.port_a) diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index dcc6784b38a..b4cab651e10 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -261,7 +261,7 @@ The dynamic characteristics of the filters are defined by ", info=" -

                      -Record containing performance parameters for air filters. -

                      -

                      -It is used as a template of performance data -for the variable-speed wheel models in - -Buildings.Fluid.AirFilters. -

                      -

                      -The record contains one dataset: -relative mass of the contaminant -(see -Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency) -versus filtration efficiency. -

                      -

                      -It also contains a parameter that defines how the pressure drop -changes by the relative mass of the contaminant -(see -Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection). -

                      +

                      Record that contains performance parameters for air filters.

                      +

                      It is used as a template of performance data for the filter models in Buildings.Fluid.AirFilters.

                      +

                      The record includes a dataset that relates the mass of the captured contaminants to the filter's filtration efficiency (see Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency).

                      +

                      The record also contains a parameter that defines how the pressure drop changes with the mass of the captured contaminants (see Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection).

                      ")); end Generic; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo index d42613900f1..f0d3f182ea7 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo @@ -56,26 +56,26 @@ annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ defaultComponentName="eps", Documentation(info="

                      -This model calculates the filtration efficiency, eps, based on the cubic hermite spline interpolation of +This model calculates the filtration efficiency, eps, using cubic Hermite spline interpolation of the filter dataset (see Buildings.Fluid.AirFilters.BaseClasses.Characteristics.filtrationEfficiencyParameters) with respect to rat.

                      -The rat is the relative mass of the contaminant captured by the filter +The rat is the relative mass of the contaminant that is captured by the filter, and is calculated by

                      rat = mCon/mCon_nominal,

                      -where mCon is the mass of the contaminant captured by the filter, and -mCon_nominal is the maximum mass of the contaminant captured by the filter. +where mCon is the mass of the contaminant that is captured by the filter, and +mCon_nominal is the filter's maximum contaminant capacity.

                      Note: -The upper limit of rat is 1 and any value above it is overwritten by 1. +The upper limit of rat is 1 and any value exceeding 1 will be capped at 1.

                      ", revisions="
                        diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo index 79486d49207..7e9553afa43 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo @@ -43,8 +43,8 @@ This model calculates the flow coefficient of the filter by kCor = brat,

                        -where b is the resistance coefficient and it has to be greater than 1, -rat is the relative mass of the contaminant captured by the filter +where b is the resistance coefficient and it must be greater than 1, +rat is the relative mass of the contaminant that is captured by the filter (see descriptions in Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency). diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo index 66c1e4e17bf..a5c6ec31d61 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassAccumulation.mo @@ -21,7 +21,9 @@ model MassAccumulation final unit = "kg") "Mass of the contaminant captured by the filter" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); - Buildings.Controls.OBC.CDL.Reals.IntegratorWithReset intWitRes + Buildings.Controls.OBC.CDL.Reals.IntegratorWithReset intWitRes( + final k=1, + final y_start=mCon_reset) "Calculate the mass of contaminant" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con( @@ -36,7 +38,7 @@ model MassAccumulation "Constant" annotation (Placement(transformation(extent={{-20,40},{0,60}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes( - message="In " + getInstanceName() + ": The filter needs to be replaced.") + final message="In " + getInstanceName() + ": The filter needs to be replaced.") "Warning message when the filter is full" annotation (Placement(transformation(extent={{72,40},{92,60}}))); Buildings.Controls.OBC.CDL.Reals.MultiSum mulSum( @@ -71,7 +73,7 @@ Documentation(info=" This model mimics the process for a filter to capture the contaminants. The mass of the contaminants, mCon, increases by time. However, when the input signal uRep changes from false -to true, mCon is reinitialized to a constant, mCon_reset. +to true, mCon is reset to a constant, mCon_reset.

                        ", revisions="
                          diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index 2bf5b5f258a..800311e5b11 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -264,21 +264,21 @@ The dynamic characteristics of the filters are defined by the following paramete

                          • -The mCon_nominal determines the maximum mass of the contaminants that the -filter can hold. +The mCon_nominal determines the maximum amount of contaminants the filter can accumulate +before reaching its nominal capacity.
                          • A performance dataset per that determines
                            • -how the flow coefficient changes with the contaminant accumulation; +the types of contaminants can be captured by the filter;
                            • -the types of contaminants; +how the flow coefficient changes as contaminants build up;
                            • how the filtration efficiency changes -with the contaminant accumulation for each contaminant. +with the contaminant accumulation, specific to each type.
                          • @@ -293,18 +293,18 @@ Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency, respectively.

                            The input boolean flag, uRep, triggers the filter replacement, i.e., when uRep changes from false to true, the -mass of the captured contaminants becomes 0. +mass of the captured contaminants is reset to 0.

                            Note: Warnings will be triggered
                            • -when the captured contaminant mass becomes greater than the +when the captured contaminant mass exceeds the mCon_nominal.
                            • when the extraPropertiesNames in the medium model don't contain all the contaminants -defined in the per. +specified in the per.
                            ", revisions=" From 5fd768ed0f65a8356bb50c4176e97ed182843b47 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 11 Nov 2024 20:00:50 -0500 Subject: [PATCH 32/47] eliminate unnecessary calculations --- .../AirFilters/BaseClasses/MassTransfer.mo | 39 ++++--------------- 1 file changed, 8 insertions(+), 31 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo index effbd1c3ad7..843abbf4941 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -18,15 +18,7 @@ model MassTransfer protected parameter Integer nConSub = size(substanceName,1) "Total types of contaminant substances"; - parameter Real s1[:,:]= { - {if (Modelica.Utilities.Strings.isEqual(string1=Medium.extraPropertiesNames[i], - string2=substanceName[j], - caseSensitive=false)) - then 1 else 0 for i in 1:Medium.nC} - for j in 1:nConSub} - "Vector to check if the trace substances are included in the medium" - annotation(Evaluate=true); - parameter Real s2[:,:]= { + parameter Real s[:,:]= { {if (Modelica.Utilities.Strings.isEqual(string1=Medium.extraPropertiesNames[i], string2=substanceName[j], caseSensitive=false)) @@ -35,7 +27,7 @@ protected "Vector to check if the trace substances in the medium are included in the performance dataset" annotation(Evaluate=true); initial equation - assert(abs(sum(s1) - nConSub) < 0.1, + assert(abs(sum(s) - nConSub) < 0.1, "In " + getInstanceName() + ":Some specified trace substances are not present in medium '" + Medium.mediumName + "'.\n" + "Check filter parameter and medium model.", @@ -45,34 +37,19 @@ initial equation equation // Modify the substances individually. for i in 1:Medium.nC loop - if max(s2[i]) > 0.9 then + if max(s[i]) > 0.9 then for j in 1:nConSub loop - if (Modelica.Utilities.Strings.isEqual(string1=Medium.extraPropertiesNames[i], - string2=substanceName[j], - caseSensitive=false)) then - port_b.C_outflow[i] =inStream(port_a.C_outflow[i])*(1 - eps[j]); - port_a.C_outflow[i] = inStream(port_a.C_outflow[i]); - end if; + if s[i,j]>0.9 then + port_b.C_outflow[i] =inStream(port_a.C_outflow[i])*(1 - eps[j] * s[i,j]); + port_a.C_outflow[i] = inStream(port_a.C_outflow[i]); + mCon_flow[j] = inStream(port_a.C_outflow[j])* eps[j]; + end if; end for; else port_b.C_outflow[i] = inStream(port_a.C_outflow[i]); port_a.C_outflow[i] = inStream(port_b.C_outflow[i]); end if; end for; - // Calculate the amount of removed contaminants. - for i in 1:nConSub loop - if max(s1[i]) > 0.9 then - for j in 1:Medium.nC loop - if (Modelica.Utilities.Strings.isEqual(string1=Medium.extraPropertiesNames[j], - string2=substanceName[i], - caseSensitive=false)) then - mCon_flow[i] = inStream(port_a.C_outflow[j])* eps[i]; - end if; - end for; - else - mCon_flow[i] = 0; - end if; - end for; // Mass balance (no storage). port_a.Xi_outflow = inStream(port_b.Xi_outflow); port_b.Xi_outflow = inStream(port_a.Xi_outflow); From 2f7c2f2d7f4aa91006e387aece853e6468ae3d6d Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 12 Nov 2024 22:02:37 -0500 Subject: [PATCH 33/47] minor model doc update --- .../Characteristics/filtrationEfficiencyParameters.mo | 4 ++-- .../BaseClasses/Validation/FiltrationEfficiency.mo | 4 ++-- .../BaseClasses/Validation/FlowCoefficientCorrection.mo | 2 +- .../AirFilters/BaseClasses/Validation/MassAccumulation.mo | 2 +- .../Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo | 4 ++-- Buildings/Fluid/AirFilters/Validation/Empirical.mo | 6 +++--- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/filtrationEfficiencyParameters.mo b/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/filtrationEfficiencyParameters.mo index 2e439de4135..46fed1e3b7a 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/filtrationEfficiencyParameters.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/filtrationEfficiencyParameters.mo @@ -3,9 +3,9 @@ record FiltrationEfficiencyParameters "Record for filtration efficiency verse relative mass of the contaminant captured by the filter" extends Modelica.Icons.Record; - parameter Real rat[:,:](each max=1, each min=0) + parameter Real rat[:,:](each final max=1, each final min=0) "Relative mass of the contaminant captured by the filter"; - parameter Real eps[:,:](each max=1, each min=0) + parameter Real eps[:,:](each final max=1, each final min=0) "Filtration efficiency"; annotation (Documentation(info=" diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo index 0d2b7b881a0..823f1ff2f23 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo @@ -22,8 +22,8 @@ annotation (experiment(Tolerance=1e-6, StopTime=1.0), "Simulate and plot"), Documentation(info="

                            -The input mass of the contaminant captured by the filter mCon -changes from 0 to 1.2kg/s from 0 to 1 second. +The mass of the captured contaminant mCon +changes from 0 to 1.2kg/s duting the period from 0 to 1 second.

                            The filtration efficiency, eps.y, changes from 0.98 to 0.88 during the period from diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo index 00fc72899a1..f53dee3f0d6 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FlowCoefficientCorrection.mo @@ -22,7 +22,7 @@ annotation (experiment(Tolerance=1e-6, StopTime=1.0), "Simulate and plot"), Documentation(info="

                            -The input relative mass of the contaminant captured by the filter rat +The relative mass of the captured contaminant rat changes from 0 to 1 from 0 to 1 second.

                            diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo index 8077939a0b4..e312ccc2d50 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassAccumulation.mo @@ -36,7 +36,7 @@ First implementation.

                          ", info="

                          -The input contaminant mass flow rate mCon_flow changes +The contaminant mass flow rate mCon_flow changes from 0 to 1.2kg/s during the period from 0 to 1 second; The filter replacement signal changes from false to true at 0.5 seconds.

                          diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo index be6c35f5920..02d8dbf1aad 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo @@ -92,11 +92,11 @@ annotation (experiment(Tolerance=1e-6, StopTime=30), "Simulate and plot"), Documentation(info="

                          -From 0 to 5 seconds, the testing case is warming-up and the input mass transfer +From 0 to 5 seconds, the testing case is warming-up and the mass transfer efficiencies are fixed at 0.9.

                          -From 5 to 25 seconds, the input mass transfer efficiencies change +From 5 to 25 seconds, the mass transfer efficiencies change from 0.9 to 0.2. After 25 seconds, they are fixed at 0.2.

                          diff --git a/Buildings/Fluid/AirFilters/Validation/Empirical.mo b/Buildings/Fluid/AirFilters/Validation/Empirical.mo index 9a6642012e1..451a1bf1396 100644 --- a/Buildings/Fluid/AirFilters/Validation/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Validation/Empirical.mo @@ -99,7 +99,7 @@ First implementation.

                        ", info="

                        -From 0 to 12 seconds, the testing case is warming-up and the inlet trace substances of +From 0 to 12 seconds, the testing case is warming-up and the inlet trace substances are fixed at 0.1kg/kg.

                        @@ -109,8 +109,8 @@ From 20 to 50 seconds, the inlet trace substances changes from 0.1 to At the 30 seconds, the filter replacement signal repSig changes from false to true.

                        -From 12 to 30 seconds, the trace substance of the outlet port C_out doesn't change much; -From 30 to 45 seconds, the outlet trace substances first decrease and then becomes relatively smooth. +From 12 to 30 seconds, the trace substances of the outlet port C_out don't change much; +From 30 to 45 seconds, the outlet trace substances first decrease and then become relatively smooth.

                        "), Diagram(coordinateSystem(extent={{-180,-100},{140,100}})), From b731d7a793ceb550f0d48ddf9f7577cca2b3e1a5 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 12 Nov 2024 22:36:59 -0500 Subject: [PATCH 34/47] update the file name --- ...nEfficiencyParameters.mo => FiltrationEfficiencyParameters.mo} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Buildings/Fluid/AirFilters/BaseClasses/Characteristics/{filtrationEfficiencyParameters.mo => FiltrationEfficiencyParameters.mo} (100%) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/filtrationEfficiencyParameters.mo b/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/FiltrationEfficiencyParameters.mo similarity index 100% rename from Buildings/Fluid/AirFilters/BaseClasses/Characteristics/filtrationEfficiencyParameters.mo rename to Buildings/Fluid/AirFilters/BaseClasses/Characteristics/FiltrationEfficiencyParameters.mo From d53922b1da3a5ccce4d66ca47dfbe168c16ac56a Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 13 Nov 2024 07:37:31 -0500 Subject: [PATCH 35/47] fix typo --- Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo b/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo index aa989b59c16..d1180b77708 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo @@ -25,7 +25,7 @@ First implementation. ", info="

                        Record that contains performance parameters for air filters.

                        It is used as a template of performance data for the filter models in Buildings.Fluid.AirFilters.

                        -

                        The record includes a dataset that relates the mass of the captured contaminants to the filter's filtration efficiency (see Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency).

                        +

                        The record includes a dataset that relates the mass of the captured contaminants to the filter's filtration efficiency (see Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency).

                        The record also contains a parameter that defines how the pressure drop changes with the mass of the captured contaminants (see Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection).

                        ")); end Generic; From 18e0ad88cdf72557eed5cf045aa3d8e609529d2b Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Wed, 20 Nov 2024 14:34:14 -0800 Subject: [PATCH 36/47] corrected package order --- Buildings/Fluid/AirFilters/BaseClasses/package.order | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/package.order b/Buildings/Fluid/AirFilters/BaseClasses/package.order index 7810f1a87c1..a08ee572b30 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/package.order +++ b/Buildings/Fluid/AirFilters/BaseClasses/package.order @@ -3,6 +3,6 @@ FlowCoefficientCorrection MassAccumulation MassTransfer PressureDropWithVaryingFlowCoefficient -Validation Characteristics Data +Validation From c70d36a894ea25c3887d7942df32cd9ba8b4ad6a Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Wed, 20 Nov 2024 14:53:43 -0800 Subject: [PATCH 37/47] updated reference --- ...ings_Fluid_AirFilters_Examples_SpaceCooling.txt | 4 ++-- ...dings_Fluid_AirFilters_Validation_Empirical.txt | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_SpaceCooling.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_SpaceCooling.txt index 44b4fb8fda0..37e194df27c 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_SpaceCooling.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Examples_SpaceCooling.txt @@ -1,4 +1,4 @@ -last-generated=2024-09-02 +last-generated=2024-11-20 statistics-initialization= { "linear": "0, 0, 0", @@ -9,7 +9,7 @@ statistics-simulation= { "linear": "0", "nonlinear": "1, 0, 1, 1, 1", - "number of continuous time states": "17", + "number of continuous time states": "16", "numerical Jacobians": "0" } time=[1.5552e+07, 1.56384e+07] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Validation_Empirical.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Validation_Empirical.txt index 9c80cba23f2..2f2826acac2 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Validation_Empirical.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Validation_Empirical.txt @@ -1,4 +1,4 @@ -last-generated=2024-09-02 +last-generated=2024-11-20 statistics-simulation= { "linear": " ", @@ -7,10 +7,10 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 5e+01] -senTraSubCO2In.C=[0e+00, 3.934647142887115e-02, 6.31992295384407e-02, 7.766902446746826e-02, 8.644747734069824e-02, 9.177772700786591e-02, 9.500787407159805e-02, 9.69691127538681e-02, 9.815884381532669e-02, 9.888272732496262e-02, 9.932427853345871e-02, 9.959043562412262e-02, 9.975060075521469e-02, 9.984844177961349e-02, 9.990818053483963e-02, 9.994418919086456e-02, 9.996599704027176e-02, 9.997942298650742e-02, 9.998779743909836e-02, 9.999308735132217e-02, 9.999622404575348e-02, 9.999790042638779e-02, 9.999878704547882e-02, 9.999926388263702e-02, 9.99995544552803e-02, 9.999977797269821e-02, 1.00000225007534e-01, 1.000007316470146e-01, 1.000010371208191e-01, 1.000009998679161e-01, 1.000010967254639e-01, 1.000009477138519e-01, 1.00000686943531e-01, 1.000004336237907e-01, 1.000002399086952e-01, 1.000000312924385e-01, 9.999991208314896e-02, 9.999989718198776e-02, 9.999989718198776e-02, 9.999992698431015e-02, 9.999998658895493e-02, 9.989608079195023e-02, 9.963709861040115e-02, 9.928249567747116e-02, 9.887102246284485e-02, 9.842599183320999e-02, 9.796031564474106e-02, 9.74816232919693e-02, 9.699490666389465e-02, 9.650323539972305e-02, 9.600844979286194e-02, 9.551181644201279e-02, 9.50140655040741e-02, 9.451568871736526e-02, 9.401723742485046e-02, 9.35184583067894e-02, 9.301908314228058e-02, 9.251965582370758e-02, 9.201978892087936e-02, 9.151986241340637e-02, 9.10198986530304e-02, 9.051212668418884e-02, 9.000753611326218e-02, 8.950487524271011e-02, 8.900339901447296e-02, 8.850263059139252e-02, 8.80022868514061e-02, 8.750219643115997e-02, 8.700226247310638e-02, 8.650242537260056e-02, 8.600264042615891e-02, 8.550288528203964e-02, 8.500315248966217e-02, 8.45034271478653e-02, 8.400370925664902e-02, 8.350399881601334e-02, 8.300428837537766e-02, 8.250457048416138e-02, 8.20048600435257e-02, 8.150514215230942e-02, 8.100542426109314e-02, 8.050570636987686e-02, 8.000598847866058e-02, 7.950626313686371e-02, 7.900653779506683e-02, 7.850681245326996e-02, 7.800707966089249e-02, 7.750735431909561e-02, 7.700762152671814e-02, 7.650788873434067e-02, 7.60081484913826e-02, 7.550840824842453e-02, 7.500866800546646e-02, 7.450892776250839e-02, 7.400918006896973e-02, 7.350943237543106e-02, 7.30096846818924e-02, 7.250993698835373e-02, 7.201018184423447e-02, 7.15104267001152e-02, 7.101067155599594e-02] -senTraSubCO2Out.C=[0e+00, 1.183587685227394e-02, 1.906991936266422e-02, 2.351702563464642e-02, 2.627363428473473e-02, 2.800579369068146e-02, 2.911398373544216e-02, 2.98449695110321e-02, 3.034666366875172e-02, 3.07095143944025e-02, 3.098827041685581e-02, 3.121511451900005e-02, 3.141012787818909e-02, 3.158601000905037e-02, 3.175024315714836e-02, 3.190725296735764e-02, 3.205977380275726e-02, 3.220950067043304e-02, 3.235745802521706e-02, 3.250424563884735e-02, 3.265015780925751e-02, 3.279538452625275e-02, 3.294010832905769e-02, 3.30844447016716e-02, 3.322846069931984e-02, 3.33721898496151e-02, 3.351571783423424e-02, 3.365900367498398e-02, 3.380196541547775e-02, 3.394457325339317e-02, 3.408695384860039e-02, 3.422899916768074e-02, 3.437075763940811e-02, 3.451225161552429e-02, 3.465350344777107e-02, 3.479448333382607e-02, 3.493523225188255e-02, 3.507574275135994e-02, 3.521599620580673e-02, 3.535599634051323e-02, 3.549573570489883e-02, 3.559785336256027e-02, 3.564345091581345e-02, 3.565331175923347e-02, 3.564097732305527e-02, 3.561460971832275e-02, 3.557873144745827e-02, 3.55360247194767e-02, 3.548825159668922e-02, 3.543649986386299e-02, 3.538142889738083e-02, 3.532349690794945e-02, 3.526297584176064e-02, 3.520005568861961e-02, 3.51349413394928e-02, 3.506756573915482e-02, 3.49978506565094e-02, 3.492599725723267e-02, 3.485189005732536e-02, 3.477567806839943e-02, 3.469738364219666e-02, 3.16569022834301e-02, 2.98009030520916e-02, 2.866425551474094e-02, 2.796336635947227e-02, 2.752609923481941e-02, 2.724540047347546e-02, 2.705798111855984e-02, 2.692667208611965e-02, 2.682876959443092e-02, 2.67504658550024e-02, 2.668318711221218e-02, 2.662166580557823e-02, 2.656284533441067e-02, 2.6504872366786e-02, 2.644700743257999e-02, 2.638846449553967e-02, 2.632869221270084e-02, 2.626735903322697e-02, 2.620425447821617e-02, 2.613930962979794e-02, 2.607230842113495e-02, 2.600323222577572e-02, 2.593234926462173e-02, 2.586004696786404e-02, 2.578582055866718e-02, 2.570989355444908e-02, 2.563237771391869e-02, 2.555304765701294e-02, 2.547191083431244e-02, 2.538895979523659e-02, 2.530422434210777e-02, 2.521762810647488e-02, 2.512927912175655e-02, 2.503919042646885e-02, 2.49473974108696e-02, 2.485391311347485e-02, 2.475879900157452e-02, 2.466203644871712e-02, 2.456361800432205e-02, 2.446360141038895e-02] -senTraSubVOCIn.C=[0e+00, 3.934647142887115e-02, 6.31992295384407e-02, 7.766902446746826e-02, 8.644747734069824e-02, 9.177772700786591e-02, 9.500787407159805e-02, 9.69691127538681e-02, 9.815884381532669e-02, 9.888272732496262e-02, 9.932427853345871e-02, 9.959043562412262e-02, 9.975060075521469e-02, 9.984844177961349e-02, 9.990818053483963e-02, 9.994418919086456e-02, 9.996599704027176e-02, 9.997942298650742e-02, 9.998779743909836e-02, 9.999308735132217e-02, 9.999622404575348e-02, 9.999790042638779e-02, 9.999878704547882e-02, 9.999926388263702e-02, 9.99995544552803e-02, 9.999977797269821e-02, 1.00000225007534e-01, 1.000007316470146e-01, 1.000010371208191e-01, 1.000009998679161e-01, 1.000010967254639e-01, 1.000009477138519e-01, 1.00000686943531e-01, 1.000004336237907e-01, 1.000002399086952e-01, 1.000000312924385e-01, 9.999991208314896e-02, 9.999989718198776e-02, 9.999989718198776e-02, 9.999992698431015e-02, 9.999998658895493e-02, 9.989608079195023e-02, 9.963709861040115e-02, 9.928249567747116e-02, 9.887102246284485e-02, 9.842599183320999e-02, 9.796031564474106e-02, 9.74816232919693e-02, 9.699490666389465e-02, 9.650323539972305e-02, 9.600844979286194e-02, 9.551181644201279e-02, 9.50140655040741e-02, 9.451568871736526e-02, 9.401723742485046e-02, 9.35184583067894e-02, 9.301908314228058e-02, 9.251965582370758e-02, 9.201978892087936e-02, 9.151986241340637e-02, 9.10198986530304e-02, 9.051212668418884e-02, 9.000753611326218e-02, 8.950487524271011e-02, 8.900339901447296e-02, 8.850263059139252e-02, 8.80022868514061e-02, 8.750219643115997e-02, 8.700226247310638e-02, 8.650242537260056e-02, 8.600264042615891e-02, 8.550288528203964e-02, 8.500315248966217e-02, 8.45034271478653e-02, 8.400370925664902e-02, 8.350399881601334e-02, 8.300428837537766e-02, 8.250457048416138e-02, 8.20048600435257e-02, 8.150514215230942e-02, 8.100542426109314e-02, 8.050570636987686e-02, 8.000598847866058e-02, 7.950626313686371e-02, 7.900653779506683e-02, 7.850681245326996e-02, 7.800707966089249e-02, 7.750735431909561e-02, 7.700762152671814e-02, 7.650788873434067e-02, 7.60081484913826e-02, 7.550840824842453e-02, 7.500866800546646e-02, 7.450892776250839e-02, 7.400918006896973e-02, 7.350943237543106e-02, 7.30096846818924e-02, 7.250993698835373e-02, 7.201018184423447e-02, 7.15104267001152e-02, 7.101067155599594e-02] -senTraSubVOCOut.C=[0e+00, 7.901075296103954e-03, 1.274883188307285e-02, 1.574663631618023e-02, 1.762153767049313e-02, 1.881509087979794e-02, 1.959299482405186e-02, 2.011889219284058e-02, 2.049108035862446e-02, 2.076940983533859e-02, 2.099042572081089e-02, 2.117583341896534e-02, 2.133875340223312e-02, 2.148754894733429e-02, 2.162737771868706e-02, 2.176138386130333e-02, 2.189147472381592e-02, 2.201885543763638e-02, 2.214429527521133e-02, 2.226829715073109e-02, 2.239114791154861e-02, 2.251307666301727e-02, 2.263429015874863e-02, 2.275495603680611e-02, 2.287520840764046e-02, 2.299516089260578e-02, 2.311496064066887e-02, 2.323466539382935e-02, 2.33543086796999e-02, 2.347395196557045e-02, 2.359377034008503e-02, 2.371377684175968e-02, 2.383407950401306e-02, 2.395478449761868e-02, 2.407598309218884e-02, 2.419774234294891e-02, 2.432016097009182e-02, 2.444331906735897e-02, 2.456727623939514e-02, 2.46921144425869e-02, 2.481790632009506e-02, 2.491850592195988e-02, 2.498059347271919e-02, 2.501867711544037e-02, 2.504221722483635e-02, 2.505692467093468e-02, 2.506597153842449e-02, 2.507124654948711e-02, 2.507399395108223e-02, 2.507498487830162e-02, 2.507468685507774e-02, 2.507342956960201e-02, 2.507140673696995e-02, 2.506875060498714e-02, 2.506560459733009e-02, 2.506191842257977e-02, 2.505762875080109e-02, 2.505287155508995e-02, 2.50475499778986e-02, 2.504176087677479e-02, 2.503550052642822e-02, 2.226637862622738e-02, 2.059397287666798e-02, 1.958697848021984e-02, 1.898248866200447e-02, 1.862095296382904e-02, 1.84032004326582e-02, 1.827063970267773e-02, 1.818889938294888e-02, 1.813702471554279e-02, 1.810230687260628e-02, 1.807688362896442e-02, 1.805596239864826e-02, 1.803678832948208e-02, 1.801772601902485e-02, 1.799816265702248e-02, 1.797744631767273e-02, 1.795512996613979e-02, 1.793097145855427e-02, 1.790484227240086e-02, 1.787673123180866e-02, 1.784650050103664e-02, 1.781417801976204e-02, 1.778006367385387e-02, 1.774456165730953e-02, 1.770724914968014e-02, 1.766837388277054e-02, 1.762807555496693e-02, 1.758618466556072e-02, 1.754273660480976e-02, 1.749775931239128e-02, 1.745130680501461e-02, 1.740333437919617e-02, 1.73539686948061e-02, 1.730324327945709e-02, 1.725120842456818e-02, 1.719789765775204e-02, 1.714338362216949e-02, 1.708766631782055e-02, 1.70307494699955e-02, 1.697270199656487e-02] -airFil.eps[1]=[6.99999988079071e-01, 6.985014677047729e-01, 6.970059871673584e-01, 6.955133676528931e-01, 6.940237283706665e-01, 6.925369501113892e-01, 6.91053032875061e-01, 6.895719766616821e-01, 6.880937814712524e-01, 6.866183876991272e-01, 6.851457357406616e-01, 6.836758852005005e-01, 6.82208776473999e-01, 6.80744469165802e-01, 6.792828440666199e-01, 6.778239011764526e-01, 6.763677000999451e-01, 6.749141812324524e-01, 6.734633445739746e-01, 6.720151305198669e-01, 6.705695986747742e-01, 6.691267490386963e-01, 6.676865220069885e-01, 6.662489175796509e-01, 6.648139953613281e-01, 6.633816361427307e-01, 6.619519591331482e-01, 6.60524845123291e-01, 6.591004133224487e-01, 6.576786041259766e-01, 6.562593579292297e-01, 6.548427939414978e-01, 6.534287929534912e-01, 6.520174741744995e-01, 6.506087779998779e-01, 6.492027044296265e-01, 6.477992534637451e-01, 6.463984847068787e-01, 6.450003385543823e-01, 6.436048746109009e-01, 6.422120332717896e-01, 6.408253908157349e-01, 6.39448344707489e-01, 6.380808353424072e-01, 6.367229223251343e-01, 6.353744864463806e-01, 6.340355277061462e-01, 6.327060461044312e-01, 6.313859820365906e-01, 6.300753355026245e-01, 6.287740468978882e-01, 6.274821162223816e-01, 6.2619948387146e-01, 6.249262094497681e-01, 6.236621141433716e-01, 6.224073171615601e-01, 6.211617588996887e-01, 6.19925320148468e-01, 6.186981201171875e-01, 6.174800395965576e-01, 6.162710785865784e-01, 6.986549496650696e-01, 6.973198056221008e-01, 6.959944367408752e-01, 6.94678783416748e-01, 6.93372905254364e-01, 6.920766234397888e-01, 6.907899379730225e-01, 6.895127892494202e-01, 6.882451772689819e-01, 6.869869828224182e-01, 6.857381463050842e-01, 6.8449866771698e-01, 6.832684874534607e-01, 6.820476055145264e-01, 6.808359026908875e-01, 6.796333789825439e-01, 6.784399747848511e-01, 6.772556900978088e-01, 6.760804057121277e-01, 6.749141812324524e-01, 6.737568974494934e-01, 6.726085543632507e-01, 6.714691519737244e-01, 6.703385710716248e-01, 6.692168712615967e-01, 6.681039333343506e-01, 6.669997572898865e-01, 6.659042835235596e-01, 6.648175716400146e-01, 6.637395024299622e-01, 6.626700758934021e-01, 6.616092324256897e-01, 6.60556972026825e-01, 6.595132350921631e-01, 6.584780216217041e-01, 6.57451331615448e-01, 6.5643310546875e-01, 6.554232835769653e-01, 6.54421865940094e-01, 6.534287929534912e-01] -airFil.eps[2]=[8.00000011920929e-01, 7.985125780105591e-01, 7.970494627952576e-01, 7.956095337867737e-01, 7.941915988922119e-01, 7.927946448326111e-01, 7.914174795150757e-01, 7.900590300559998e-01, 7.887181639671326e-01, 7.873938679695129e-01, 7.860851287841797e-01, 7.847907543182373e-01, 7.835098505020142e-01, 7.822413444519043e-01, 7.809842228889465e-01, 7.797375321388245e-01, 7.785001993179321e-01, 7.772713303565979e-01, 7.760499715805054e-01, 7.748351097106934e-01, 7.736257910728455e-01, 7.724211812019348e-01, 7.71220326423645e-01, 7.700222730636597e-01, 7.688261270523071e-01, 7.676311135292053e-01, 7.664362192153931e-01, 7.652406096458435e-01, 7.640435099601746e-01, 7.628440260887146e-01, 7.61641263961792e-01, 7.604345083236694e-01, 7.592228651046753e-01, 7.580055594444275e-01, 7.567817568778992e-01, 7.55550742149353e-01, 7.54311740398407e-01, 7.530639171600342e-01, 7.518065571784973e-01, 7.505389451980591e-01, 7.492603063583374e-01, 7.479732036590576e-01, 7.466802000999451e-01, 7.453809380531311e-01, 7.44074821472168e-01, 7.42761492729187e-01, 7.4144047498703e-01, 7.401114702224731e-01, 7.387740612030029e-01, 7.374279499053955e-01, 7.360727787017822e-01, 7.34708309173584e-01, 7.333343029022217e-01, 7.319504618644714e-01, 7.305566668510437e-01, 7.291526198387146e-01, 7.277382612228394e-01, 7.263133525848389e-01, 7.248778343200684e-01, 7.234315872192383e-01, 7.219744920730591e-01, 7.986639142036438e-01, 7.973547577857971e-01, 7.960714101791382e-01, 7.948128581047058e-01, 7.935779094696045e-01, 7.923656702041626e-01, 7.911750078201294e-01, 7.900050282478333e-01, 7.888548374176025e-01, 7.877234816551208e-01, 7.866101264953613e-01, 7.855138778686523e-01, 7.844340205192566e-01, 7.833697199821472e-01, 7.823203206062317e-01, 7.812849879264832e-01, 7.802630662918091e-01, 7.792539000511169e-01, 7.78256893157959e-01, 7.772713303565979e-01, 7.762967348098755e-01, 7.753324508666992e-01, 7.743780016899109e-01, 7.734327912330627e-01, 7.724963426589966e-01, 7.71568238735199e-01, 7.706479430198669e-01, 7.697350382804871e-01, 7.688291072845459e-01, 7.679297924041748e-01, 7.670366764068604e-01, 7.661493420600891e-01, 7.65267550945282e-01, 7.643908858299255e-01, 7.635190486907959e-01, 7.62651801109314e-01, 7.617887854576111e-01, 7.609298229217529e-01, 7.600745558738708e-01, 7.592228651046753e-01] +senTraSubCO2In.C=[0e+00, 3.934647142887115e-02, 6.31992295384407e-02, 7.766902446746826e-02, 8.644747734069824e-02, 9.177772700786591e-02, 9.500787407159805e-02, 9.69691127538681e-02, 9.815884381532669e-02, 9.888272732496262e-02, 9.932427853345871e-02, 9.959043562412262e-02, 9.975060075521469e-02, 9.984844177961349e-02, 9.990818053483963e-02, 9.994418919086456e-02, 9.996599704027176e-02, 9.997942298650742e-02, 9.998779743909836e-02, 9.999308735132217e-02, 9.999622404575348e-02, 9.999790042638779e-02, 9.999878704547882e-02, 9.999926388263702e-02, 9.99995544552803e-02, 9.999977797269821e-02, 1.00000225007534e-01, 1.000007316470146e-01, 1.000010371208191e-01, 1.000009998679161e-01, 1.000010967254639e-01, 1.000009477138519e-01, 1.00000686943531e-01, 1.000004336237907e-01, 1.000002399086952e-01, 1.000000312924385e-01, 9.999991208314896e-02, 9.999989718198776e-02, 9.999989718198776e-02, 9.999992698431015e-02, 9.999998658895493e-02, 9.989407658576965e-02, 9.963726997375488e-02, 9.92853194475174e-02, 9.887504577636719e-02, 9.842919558286667e-02, 9.79619175195694e-02, 9.748209267854691e-02, 9.699486941099167e-02, 9.650306403636932e-02, 9.600833803415298e-02, 9.551173448562622e-02, 9.501390904188156e-02, 9.4515360891819e-02, 9.401633590459824e-02, 9.351692348718643e-02, 9.30170863866806e-02, 9.251714497804642e-02, 9.201747924089432e-02, 9.151794016361237e-02, 9.101834148168564e-02, 9.051118046045303e-02, 9.000696241855621e-02, 8.950453251600266e-02, 8.900319039821625e-02, 8.850251138210297e-02, 8.800221234560013e-02, 8.750215172767639e-02, 8.7002232670784e-02, 8.650240302085876e-02, 8.600262552499771e-02, 8.550287783145905e-02, 8.500314503908157e-02, 8.45034271478653e-02, 8.400370925664902e-02, 8.350399881601334e-02, 8.300428092479706e-02, 8.250457048416138e-02, 8.20048525929451e-02, 8.150514215230942e-02, 8.100542426109314e-02, 8.050570636987686e-02, 8.000598847866058e-02, 7.950626313686371e-02, 7.900653779506683e-02, 7.850681245326996e-02, 7.800708711147308e-02, 7.750735431909561e-02, 7.700762152671814e-02, 7.650788873434067e-02, 7.60081484913826e-02, 7.550840824842453e-02, 7.500866800546646e-02, 7.450892776250839e-02, 7.400918006896973e-02, 7.350943237543106e-02, 7.30096846818924e-02, 7.250993698835373e-02, 7.201018184423447e-02, 7.15104267001152e-02, 7.101067155599594e-02] +senTraSubCO2Out.C=[0e+00, 1.183587685227394e-02, 1.906991936266422e-02, 2.351702563464642e-02, 2.627363428473473e-02, 2.800579369068146e-02, 2.911398373544216e-02, 2.98449695110321e-02, 3.034666366875172e-02, 3.07095143944025e-02, 3.098827041685581e-02, 3.121511451900005e-02, 3.141012787818909e-02, 3.158601000905037e-02, 3.175024315714836e-02, 3.190725296735764e-02, 3.205977380275726e-02, 3.220950067043304e-02, 3.235745802521706e-02, 3.250424563884735e-02, 3.265015780925751e-02, 3.279538452625275e-02, 3.294010832905769e-02, 3.30844447016716e-02, 3.322846069931984e-02, 3.33721898496151e-02, 3.351571783423424e-02, 3.365900367498398e-02, 3.380196541547775e-02, 3.394457325339317e-02, 3.408695384860039e-02, 3.422899916768074e-02, 3.437075763940811e-02, 3.451225161552429e-02, 3.465350344777107e-02, 3.479448333382607e-02, 3.493523225188255e-02, 3.507574275135994e-02, 3.521599620580673e-02, 3.535599634051323e-02, 3.549573570489883e-02, 3.559713065624237e-02, 3.564349561929703e-02, 3.565428033471107e-02, 3.564236685633659e-02, 3.56157124042511e-02, 3.557927906513214e-02, 3.553617745637894e-02, 3.548822924494743e-02, 3.543642908334732e-02, 3.538137674331665e-02, 3.532345965504646e-02, 3.526291251182556e-02, 3.519992902874947e-02, 3.513461723923683e-02, 3.506701812148094e-02, 3.499713912606239e-02, 3.492510691285133e-02, 3.48510704934597e-02, 3.477499261498451e-02, 3.469682857394218e-02, 3.165625035762787e-02, 2.980116941034794e-02, 2.866501174867153e-02, 2.796510607004166e-02, 2.752854116261005e-02, 2.724624238908291e-02, 2.705801837146282e-02, 2.692684531211853e-02, 2.682893536984921e-02, 2.675019949674606e-02, 2.668267488479614e-02, 2.662134356796741e-02, 2.656289003789425e-02, 2.650521509349346e-02, 2.644705399870872e-02, 2.638799510896206e-02, 2.632773853838444e-02, 2.626612409949303e-02, 2.620315738022327e-02, 2.613845467567444e-02, 2.607200294733047e-02, 2.600365504622459e-02, 2.593337371945381e-02, 2.586127445101738e-02, 2.578727714717388e-02, 2.571133896708488e-02, 2.563350647687912e-02, 2.555394358932972e-02, 2.547255717217922e-02, 2.538935467600822e-02, 2.530436404049397e-02, 2.521766535937786e-02, 2.512924931943417e-02, 2.503914199769497e-02, 2.494736202061176e-02, 2.48539038002491e-02, 2.475880086421967e-02, 2.46620699763298e-02, 2.456372417509556e-02, 2.446376159787178e-02] +senTraSubVOCIn.C=[0e+00, 3.934647142887115e-02, 6.31992295384407e-02, 7.766902446746826e-02, 8.644747734069824e-02, 9.177772700786591e-02, 9.500787407159805e-02, 9.69691127538681e-02, 9.815884381532669e-02, 9.888272732496262e-02, 9.932427853345871e-02, 9.959043562412262e-02, 9.975060075521469e-02, 9.984844177961349e-02, 9.990818053483963e-02, 9.994418919086456e-02, 9.996599704027176e-02, 9.997942298650742e-02, 9.998779743909836e-02, 9.999308735132217e-02, 9.999622404575348e-02, 9.999790042638779e-02, 9.999878704547882e-02, 9.999926388263702e-02, 9.99995544552803e-02, 9.999977797269821e-02, 1.00000225007534e-01, 1.000007316470146e-01, 1.000010371208191e-01, 1.000009998679161e-01, 1.000010967254639e-01, 1.000009477138519e-01, 1.00000686943531e-01, 1.000004336237907e-01, 1.000002399086952e-01, 1.000000312924385e-01, 9.999991208314896e-02, 9.999989718198776e-02, 9.999989718198776e-02, 9.999992698431015e-02, 9.999998658895493e-02, 9.989407658576965e-02, 9.963726997375488e-02, 9.92853194475174e-02, 9.887504577636719e-02, 9.842919558286667e-02, 9.79619175195694e-02, 9.748209267854691e-02, 9.699486941099167e-02, 9.650306403636932e-02, 9.600833803415298e-02, 9.551173448562622e-02, 9.501390904188156e-02, 9.4515360891819e-02, 9.401633590459824e-02, 9.351692348718643e-02, 9.30170863866806e-02, 9.251714497804642e-02, 9.201747924089432e-02, 9.151794016361237e-02, 9.101834148168564e-02, 9.051118046045303e-02, 9.000696241855621e-02, 8.950453251600266e-02, 8.900319039821625e-02, 8.850251138210297e-02, 8.800221234560013e-02, 8.750215172767639e-02, 8.7002232670784e-02, 8.650240302085876e-02, 8.600262552499771e-02, 8.550287783145905e-02, 8.500314503908157e-02, 8.45034271478653e-02, 8.400370925664902e-02, 8.350399881601334e-02, 8.300428092479706e-02, 8.250457048416138e-02, 8.20048525929451e-02, 8.150514215230942e-02, 8.100542426109314e-02, 8.050570636987686e-02, 8.000598847866058e-02, 7.950626313686371e-02, 7.900653779506683e-02, 7.850681245326996e-02, 7.800708711147308e-02, 7.750735431909561e-02, 7.700762152671814e-02, 7.650788873434067e-02, 7.60081484913826e-02, 7.550840824842453e-02, 7.500866800546646e-02, 7.450892776250839e-02, 7.400918006896973e-02, 7.350943237543106e-02, 7.30096846818924e-02, 7.250993698835373e-02, 7.201018184423447e-02, 7.15104267001152e-02, 7.101067155599594e-02] +senTraSubVOCOut.C=[0e+00, 7.901075296103954e-03, 1.274883188307285e-02, 1.574663631618023e-02, 1.762153767049313e-02, 1.881509087979794e-02, 1.959299482405186e-02, 2.011889219284058e-02, 2.049108035862446e-02, 2.076940983533859e-02, 2.099042572081089e-02, 2.117583341896534e-02, 2.133875340223312e-02, 2.148754894733429e-02, 2.162737771868706e-02, 2.176138386130333e-02, 2.189147472381592e-02, 2.201885543763638e-02, 2.214429527521133e-02, 2.226829715073109e-02, 2.239114791154861e-02, 2.251307666301727e-02, 2.263429015874863e-02, 2.275495603680611e-02, 2.287520840764046e-02, 2.299516089260578e-02, 2.311496064066887e-02, 2.323466539382935e-02, 2.33543086796999e-02, 2.347395196557045e-02, 2.359377034008503e-02, 2.371377684175968e-02, 2.383407950401306e-02, 2.395478449761868e-02, 2.407598309218884e-02, 2.419774234294891e-02, 2.432016097009182e-02, 2.444331906735897e-02, 2.456727623939514e-02, 2.46921144425869e-02, 2.481790632009506e-02, 2.491800859570503e-02, 2.498062700033188e-02, 2.501935511827469e-02, 2.50431876629591e-02, 2.505769208073616e-02, 2.506635151803493e-02, 2.507135085761547e-02, 2.507397346198559e-02, 2.507493086159229e-02, 2.507464773952961e-02, 2.507339790463448e-02, 2.507135644555092e-02, 2.506865747272968e-02, 2.506537176668644e-02, 2.506152354180813e-02, 2.505710907280445e-02, 2.505221404135227e-02, 2.504693903028965e-02, 2.504124492406845e-02, 2.50350721180439e-02, 2.226582914590836e-02, 2.059425041079521e-02, 1.958770118653774e-02, 1.898411102592945e-02, 1.86232253909111e-02, 1.840398646891117e-02, 1.827067695558071e-02, 1.818906143307686e-02, 1.813717931509018e-02, 1.810205914080143e-02, 1.807641051709652e-02, 1.805566437542439e-02, 1.803683117032051e-02, 1.801804266870022e-02, 1.799820549786091e-02, 1.797700859606266e-02, 1.795424520969391e-02, 1.792982593178749e-02, 1.790382340550423e-02, 1.787593960762024e-02, 1.784621365368366e-02, 1.781456731259823e-02, 1.778100989758968e-02, 1.774569600820541e-02, 1.770859956741333e-02, 1.766971498727798e-02, 1.762912422418594e-02, 1.758702099323273e-02, 1.754334568977356e-02, 1.749813556671143e-02, 1.745144464075565e-02, 1.74033809453249e-02, 1.735395565629005e-02, 1.730321161448956e-02, 1.725118607282639e-02, 1.719790138304234e-02, 1.714339666068554e-02, 1.708770543336868e-02, 1.703085377812386e-02, 1.697285287082195e-02] +airFil.eps[1]=[6.99999988079071e-01, 6.985014677047729e-01, 6.970059871673584e-01, 6.955133676528931e-01, 6.940237283706665e-01, 6.925369501113892e-01, 6.91053032875061e-01, 6.895719766616821e-01, 6.880937814712524e-01, 6.866183876991272e-01, 6.851457357406616e-01, 6.836758852005005e-01, 6.82208776473999e-01, 6.80744469165802e-01, 6.792828440666199e-01, 6.778239011764526e-01, 6.763677000999451e-01, 6.749141812324524e-01, 6.734633445739746e-01, 6.720151305198669e-01, 6.705695986747742e-01, 6.691267490386963e-01, 6.676865220069885e-01, 6.662489175796509e-01, 6.648139953613281e-01, 6.633816361427307e-01, 6.619519591331482e-01, 6.60524845123291e-01, 6.591004133224487e-01, 6.576786041259766e-01, 6.562593579292297e-01, 6.548427939414978e-01, 6.534287929534912e-01, 6.520174741744995e-01, 6.506087779998779e-01, 6.492027044296265e-01, 6.477992534637451e-01, 6.463984847068787e-01, 6.450003385543823e-01, 6.436048746109009e-01, 6.422120332717896e-01, 6.408255100250244e-01, 6.394484639167786e-01, 6.380809545516968e-01, 6.367230415344238e-01, 6.353746056556702e-01, 6.340356469154358e-01, 6.327061653137207e-01, 6.313861012458801e-01, 6.300754547119141e-01, 6.287741661071777e-01, 6.274822354316711e-01, 6.261996030807495e-01, 6.249262690544128e-01, 6.236622333526611e-01, 6.224074363708496e-01, 6.211618781089783e-01, 6.199254393577576e-01, 6.186982393264771e-01, 6.174801588058472e-01, 6.162711977958679e-01, 6.986549496650696e-01, 6.973198056221008e-01, 6.959944367408752e-01, 6.94678783416748e-01, 6.93372905254364e-01, 6.920766234397888e-01, 6.907899379730225e-01, 6.895127892494202e-01, 6.882451772689819e-01, 6.869869232177734e-01, 6.857381463050842e-01, 6.8449866771698e-01, 6.832684874534607e-01, 6.820476055145264e-01, 6.808359026908875e-01, 6.796333789825439e-01, 6.784399747848511e-01, 6.772556900978088e-01, 6.760804057121277e-01, 6.749141812324524e-01, 6.737568974494934e-01, 6.726085543632507e-01, 6.714691519737244e-01, 6.703385710716248e-01, 6.692168712615967e-01, 6.681039333343506e-01, 6.669997572898865e-01, 6.659042835235596e-01, 6.648175716400146e-01, 6.637395024299622e-01, 6.626700162887573e-01, 6.616091728210449e-01, 6.605569124221802e-01, 6.595132350921631e-01, 6.584780216217041e-01, 6.57451331615448e-01, 6.564330458641052e-01, 6.554232239723206e-01, 6.544218063354492e-01, 6.534287929534912e-01] +airFil.eps[2]=[8.00000011920929e-01, 7.985125780105591e-01, 7.970494627952576e-01, 7.956095337867737e-01, 7.941915988922119e-01, 7.927946448326111e-01, 7.914174795150757e-01, 7.900590300559998e-01, 7.887181639671326e-01, 7.873938679695129e-01, 7.860851287841797e-01, 7.847907543182373e-01, 7.835098505020142e-01, 7.822413444519043e-01, 7.809842228889465e-01, 7.797375321388245e-01, 7.785001993179321e-01, 7.772713303565979e-01, 7.760499715805054e-01, 7.748351097106934e-01, 7.736257910728455e-01, 7.724211812019348e-01, 7.71220326423645e-01, 7.700222730636597e-01, 7.688261270523071e-01, 7.676311135292053e-01, 7.664362192153931e-01, 7.652406096458435e-01, 7.640435099601746e-01, 7.628440260887146e-01, 7.61641263961792e-01, 7.604345083236694e-01, 7.592228651046753e-01, 7.580055594444275e-01, 7.567817568778992e-01, 7.55550742149353e-01, 7.54311740398407e-01, 7.530639171600342e-01, 7.518065571784973e-01, 7.505389451980591e-01, 7.492603063583374e-01, 7.479732632637024e-01, 7.466803193092346e-01, 7.453809976577759e-01, 7.440749406814575e-01, 7.427616119384766e-01, 7.414405941963196e-01, 7.401115894317627e-01, 7.387741804122925e-01, 7.374280691146851e-01, 7.360728979110718e-01, 7.347084283828735e-01, 7.333344221115112e-01, 7.31950581073761e-01, 7.305567860603333e-01, 7.291527390480042e-01, 7.277383804321289e-01, 7.263134717941284e-01, 7.248779535293579e-01, 7.234317064285278e-01, 7.219746112823486e-01, 7.98663854598999e-01, 7.973547577857971e-01, 7.960714101791382e-01, 7.948128581047058e-01, 7.935779094696045e-01, 7.923656702041626e-01, 7.911750078201294e-01, 7.900050282478333e-01, 7.888548374176025e-01, 7.877234816551208e-01, 7.866100668907166e-01, 7.855138778686523e-01, 7.844340205192566e-01, 7.833697199821472e-01, 7.823203206062317e-01, 7.812849879264832e-01, 7.802630662918091e-01, 7.792539000511169e-01, 7.78256893157959e-01, 7.772713303565979e-01, 7.762967348098755e-01, 7.753324508666992e-01, 7.743780016899109e-01, 7.734327912330627e-01, 7.724963426589966e-01, 7.71568238735199e-01, 7.706479430198669e-01, 7.697350382804871e-01, 7.688291072845459e-01, 7.679297924041748e-01, 7.670366764068604e-01, 7.661493420600891e-01, 7.65267550945282e-01, 7.643908858299255e-01, 7.635190486907959e-01, 7.62651801109314e-01, 7.617887854576111e-01, 7.609297633171082e-01, 7.600745558738708e-01, 7.592228055000305e-01] airFil.uRep=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] From 53a05588f6df596c55d1b01fc6327a49755a48c9 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Wed, 20 Nov 2024 14:58:30 -0800 Subject: [PATCH 38/47] Deleted openmodelica script --- .../Buildings.Fluid.AirFilters.Examples.Empirical.mos | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Empirical.mos diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Empirical.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Empirical.mos deleted file mode 100644 index ef1b9247f86..00000000000 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.AirFilters.Examples.Empirical.mos +++ /dev/null @@ -1,9 +0,0 @@ -compareVars := - { - "C_in.C", - "C_out.C", - "fil.eps", - "fil.uRep", - "C_inflow.y", - "C_in.port_a.m_flow" - }; From e74668435a771556c67b852a56248f6defe49d3f Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 2 Jan 2025 11:25:08 -0800 Subject: [PATCH 39/47] improved code --- .../FiltrationEfficiencyParameters.mo | 3 +- .../AirFilters/BaseClasses/Data/Generic.mo | 21 +++++++++++--- .../BaseClasses/FiltrationEfficiency.mo | 9 +++--- .../BaseClasses/FlowCoefficientCorrection.mo | 10 +++---- .../PressureDropWithVaryingFlowCoefficient.mo | 6 ++-- .../BaseClasses/Validation/MassTransfer.mo | 13 +++++---- Buildings/Fluid/AirFilters/Empirical.mo | 29 ++++++++----------- .../Fluid/AirFilters/Examples/SpaceCooling.mo | 27 ++++++++--------- 8 files changed, 65 insertions(+), 53 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/FiltrationEfficiencyParameters.mo b/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/FiltrationEfficiencyParameters.mo index 46fed1e3b7a..0981c145045 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/FiltrationEfficiencyParameters.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/FiltrationEfficiencyParameters.mo @@ -10,7 +10,8 @@ record FiltrationEfficiencyParameters annotation (Documentation(info="

                        -Data record that describes the relative mass of the contaminant rat that is captured by the filter when it has the filtration efficiency +Data record that describes the relative mass of the contaminant rat +that is captured by the filter when it has the filtration efficiency specified as eps. The elements of the vector rat should be in ascending order, i.e.,rat[i] < rat[i+1]. diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo b/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo index d1180b77708..7c4d6857c13 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo @@ -23,9 +23,22 @@ First implementation.

                      ", info=" -

                      Record that contains performance parameters for air filters.

                      -

                      It is used as a template of performance data for the filter models in Buildings.Fluid.AirFilters.

                      -

                      The record includes a dataset that relates the mass of the captured contaminants to the filter's filtration efficiency (see Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency).

                      -

                      The record also contains a parameter that defines how the pressure drop changes with the mass of the captured contaminants (see Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection).

                      +

                      +Record that contains performance parameters for air filters. +

                      +

                      It is used as a template of performance data for the filter models in +Buildings.Fluid.AirFilters. +

                      +

                      +The record includes a dataset that relates the mass of the captured contaminants +to the filter's filtration efficiency +(see +Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency). +

                      +

                      +The record also contains a parameter that defines how the pressure drop changes +with the mass of the captured contaminants +(see +Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection).

                      ")); end Generic; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo index f0d3f182ea7..f84c0235e24 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo @@ -18,12 +18,13 @@ model FiltrationEfficiency Buildings.Controls.OBC.CDL.Interfaces.RealOutput y[nConSub]( each final unit="1", each final min=0, - each final max=1) "Filtration efficiency" + each final max=1) + "Filtration efficiency of each contaminant" annotation (Placement(transformation(extent={{100,-80},{140,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput rat( - each final unit="1", - each final min=0, - each final max=1) + final unit="1", + final min=0, + final max=1) "Relative mass of the contaminant captured by the filter" annotation (Placement(transformation(extent={{100,40},{140,80}}))); protected diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo index 7e9553afa43..569189bea57 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo @@ -4,14 +4,14 @@ model FlowCoefficientCorrection parameter Real b = 1.1 "Resistance coefficient"; Buildings.Controls.OBC.CDL.Interfaces.RealInput rat( - each final unit="1", - each final min=0, - each final max=1) + final unit="1", + final min=0, + final max=1) "Relative mass of the contaminant captured by the filter" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y( - each final unit="1", - each final min=1) + final unit="1", + final min=1) "Flow coefficient correction" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); initial equation diff --git a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo index 135860c024e..ffd906091eb 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/PressureDropWithVaryingFlowCoefficient.mo @@ -7,17 +7,17 @@ model PressureDropWithVaryingFlowCoefficient parameter Real deltaM(min=1E-6) = 0.3 "Fraction of nominal mass flow rate where transition to turbulent occurs" annotation(Evaluate=true, Dialog(group = "Transition to laminar", enable = not linearized)); - Real k "Flow coefficient, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2)"; + Real k "Flow coefficient"; Buildings.Controls.OBC.CDL.Interfaces.RealInput kCor( final unit = "1", final min = 1) - "Flow coefficient" + "Flow coefficient correction factor" annotation (Placement(transformation(extent={{-20,-20},{20,20}}, rotation=-90, origin={0,120}))); protected final parameter Boolean computeFlowResistance=(dp_nominal_pos > Modelica.Constants.eps) - "Flag to enable/disable computation of flow resistance" + "True: enable computation of flow resistance" annotation(Evaluate=true); initial equation diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo index 02d8dbf1aad..1999b7d7298 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo @@ -21,12 +21,14 @@ model MassTransfer each startTime=5) "Mass transfer efficiency" annotation (Placement(transformation(extent={{-60,40},{-40,60}}))); - Buildings.Fluid.Sensors.TraceSubstancesTwoPort senTraSubCO2Out(redeclare - package Medium = Medium, m_flow_nominal=1) + Buildings.Fluid.Sensors.TraceSubstancesTwoPort senTraSubCO2Out( + redeclare package Medium = Medium, + m_flow_nominal=1) "Trace substance sensor of CO2 in outlet air" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); - Buildings.Fluid.Sensors.TraceSubstancesTwoPort senTraSubCO2In(redeclare - package Medium = Medium, m_flow_nominal=1) + Buildings.Fluid.Sensors.TraceSubstancesTwoPort senTraSubCO2In( + redeclare package Medium = Medium, + m_flow_nominal=1) "Trace substance sensor of CO2 in inlet air" annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); Buildings.Fluid.Sources.Boundary_pT sou( @@ -111,6 +113,5 @@ First implementation.
                    "), - Diagram(coordinateSystem(extent={{-220,-100},{160,100}})), - Icon(coordinateSystem(extent={{-100,-100},{100,100}}))); + Diagram(coordinateSystem(extent={{-220,-100},{160,100}}))); end MassTransfer; diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index 800311e5b11..9849b5bbbbe 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -19,9 +19,9 @@ model Empirical "Empirical air filter model" each final unit="1", each final min=0, each final max=1) - "Filtration efficiency" annotation (Placement(transformation( - extent={{100,20},{140,60}}), iconTransformation(extent={{100,-80},{140, - -40}}))); + "Filtration efficiency" + annotation (Placement(transformation(extent={{100,20},{140,60}}), + iconTransformation(extent={{100,-80},{140,-40}}))); Modelica.Fluid.Interfaces.FluidPort_a port_a( redeclare final package Medium = Medium, h_outflow(start = Medium.h_default, nominal = Medium.h_default)) @@ -260,27 +260,23 @@ Documentation(info="

                    An empirical model of air filters, which considers the impacts of the contaminant accumulation on the pressure drop and the filtration efficiency. -The dynamic characteristics of the filters are defined by the following parameters. +The characteristics of the filters are defined in the performance dataset +per that determines:

                    • -The mCon_nominal determines the maximum amount of contaminants the filter can accumulate -before reaching its nominal capacity. +the maximum amount of contaminants mCon_nominal that +the filter can capture before reaching its nominal capacity;
                    • -A performance dataset per that determines -
                        -
                      • the types of contaminants can be captured by the filter;
                      • how the flow coefficient changes as contaminants build up;
                      • -how the filtration efficiency changes -with the contaminant accumulation, specific to each type. -
                      • -
                      +how the filtration efficiency changes along with the contaminant accumulation, +specific to each type.

                    @@ -296,14 +292,13 @@ when uRep changes from false to true, the mass of the captured contaminants is reset to 0.

                    Note: -Warnings will be triggered +Warnings will be triggered when,
                    • -when the captured contaminant mass exceeds the -mCon_nominal. +the captured contaminant mass exceeds the mCon_nominal, or
                    • -when the extraPropertiesNames in the medium model don't contain all the contaminants +the extraPropertiesNames in the medium model does not contain all the contaminants specified in the per.
                    diff --git a/Buildings/Fluid/AirFilters/Examples/SpaceCooling.mo b/Buildings/Fluid/AirFilters/Examples/SpaceCooling.mo index c9ffea50d37..aa201d83e57 100644 --- a/Buildings/Fluid/AirFilters/Examples/SpaceCooling.mo +++ b/Buildings/Fluid/AirFilters/Examples/SpaceCooling.mo @@ -88,9 +88,9 @@ model SpaceCooling energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState) "Supply air fan" annotation (Placement(transformation(extent={{40,-30},{60,-10}}))); - Buildings.Fluid.HeatExchangers.ConstantEffectiveness hex(redeclare package - Medium1 = - MediumA, redeclare package Medium2 = MediumA, + Buildings.Fluid.HeatExchangers.ConstantEffectiveness hex( + redeclare package Medium1 = MediumA, + redeclare package Medium2 = MediumA, m1_flow_nominal=mA_flow_nominal, m2_flow_nominal=mA_flow_nominal, dp1_nominal=200, @@ -127,8 +127,9 @@ model SpaceCooling use_m_flow_in=true, T=TWSup_nominal) "Source for water flow rate" annotation (Placement(transformation(extent={{-20,-110},{0,-90}}))); - Buildings.Fluid.Sources.Boundary_pT sinWat(nPorts=1, redeclare package Medium = - MediumW) "Sink for water circuit" + Buildings.Fluid.Sources.Boundary_pT sinWat( + nPorts=1, + redeclare package Medium = MediumW) "Sink for water circuit" annotation (Placement(transformation(extent={{-80,-76},{-60,-56}}))); BoundaryConditions.WeatherData.ReaderTMY3 weaDat( pAtmSou=Buildings.BoundaryConditions.Types.DataSource.Parameter, @@ -142,14 +143,14 @@ model SpaceCooling Buildings.Controls.OBC.CDL.Reals.Sources.Constant mAir_flow(k=mA_flow_nominal) "Fan air flow rate" annotation (Placement(transformation(extent={{0,0},{20,20}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package - Medium = - MediumA, m_flow_nominal=mA_flow_nominal) + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHXOut( + redeclare package Medium = MediumA, + m_flow_nominal=mA_flow_nominal) "Temperature sensor for heat recovery outlet on supply side" annotation (Placement(transformation(extent={{-38,-26},{-26,-14}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemSupAir(redeclare package - Medium = - MediumA, m_flow_nominal=mA_flow_nominal) + Buildings.Fluid.Sensors.TemperatureTwoPort senTemSupAir( + redeclare package Medium = MediumA, + m_flow_nominal=mA_flow_nominal) "Temperature sensor for supply air" annotation (Placement(transformation(extent={{6,-26},{18,-14}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant TRooSetPoi(k=TRooSet) @@ -178,8 +179,8 @@ model SpaceCooling startTime=15552000 + 87600/2) "Contaminant mass flow rate fraction" annotation (Placement(transformation(extent={{-170,-70},{-150,-50}}))); - Buildings.Fluid.Sensors.TraceSubstancesTwoPort C_out(redeclare package - Medium =MediumA, + Buildings.Fluid.Sensors.TraceSubstancesTwoPort C_out( + redeclare package Medium =MediumA, m_flow_nominal=mA_flow_nominal, substanceName="PM10") "Trace substance sensor of outlet air" From 2c715074dabb1278b68b6e0b3ce0498617f39638 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 9 Jan 2025 21:40:34 -0500 Subject: [PATCH 40/47] move all the paras to the dataset --- .../AirFilters/BaseClasses/Data/Generic.mo | 19 ++++++++++++++----- .../BaseClasses/FiltrationEfficiency.mo | 4 ++-- .../AirFilters/BaseClasses/MassTransfer.mo | 6 +++--- .../Validation/FiltrationEfficiency.mo | 6 ++++-- .../BaseClasses/Validation/MassTransfer.mo | 3 ++- Buildings/Fluid/AirFilters/Empirical.mo | 19 +++++++------------ 6 files changed, 32 insertions(+), 25 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo b/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo index 7c4d6857c13..7d690a92e87 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo @@ -1,11 +1,17 @@ within Buildings.Fluid.AirFilters.BaseClasses.Data; record Generic "Generic data record for air filters" extends Modelica.Icons.Record; + parameter Modelica.Units.SI.MassFlowRate m_flow_nominal + "Nominal air mass flow rate" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.PressureDifference dp_nominal + "Nominal pressure drop" + annotation (Dialog(group="Nominal condition")); parameter Real mCon_nominal( final unit = "kg") "Maximum mass of the contaminant that can be captured by the filter"; - parameter String substanceName[:] = {"CO2"} - "Name of trace substance"; + parameter String namCon[:] = {"CO2"} + "Contaminant names"; parameter Buildings.Fluid.AirFilters.BaseClasses.Characteristics.FiltrationEfficiencyParameters filEffPar @@ -30,13 +36,16 @@ Record that contains performance parameters for air filters. Buildings.Fluid.AirFilters.

                    -The record includes a dataset that relates the mass of the captured contaminants -to the filter's filtration efficiency +This record include the nominal air flow rate and the nominal pressure drop value. +

                    +

                    +Additionally, it features a curve that represents the relationship between the mass of captured contaminants +and filtration efficiency (see Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency).

                    -The record also contains a parameter that defines how the pressure drop changes +Finally, it contains a parameter that defines how the pressure drop changes with the mass of the captured contaminants (see Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection).

                    diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo index f84c0235e24..ad75c0df564 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo @@ -5,7 +5,7 @@ model FiltrationEfficiency parameter Real mCon_nominal( final unit = "kg") "Maximum mass of the contaminant that can be captured by the filter"; - parameter String substanceName[:] = {"CO2"} + parameter String namCon[:] = {"CO2"} "Name of trace substance"; parameter Buildings.Fluid.AirFilters.BaseClasses.Characteristics.FiltrationEfficiencyParameters @@ -28,7 +28,7 @@ model FiltrationEfficiency "Relative mass of the contaminant captured by the filter" annotation (Placement(transformation(extent={{100,40},{140,80}}))); protected - parameter Integer nConSub = size(substanceName,1) + parameter Integer nConSub = size(namCon,1) "Total types of contaminant substances"; equation rat = Buildings.Utilities.Math.Functions.smoothMin( diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo index 843abbf4941..42d379bd4a1 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -2,7 +2,7 @@ within Buildings.Fluid.AirFilters.BaseClasses; model MassTransfer "Component that sets the trace substance at port_b based on an input trace substance mass flow rate and an input mass transfer efficiency" extends Buildings.Fluid.Interfaces.PartialTwoPortInterface; - parameter String substanceName[:] = {"CO2"} + parameter String namCon[:] = {"CO2"} "Name of trace substance"; Buildings.Controls.OBC.CDL.Interfaces.RealInput eps[nConSub]( each final unit = "1", @@ -16,11 +16,11 @@ model MassTransfer annotation (Placement(transformation(extent={{100,40},{140,80}}))); protected - parameter Integer nConSub = size(substanceName,1) + parameter Integer nConSub = size(namCon,1) "Total types of contaminant substances"; parameter Real s[:,:]= { {if (Modelica.Utilities.Strings.isEqual(string1=Medium.extraPropertiesNames[i], - string2=substanceName[j], + string2=namCon[j], caseSensitive=false)) then 1 else 0 for i in 1:nConSub} for j in 1:Medium.nC} diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo index 823f1ff2f23..cf999ce0e04 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/FiltrationEfficiency.mo @@ -2,8 +2,10 @@ within Buildings.Fluid.AirFilters.BaseClasses.Validation; model FiltrationEfficiency "Validation model for the calculation of the filtration efficiency" extends Modelica.Icons.Example; - Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency eps(mCon_nominal= - 1, filEffPar(rat={{0,0.5,1}}, eps={{0.7,0.6,0.5}})) + Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency eps( + mCon_nominal=1, + filEffPar(rat={{0,0.5,1}}, + eps={{0.7,0.6,0.5}})) "Filtration efficiency" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); Modelica.Blocks.Sources.Ramp mCon( diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo index 1999b7d7298..e0713807a47 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo @@ -2,6 +2,7 @@ within Buildings.Fluid.AirFilters.BaseClasses.Validation; model MassTransfer "Validation model for the MassTransfer model" extends Modelica.Icons.Example; + package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2","VOC"}) "Air"; Buildings.Fluid.Sources.Boundary_pT sin( @@ -11,7 +12,7 @@ model MassTransfer Buildings.Fluid.AirFilters.BaseClasses.MassTransfer masTra( redeclare package Medium = Medium, m_flow_nominal=1, - substanceName={"CO2","VOC"}) + namCon={"CO2","VOC"}) "Mass transfer" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Modelica.Blocks.Sources.Ramp eps[2]( diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index 9849b5bbbbe..1a50cfbe710 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -3,12 +3,7 @@ model Empirical "Empirical air filter model" replaceable package Medium = Modelica.Media.Interfaces.PartialCondensingGases "Air"; - parameter Modelica.Units.SI.MassFlowRate m_flow_nominal - "Nominal mass flow rate" - annotation (Dialog(group="Nominal")); - parameter Modelica.Units.SI.PressureDifference dp_nominal - "Nominal pressure drop" - annotation (Dialog(group="Nominal")); + parameter Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per "Performance dataset" annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); @@ -33,24 +28,24 @@ model Empirical "Empirical air filter model" "Fluid connector b (positive design flow direction is from port_a to port_b)" annotation (Placement(transformation(extent={{90,-10},{110,10}}))); protected - parameter Integer nConSub = size(per.substanceName,1) + parameter Integer nConSub = size(per.namCon,1) "Total types of contaminant substances"; Buildings.Fluid.AirFilters.BaseClasses.PressureDropWithVaryingFlowCoefficient res( redeclare package Medium = Medium, - final m_flow_nominal=m_flow_nominal, - final dp_nominal=dp_nominal) + final m_flow_nominal=per.m_flow_nominal, + final dp_nominal=per.dp_nominal) "Pressure resistance" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); Buildings.Fluid.AirFilters.BaseClasses.MassTransfer masTra( redeclare package Medium = Medium, - final m_flow_nominal=m_flow_nominal, - final substanceName=per.substanceName) + final m_flow_nominal=per.m_flow_nominal, + final namCon=per.namCon) "Contaminant removal" annotation (Placement(transformation(extent={{36,-10},{56,10}}))); Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency epsCal( final mCon_nominal = per.mCon_nominal, - final substanceName=per.substanceName, + final namCon=per.namCon, final filEffPar=per.filEffPar) "Filter characterization" annotation (Placement(transformation(extent={{0,70},{20,90}}))); From 01cdd28bc3b195483f6699040a85cd2dcbf497f5 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 15 Jan 2025 16:14:34 -0500 Subject: [PATCH 41/47] model doc update and package restructure --- .../BaseClasses/FiltrationEfficiency.mo | 6 +-- .../BaseClasses/FlowCoefficientCorrection.mo | 2 +- .../AirFilters/BaseClasses/package.order | 2 - .../FiltrationEfficiencyParameters.mo | 29 ++++++++++ .../Characteristics/package.mo | 2 +- .../Data/Characteristics/package.order | 1 + Buildings/Fluid/AirFilters/Data/Generic.mo | 53 +++++++++++++++++++ .../{BaseClasses => }/Data/package.mo | 4 +- Buildings/Fluid/AirFilters/Data/package.order | 2 + Buildings/Fluid/AirFilters/Empirical.mo | 21 +++----- .../Fluid/AirFilters/Examples/SpaceCooling.mo | 10 ++-- .../Fluid/AirFilters/Validation/Empirical.mo | 10 ++-- Buildings/Fluid/AirFilters/package.order | 3 +- 13 files changed, 112 insertions(+), 33 deletions(-) create mode 100644 Buildings/Fluid/AirFilters/Data/Characteristics/FiltrationEfficiencyParameters.mo rename Buildings/Fluid/AirFilters/{BaseClasses => Data}/Characteristics/package.mo (81%) create mode 100644 Buildings/Fluid/AirFilters/Data/Characteristics/package.order create mode 100644 Buildings/Fluid/AirFilters/Data/Generic.mo rename Buildings/Fluid/AirFilters/{BaseClasses => }/Data/package.mo (64%) create mode 100644 Buildings/Fluid/AirFilters/Data/package.order diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo index ad75c0df564..6cd4a120ae5 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo @@ -8,7 +8,7 @@ model FiltrationEfficiency parameter String namCon[:] = {"CO2"} "Name of trace substance"; parameter - Buildings.Fluid.AirFilters.BaseClasses.Characteristics.FiltrationEfficiencyParameters + Buildings.Fluid.AirFilters.Data.Characteristics.FiltrationEfficiencyParameters filEffPar "Filtration efficiency versus relative mass of the contaminant"; Buildings.Controls.OBC.CDL.Interfaces.RealInput mCon( @@ -59,8 +59,8 @@ Documentation(info="

                    This model calculates the filtration efficiency, eps, using cubic Hermite spline interpolation of the filter dataset (see - -Buildings.Fluid.AirFilters.BaseClasses.Characteristics.filtrationEfficiencyParameters) + +Buildings.Fluid.AirFilters.Data.Characteristics.filtrationEfficiencyParameters) with respect to rat.

                    diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo index 569189bea57..b90f7146699 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo @@ -16,7 +16,7 @@ model FlowCoefficientCorrection annotation (Placement(transformation(extent={{100,-20},{140,20}}))); initial equation assert(b - 1.0 > 0.01, - "In " + getInstanceName() + ":The resistance coefficient should be larger + "In " + getInstanceName() + ":The resistance coefficient must be larger than 1", level = AssertionLevel.error) "Validate the resistance coefficient"; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/package.order b/Buildings/Fluid/AirFilters/BaseClasses/package.order index a08ee572b30..177dde1d3bd 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/package.order +++ b/Buildings/Fluid/AirFilters/BaseClasses/package.order @@ -3,6 +3,4 @@ FlowCoefficientCorrection MassAccumulation MassTransfer PressureDropWithVaryingFlowCoefficient -Characteristics -Data Validation diff --git a/Buildings/Fluid/AirFilters/Data/Characteristics/FiltrationEfficiencyParameters.mo b/Buildings/Fluid/AirFilters/Data/Characteristics/FiltrationEfficiencyParameters.mo new file mode 100644 index 00000000000..2d72585ad26 --- /dev/null +++ b/Buildings/Fluid/AirFilters/Data/Characteristics/FiltrationEfficiencyParameters.mo @@ -0,0 +1,29 @@ +within Buildings.Fluid.AirFilters.Data.Characteristics; +record FiltrationEfficiencyParameters + "Record for filtration efficiency verse relative mass of the contaminant captured by the filter" + extends Modelica.Icons.Record; + + parameter Real rat[:,:](each final max=1, each final min=0) + "Relative mass of the contaminant captured by the filter"; + parameter Real eps[:,:](each final max=1, each final min=0) + "Filtration efficiency"; + + annotation (Documentation(info=" +

                    +Data record that describes the relative mass of the contaminant rat +that is captured by the filter when it has the filtration efficiency +specified as eps. +The elements of the vector rat should be in ascending order, +i.e.,rat[i] < rat[i+1]. +Both vectors, rat and eps +must have the same size. +

                    +", revisions=" +
                      +
                    • +June 27, 2023, by Sen Huang:
                      +First implementation. +
                    • +
                    +")); +end FiltrationEfficiencyParameters; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/package.mo b/Buildings/Fluid/AirFilters/Data/Characteristics/package.mo similarity index 81% rename from Buildings/Fluid/AirFilters/BaseClasses/Characteristics/package.mo rename to Buildings/Fluid/AirFilters/Data/Characteristics/package.mo index bd1e9a00e61..8cf5b292021 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/package.mo +++ b/Buildings/Fluid/AirFilters/Data/Characteristics/package.mo @@ -1,4 +1,4 @@ -within Buildings.Fluid.AirFilters.BaseClasses; +within Buildings.Fluid.AirFilters.Data; package Characteristics "Functions for filter characteristics" annotation (Documentation(info=" diff --git a/Buildings/Fluid/AirFilters/Data/Characteristics/package.order b/Buildings/Fluid/AirFilters/Data/Characteristics/package.order new file mode 100644 index 00000000000..454d7257860 --- /dev/null +++ b/Buildings/Fluid/AirFilters/Data/Characteristics/package.order @@ -0,0 +1 @@ +FiltrationEfficiencyParameters diff --git a/Buildings/Fluid/AirFilters/Data/Generic.mo b/Buildings/Fluid/AirFilters/Data/Generic.mo new file mode 100644 index 00000000000..22c3425e7dd --- /dev/null +++ b/Buildings/Fluid/AirFilters/Data/Generic.mo @@ -0,0 +1,53 @@ +within Buildings.Fluid.AirFilters.Data; +record Generic "Generic data record for air filters" + extends Modelica.Icons.Record; + parameter Modelica.Units.SI.MassFlowRate m_flow_nominal + "Nominal air mass flow rate" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.PressureDifference dp_nominal + "Nominal pressure drop" + annotation (Dialog(group="Nominal condition")); + parameter Real mCon_nominal( + final unit = "kg") + "Maximum mass of the contaminant that can be captured by the filter"; + parameter String namCon[:] = {"CO2"} + "Contaminant names"; + parameter + Buildings.Fluid.AirFilters.Data.Characteristics.FiltrationEfficiencyParameters + filEffPar + "Filtration efficiency versus relative mass of the contaminant"; + parameter Real b = 1.1 + "Resistance coefficient"; + annotation ( + defaultComponentPrefixes = "parameter", + defaultComponentName = "per", + Documentation(revisions=" +
                      +
                    • +June 27, 2023, by Sen Huang:
                      +First implementation. +
                    • +
                    +", info=" +

                    +Record that contains performance parameters for air filters. +

                    +

                    It is used as a template of performance data for the filter models in +Buildings.Fluid.AirFilters. +

                    +

                    +This record include the nominal air flow rate and the nominal pressure drop value. +

                    +

                    +Additionally, it features a curve that represents the relationship between the mass of captured contaminants +and filtration efficiency +(see +Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency). +

                    +

                    +Finally, it contains a parameter that defines how the pressure drop changes +with the mass of the captured contaminants +(see +Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection).

                    +")); +end Generic; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Data/package.mo b/Buildings/Fluid/AirFilters/Data/package.mo similarity index 64% rename from Buildings/Fluid/AirFilters/BaseClasses/Data/package.mo rename to Buildings/Fluid/AirFilters/Data/package.mo index a93fb3fa67a..ae16b3ebe0c 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Data/package.mo +++ b/Buildings/Fluid/AirFilters/Data/package.mo @@ -1,10 +1,10 @@ -within Buildings.Fluid.AirFilters.BaseClasses; +within Buildings.Fluid.AirFilters; package Data "Performance data for air filters" extends Modelica.Icons.MaterialPropertiesPackage; annotation (Documentation(info="

                    -This package contains data for air filters. +This package contains performance data set for air filters.

                    ")); end Data; diff --git a/Buildings/Fluid/AirFilters/Data/package.order b/Buildings/Fluid/AirFilters/Data/package.order new file mode 100644 index 00000000000..65aa8ac37e6 --- /dev/null +++ b/Buildings/Fluid/AirFilters/Data/package.order @@ -0,0 +1,2 @@ +Characteristics +Generic diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index 1a50cfbe710..210a8f45f2b 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -4,7 +4,7 @@ model Empirical "Empirical air filter model" Modelica.Media.Interfaces.PartialCondensingGases "Air"; - parameter Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per + parameter Buildings.Fluid.AirFilters.Data.Generic per "Performance dataset" annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uRep @@ -255,23 +255,18 @@ Documentation(info="

                    An empirical model of air filters, which considers the impacts of the contaminant accumulation on the pressure drop and the filtration efficiency. -The characteristics of the filters are defined in the performance dataset -per that determines: +This model does not require geometric data. +Its performance is characterizied with a performance dataset per (see + +Buildings.Fluid.AirFilters.Data.Generic), Specifically,

                    • -the maximum amount of contaminants mCon_nominal that -the filter can capture before reaching its nominal capacity; +the pressure drop of the filter is defined with per.b.
                    • -the types of contaminants can be captured by the filter; -
                    • -
                    • -how the flow coefficient changes as contaminants build up; -
                    • -
                    • -how the filtration efficiency changes along with the contaminant accumulation, -specific to each type. +the filtration efficiency of the filter is defined with per.filEffPar +for each type of contaminant, as specified in per.namCon.

                    diff --git a/Buildings/Fluid/AirFilters/Examples/SpaceCooling.mo b/Buildings/Fluid/AirFilters/Examples/SpaceCooling.mo index aa201d83e57..5cd97a092c7 100644 --- a/Buildings/Fluid/AirFilters/Examples/SpaceCooling.mo +++ b/Buildings/Fluid/AirFilters/Examples/SpaceCooling.mo @@ -52,12 +52,14 @@ model SpaceCooling parameter Modelica.Units.SI.MassFlowRate mW_flow_nominal=-QCoiC_flow_nominal/ (TWRet_nominal - TWSup_nominal)/4200 "Nominal water mass flow rate"; - parameter Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per( + parameter Buildings.Fluid.AirFilters.Data.Generic per( mCon_nominal=5, - substanceName={"PM10"}, + namCon={"PM10"}, filEffPar(rat={{0,0.5,1}}, eps={{0.5,0.4,0.2}}), - b=1.3) + b=1.3, + m_flow_nominal=mA_flow_nominal, + dp_nominal=50) "Performance dataset of the air filter" annotation (Placement(transformation(extent={{-80,64},{-60,84}}))); @@ -168,8 +170,6 @@ model SpaceCooling annotation (Placement(transformation(extent={{-100,-102},{-80,-82}}))); Buildings.Fluid.AirFilters.Empirical airFil( redeclare package Medium = MediumA, - m_flow_nominal=mA_flow_nominal, - dp_nominal(displayUnit="Pa") = 50, per=per) annotation (Placement(transformation(extent={{-128,-10},{-108,10}}))); Modelica.Blocks.Sources.Ramp C_inflow( diff --git a/Buildings/Fluid/AirFilters/Validation/Empirical.mo b/Buildings/Fluid/AirFilters/Validation/Empirical.mo index 451a1bf1396..bfe104c6df0 100644 --- a/Buildings/Fluid/AirFilters/Validation/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Validation/Empirical.mo @@ -3,12 +3,14 @@ model Empirical "Example for using the empirical air filter model" extends Modelica.Icons.Example; package Medium = Buildings.Media.Air(extraPropertiesNames={"VOC","CO2"}) "Air"; - parameter Buildings.Fluid.AirFilters.BaseClasses.Data.Generic per( + parameter Buildings.Fluid.AirFilters.Data.Generic per( mCon_nominal=10, - substanceName={"CO2","VOC"}, + namCon={"CO2","VOC"}, filEffPar( rat={{0,0.5,1},{0,0.5,1}}, - eps={{0.7,0.6,0.5},{0.8,0.7,0.5}})) + eps={{0.7,0.6,0.5},{0.8,0.7,0.5}}), + m_flow_nominal=1, + dp_nominal=100) "Performance dataset" annotation (Placement(transformation(extent={{22,46},{42,66}}))); Buildings.Fluid.Sources.Boundary_pT sou( @@ -44,8 +46,6 @@ model Empirical "Example for using the empirical air filter model" annotation (Placement(transformation(extent={{-160,-40},{-140,-20}}))); Buildings.Fluid.AirFilters.Empirical airFil( redeclare package Medium = Medium, - m_flow_nominal=1, - dp_nominal(displayUnit="Pa") = 100, per=per) "Air filter" annotation (Placement(transformation(extent={{0,-10},{20,10}}))); Buildings.Fluid.Sensors.TraceSubstancesTwoPort senTraSubCO2In( diff --git a/Buildings/Fluid/AirFilters/package.order b/Buildings/Fluid/AirFilters/package.order index 757b965ae4a..d1c7ca68327 100644 --- a/Buildings/Fluid/AirFilters/package.order +++ b/Buildings/Fluid/AirFilters/package.order @@ -1,4 +1,5 @@ +BaseClasses +Data Empirical Examples Validation -BaseClasses From 5cc292250229beb2f0564f55c9b73bd51f10c288 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 15 Jan 2025 16:19:52 -0500 Subject: [PATCH 42/47] refer result update --- .../Buildings_Fluid_AirFilters_Validation_Empirical.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Validation_Empirical.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Validation_Empirical.txt index 2f2826acac2..f34595afb2a 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Validation_Empirical.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_AirFilters_Validation_Empirical.txt @@ -1,4 +1,9 @@ -last-generated=2024-11-20 +last-generated=2025-01-15 +statistics-initialization= +{ + "nonlinear": "1", + "numerical Jacobians": "0" +} statistics-simulation= { "linear": " ", From fc585cd1f2624a230d76f6608e71b0eebca95545 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 16 Jan 2025 10:59:50 -0500 Subject: [PATCH 43/47] clean up --- .../FiltrationEfficiencyParameters.mo | 29 ---------- .../BaseClasses/Characteristics/package.order | 1 - .../AirFilters/BaseClasses/Data/Generic.mo | 53 ------------------- .../AirFilters/BaseClasses/Data/package.order | 1 - .../BaseClasses/FlowCoefficientCorrection.mo | 8 +-- .../AirFilters/BaseClasses/MassTransfer.mo | 26 ++++----- Buildings/Fluid/AirFilters/Data/Generic.mo | 4 +- Buildings/Fluid/AirFilters/Empirical.mo | 6 +-- 8 files changed, 22 insertions(+), 106 deletions(-) delete mode 100644 Buildings/Fluid/AirFilters/BaseClasses/Characteristics/FiltrationEfficiencyParameters.mo delete mode 100644 Buildings/Fluid/AirFilters/BaseClasses/Characteristics/package.order delete mode 100644 Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo delete mode 100644 Buildings/Fluid/AirFilters/BaseClasses/Data/package.order diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/FiltrationEfficiencyParameters.mo b/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/FiltrationEfficiencyParameters.mo deleted file mode 100644 index 0981c145045..00000000000 --- a/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/FiltrationEfficiencyParameters.mo +++ /dev/null @@ -1,29 +0,0 @@ -within Buildings.Fluid.AirFilters.BaseClasses.Characteristics; -record FiltrationEfficiencyParameters - "Record for filtration efficiency verse relative mass of the contaminant captured by the filter" - extends Modelica.Icons.Record; - - parameter Real rat[:,:](each final max=1, each final min=0) - "Relative mass of the contaminant captured by the filter"; - parameter Real eps[:,:](each final max=1, each final min=0) - "Filtration efficiency"; - - annotation (Documentation(info=" -

                    -Data record that describes the relative mass of the contaminant rat -that is captured by the filter when it has the filtration efficiency -specified as eps. -The elements of the vector rat should be in ascending order, -i.e.,rat[i] < rat[i+1]. -Both vectors, rat and eps -must have the same size. -

                    -", revisions=" -
                      -
                    • -June 27, 2023, by Sen Huang:
                      -First implementation. -
                    • -
                    -")); -end FiltrationEfficiencyParameters; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/package.order b/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/package.order deleted file mode 100644 index 454d7257860..00000000000 --- a/Buildings/Fluid/AirFilters/BaseClasses/Characteristics/package.order +++ /dev/null @@ -1 +0,0 @@ -FiltrationEfficiencyParameters diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo b/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo deleted file mode 100644 index 7d690a92e87..00000000000 --- a/Buildings/Fluid/AirFilters/BaseClasses/Data/Generic.mo +++ /dev/null @@ -1,53 +0,0 @@ -within Buildings.Fluid.AirFilters.BaseClasses.Data; -record Generic "Generic data record for air filters" - extends Modelica.Icons.Record; - parameter Modelica.Units.SI.MassFlowRate m_flow_nominal - "Nominal air mass flow rate" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.PressureDifference dp_nominal - "Nominal pressure drop" - annotation (Dialog(group="Nominal condition")); - parameter Real mCon_nominal( - final unit = "kg") - "Maximum mass of the contaminant that can be captured by the filter"; - parameter String namCon[:] = {"CO2"} - "Contaminant names"; - parameter - Buildings.Fluid.AirFilters.BaseClasses.Characteristics.FiltrationEfficiencyParameters - filEffPar - "Filtration efficiency versus relative mass of the contaminant"; - parameter Real b = 1.1 - "Resistance coefficient"; - annotation ( - defaultComponentPrefixes = "parameter", - defaultComponentName = "per", - Documentation(revisions=" -
                      -
                    • -June 27, 2023, by Sen Huang:
                      -First implementation. -
                    • -
                    -", info=" -

                    -Record that contains performance parameters for air filters. -

                    -

                    It is used as a template of performance data for the filter models in -Buildings.Fluid.AirFilters. -

                    -

                    -This record include the nominal air flow rate and the nominal pressure drop value. -

                    -

                    -Additionally, it features a curve that represents the relationship between the mass of captured contaminants -and filtration efficiency -(see -Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency). -

                    -

                    -Finally, it contains a parameter that defines how the pressure drop changes -with the mass of the captured contaminants -(see -Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection).

                    -")); -end Generic; diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Data/package.order b/Buildings/Fluid/AirFilters/BaseClasses/Data/package.order deleted file mode 100644 index 8470d611953..00000000000 --- a/Buildings/Fluid/AirFilters/BaseClasses/Data/package.order +++ /dev/null @@ -1 +0,0 @@ -Generic diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo index b90f7146699..44edfc646dd 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FlowCoefficientCorrection.mo @@ -1,7 +1,7 @@ within Buildings.Fluid.AirFilters.BaseClasses; model FlowCoefficientCorrection "Component that calculates the flow coefficient correction factor" - parameter Real b = 1.1 + parameter Real b=1.1 "Resistance coefficient"; Buildings.Controls.OBC.CDL.Interfaces.RealInput rat( final unit="1", @@ -15,13 +15,13 @@ model FlowCoefficientCorrection "Flow coefficient correction" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); initial equation - assert(b - 1.0 > 0.01, + assert(b-1.0>0.01, "In " + getInstanceName() + ":The resistance coefficient must be larger than 1", level = AssertionLevel.error) "Validate the resistance coefficient"; equation - y = b^rat; + y=b^rat; annotation (defaultComponentName="coeCor", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ @@ -52,7 +52,7 @@ Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency).

                    References

                    Qiang Li ta al., (2022). Experimental study on the synthetic dust loading characteristics of air filters. -Separation and Purification Technology 284 (2022), 120209 +Separation and Purification Technology 284 (2022), 120209.

                    ", revisions="
                      diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo index 42d379bd4a1..54156ed8df6 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -18,7 +18,7 @@ model MassTransfer protected parameter Integer nConSub = size(namCon,1) "Total types of contaminant substances"; - parameter Real s[:,:]= { + parameter Real s[:,:]={ {if (Modelica.Utilities.Strings.isEqual(string1=Medium.extraPropertiesNames[i], string2=namCon[j], caseSensitive=false)) @@ -40,28 +40,28 @@ equation if max(s[i]) > 0.9 then for j in 1:nConSub loop if s[i,j]>0.9 then - port_b.C_outflow[i] =inStream(port_a.C_outflow[i])*(1 - eps[j] * s[i,j]); - port_a.C_outflow[i] = inStream(port_a.C_outflow[i]); - mCon_flow[j] = inStream(port_a.C_outflow[j])* eps[j]; + port_b.C_outflow[i]=inStream(port_a.C_outflow[i])*(1 - eps[j] * s[i,j]); + port_a.C_outflow[i]=inStream(port_a.C_outflow[i]); + mCon_flow[j]=inStream(port_a.C_outflow[j])* eps[j]; end if; end for; else - port_b.C_outflow[i] = inStream(port_a.C_outflow[i]); - port_a.C_outflow[i] = inStream(port_b.C_outflow[i]); + port_b.C_outflow[i]=inStream(port_a.C_outflow[i]); + port_a.C_outflow[i]=inStream(port_b.C_outflow[i]); end if; end for; // Mass balance (no storage). - port_a.Xi_outflow = inStream(port_b.Xi_outflow); - port_b.Xi_outflow = inStream(port_a.Xi_outflow); - port_a.m_flow = -port_b.m_flow; + port_a.Xi_outflow=inStream(port_b.Xi_outflow); + port_b.Xi_outflow=inStream(port_a.Xi_outflow); + port_a.m_flow =-port_b.m_flow; // Pressure balance (no pressure drop). - port_a.p = port_b.p; + port_a.p=port_b.p; // Energy balance (no heat exchange). - port_a.h_outflow = inStream(port_b.h_outflow); - port_b.h_outflow = inStream(port_a.h_outflow); + port_a.h_outflow=inStream(port_b.h_outflow); + port_b.h_outflow=inStream(port_a.h_outflow); if not allowFlowReversal then - assert(m_flow > -m_flow_small, + assert(m_flow>-m_flow_small, "In " + getInstanceName() + ": Reverting flow occurs even though allowFlowReversal is false.", level=AssertionLevel.error); end if; diff --git a/Buildings/Fluid/AirFilters/Data/Generic.mo b/Buildings/Fluid/AirFilters/Data/Generic.mo index 22c3425e7dd..736215fe071 100644 --- a/Buildings/Fluid/AirFilters/Data/Generic.mo +++ b/Buildings/Fluid/AirFilters/Data/Generic.mo @@ -10,13 +10,13 @@ record Generic "Generic data record for air filters" parameter Real mCon_nominal( final unit = "kg") "Maximum mass of the contaminant that can be captured by the filter"; - parameter String namCon[:] = {"CO2"} + parameter String namCon[:]={"CO2"} "Contaminant names"; parameter Buildings.Fluid.AirFilters.Data.Characteristics.FiltrationEfficiencyParameters filEffPar "Filtration efficiency versus relative mass of the contaminant"; - parameter Real b = 1.1 + parameter Real b=1.1 "Resistance coefficient"; annotation ( defaultComponentPrefixes = "parameter", diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index 210a8f45f2b..b5426a4f706 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -262,10 +262,10 @@ Buildings.Fluid.AirFilters.Data.Generic), Specifically,

                      • -the pressure drop of the filter is defined with per.b. +the pressure drop of the filter is defined with per.b.
                      • -the filtration efficiency of the filter is defined with per.filEffPar +the filtration efficiency of the filter is defined with per.filEffPar for each type of contaminant, as specified in per.namCon.
                      @@ -289,7 +289,7 @@ the captured contaminant mass exceeds the mCon_nominal, or
                    • the extraPropertiesNames in the medium model does not contain all the contaminants -specified in the per. +specified in the per.namCon.
                    ", revisions=" From 6cc13a96a30c3bcfe7f579dbc051dec3bc1a59ac Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 16 Jan 2025 11:21:41 -0500 Subject: [PATCH 44/47] fix typo --- .../Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo | 2 +- Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo | 4 ++-- .../Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo | 1 - Buildings/Fluid/AirFilters/Data/Generic.mo | 5 +++-- Buildings/Fluid/AirFilters/Empirical.mo | 6 +++--- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo index 6cd4a120ae5..f0b0d3464d8 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/FiltrationEfficiency.mo @@ -5,7 +5,7 @@ model FiltrationEfficiency parameter Real mCon_nominal( final unit = "kg") "Maximum mass of the contaminant that can be captured by the filter"; - parameter String namCon[:] = {"CO2"} + parameter String namCon[:]={"CO2"} "Name of trace substance"; parameter Buildings.Fluid.AirFilters.Data.Characteristics.FiltrationEfficiencyParameters diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo index 54156ed8df6..02db2056888 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -2,7 +2,7 @@ within Buildings.Fluid.AirFilters.BaseClasses; model MassTransfer "Component that sets the trace substance at port_b based on an input trace substance mass flow rate and an input mass transfer efficiency" extends Buildings.Fluid.Interfaces.PartialTwoPortInterface; - parameter String namCon[:] = {"CO2"} + parameter String namCon[:]={"CO2"} "Name of trace substance"; Buildings.Controls.OBC.CDL.Interfaces.RealInput eps[nConSub]( each final unit = "1", @@ -16,7 +16,7 @@ model MassTransfer annotation (Placement(transformation(extent={{100,40},{140,80}}))); protected - parameter Integer nConSub = size(namCon,1) + parameter Integer nConSub=size(namCon,1) "Total types of contaminant substances"; parameter Real s[:,:]={ {if (Modelica.Utilities.Strings.isEqual(string1=Medium.extraPropertiesNames[i], diff --git a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo index e0713807a47..82a1bb50bea 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/Validation/MassTransfer.mo @@ -2,7 +2,6 @@ within Buildings.Fluid.AirFilters.BaseClasses.Validation; model MassTransfer "Validation model for the MassTransfer model" extends Modelica.Icons.Example; - package Medium = Buildings.Media.Air(extraPropertiesNames={"CO2","VOC"}) "Air"; Buildings.Fluid.Sources.Boundary_pT sin( diff --git a/Buildings/Fluid/AirFilters/Data/Generic.mo b/Buildings/Fluid/AirFilters/Data/Generic.mo index 736215fe071..53efefa7def 100644 --- a/Buildings/Fluid/AirFilters/Data/Generic.mo +++ b/Buildings/Fluid/AirFilters/Data/Generic.mo @@ -9,7 +9,8 @@ record Generic "Generic data record for air filters" annotation (Dialog(group="Nominal condition")); parameter Real mCon_nominal( final unit = "kg") - "Maximum mass of the contaminant that can be captured by the filter"; + "Maximum mass of the contaminant that can be captured by the filter" + annotation (Dialog(group="Nominal condition")); parameter String namCon[:]={"CO2"} "Contaminant names"; parameter @@ -36,7 +37,7 @@ Record that contains performance parameters for air filters. Buildings.Fluid.AirFilters.

                    -This record include the nominal air flow rate and the nominal pressure drop value. +This record includes the nominal air flow rate and the nominal pressure drop value.

                    Additionally, it features a curve that represents the relationship between the mass of captured contaminants diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index b5426a4f706..9fe0a8973c4 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -256,16 +256,16 @@ Documentation(info=" An empirical model of air filters, which considers the impacts of the contaminant accumulation on the pressure drop and the filtration efficiency. This model does not require geometric data. -Its performance is characterizied with a performance dataset per (see +Its performance is characterized by a performance dataset per (see Buildings.Fluid.AirFilters.Data.Generic), Specifically,

                    • -the pressure drop of the filter is defined with per.b. +the pressure drop of the filter is defined by per.b.
                    • -the filtration efficiency of the filter is defined with per.filEffPar +the filtration efficiency of the filter is defined by per.filEffPar for each type of contaminant, as specified in per.namCon.
                    From 0d724ec64a8208267459ac761918a9a561d9b14c Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 16 Jan 2025 11:35:12 -0500 Subject: [PATCH 45/47] model doc update --- Buildings/Fluid/AirFilters/Data/Generic.mo | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Buildings/Fluid/AirFilters/Data/Generic.mo b/Buildings/Fluid/AirFilters/Data/Generic.mo index 53efefa7def..892ebaa7f19 100644 --- a/Buildings/Fluid/AirFilters/Data/Generic.mo +++ b/Buildings/Fluid/AirFilters/Data/Generic.mo @@ -37,7 +37,8 @@ Record that contains performance parameters for air filters. Buildings.Fluid.AirFilters.

                    -This record includes the nominal air flow rate and the nominal pressure drop value. +This record includes the nominal air flow rate, the maximum mass of the contaminants that can be captured by the filter, +and the nominal pressure drop value.

                    Additionally, it features a curve that represents the relationship between the mass of captured contaminants From a59aa8f96f3e1c718720f3a7703e95fba789a3b6 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 17 Jan 2025 11:23:52 -0800 Subject: [PATCH 46/47] corrected package order --- Buildings/Fluid/AirFilters/Data/package.order | 2 +- Buildings/Fluid/AirFilters/package.order | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Buildings/Fluid/AirFilters/Data/package.order b/Buildings/Fluid/AirFilters/Data/package.order index 65aa8ac37e6..529728a9b1f 100644 --- a/Buildings/Fluid/AirFilters/Data/package.order +++ b/Buildings/Fluid/AirFilters/Data/package.order @@ -1,2 +1,2 @@ -Characteristics Generic +Characteristics diff --git a/Buildings/Fluid/AirFilters/package.order b/Buildings/Fluid/AirFilters/package.order index d1c7ca68327..8aa11992551 100644 --- a/Buildings/Fluid/AirFilters/package.order +++ b/Buildings/Fluid/AirFilters/package.order @@ -1,5 +1,5 @@ -BaseClasses -Data Empirical +Data Examples Validation +BaseClasses From e915073a9fbf686ec52c3a62ec03aafee1849107 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Wed, 5 Feb 2025 14:50:21 -0800 Subject: [PATCH 47/47] improved text --- .../AirFilters/BaseClasses/MassTransfer.mo | 7 ++++++- Buildings/Fluid/AirFilters/Empirical.mo | 17 +++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo index 02db2056888..3aa9ee2b318 100644 --- a/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo +++ b/Buildings/Fluid/AirFilters/BaseClasses/MassTransfer.mo @@ -69,7 +69,12 @@ equation annotation (defaultComponentName="masTra", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle(extent={{-100,100},{100,-100}}, fillColor={255,255,255}, - fillPattern=FillPattern.Solid, pattern=LinePattern.None)}), + fillPattern=FillPattern.Solid, pattern=LinePattern.None), + Rectangle( + extent={{-100,100},{100,-100}}, + lineColor={28,108,200}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid)}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                    diff --git a/Buildings/Fluid/AirFilters/Empirical.mo b/Buildings/Fluid/AirFilters/Empirical.mo index 9fe0a8973c4..ca2dd88f409 100644 --- a/Buildings/Fluid/AirFilters/Empirical.mo +++ b/Buildings/Fluid/AirFilters/Empirical.mo @@ -1,7 +1,6 @@ within Buildings.Fluid.AirFilters; model Empirical "Empirical air filter model" - replaceable package Medium = - Modelica.Media.Interfaces.PartialCondensingGases + replaceable package Medium = Modelica.Media.Interfaces.PartialCondensingGases "Air"; parameter Buildings.Fluid.AirFilters.Data.Generic per @@ -19,14 +18,15 @@ model Empirical "Empirical air filter model" iconTransformation(extent={{100,-80},{140,-40}}))); Modelica.Fluid.Interfaces.FluidPort_a port_a( redeclare final package Medium = Medium, - h_outflow(start = Medium.h_default, nominal = Medium.h_default)) + h_outflow(start = Medium.h_default, nominal = Medium.h_default)) "Fluid connector a (positive design flow direction is from port_a to port_b)" annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); Modelica.Fluid.Interfaces.FluidPort_b port_b( - redeclare final package Medium = Medium, - h_outflow(start = Medium.h_default, nominal = Medium.h_default)) + redeclare final package Medium = Medium, + h_outflow(start = Medium.h_default, nominal = Medium.h_default)) "Fluid connector b (positive design flow direction is from port_a to port_b)" annotation (Placement(transformation(extent={{90,-10},{110,10}}))); + protected parameter Integer nConSub = size(per.namCon,1) "Total types of contaminant substances"; @@ -262,11 +262,12 @@ Buildings.Fluid.AirFilters.Data.Generic), Specifically,

                    • -the pressure drop of the filter is defined by per.b. +the pressure drop of the filter is defined by the resistance coefficient per.b.
                    • -the filtration efficiency of the filter is defined by per.filEffPar -for each type of contaminant, as specified in per.namCon. +the filtration efficiency of the filter is defined by the filtration efficiency +per.filEffPar for each type of contaminant. The contaminant type is +specified by per.namCon.

              Buildings.Fluid.AirFilters + Package of models for air filters.
              + This is for issue 3618. +
              Buildings.Examples.Tutorial.SimpleHouse Tutorial for how to build a simple system model. @@ -326,15 +332,6 @@ have been improved in a This is for issue 3517.
              Buildings.Fluid -
              Buildings.Fluid.AirFilters - Package of models for air filters.
              - This is for issue 3618. -
              Buildings.Fluid.Interfaces