modelFlowControlled_m_flow
Fan or pump with ideally controlled mass flow rate 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 mass flow rate.
Note that if the model operates with a head that is larger than dpMax, which by default is
two times larger than the largest head declared in eff.per.pressure.dp,
the simulation will stop with an error message.
This guards against unreasonably high pressure drops and electrical power use,
which can happen if the model is forcing mass flow rate through a closed actuator.
See the User's Guide for more information.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Buildings.Fluid.Movers.Data.Generic | per (from PartialFlowMachine) | ||
| Boolean | computePowerUsingSimilarityLaws (from PartialFlowMachine) | = true, compute power exactly, using similarity laws. Otherwise approximate. | |
| Boolean | addPowerToMedium (from PartialFlowMachine) | true | Set to false to avoid any power (=heat and flow work) being added to medium (may give simpler equations) |
| Boolean | nominalValuesDefineDefaultPressureCurve (from PartialFlowMachine) | false | Set to true to avoid warning if m_flow_nominal and dp_nominal are used to construct the default pressure curve |
| Modelica.Units.SI.MassFlowRate | constantMassFlowRate | m_flow_nominal | Constant pump mass flow rate, used when inputType=Constant |
| Modelica.Units.SI.MassFlowRate | massFlowRates | m_flow_nominal*{per.speeds[i]/per.speeds[end] for i in 1:size(per.speeds, 1)} | Vector of mass flow rate set points, used when inputType=Stage |
| Dynamics › Conservation equations | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics (from LumpedVolumeDeclarations) | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
| Modelica.Fluid.Types.Dynamics | substanceDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of independent mass fraction balance: dynamic (3 initialization options) or steady state |
| Modelica.Fluid.Types.Dynamics | traceDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of trace substance balance: dynamic (3 initialization options) or steady state |
| Modelica.Units.SI.Time | tau (from PartialFlowMachine) | 1 | Time constant of fluid volume for nominal flow, used if energy or mass balance is dynamic |
| Advanced › Dynamics | |||
| Modelica.Fluid.Types.Dynamics | massDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state, must be steady state if energyDynamics is steady state |
| Initialization | |||
| Medium.AbsolutePressure | p_start (from LumpedVolumeDeclarations) | Medium.p_default | Start value of pressure |
| Medium.Temperature | T_start (from LumpedVolumeDeclarations) | Medium.T_default | Start value of temperature |
| Medium.MassFraction[Medium.nX] | X_start (from LumpedVolumeDeclarations) | Medium.X_default | Start 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 | |||
| Real | mSenFac (from LumpedVolumeDeclarations) | 1 | Factor for scaling the sensible thermal mass of the volume |
| Assumptions | |||
| Boolean | allowFlowReversal (from PartialTwoPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Control | |||
| Buildings.Fluid.Types.InputType | inputType (from PartialFlowMachine) | Buildings.Fluid.Types.InputType.Continuous | Control input type |
| Real | constInput (from PartialFlowMachine) | 0 | Constant input set point |
| Real[:] | stageInputs (from PartialFlowMachine) | Vector of input set points corresponding to stages | |
| Dynamics › Motor speed | |||
| Boolean | use_riseTime (from PartialFlowMachine) | true | Set to true to continuously change motor speed |
| Modelica.Units.SI.Time | riseTime (from PartialFlowMachine) | 30 | Time needed to change motor speed between zero and full speed |
| Modelica.Blocks.Types.Init | init (from PartialFlowMachine) | Modelica.Blocks.Types.Init.InitialOutput | Type of initialization (no init/steady state/initial state/initial output) |
| Modelica.Units.SI.MassFlowRate | m_flow_start | 0 | Initial value of mass flow rate |
| Advanced | |||
| Modelica.Units.SI.MassFlowRate | m_flow_small (from PartialFlowMachine) | 1E-4*abs(_m_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Modelica.Units.SI.Pressure | dpMax | 2*max(eff.per.pressure.dp) | Maximum pressure allowed to operate the model, if exceeded, the simulation stops with an error |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialFlowMachine) | false | = true, if actual temperature at port is computed |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m_flow_nominal | Nominal mass flow rate | |
| Modelica.Units.SI.PressureDifference | dp_nominal | if rho_default < 500 then 500 else 10000 | Nominal pressure raise, used for default pressure curve if not specified in record per |
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.IntegerInput | stage (from PartialFlowMachine) | Stage input signal for the pressure head | |
| Modelica.Blocks.Interfaces.RealOutput | y_actual (from PartialFlowMachine) | Actual normalised fan or pump speed that is used for computations | |
| Modelica.Blocks.Interfaces.RealOutput | P (from PartialFlowMachine) | Electrical power consumed | |
| Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a | heatPort (from PartialFlowMachine) | Heat dissipation to environment | |
| Modelica.Blocks.Interfaces.RealInput | m_flow_in | Prescribed mass flow rate | |
| Modelica.Blocks.Interfaces.RealOutput | m_flow_actual | Actual mass flow rate |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Units.SI.VolumeFlowRate | VMachine_flow (from PartialFlowMachine) | eff.V_flow | Volume flow rate |
| Modelica.Units.SI.PressureDifference | dpMachine (from PartialFlowMachine) | -preSou.dp | Pressure difference |
| Real | eta (from PartialFlowMachine) | eff.eta | Global efficiency |
| Real | etaHyd (from PartialFlowMachine) | eff.etaHyd | Hydraulic efficiency |
| Real | etaMot (from PartialFlowMachine) | eff.etaMot | Motor efficiency |
| Modelica.Units.SI.MassFlowRate | m_flow (from PartialFlowMachine) | port_a.m_flow | Mass flow rate from port_a to port_b (m_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp (from PartialFlowMachine) | port_a.p - port_b.p | Pressure difference between port_a and port_b |
| Medium.ThermodynamicState | sta_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.ThermodynamicState | sta_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 form_flow_nominal.
This is for #1705. -
April 27, 2022, by Hongxiang Fu:
Replacednot use_powerCharacteristicwith the enumerations Buildings.Fluid.Movers.BaseClasses.Types.HydraulicEfficiencyMethod and Buildings.Fluid.Movers.BaseClasses.Types.MotorEfficiencyMethod.
This is for #2668. -
November 15, 2022, by Michael Wetter:
Added assertion if model operates with a pressure higher thandpMax.
This is for #1659. -
March 7, 2022, by Michael Wetter:
Setfinal massDynamics=energyDynamics.
This is for #1542. -
June 17, 2021, by Michael Wetter:
Changed implementation of the filter.
Removed parametery_startwhich is not used becausem_flow_startis used.
This is for #1498. -
February 21, 2020, by Michael Wetter:
Changed icon to display its operating stage.
This is for #1294. -
March 24, 2017, by Michael Wetter:
RenamedfilteredSpeedtouse_inputFilter.
This is for #665. -
November 10, 2016, by Michael Wetter:
Changed default values formassFlowRates.
This is for #583. -
March 2, 2016, by Filip Jorissen:
Refactored model such that it directly extendsPartialFlowMachine. This is for #417. -
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. - March 24, 2010, by Michael Wetter:
Revised implementation to allow zero flow rate. - October 1, 2009
by Michael Wetter:
Model added to the Buildings library.