modelFlowMachine_m

Identical m_flow controlled pumps

Extends from Buildings.Applications.DataCenters.ChillerCooled.Equipment.BaseClasses.PartialPumpParallel (Partial model for pump parallel).

Information

This model implements a parallel of identical pumps with m_flow being controlled. The number can be specified by setting a value of num. The shutoff valves are used to avoid circulating flow among pumps.

Parameters

TypeNameDefaultDescription
Buildings.Fluid.Movers.Data.Generic[num]per (from PartialPumpParallel)
BooleanhomotopyInitialization (from PartialPumpParallel)true= true, use homotopy method
Integernum (from PartialPumpParallel)2The number of pumps
Realthreshold (from PartialPumpParallel)0.05Hysteresis threshold
Assumptions
BooleanallowFlowReversal (from PartialTwoPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal
Nominal condition
Modelica.Units.SI.MassFlowRatem_flow_nominal (from PartialTwoPortInterface)Nominal mass flow rate
Modelica.Units.SI.PressureDifferencedpValve_nominal (from ValveParameters)Nominal pressure drop of fully open valve, used if CvData=Buildings.Fluid.Types.CvTypes.OpPoint
Advanced
Modelica.Units.SI.MassFlowRatem_flow_small (from PartialTwoPortInterface)1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow
Modelica.Units.SI.PressuredpMax2*max(pum.per.pressure.dp) + 6E11Maximum pressure allowed to operate the model, if exceeded, the simulation stops with an error
Advanced › Diagnostics
Booleanshow_T (from PartialTwoPortInterface)false= true, if actual temperature at port is computed
Flow Coefficient
Buildings.Fluid.Types.CvTypesCvData (from ValveParameters)Buildings.Fluid.Types.CvTypes.OpPointSelection of flow coefficient
RealKv (from ValveParameters)Kv (metric) flow coefficient [m3/h/(bar)^(1/2)]
RealCv (from ValveParameters)Cv (US) flow coefficient [USG/min/(psi)^(1/2)]
Modelica.Units.SI.AreaAv (from ValveParameters)Av (metric) flow coefficient
Pressure-flow linearization
RealdeltaM (from ValveParameters)0.02Fraction of nominal flow rate where linearization starts, if y=1
Advanced › Nominal condition
Modelica.Units.SI.DensityrhoStd (from ValveParameters)Inlet density for which valve coefficients are defined
Pump
BooleanaddPowerToMedium (from PartialPumpParallel)falseSet to false to avoid any power (=heat and flow work) being added to medium (may give simpler equations)
Dynamics › Pump
Modelica.Units.SI.Timetau (from PartialPumpParallel)1Time constant at nominal flow (if energyDynamics <> SteadyState)
Booleanuse_riseTime (from PartialPumpParallel)trueSet to true to continuously change motor speed
Modelica.Units.SI.TimeriseTime (from PartialPumpParallel)30Time needed to change motor speed
Modelica.Blocks.Types.Initinit (from PartialPumpParallel)Modelica.Blocks.Types.Init.InitialOutputType of initialization (no init/steady state/initial state/initial output)
RealyPump_start (from PartialPumpParallel)fill(0, num)Initial value of pump signals
Dynamics › Valve
Booleanuse_strokeTime (from PartialPumpParallel)trueSet to true to continuously change valve position
Modelica.Units.SI.TimestrokeTime (from PartialPumpParallel)riseTimeTime needed to open or close valve
RealyValve_start (from PartialPumpParallel)fill(1, num)Initial value of valve signals
Two-way valve
Reall (from PartialPumpParallel)0.0001Valve leakage, l=Kv(y=0)/Kv(y=1)
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamics (from PartialPumpParallel)Modelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Initialization
Medium.AbsolutePressurep_start (from PartialPumpParallel)Medium.p_defaultStart value of pressure
Medium.TemperatureT_start (from PartialPumpParallel)Medium.T_defaultStart value of temperature
Medium.MassFraction[Medium.nX]X_start (from PartialPumpParallel)Medium.X_defaultStart value of mass fractions m_i/m
Medium.ExtraProperty[Medium.nC]C_start (from PartialPumpParallel)fill(0, Medium.nC)Start value of trace substances
Medium.ExtraProperty[Medium.nC]C_nominal (from PartialPumpParallel)fill(1E-2, Medium.nC)Nominal value of trace substances. (Set to typical order of magnitude.)
Flow resistance
Booleanfrom_dp (from PartialPumpParallel)false= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistance (from PartialPumpParallel)false= true, use linear relation between m_flow and dp for any flow rate

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.RealInput[num]u (from PartialPumpParallel)Continuous input signal for the flow machine
Modelica.Blocks.Interfaces.RealOutput[num]P (from PartialPumpParallel)Electrical power consumed by the pumps

Components

TypeNameDefaultDescription
Modelica.Units.SI.MassFlowRatem_flow (from PartialTwoPortInterface)port_a.m_flowMass flow rate from port_a to port_b (m_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp (from PartialTwoPortInterface)port_a.p - port_b.pPressure difference between port_a and port_b
Medium.ThermodynamicStatesta_a (from PartialTwoPortInterface)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 PartialTwoPortInterface)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
Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine[num]pum (from PartialPumpParallel)
Buildings.Fluid.Actuators.Valves.TwoWayLinear[num]val (from PartialPumpParallel)Isolation valves
Buildings.Controls.OBC.CDL.Reals.Hysteresis[num]hys (from PartialPumpParallel)Hysteresis for isolation valves
Buildings.Controls.OBC.CDL.Reals.Switch[num]swi (from PartialPumpParallel)Switch to enable pump only once the valve is commanded open
Modelica.Blocks.Math.Gain[num]gaiM_flowGain for mass flow rate

Revisions

  • November 16, 2022, by Michael Wetter:
    Improved sequence to avoid switching pump on when the valve is commanded off.
  • July 27, 2017, by Yangyang Fu:
    First implementation.