modelPartialDamperExponential
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 blades | single blades | |
|---|---|---|
| yL | 15/90 | 15/90 |
| yU | 55/90 | 65/90 |
| k1 | 0.2 to 0.5 | 0.2 to 0.5 |
| a | -1.51 | -1.51 |
| b | 0.105*90 | 0.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
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | homotopyInitialization (from PartialResistance) | true | = true, use homotopy method |
| Modelica.Units.SI.MassFlowRate | m_flow_turbulent (from PartialResistance) | Turbulent flow if |m_flow| >= m_flow_turbulent | |
| Boolean | use_deltaM | true | Set to true to use deltaM for turbulent transition, else ReC is used |
| Real | deltaM | 0.3 | Fraction of nominal mass flow rate where transition to turbulent occurs |
| Modelica.Units.SI.Velocity | v_nominal | (2/rho_default/k1*dpDamper_nominal)^0.5 | Nominal face velocity |
| Modelica.Units.SI.Area | A | m_flow_nominal/rho_default/v_nominal | Face area |
| Boolean | roundDuct | false | Set to true for round duct, false for square cross section |
| Real | ReC | 4000 | Reynolds number where transition to turbulence starts |
| Real | kFixed | if dpFixed_nominal > Modelica.Constants.eps then m_flow_nominal/sqrt(dpFixed_nominal) else Modelica.Constants.inf | Flow coefficient of fixed resistance that may be in series with damper, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2). |
| Assumptions | |||
| Boolean | allowFlowReversal (from PartialTwoPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m_flow_nominal (from PartialTwoPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.PressureDifference | dp_nominal (from PartialResistance) | Pressure drop at nominal mass flow rate | |
| Modelica.Units.SI.PressureDifference | dpDamper_nominal | Pressure drop of fully open damper at nominal mass flow rate | |
| Modelica.Units.SI.PressureDifference | dpFixed_nominal | 0 | Pressure drop of duct and resistances other than the damper in series, at nominal mass flow rate |
| Advanced | |||
| Modelica.Units.SI.MassFlowRate | m_flow_small (from PartialTwoPortInterface) | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Boolean | from_dp (from PartialResistance) | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Real | n (from PartialResistance) | 2 | Flow exponent, n=1 for laminar, n=2 for turbulent |
| Boolean | linearized (from PartialResistance) | false | = true, use linear relation between m_flow and dp for any flow rate |
| Boolean | use_constant_density | true | Set to true to use constant density for flow friction |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialTwoPortInterface) | false | = true, if actual temperature at port is computed |
| Dynamics › Actuator position | |||
| Boolean | use_strokeTime (from ActuatorSignal) | true | Set to true to continuously open and close valve using strokeTime |
| Modelica.Units.SI.Time | strokeTime (from ActuatorSignal) | 120 | Time needed to fully open or close actuator |
| Modelica.Blocks.Types.Init | init (from ActuatorSignal) | Modelica.Blocks.Types.Init.InitialOutput | Type of initialization (no init/steady state/initial state/initial output) |
| Real | y_start (from ActuatorSignal) | 1 | Initial position of actuator |
| Damper coefficients | |||
| Real | a | -1.51 | Coefficient a for damper characteristics |
| Real | b | 0.105*90 | Coefficient b for damper characteristics |
| Real | yL | 15/90 | Lower value for damper curve |
| Real | yU | 55/90 | Upper value for damper curve |
| Real | k0 | 2*rho_default*(A/kDamMin)^2 | Loss coefficient for y=0 (pressure drop divided by dynamic pressure) |
| Real | k1 | 0.45 | Loss coefficient for y=1 (pressure drop divided by dynamic pressure) |
| Real | l | 0.0001 | Damper leakage, ratio of flow coefficients k(y=0)/k(y=1) |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Fluid.Interfaces.FluidPort_a | port_a (from PartialTwoPort) | Fluid connector a (positive design flow direction is from port_a to port_b) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b (from PartialTwoPort) | Fluid connector b (positive design flow direction is from port_a to port_b) | |
| Modelica.Blocks.Interfaces.RealInput | y (from ActuatorSignal) | Actuator position (0: closed, 1: open) | |
| Modelica.Blocks.Interfaces.RealOutput | y_actual (from ActuatorSignal) | Actual actuator position |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Units.SI.MassFlowRate | m_flow (from PartialTwoPortInterface) | port_a.m_flow | Mass flow rate from port_a to port_b (m_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp (from PartialTwoPortInterface) | port_a.p - port_b.p | Pressure difference between port_a and port_b |
| Medium.ThermodynamicState | sta_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.ThermodynamicState | sta_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.Density | rho | Medium density | |
| Real | kDam | Flow coefficient of damper, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2) | |
| Real | k | Flow 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 involvingm_flowanddpthat now need to be added in each derived damper model.
Added the declaration ofdpDamper_nominalanddpFixed_nominal.
Replacedk0by leakage coefficient.
Modified the limiting values fork0andk1.
This is for #1188. -
March 22, 2017, by Michael Wetter:
Added backv_nominal, but set the assignment ofAto be final. This allows scaling the model withm_flow_nominal, which is generally known in the flow leg, andv_nominal, for which a default value can be specified.
This is for #544. -
October 12, 2016 by David Blum:
Removed parameterv_nominaland variablearea, to simplify parameterization of the model. Also added assertion statements upon initialization for parametersk0andk1so that they fall within suggested ranges found in ASHRAE 825-RP. This is for #544. -
January 27, 2015 by Michael Wetter:
SetEvaluate=trueforuse_constant_density. This is a structural parameter. Adding this annotation leads to fewer numerical Jacobians forBuildings.Examples.VAVReheat.ClosedLoopwithBuildings.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 classesBuildings.Fluid.BaseClasses.PartialResistance,Buildings.Fluid.Actuators.BaseClasses.PartialTwoWayValve,Buildings.Fluid.Actuators.BaseClasses.PartialDamperExponential,Buildings.Fluid.Actuators.BaseClasses.PartialActuatorand modelBuildings.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.