Name | Description |
---|---|
Exponential | Air damper with exponential opening characteristics |
OAMixingBoxMinimumDamper | Outside air mixing box with parallel damper for minimum outside air flow rate |
VAVBoxExponential | VAV box with a fixed resistance plus a damper model withe exponential characteristics |
For yL < y < yU, the damper characteristics is
k = 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 k(y)
is
differentiable in y
and the derivative is continuous.
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 |
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium in the component | |
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 |
Boolean | use_v_nominal | true | Set to true to use face velocity to compute area |
Velocity | v_nominal | 1 | Nominal face velocity [m/s] |
Area | A | Face area [m2] | |
Boolean | roundDuct | false | Set to true for round duct, false for square cross section |
Real | ReC | 4000 | Reynolds number where transition to turbulent starts |
Nominal condition | |||
MassFlowRate | m_flow_nominal | Nominal mass flow rate [kg/s] | |
Pressure | dp_nominal | (m_flow_nominal/kDam_nominal... | Pressure [Pa] |
Initialization | |||
Real | kDamSqu.start | 1 | Flow coefficient for damper, kDam=k^2=m_flow^2/|dp| [kg.m] |
Assumptions | |||
Boolean | allowFlowReversal | system.allowFlowReversal | = true to allow flow reversal, false restricts to design direction (port_a -> port_b) |
Advanced | |||
AbsolutePressure | dp_start | 0.01*system.p_start | Guess value of dp = port_a.p - port_b.p [Pa] |
MassFlowRate | m_flow_start | system.m_flow_start | Guess value of m_flow = port_a.m_flow [kg/s] |
MassFlowRate | m_flow_small | 1E-4*m_flow_nominal | Small mass flow rate for regularization of zero flow [kg/s] |
Boolean | from_dp | true | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearized | 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 |
Diagnostics | |||
Boolean | show_T | true | = true, if temperatures at port_a and port_b are computed |
Boolean | show_V_flow | true | = true, if volume flow rate at inflowing port is computed |
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 | 1E6 | Flow coefficient for y=0, k0 = pressure drop divided by dynamic pressure |
Real | k1 | 0.45 | Flow coefficient for y=1, k1 = pressure drop divided by dynamic pressure |
Type | Name | Description |
---|---|---|
FluidPort_a | port_a | Fluid connector a (positive design flow direction is from port_a to port_b) |
FluidPort_b | port_b | Fluid connector b (positive design flow direction is from port_a to port_b) |
input RealInput | y | Damper position (0: closed, 1: open) |
model Exponential "Air damper with exponential opening characteristics" extends Buildings.Fluids.Actuators.BaseClasses.PartialDamperExponential(dp_nominal=(m_flow_nominal/kDam_nominal)^2, dp(nominal=10)); protected parameter Real kDam_nominal(fixed=false) "Flow coefficient for damper, k=m_flow/sqrt(dp), with unit=(kg*m)^(1/2)"; parameter Real kTheta_nominal(min=0, fixed=false) "Flow coefficient, kTheta = pressure drop divided by dynamic pressure"; initial algorithm kTheta_nominal :=Buildings.Fluids.Actuators.BaseClasses.exponentialDamper( y=1, a=a, b=b, cL=cL, cU=cU, yL=yL, yU=yU) "y=0 is closed"; assert(kTheta_nominal>=0, "Flow coefficient must not be negative"); kDam_nominal :=sqrt(2*rho_nominal/kTheta_nominal)*A "flow coefficient for resistance base model, kDam=k=m_flow/sqrt(dp)"; equation k = sqrt(kDamSqu) "flow coefficient for resistance base model"; end Exponential;
Model of an outside air mixing box with air dampers and a flow path for the minimum outside air flow rate.
Extends from Buildings.BaseClasses.BaseIcon (Base icon).
Type | Name | Default | Description |
---|---|---|---|
Area | AOutMin | Face area minimum outside air damper [m2] | |
Area | AOut | Face area outside air damper [m2] | |
Area | AExh | Face area exhaust air damper [m2] | |
Area | ARec | Face area recirculation air damper [m2] | |
Nominal condition | |||
MassFlowRate | m0OutMin_flow | Mass flow rate minimum outside air damper [kg/s] | |
Pressure | dpOutMin_nominal | Pressure drop minimum outside air leg (without damper) [Pa] | |
MassFlowRate | m0Out_flow | Mass flow rate outside air damper [kg/s] | |
Pressure | dpOut_nominal | Pressure drop outside air leg (without damper) [Pa] | |
MassFlowRate | m0Rec_flow | Mass flow rate recirculation air damper [kg/s] | |
Pressure | dpRec_nominal | Pressure drop recirculation air leg (without damper) [Pa] | |
MassFlowRate | m0Exh_flow | Mass flow rate exhaust air damper [kg/s] | |
Pressure | dpExh_nominal | Pressure drop exhaust air leg (without damper) [Pa] | |
Assumptions | |||
Boolean | allowFlowReversal | system.allowFlowReversal | = true to allow flow reversal, false restricts to design direction (port_a -> port_b) |
Type | Name | Description |
---|---|---|
FluidPort_a | port_Out | Fluid connector a (positive design flow direction is from port_a to port_b) |
FluidPort_a | port_OutMin | Fluid connector a (positive design flow direction is from port_a to port_b) |
FluidPort_b | port_Exh | Fluid connector b (positive design flow direction is from port_a to port_b) |
FluidPort_a | port_Ret | Fluid connector a (positive design flow direction is from port_a to port_b) |
FluidPort_b | port_Sup | Fluid connector b (positive design flow direction is from port_a to port_b) |
input RealInput | y | Damper position (0: closed, 1: open) |
input RealInput | yOutMin | Damper position minimum outside air (0: closed, 1: open) |
model OAMixingBoxMinimumDamper "Outside air mixing box with parallel damper for minimum outside air flow rate" extends Buildings.BaseClasses.BaseIcon; outer Modelica_Fluid.System system "System wide properties"; replaceable package Medium = Modelica.Media.Interfaces.PartialMedium "Medium in the component"; import Modelica.Constants; parameter Boolean allowFlowReversal = system.allowFlowReversal "= true to allow flow reversal, false restricts to design direction (port_a -> port_b)"; Buildings.Fluids.Actuators.Dampers.Exponential damOAMin( A=AOutMin, redeclare package Medium = Medium, m_flow_nominal=m0OutMin_flow) "Damper for minimum outside air supply"; Buildings.Fluids.Actuators.Dampers.Exponential damOA( A=AOut, redeclare package Medium = Medium, m_flow_nominal=m0Out_flow); parameter Modelica.SIunits.Area AOutMin "Face area minimum outside air damper"; parameter Modelica.SIunits.Area AOut "Face area outside air damper"; Buildings.Fluids.Actuators.Dampers.Exponential damExh( A=AExh, redeclare package Medium = Medium, m_flow_nominal=m0Exh_flow) "Exhaust air damper"; parameter Modelica.SIunits.Area AExh "Face area exhaust air damper"; Buildings.Fluids.Actuators.Dampers.Exponential damRec( A=ARec, redeclare package Medium = Medium, m_flow_nominal=m0Rec_flow) "Recirculation air damper"; parameter Modelica.SIunits.Area ARec "Face area recirculation air damper"; parameter Modelica.SIunits.MassFlowRate m0OutMin_flow "Mass flow rate minimum outside air damper"; parameter Modelica.SIunits.Pressure dpOutMin_nominal "Pressure drop minimum outside air leg (without damper)"; parameter Modelica.SIunits.MassFlowRate m0Out_flow "Mass flow rate outside air damper"; parameter Modelica.SIunits.Pressure dpOut_nominal "Pressure drop outside air leg (without damper)"; parameter Modelica.SIunits.MassFlowRate m0Rec_flow "Mass flow rate recirculation air damper"; parameter Modelica.SIunits.Pressure dpRec_nominal "Pressure drop recirculation air leg (without damper)"; parameter Modelica.SIunits.MassFlowRate m0Exh_flow "Mass flow rate exhaust air damper"; parameter Modelica.SIunits.Pressure dpExh_nominal "Pressure drop exhaust air leg (without damper)"; Buildings.Fluids.FixedResistances.FixedResistanceDpM preDroOutMin( m_flow_nominal= m0OutMin_flow, dp_nominal=dpOutMin_nominal, redeclare package Medium = Medium) "Pressure drop for minimum outside air branch"; Buildings.Fluids.FixedResistances.FixedResistanceDpM preDroOut( m_flow_nominal= m0Out_flow, dp_nominal=dpOut_nominal, redeclare package Medium = Medium) "Pressure drop for outside air branch"; Buildings.Fluids.FixedResistances.FixedResistanceDpM preDroExh( m_flow_nominal= m0Exh_flow, dp_nominal=dpExh_nominal, redeclare package Medium = Medium) "Pressure drop for exhaust air branch"; Buildings.Fluids.FixedResistances.FixedResistanceDpM preDroRec( m_flow_nominal= m0Rec_flow, dp_nominal=dpRec_nominal, redeclare package Medium = Medium) "Pressure drop for recirculation air branch"; Modelica_Fluid.Interfaces.FluidPort_a port_Out(redeclare package Medium = Medium, m_flow(start=0, min=if allowFlowReversal then -Constants.inf else 0)) "Fluid connector a (positive design flow direction is from port_a to port_b)"; Modelica_Fluid.Interfaces.FluidPort_a port_OutMin(redeclare package Medium = Medium, m_flow(start=0, min=if allowFlowReversal then -Constants.inf else 0)) "Fluid connector a (positive design flow direction is from port_a to port_b)"; Modelica_Fluid.Interfaces.FluidPort_b port_Exh(redeclare package Medium = Medium, m_flow(start=0, max=if allowFlowReversal then +Constants.inf else 0)) "Fluid connector b (positive design flow direction is from port_a to port_b)"; Modelica_Fluid.Interfaces.FluidPort_a port_Ret(redeclare package Medium = Medium, m_flow(start=0, min=if allowFlowReversal then -Constants.inf else 0)) "Fluid connector a (positive design flow direction is from port_a to port_b)"; Modelica_Fluid.Interfaces.FluidPort_b port_Sup(redeclare package Medium = Medium, m_flow(start=0, max=if allowFlowReversal then +Constants.inf else 0)) "Fluid connector b (positive design flow direction is from port_a to port_b)"; Modelica.Blocks.Interfaces.RealInput y "Damper position (0: closed, 1: open)"; Modelica.Blocks.Interfaces.RealInput yOutMin "Damper position minimum outside air (0: closed, 1: open)"; Modelica.Blocks.Sources.Constant uni(k=1) "Unity signal"; Modelica.Blocks.Math.Add add(k2=-1); protected Modelica_Fluid.Interfaces.FluidPort_b port_Ret1(redeclare package Medium = Medium); protected Modelica_Fluid.Interfaces.FluidPort_b port_b1(redeclare package Medium = Medium); equation connect(preDroOutMin.port_b, damOAMin.port_a); connect(preDroOut.port_b, damOA.port_a); connect(yOutMin, damOAMin.y); connect(y, damOA.y); connect(y, damExh.y); connect(damExh.port_b, preDroExh.port_a); connect(preDroExh.port_b, port_Exh); connect(preDroOut.port_a, port_Out); connect(port_OutMin, preDroOutMin.port_a); connect(uni.y, add.u1); connect(y, add.u2); connect(add.y, damRec.y); connect(port_Ret, port_Ret1); connect(preDroRec.port_a, port_Ret1); connect(damExh.port_a, port_Ret1); connect(damOAMin.port_b, port_b1); connect(port_Sup, port_b1); connect(damRec.port_b, port_b1); connect(damOA.port_b, port_b1); connect(preDroRec.port_b, damRec.port_a); end OAMixingBoxMinimumDamper;
Type | Name | Default | Description |
---|---|---|---|
replaceable package Medium | PartialMedium | Medium in the component | |
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 |
Boolean | use_v_nominal | true | Set to true to use face velocity to compute area |
Velocity | v_nominal | 1 | Nominal face velocity [m/s] |
Area | A | Face area [m2] | |
Boolean | roundDuct | false | Set to true for round duct, false for square cross section |
Real | ReC | 4000 | Reynolds number where transition to turbulent starts |
Nominal condition | |||
MassFlowRate | m_flow_nominal | Nominal mass flow rate [kg/s] | |
Pressure | dp_nominal | Pressure [Pa] | |
Initialization | |||
Real | kDamSqu.start | 1 | Flow coefficient for damper, kDam=k^2=m_flow^2/|dp| [kg.m] |
Assumptions | |||
Boolean | allowFlowReversal | system.allowFlowReversal | = true to allow flow reversal, false restricts to design direction (port_a -> port_b) |
Advanced | |||
AbsolutePressure | dp_start | dp_nominal | Guess value of dp = port_a.p - port_b.p [Pa] |
MassFlowRate | m_flow_start | system.m_flow_start | Guess value of m_flow = port_a.m_flow [kg/s] |
MassFlowRate | m_flow_small | 1E-4*m_flow_nominal | Small mass flow rate for regularization of zero flow [kg/s] |
Boolean | from_dp | true | = true, use m_flow = f(dp) else dp = f(m_flow) |
Boolean | linearized | 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 |
Diagnostics | |||
Boolean | show_T | true | = true, if temperatures at port_a and port_b are computed |
Boolean | show_V_flow | true | = true, if volume flow rate at inflowing port is computed |
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 | 1E6 | Flow coefficient for y=0, k0 = pressure drop divided by dynamic pressure |
Real | k1 | 0.45 | Flow coefficient for y=1, k1 = pressure drop divided by dynamic pressure |
Type | Name | Description |
---|---|---|
FluidPort_a | port_a | Fluid connector a (positive design flow direction is from port_a to port_b) |
FluidPort_b | port_b | Fluid connector b (positive design flow direction is from port_a to port_b) |
input RealInput | y | Damper position (0: closed, 1: open) |
model VAVBoxExponential "VAV box with a fixed resistance plus a damper model withe exponential characteristics" extends Buildings.Fluids.Actuators.BaseClasses.PartialDamperExponential(dp_start=dp_nominal); import SI = Modelica.SIunits; parameter SI.MassFlowRate m_flow_nominal "Mass flow rate"; parameter SI.Pressure dp_nominal(min=0) "Pressure drop, including fully open damper"; protected parameter SI.Pressure dpDamOpe0 = k1*m_flow_nominal^2/2/Medium.density(sta0)/A^2 "Pressure drop of fully open damper at nominal flow rate"; parameter Real kResSqu(unit="kg.m") = m_flow_nominal^2 / (dp_nominal-dpDamOpe0) "Resistance coefficient for fixed resistance element"; equation // "flow coefficient for resistance base model"; k = sqrt(1/(1/kResSqu + 1/kDamSqu)) "flow coefficient for resistance base model"; end VAVBoxExponential;