Buildings.Fluid.Actuators.Dampers.Validation

Collection of validation models

Information

This package contains validation models for the classes in Buildings.Fluid.Actuators.Dampers.

Note that most validation models contain simple input data which may not be realistic, but for which the correct output can be obtained through an analytic solution. The examples plot various outputs, which have been verified against these solutions. These model outputs are stored as reference data and used for continuous validation whenever models in the library change.

Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).

Package Content

Name Description
Buildings.Fluid.Actuators.Dampers.Validation.PressureIndependent PressureIndependent Test model for the pressure independent damper model

Buildings.Fluid.Actuators.Dampers.Validation.PressureIndependent Buildings.Fluid.Actuators.Dampers.Validation.PressureIndependent

Test model for the pressure independent damper model

Buildings.Fluid.Actuators.Dampers.Validation.PressureIndependent

Information

This model validates Buildings.Fluid.Actuators.Dampers.PressureIndependent by comparing it with

The simulation consists in exposing these three models to

  1. a first increase in the pressure drop at the damper boundaries, from negative to positive values, with a zero input control signal,
  2. a consecutive increase of input control signal, from zero to one, with a constant pressure drop at the damper boundaries,
  3. an eventual decrease in the pressure drop, from positive to negative values, with an input control signal equal to one.

One can notice a small variation of the computed damper opening in the last transient around flow reversal. This is because the expression of the flow coefficient as a function of the mass flow rate and pressure drop is ill-defined near zero flow rate and the damper opening value results from the regularization process.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Parameters

TypeNameDefaultDescription
PressureDifferencedp_nominal10Damper nominal pressure drop [Pa]
MassFlowRatem_flow_nominal1Damper nominal mass flow rate [kg/s]

Modelica definition

model PressureIndependent "Test model for the pressure independent damper model" extends Modelica.Icons.Example; package Medium = Buildings.Media.Air "Medium model for air"; parameter Modelica.Units.SI.PressureDifference dp_nominal(displayUnit="Pa")= 10 "Damper nominal pressure drop"; parameter Modelica.Units.SI.MassFlowRate m_flow_nominal=1 "Damper nominal mass flow rate"; Buildings.Fluid.Actuators.Dampers.Exponential damExp( redeclare final package Medium = Medium, use_inputFilter=false, final dpDamper_nominal=dp_nominal, final m_flow_nominal=m_flow_nominal) "Damper with exponential opening characteristics"; Modelica.Blocks.Sources.Ramp yRam( duration=0.3, offset=0, startTime=0.3, height=1) "Ramp up damper control signal"; Buildings.Fluid.Sources.Boundary_pT sou( redeclare final package Medium = Medium, use_p_in=true, p(displayUnit="Pa") = 101335, T=293.15, nPorts=4) "Pressure boundary condition"; Buildings.Fluid.Sources.Boundary_pT sin( redeclare final package Medium = Medium, nPorts=4) "Pressure boundary condition"; Buildings.Fluid.Actuators.Dampers.PressureIndependent damPreInd( redeclare final package Medium = Medium, final m_flow_nominal=m_flow_nominal, final dpDamper_nominal=dp_nominal, use_inputFilter=false) "Pressure independent damper"; Exponential damExpPI( redeclare final package Medium = Medium, use_inputFilter=false, final dpDamper_nominal=dp_nominal, final m_flow_nominal=m_flow_nominal) "Damper with exponential opening characteristics"; Controls.Continuous.LimPID conPID( k=10, Ti=0.001, controllerType=Modelica.Blocks.Types.SimpleController.PID, initType=Modelica.Blocks.Types.Init.InitialState) "Discharge flow rate controller"; Sensors.MassFlowRate senMasFlo( redeclare final package Medium = Medium) "Discharge flow rate sensor"; Modelica.Blocks.Sources.Ramp yRam1( duration=0.3, offset=Medium.p_default - 20, startTime=0, height=40) "Ram up supply pressure"; Modelica.Blocks.Sources.Ramp yRam2( duration=0.3, offset=0, startTime=0.7, height=-40) "Ramp down supply pressure"; Modelica.Blocks.Math.Add add; Sensors.RelativePressure senRelPre( redeclare final package Medium = Medium) "Pressure drop sensor"; Modelica.Blocks.Math.Gain gain(final k=1/m_flow_nominal) "Normalize discharge flow rate"; equation connect(damExp.port_a, sou.ports[1]); connect(damExp.port_b, sin.ports[1]); connect(sou.ports[2], damPreInd.port_a); connect(damPreInd.port_b, sin.ports[2]); connect(yRam.y, damPreInd.y); connect(damPreInd.y_actual, damExp.y); connect(damExpPI.port_b, senMasFlo.port_a); connect(senMasFlo.port_b, sin.ports[3]); connect(sou.ports[3], damExpPI.port_a); connect(conPID.y, damExpPI.y); connect(yRam.y, conPID.u_s); connect(yRam1.y, add.u1); connect(yRam2.y, add.u2); connect(add.y, sou.p_in); connect(sou.ports[4], senRelPre.port_a); connect(senRelPre.port_b, sin.ports[4]); connect(senMasFlo.m_flow, gain.u); connect(gain.y, conPID.u_m); end PressureIndependent;