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 |
PressureIndependent
|
Test model for the pressure independent damper model |
Test model for the pressure independent damper model
Information
This model validates
Buildings.Fluid.Actuators.Dampers.PressureIndependent
by comparing it with
-
an exponential damper model which opening is the one computed by the
pressure independent model, see
damExp
,
-
an exponential damper model which opening is computed by a PI controller
tracking the same discharge mass flow rate, see
damExpPI
.
The simulation consists in exposing these three models to
-
a first increase in the pressure drop at the damper boundaries, from negative
to positive values, with a zero input control signal,
-
a consecutive increase of input control signal, from zero to one, with a
constant pressure drop at the damper boundaries,
-
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
Type | Name | Default | Description |
PressureDifference | dp_nominal | 10 | Damper nominal pressure drop [Pa] |
MassFlowRate | m_flow_nominal | 1 | Damper nominal mass flow rate [kg/s] |
Modelica definition
model PressureIndependent
extends Modelica.Icons.Example;
package Medium =
Buildings.Media.Air ;
parameter Modelica.Units.SI.PressureDifference dp_nominal(displayUnit="Pa")=
10 ;
parameter Modelica.Units.SI.MassFlowRate m_flow_nominal=1
;
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)
;
Modelica.Blocks.Sources.Ramp yRam(
duration=0.3,
offset=0,
startTime=0.3,
height=1) ;
Buildings.Fluid.Sources.Boundary_pT sou(
redeclare final package Medium = Medium,
use_p_in=true,
p(displayUnit="Pa") = 101335,
T=293.15,
nPorts=4) ;
Buildings.Fluid.Sources.Boundary_pT sin(
redeclare final package Medium = Medium,
nPorts=4) ;
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)
;
Exponential damExpPI(
redeclare final package Medium = Medium,
use_inputFilter=false,
final dpDamper_nominal=dp_nominal,
final m_flow_nominal=m_flow_nominal)
;
Controls.Continuous.LimPID conPID(
k=10,
Ti=0.001,
controllerType=Modelica.Blocks.Types.SimpleController.PID,
initType=Modelica.Blocks.Types.Init.InitialState)
;
Sensors.MassFlowRate senMasFlo(
redeclare final package Medium = Medium)
;
Modelica.Blocks.Sources.Ramp yRam1(
duration=0.3,
offset=Medium.p_default - 20,
startTime=0,
height=40) ;
Modelica.Blocks.Sources.Ramp yRam2(
duration=0.3,
offset=0,
startTime=0.7,
height=-40) ;
Modelica.Blocks.Math.Add add;
Sensors.RelativePressure senRelPre(
redeclare final package Medium = Medium)
;
Modelica.Blocks.Math.Gain gain(
final k=1/m_flow_nominal)
;
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;