modelFlowControlled_dp

Fan or pump with ideally controlled head dp as input signal

Extends from Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine (Partial model to interface fan or pump models with the medium).

Information

This model describes a fan or pump with prescribed head. The input connector provides the pressure rise from the inlet to the outlet.

Main equations

See the User's Guide.

Typical use and important parameters

If use_riseTime=true, then the parameter dp_nominal is used to normalize the filter. This is used to improve the numerics of the transient response. The actual pressure raise of the mover at steady-state is independent of the value of dp_nominal. It is recommended to set dp_nominal to approximately the pressure raise that the mover has during full speed.

Options

Parameter prescribeSystemPressure can be used to control the mover such that the pressure difference set point is obtained across two points in the system, instead of across the fan. This allows an efficient implementation of static pressure reset controllers. A measurement of the pressure difference between the two points in system then needs to be connected to RealInput dpMea. This functionality is demonstrated in Buildings.Fluid.Movers.Validation.FlowControlled_dpSystem.

Parameters

TypeNameDefaultDescription
Buildings.Fluid.Movers.Data.Genericper (from PartialFlowMachine)
BooleancomputePowerUsingSimilarityLaws (from PartialFlowMachine)= true, compute power exactly, using similarity laws. Otherwise approximate.
BooleanaddPowerToMedium (from PartialFlowMachine)trueSet to false to avoid any power (=heat and flow work) being added to medium (may give simpler equations)
BooleannominalValuesDefineDefaultPressureCurve (from PartialFlowMachine)falseSet to true to avoid warning if m_flow_nominal and dp_nominal are used to construct the default pressure curve
Modelica.Units.SI.PressureDifferenceconstantHeaddp_nominalConstant pump head, used when inputType=Constant
Modelica.Units.SI.PressureDifferenceheadsdp_nominal*{(per.speeds[i]/per.speeds[end])^2 for i in 1:size(per.speeds, 1)}Vector of head set points, used when inputType=Stages
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamics (from LumpedVolumeDeclarations)Modelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Modelica.Fluid.Types.DynamicssubstanceDynamics (from LumpedVolumeDeclarations)energyDynamicsType of independent mass fraction balance: dynamic (3 initialization options) or steady state
Modelica.Fluid.Types.DynamicstraceDynamics (from LumpedVolumeDeclarations)energyDynamicsType of trace substance balance: dynamic (3 initialization options) or steady state
Modelica.Units.SI.Timetau (from PartialFlowMachine)1Time constant of fluid volume for nominal flow, used if energy or mass balance is dynamic
Advanced › Dynamics
Modelica.Fluid.Types.DynamicsmassDynamics (from LumpedVolumeDeclarations)energyDynamicsType of mass balance: dynamic (3 initialization options) or steady state, must be steady state if energyDynamics is steady state
Initialization
Medium.AbsolutePressurep_start (from LumpedVolumeDeclarations)Medium.p_defaultStart value of pressure
Medium.TemperatureT_start (from LumpedVolumeDeclarations)Medium.T_defaultStart value of temperature
Medium.MassFraction[Medium.nX]X_start (from LumpedVolumeDeclarations)Medium.X_defaultStart value of mass fractions m_i/m
Medium.ExtraProperty[Medium.nC]C_start (from LumpedVolumeDeclarations)fill(0, Medium.nC)Start value of trace substances
Medium.ExtraProperty[Medium.nC]C_nominal (from LumpedVolumeDeclarations)fill(1E-2, Medium.nC)Nominal value of trace substances. (Set to typical order of magnitude.)
Dynamics
RealmSenFac (from LumpedVolumeDeclarations)1Factor for scaling the sensible thermal mass of the volume
Assumptions
BooleanallowFlowReversal (from PartialTwoPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal
Control
Buildings.Fluid.Types.InputTypeinputType (from PartialFlowMachine)Buildings.Fluid.Types.InputType.ContinuousControl input type
RealconstInput (from PartialFlowMachine)0Constant input set point
Real[:]stageInputs (from PartialFlowMachine)Vector of input set points corresponding to stages
Dynamics › Motor speed
Booleanuse_riseTime (from PartialFlowMachine)trueSet to true to continuously change motor speed
Modelica.Units.SI.TimeriseTime (from PartialFlowMachine)30Time needed to change motor speed between zero and full speed
Modelica.Blocks.Types.Initinit (from PartialFlowMachine)Modelica.Blocks.Types.Init.InitialOutputType of initialization (no init/steady state/initial state/initial output)
Modelica.Units.SI.PressureDifferencedp_start0Initial value of pressure raise
Advanced
Modelica.Units.SI.MassFlowRatem_flow_small (from PartialFlowMachine)1E-4*abs(_m_flow_nominal)Small mass flow rate for regularization of zero flow
BooleanprescribeSystemPressurefalse=true, to control mover such that pressure difference is obtained across two remote points in system
Advanced › Diagnostics
Booleanshow_T (from PartialFlowMachine)false= true, if actual temperature at port is computed
Nominal condition
Modelica.Units.SI.MassFlowRatem_flow_nominalNominal mass flow rate
Modelica.Units.SI.PressureDifferencedp_nominalif rho_default < 500 then 500 else 10000Nominal pressure raise, used to normalized the filter if use_riseTime=true, to set default values of constantHead and heads, and and for default pressure curve if not specified in record per

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a (from PartialTwoPort)Fluid connector a (positive design flow direction is from port_a to port_b)
Modelica.Fluid.Interfaces.FluidPort_bport_b (from PartialTwoPort)Fluid connector b (positive design flow direction is from port_a to port_b)
Modelica.Blocks.Interfaces.IntegerInputstage (from PartialFlowMachine)Stage input signal for the pressure head
Modelica.Blocks.Interfaces.RealOutputy_actual (from PartialFlowMachine)Actual normalised fan or pump speed that is used for computations
Modelica.Blocks.Interfaces.RealOutputP (from PartialFlowMachine)Electrical power consumed
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_aheatPort (from PartialFlowMachine)Heat dissipation to environment
Modelica.Blocks.Interfaces.RealInputdpMeagain.uMeasurement of pressure difference between two points where the set point should be obtained
Modelica.Blocks.Interfaces.RealInputdp_inPrescribed pressure rise
Modelica.Blocks.Interfaces.RealOutputdp_actualPressure difference between the mover inlet and outlet

Components

TypeNameDefaultDescription
Modelica.Units.SI.VolumeFlowRateVMachine_flow (from PartialFlowMachine)eff.V_flowVolume flow rate
Modelica.Units.SI.PressureDifferencedpMachine (from PartialFlowMachine)-preSou.dpPressure difference
Realeta (from PartialFlowMachine)eff.etaGlobal efficiency
RealetaHyd (from PartialFlowMachine)eff.etaHydHydraulic efficiency
RealetaMot (from PartialFlowMachine)eff.etaMotMotor efficiency
Modelica.Units.SI.MassFlowRatem_flow (from PartialFlowMachine)port_a.m_flowMass flow rate from port_a to port_b (m_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp (from PartialFlowMachine)port_a.p - port_b.pPressure difference between port_a and port_b
Medium.ThermodynamicStatesta_a (from PartialFlowMachine)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.ThermodynamicStatesta_b (from PartialFlowMachine)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

Revisions

  • August 26, 2024, by Michael Wetter:
    Implemented linear dynamics for change in motor speed.
    This is for Buildings, #3965 and for IBPSA, #1926.
  • March 1, 2023, by Hongxiang Fu:
    Refactored the model with a new declaration for m_flow_nominal.
    This is for #1705.
  • April 27, 2022, by Hongxiang Fu:
    Replaced not use_powerCharacteristic with the enumerations Buildings.Fluid.Movers.BaseClasses.Types.HydraulicEfficiencyMethod and Buildings.Fluid.Movers.BaseClasses.Types.MotorEfficiencyMethod.
    This is for #2668.
  • March 7, 2022, by Michael Wetter:
    Set final massDynamics=energyDynamics.
    This is for #1542.
  • June 17, 2021, by Michael Wetter:
    Changed implementation of the filter.
    Removed parameter y_start which is not used because dp_start is used.
    This is for #1498.
  • February 21, 2020, by Michael Wetter:
    Changed icon to display its operating stage.
    This is for #1294.
  • May 5, 2017, by Filip Jorissen:
    Added parameters, documentation and functionality for prescribeSystemPressure.
    This is for #770.
  • March 24, 2017, by Michael Wetter:
    Renamed filteredSpeed to use_inputFilter.
    This is for #665.
  • December 2, 2016, by Michael Wetter:
    Removed min attribute as otherwise numerical noise can cause the assertion on the limit to fail.
    This is for #606.
  • November 14, 2016, by Michael Wetter:
    Changed default values for heads.
    This is for #583.
  • March 2, 2016, by Filip Jorissen:
    Refactored model such that it directly extends PartialFlowMachine. This is for #417.
  • January 22, 2016, by Michael Wetter:
    Corrected type declaration of pressure difference. This is for #404.
  • November 5, 2015, by Michael Wetter:
    Removed the parameters use_powerCharacteristics and power from the performance data record per because Buildings.Fluid.Movers.FlowControlled_dp and Buildings.Fluid.Movers.FlowControlled_m_flow fix the flow rate or head, which can give a flow work that is higher than the power consumption specified in this record. Hence, users should use the efficiency data for this model. The record has been moved to Buildings.Fluid.Movers.Data.SpeedControlled_y as it makes sense to use it for the movers Buildings.Obsolete.Fluid.Movers.FlowControlled_Nrpm and Buildings.Fluid.Movers.FlowControlled_y.
    This is for issue 457.
  • April 2, 2015, by Filip Jorissen:
    Added code for supporting stage input and constant input.
  • January 6, 2015, by Michael Wetter:
    Revised model for OpenModelica.
  • February 14, 2012, by Michael Wetter:
    Added filter for start-up and shut-down transient.
  • May 25, 2011, by Michael Wetter:
    Revised implementation of energy balance to avoid having to use conditionally removed models.
  • July 27, 2010, by Michael Wetter:
    Redesigned model to fix bug in medium balance.
  • July 5, 2010, by Michael Wetter:
    Changed assert(dp_in >= 0, ...) to assert(dp_in >= -0.1, ...). The former implementation triggered the assert if dp_in was solved for in a nonlinear equation since the solution can be slightly negative while still being within the solver tolerance.
  • March 24, 2010, by Michael Wetter:
    Revised implementation to allow zero flow rate.
  • October 1, 2009, by Michael Wetter:
    Added model to the Buildings library.