modelPartialDamperExponential

Partial model for air dampers with exponential opening characteristics

Extends from Buildings.Fluid.BaseClasses.PartialResistance (Partial model for a hydraulic resistance), Buildings.Fluid.Actuators.BaseClasses.ActuatorSignal (Partial model that implements the filtered opening for valves and dampers).

Information

Partial model for air dampers with exponential opening characteristics. This is the base model for air dampers. The model implements the functions that relate the opening signal and the flow coefficient. The model also defines parameters that are used by different air damper models.

The model is as in ASHRAE 825-RP except that a control signal of y=0 means the damper is closed, and y=1 means the damper is open. This is opposite of the implementation of ASHRAE 825-RP, but used here for consistency within this library.

For yL < y < yU, the damper characteristics is:

kd(y) = exp(a+b (1-y))

where kd is the loss coefficient (total pressure drop divided by dynamic pressure) and y is the fractional opening.

Outside this range, the damper characteristics is defined by a quadratic polynomial that matches the damper resistance at y=0 and y=yL or y=yU and y=1, respectively. In addition, the polynomials are such that kd(y) is differentiable in y and the derivative is continuous.

The damper characteristics is then used to compute the flow coefficient k(y) as:

k(y) = (2 ρ ⁄ kd(y))1/2 A

where A is the face area, which is computed using the nominal mass flow rate m_flow_nominal, the nominal velocity v_nominal and the density of the medium.

ASHRAE 825-RP lists the following parameter values as typical (note that the default values in the model correspond to opposed blades).

opposed bladessingle blades
yL15/9015/90
yU55/9065/90
k10.2 to 0.50.2 to 0.5
a-1.51-1.51
b0.105*900.0842*90

(The loss coefficient in fully closed position k0 is computed based on the leakage coefficient and the coefficient in fully open position.)

References

P. Haves, L. K. Norford, M. DeSimone and L. Mei, A Standard Simulation Testbed for the Evaluation of Control Algorithms & Strategies, ASHRAE Final Report 825-RP, Atlanta, GA.

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_deltaMtrueSet to true to use deltaM for turbulent transition, else ReC is used
RealdeltaM0.3Fraction of nominal mass flow rate where transition to turbulent occurs
Modelica.Units.SI.Velocityv_nominal(2/rho_default/k1*dpDamper_nominal)^0.5Nominal face velocity
Modelica.Units.SI.AreaAm_flow_nominal/rho_default/v_nominalFace area
BooleanroundDuctfalseSet to true for round duct, false for square cross section
RealReC4000Reynolds number where transition to turbulence starts
RealkFixedif 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_nominalPressure drop of fully open damper at nominal mass flow rate
Modelica.Units.SI.PressureDifferencedpFixed_nominal0Pressure 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_densitytrueSet 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-1.51Coefficient a for damper characteristics
Realb0.105*90Coefficient b for damper characteristics
RealyL15/90Lower value for damper curve
RealyU55/90Upper value for damper curve
Realk02*rho_default*(A/kDamMin)^2Loss coefficient for y=0 (pressure drop divided by dynamic pressure)
Realk10.45Loss coefficient for y=1 (pressure drop divided by dynamic pressure)
Reall0.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.DensityrhoMedium density
RealkDamFlow coefficient of damper, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2)
RealkFlow coefficient of damper plus fixed resistance, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2)

Revisions

  • September 21, 2021, by Michael Wetter:
    Corrected typo in comments.
    This is for #1525.
  • December 23, 2019, by Antoine Gautier:
    Removed the equations involving m_flow and dp that now need to be added in each derived damper model.
    Added the declaration of dpDamper_nominal and dpFixed_nominal.
    Replaced k0 by leakage coefficient.
    Modified the limiting values for k0 and k1.
    This is for #1188.
  • March 22, 2017, by Michael Wetter:
    Added back v_nominal, but set the assignment of A to be final. This allows scaling the model with m_flow_nominal, which is generally known in the flow leg, and v_nominal, for which a default value can be specified.
    This is for #544.
  • October 12, 2016 by David Blum:
    Removed parameter v_nominal and variable area, to simplify parameterization of the model. Also added assertion statements upon initialization for parameters k0 and k1 so that they fall within suggested ranges found in ASHRAE 825-RP. This is for #544.
  • January 27, 2015 by Michael Wetter:
    Set Evaluate=true for use_constant_density. This is a structural parameter. Adding this annotation leads to fewer numerical Jacobians for Buildings.Examples.VAVReheat.ClosedLoop with Buildings.Media.PerfectGases.MoistAirUnsaturated.
  • 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.
  • August 5, 2011, by Michael Wetter:
    Moved linearized pressure drop equation from the function body to the equation section. With the previous implementation, the symbolic processor may not rearrange the equations, which can lead to coupled equations instead of an explicit solution.
  • June 22, 2008 by Michael Wetter:
    Extended range of control signal from 0 to 1 by implementing the function exponentialDamper.
  • June 10, 2008 by Michael Wetter:
    First implementation.