Buildings.Fluid.AirFilters.Examples
Package with example models
Information
This package contains examples for the use of models that can be found in Buildings.Fluid.AirFilters.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
Package Content
| Name | Description |
|---|---|
| Space cooling system |
Buildings.Fluid.AirFilters.Examples.SpaceCooling
Space cooling system
Information
This block is identical to Buildings.Examples.Tutorial.SpaceCooling.System3, except that an air filter is added to the cooling system.
The major input signals for the air filter are configured as follows:
- The input trace substance C_inflow.y changes from 10 µg/m³ (7.73e-9 kg/kg, assuming an air density of 1.293 kg/m³) to 15 µg/m³ (1.16e-8 kg/kg) at 12:00 (15552000+12*3600 seconds).
-
The filter replacement signal
repSigis false.
The expected output are:
- The filtration efficiency airFil.eps[1] decreases along with the contaminant airFil.masAcc.mCon build up.
- The fan power fan.P slightly increases, caused by the rising pressure drop across the filter as contaminants build up.
Note that these changes in filtration efficiency and pressure drop are relatively minor over the span of a single day, with more pronounced effects expected over months.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package MediumA | Buildings.Media.Air (extraPr... | Medium for air | |
| replaceable package MediumW | Buildings.Media.Water | Medium for water | |
| Volume | V | 6*10*3 | Room volume [m3] |
| Real | eps | 0.8 | Heat recovery effectiveness |
| Temperature | TASup_nominal | 291.15 | Nominal air temperature supplied to room [K] |
| DimensionlessRatio | wASup_nominal | 0.012 | Nominal air humidity ratio supplied to room [kg/kg] assuming 90% relative humidity [1] |
| Temperature | TRooSet | 297.15 | Nominal room air temperature [K] |
| Temperature | TOut_nominal | 303.15 | Design outlet air temperature [K] |
| Temperature | THeaRecLvg | TOut_nominal - eps*(TOut_nom... | Air temperature leaving the heat recovery [K] |
| DimensionlessRatio | wHeaRecLvg | 0.0135 | Air humidity ratio leaving the heat recovery [kg/kg] [1] |
| HeatFlowRate | QRooInt_flow | 1000 | Internal heat gains of the room [W] |
| HeatFlowRate | QRooC_flow_nominal | -QRooInt_flow - 10E3/30*(TOu... | Nominal cooling load of the room [W] |
| MassFlowRate | mA_flow_nominal | 1.3*QRooC_flow_nominal/1006/... | Nominal air mass flow rate, increased by factor 1.3 to allow for recovery after temperature setback [kg/s] |
| TemperatureDifference | dTFan | 2 | Estimated temperature raise across fan that needs to be made up by the cooling coil [K] |
| HeatFlowRate | QCoiC_flow_nominal | mA_flow_nominal*(TASup_nomin... | Cooling load of coil, taking into account outside air sensible and latent heat removal [W] |
| Temperature | TWSup_nominal | 285.15 | Water supply temperature [K] |
| Temperature | TWRet_nominal | 289.15 | Water return temperature [K] |
| MassFlowRate | mW_flow_nominal | -QCoiC_flow_nominal/(TWRet_n... | Nominal water mass flow rate [kg/s] |
| Generic | per | per(mCon_max=5, mCon_start=0... | Performance dataset of the air filter |
Connectors
| Type | Name | Description |
|---|---|---|
| replaceable package MediumA | Medium for air | |
| replaceable package MediumW | Medium for water | |
| Bus | weaBus | |
Modelica definition
model SpaceCooling
"Space cooling system"
extends Modelica.Icons.Example;
replaceable package MediumA = Buildings.Media.Air(extraPropertiesNames={"PM10"})
"Medium for air";
replaceable package MediumW = Buildings.Media.Water "Medium for water";
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";
parameter Buildings.Fluid.AirFilters.Data.Generic per(
mCon_max=5,
mCon_start=0,
namCon={"PM10"},
filEffPar={
Buildings.Fluid.AirFilters.Data.Characteristics.FiltrationEfficiencyParameters(
rat={0,0.5,1}, eps={0.75,0.5,0.2})},
b=1.3,
m_flow_nominal=mA_flow_nominal,
dp_nominal=50) "Performance dataset of the air filter";
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);
Modelica.Thermal.HeatTransfer.Components.ThermalConductor theCon(G=10000/30)
"Thermal conductance with the ambient";
Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature TOut
"Outside temperature";
Modelica.Thermal.HeatTransfer.Sources.FixedHeatFlow preHea(
Q_flow=QRooInt_flow) "Prescribed heat flow";
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";
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";
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";
Buildings.Fluid.Sources.Outside out(
redeclare package Medium = MediumA,
use_C_in=true,
nPorts=2);
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";
Buildings.Fluid.Sources.Boundary_pT sinWat(
nPorts=1,
redeclare package Medium = MediumW) "Sink for water circuit";
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";
BoundaryConditions.WeatherData.Bus weaBus;
Buildings.Controls.OBC.CDL.Reals.Sources.Constant mAir_flow(k=mA_flow_nominal)
"Fan air flow rate";
Buildings.Fluid.Sensors.TemperatureTwoPort senTemHXOut(
redeclare package Medium = MediumA,
m_flow_nominal=mA_flow_nominal)
"Temperature sensor for heat recovery outlet on supply side";
Buildings.Fluid.Sensors.TemperatureTwoPort senTemSupAir(
redeclare package Medium = MediumA,
m_flow_nominal=mA_flow_nominal)
"Temperature sensor for supply air";
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TRooSetPoi(k=TRooSet)
"Room temperature set point";
Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor senTemRoo
"Room temperature sensor";
Buildings.Controls.Continuous.LimPID conRoo(
k=0.1,
Ti=60,
yMax=mW_flow_nominal,
reverseActing=false)
"Room controller";
Buildings.Fluid.AirFilters.Empirical airFil(
redeclare package Medium = MediumA,
per=per) "Air filter";
Modelica.Blocks.Sources.Ramp C_inflow(
duration=87600/2,
height=5/1000000000/1.293,
offset=10/1000000000/1.293,
startTime=15552000 + 87600/2)
"Contaminant mass flow rate fraction";
Buildings.Fluid.Sensors.TraceSubstancesTwoPort C_out(
redeclare package Medium =MediumA,
m_flow_nominal=mA_flow_nominal,
substanceName="PM10")
"Trace substance sensor of outlet air";
Buildings.Controls.OBC.CDL.Logical.Sources.Constant repSig(k=false)
"Filter replacement signal";
Buildings.Controls.OBC.CDL.Reals.Subtract subDif
"Substance difference between inlet and outlet";
equation
connect(theCon.port_b, vol.heatPort);
connect(preHea.port, vol.heatPort);
connect(fan.port_b, vol.ports[1]);
connect(vol.ports[2], hex.port_a2);
connect(souWat.ports[1], cooCoi.port_a1);
connect(cooCoi.port_b1, sinWat.ports[1]);
connect(weaDat.weaBus, out.weaBus);
connect(weaDat.weaBus, weaBus);
connect(weaBus.TDryBul, TOut.T);
connect(fan.m_flow_in, mAir_flow.y);
connect(hex.port_b1, senTemHXOut.port_a);
connect(senTemHXOut.port_b, cooCoi.port_a2);
connect(cooCoi.port_b2, senTemSupAir.port_a);
connect(senTemSupAir.port_b, fan.port_a);
connect(TOut.port, theCon.port_a);
connect(vol.heatPort, senTemRoo.port);
connect(conRoo.y, souWat.m_flow_in);
connect(conRoo.u_s, TRooSetPoi.y);
connect(conRoo.u_m, senTemRoo.T);
connect(out.ports[1], airFil.port_a);
connect(out.ports[2], hex.port_b2);
connect(C_inflow.y, out.C_in[1]);
connect(airFil.port_b, C_out.port_a);
connect(C_out.port_b, hex.port_a1);
connect(repSig.y,airFil.uRep);
connect(C_inflow.y, subDif.u1);
connect(C_out.C, subDif.u2);
end SpaceCooling;