Buildings.Fluid.AirFilters

Package with models of air filters

Information

This package contains component models for air filters.

Extends from Modelica.Icons.Package (Icon for standard packages).

Package Content

Name Description
Buildings.Fluid.AirFilters.Empirical Empirical Empirical air filter model
Buildings.Fluid.AirFilters.Data Data Performance data for air filters
Buildings.Fluid.AirFilters.Examples Examples Package with example models
Buildings.Fluid.AirFilters.Validation Validation Collection of models that illustrate model use and test models
Buildings.Fluid.AirFilters.BaseClasses BaseClasses Package with base classes for Buildings.Fluid.AirFilters

Buildings.Fluid.AirFilters.Empirical Buildings.Fluid.AirFilters.Empirical

Empirical air filter model

Buildings.Fluid.AirFilters.Empirical

Information

Component that empirically models the performance of air filters, focusing on key factors such as contamination and pressure drop, without requiring geometric data.

The model uses as parameters performance characteristics that describe how the filter works under various conditions. The performance of the air filter is characterized by a performance dataset per (see Buildings.Fluid.AirFilters.Data.Generic), which contains key parameters that define the filter:

The input boolean flag, uRep, indicates that the filter has been replaced and thus reset the mass accumulation to the initial status, i.e., when uRep changes from false to true, the mass of the captured contaminants is reset to per.mCon_start.

Note:

Warnings will be written when,

References

Extends from Buildings.Fluid.Interfaces.PartialTwoPort (Partial component with two ports).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium in the component
Genericper Performance dataset
Assumptions
BooleanallowFlowReversaltrue= false to simplify equations, assuming, but not enforcing, no flow reversal

Connectors

TypeNameDescription
FluidPort_aport_aFluid connector a (positive design flow direction is from port_a to port_b)
FluidPort_bport_bFluid connector b (positive design flow direction is from port_a to port_b)
input BooleanInputuRepTrue: replace the filter and reset the accumulation
output BooleanOutputyRepTrue if the filter is full and should be replaced
output RealOutputratRelative mass of the contaminant captured by the filter, which is the total captured contaminant mass divided by the filter's maximum contaminant capacity [1]
output RealOutputeps[nConSub]Filtration efficiency [1]

Modelica definition

model Empirical "Empirical air filter model" extends Buildings.Fluid.Interfaces.PartialTwoPort; parameter Buildings.Fluid.AirFilters.Data.Generic per "Performance dataset"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uRep "True: replace the filter and reset the accumulation"; Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yRep "True if the filter is full and should be replaced"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput rat( final unit="1", final min=0) "Relative mass of the contaminant captured by the filter, which is the total captured contaminant mass divided by the filter's maximum contaminant capacity"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput eps[nConSub]( each final unit="1", each final min=0, each final max=1) "Filtration efficiency"; Buildings.Fluid.AirFilters.BaseClasses.MassAccumulation masAcc( final mCon_max=per.mCon_max, final mCon_start=per.mCon_start, final nConSub=nConSub) "Contaminant accumulation"; protected 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=per.m_flow_nominal, final show_T=false, final forceErrorControlOnFlow=false, final useDefaultProperties=true, final dp_turbulent=0.3*per.dp_nominal, final m=per.m, final dp_nominal=per.dp_nominal) "Pressure resistance"; Buildings.Fluid.AirFilters.BaseClasses.MassTransfer masTra( redeclare package Medium = Medium, final namCon=per.namCon) "Contaminant removal"; Buildings.Fluid.AirFilters.BaseClasses.FiltrationEfficiency filEff( final mCon_max=per.mCon_max, final namCon=per.namCon, final filEffPar=per.filEffPar) "Filtration efficiency"; Buildings.Fluid.AirFilters.BaseClasses.FlowCoefficientCorrection floCor( final b=per.b) "Flow coefficient correction"; equation connect(masAcc.mCon,filEff. mCon); connect(masAcc.uRep,uRep); connect(filEff.rat,floCor. rat); connect(floCor.y, res.dpCor); connect(masTra.mCon_flow, masAcc.mCon_flow); connect(filEff.y, eps); connect(masTra.eps,filEff. y); connect(masAcc.yRep, yRep); connect(port_a, masTra.port_a); connect(masTra.port_b, res.port_a); connect(res.port_b, port_b); connect(filEff.rat, rat); end Empirical;