modelExponential
Extends from IBPSA.Fluid.Actuators.BaseClasses.PartialDamperExponential (Partial model for air dampers with exponential opening characteristics).
Information
This model is an air damper with flow coefficient that is an exponential function
of the opening angle. The model is as in ASHRAE 825-RP.
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)).
Outside this range, the damper characteristic 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 kd(y) 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. The flow coefficient k(y)
is used to compute the mass flow rate versus pressure
drop relation as
m = sign(Δp) k(y) √ Δp
with regularization near the origin.
ASHRAE 825-RP lists the following parameter values as typical:
| opposed blades | single blades | |
|---|---|---|
| yL | 15/90 | 15/90 |
| yU | 55/90 | 65/90 |
| k0 | 1E6 | 1E6 |
| k1 | 0.2 to 0.5 | 0.2 to 0.5 |
| a | -1.51 | -1.51 |
| b | 0.105*90 | 0.0842*90 |
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 |
|---|---|---|---|
| Modelica.SIunits.MassFlowRate | m_flow_turbulent (from PartialResistance) | Turbulent flow if |m_flow| >= m_flow_turbulent | |
| Boolean | use_deltaM (from PartialDamperExponential) | true | Set to true to use deltaM for turbulent transition, else ReC is used |
| Real | deltaM (from PartialDamperExponential) | 0.3 | Fraction of nominal mass flow rate where transition to turbulent occurs |
| Modelica.SIunits.Velocity | v_nominal (from PartialDamperExponential) | 1 | Nominal face velocity |
| Modelica.SIunits.Area | A (from PartialDamperExponential) | m_flow_nominal/rho_default/v_nominal | Face area |
| Boolean | roundDuct (from PartialDamperExponential) | false | Set to true for round duct, false for square cross section |
| Real | ReC (from PartialDamperExponential) | 4000 | Reynolds number where transition to turbulent starts |
| Real | kFixed (from PartialDamperExponential) | 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.SIunits.MassFlowRate | m_flow_nominal (from PartialTwoPortInterface) | Nominal mass flow rate | |
| Modelica.SIunits.PressureDifference | dp_nominal (from PartialResistance) | Pressure drop at nominal mass flow rate | |
| Advanced | |||
| Modelica.SIunits.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) |
| Boolean | homotopyInitialization (from PartialResistance) | true | = true, use homotopy method |
| Boolean | linearized (from PartialResistance) | false | = true, use linear relation between m_flow and dp for any flow rate |
| Boolean | use_constant_density (from PartialDamperExponential) | 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 › Filtered opening | |||
| Boolean | use_inputFilter (from ActuatorSignal) | true | = true, if opening is filtered with a 2nd order CriticalDamping filter |
| Modelica.SIunits.Time | riseTime (from ActuatorSignal) | 120 | Rise time of the filter (time to reach 99.6 % of an opening step) |
| Integer | order (from ActuatorSignal) | 2 | Order of filter |
| 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 value of output |
| Damper coefficients | |||
| Real | a (from PartialDamperExponential) | -1.51 | Coefficient a for damper characteristics |
| Real | b (from PartialDamperExponential) | 0.105*90 | Coefficient b for damper characteristics |
| Real | yL (from PartialDamperExponential) | 15/90 | Lower value for damper curve |
| Real | yU (from PartialDamperExponential) | 55/90 | Upper value for damper curve |
| Real | k0 (from PartialDamperExponential) | 1E6 | Flow coefficient for y=0, k0 = pressure drop divided by dynamic pressure |
| Real | k1 (from PartialDamperExponential) | 0.45 | Flow coefficient for y=1, k1 = pressure drop divided by dynamic pressure |
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 valve position |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.SIunits.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.SIunits.PressureDifference | dp (from PartialTwoPortInterface) | port_a.p - port_b.p | Pressure difference between port_a and port_b |
| Medium.ThermodynamicState | sta_a (from PartialTwoPortInterface) | Medium.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow))) | Medium properties in port_a |
| Medium.ThermodynamicState | sta_b (from PartialTwoPortInterface) | Medium.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow))) | Medium properties in port_b |
| Medium.Density | rho (from PartialDamperExponential) | Medium density | |
| Real | kDam (from PartialDamperExponential) | Flow coefficient of damper, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2) | |
| Real | k (from PartialDamperExponential) | Flow coefficient of damper plus fixed resistance, k=m_flow/sqrt(dp), with unit=(kg.m)^(1/2) |
Revisions
-
March 22, 2017, by Michael Wetter:
Updated documentation. -
April 14, 2014 by Michael Wetter:
Improved documentation. -
September 26, 2013 by Michael Wetter:
Moved assignment ofkDam_defaultandkThetaSqRt_defaultfrominitial algorithmto 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 IBPSA.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.