modelExponential

Air damper with exponential opening characteristics

Extends from Buildings.Fluid.Actuators.BaseClasses.PartialDamperExponential (Partial model for air dampers with exponential opening characteristics).

Information

Model of two flow resistances in series:

  • one resistance has a fixed flow coefficient;
  • the other resistance represents a damper whose flow coefficient is an exponential function of the opening angle.

The lumped flow coefficient k(y) (function of the fractional opening y) is used to compute the mass flow rate versus pressure drop relation as:

ṁ = sign(Δp) k(y) √ Δp  

with regularization near the origin.

For a description of the damper opening characteristics and typical parameter values, see the partial model Buildings.Fluid.Actuators.BaseClasses.PartialDamperExponential.

Parameters

TypeNameDefaultDescription
BooleanhomotopyInitialization (from PartialResistance)true= true, use homotopy method
Modelica.Units.SI.MassFlowRatem_flow_turbulent (from PartialResistance)Turbulent flow if |m_flow| >= m_flow_turbulent
Booleanuse_deltaM (from PartialDamperExponential)trueSet to true to use deltaM for turbulent transition, else ReC is used
RealdeltaM (from PartialDamperExponential)0.3Fraction of nominal mass flow rate where transition to turbulent occurs
Modelica.Units.SI.Velocityv_nominal (from PartialDamperExponential)(2/rho_default/k1*dpDamper_nominal)^0.5Nominal face velocity
Modelica.Units.SI.AreaA (from PartialDamperExponential)m_flow_nominal/rho_default/v_nominalFace area
BooleanroundDuct (from PartialDamperExponential)falseSet to true for round duct, false for square cross section
RealReC (from PartialDamperExponential)4000Reynolds number where transition to turbulence starts
RealkFixed (from PartialDamperExponential)if dpFixed_nominal > Modelica.Constants.eps then m_flow_nominal/sqrt(dpFixed_nominal) else Modelica.Constants.infFlow coefficient of fixed resistance that may be in series with damper, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2).
Assumptions
BooleanallowFlowReversal (from PartialTwoPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal
Nominal condition
Modelica.Units.SI.MassFlowRatem_flow_nominal (from PartialTwoPortInterface)Nominal mass flow rate
Modelica.Units.SI.PressureDifferencedp_nominal (from PartialResistance)Pressure drop at nominal mass flow rate
Modelica.Units.SI.PressureDifferencedpDamper_nominal (from PartialDamperExponential)Pressure drop of fully open damper at nominal mass flow rate
Modelica.Units.SI.PressureDifferencedpFixed_nominal (from PartialDamperExponential)0Pressure drop of duct and resistances other than the damper in series, at nominal mass flow rate
Advanced
Modelica.Units.SI.MassFlowRatem_flow_small (from PartialTwoPortInterface)1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow
Booleanfrom_dp (from PartialResistance)false= true, use m_flow = f(dp) else dp = f(m_flow)
Realn (from PartialResistance)2Flow exponent, n=1 for laminar, n=2 for turbulent
Booleanlinearized (from PartialResistance)false= true, use linear relation between m_flow and dp for any flow rate
Booleanuse_constant_density (from PartialDamperExponential)trueSet to true to use constant density for flow friction
Advanced › Diagnostics
Booleanshow_T (from PartialTwoPortInterface)false= true, if actual temperature at port is computed
Dynamics › Actuator position
Booleanuse_strokeTime (from ActuatorSignal)trueSet to true to continuously open and close valve using strokeTime
Modelica.Units.SI.TimestrokeTime (from ActuatorSignal)120Time needed to fully open or close actuator
Modelica.Blocks.Types.Initinit (from ActuatorSignal)Modelica.Blocks.Types.Init.InitialOutputType of initialization (no init/steady state/initial state/initial output)
Realy_start (from ActuatorSignal)1Initial position of actuator
Damper coefficients
Reala (from PartialDamperExponential)-1.51Coefficient a for damper characteristics
Realb (from PartialDamperExponential)0.105*90Coefficient b for damper characteristics
RealyL (from PartialDamperExponential)15/90Lower value for damper curve
RealyU (from PartialDamperExponential)55/90Upper value for damper curve
Realk0 (from PartialDamperExponential)2*rho_default*(A/kDamMin)^2Loss coefficient for y=0 (pressure drop divided by dynamic pressure)
Realk1 (from PartialDamperExponential)0.45Loss coefficient for y=1 (pressure drop divided by dynamic pressure)
Reall (from PartialDamperExponential)0.0001Damper leakage, ratio of flow coefficients k(y=0)/k(y=1)

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a (from PartialTwoPort)Fluid connector a (positive design flow direction is from port_a to port_b)
Modelica.Fluid.Interfaces.FluidPort_bport_b (from PartialTwoPort)Fluid connector b (positive design flow direction is from port_a to port_b)
Modelica.Blocks.Interfaces.RealInputy (from ActuatorSignal)Actuator position (0: closed, 1: open)
Modelica.Blocks.Interfaces.RealOutputy_actual (from ActuatorSignal)Actual actuator position

Components

TypeNameDefaultDescription
Modelica.Units.SI.MassFlowRatem_flow (from PartialTwoPortInterface)port_a.m_flowMass flow rate from port_a to port_b (m_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp (from PartialTwoPortInterface)port_a.p - port_b.pPressure difference between port_a and port_b
Medium.ThermodynamicStatesta_a (from PartialTwoPortInterface)if allowFlowReversal then Medium.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow))) else Medium.setState_phX(port_a.p, noEvent(inStream(port_a.h_outflow)), noEvent(inStream(port_a.Xi_outflow)))Medium properties in port_a
Medium.ThermodynamicStatesta_b (from PartialTwoPortInterface)if allowFlowReversal then Medium.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow))) else Medium.setState_phX(port_b.p, noEvent(port_b.h_outflow), noEvent(port_b.Xi_outflow))Medium properties in port_b
Medium.Densityrho (from PartialDamperExponential)Medium density
RealkDam (from PartialDamperExponential)Flow coefficient of damper, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2)
Realk (from PartialDamperExponential)Flow coefficient of damper plus fixed resistance, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2)

Revisions

  • June 10, 2021, by Michael Wetter:
    Changed implementation of the filter and changed the parameter order to a constant as most users need not change this value.
    This is for #1498.
  • April 12, 2021, by Michael Wetter:
    Guarded against division by zero if the pressure equation is removed. This then leads to a more meaningful error message.
    This is for IBPSA, #1243.
  • December 23, 2019, by Antoine Gautier:
    Added the pressure drop calculation as it is no longer in the base class.
    This is for IBPSA, #1188.
  • March 22, 2017, by Michael Wetter:
    Updated documentation.
  • April 14, 2014 by Michael Wetter:
    Improved documentation.
  • September 26, 2013 by Michael Wetter:
    Moved assignment of kDam_default and kThetaSqRt_default from initial algorithm to the variable declaration, to avoid a division by zero in OpenModelica.
  • December 14, 2012 by Michael Wetter:
    Renamed protected parameters for consistency with the naming conventions.
  • June 22, 2008 by Michael Wetter:
    Extended range of control signal from 0 to 1 by implementing the function Buildings.Fluid.Actuators.BaseClasses.exponentialDamper.
  • June 10, 2008 by Michael Wetter:
    Introduced new partial base class, PartialDamperExponential.
  • June 30, 2007 by Michael Wetter:
    Introduced new partial base class, PartialActuator.
  • July 27, 2007 by Michael Wetter:
    Introduced partial base class.
  • July 20, 2007 by Michael Wetter:
    First implementation.