modelPartialMultiplePumps

Base class for modeling multiple identical pumps in parallel

Extends from Buildings.Fluid.Interfaces.LumpedVolumeDeclarations (Declarations for lumped volumes), Buildings.Fluid.Interfaces.PartialTwoPortInterface (Partial model with two ports and declaration of quantities that are used by many models).

Information

This base class represents multiple identical pumps that are piped in parallel. An optional check valve in series with each pump is included. This class is used to construct the various multiple-pump models within Buildings.DHC.Plants.Combined.Subsystems.

Details

In a parallel arrangement, all operating units have the same operating point. This allows modeling the multiple pumps with a single instance of any class derived from Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine. Hydronics are resolved with mass flow rate multiplier components.

Parameters

TypeNameDefaultDescription
IntegernPumNumber of pumps
Booleanhave_vartrueSet to true for variable speed pumps, false for constant speed
Booleanhave_valvetrueSet to true for inline check valve
Fluid.Movers.Data.Genericper
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
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
Nominal condition
Modelica.Units.SI.MassFlowRatem_flow_nominal (from PartialTwoPortInterface)Nominal mass flow rate
Modelica.Units.SI.MassFlowRatemPum_flow_nominalDesign mass flow rate (each pump)
Modelica.Units.SI.PressureDifferencedpPum_nominalDesign head (each pump)
Modelica.Units.SI.PressureDifferencedpValve_nominal10000Pressure drop of check valve fully open
Advanced
Modelica.Units.SI.MassFlowRatem_flow_small (from PartialTwoPortInterface)1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow
Advanced › Diagnostics
Booleanshow_T (from PartialTwoPortInterface)false= true, if actual temperature at port is computed
Dynamics › Nominal condition
Modelica.Units.SI.Timetau1Time constant of fluid volume for nominal flow, used if energy or mass balance is dynamic
Dynamics › Motor speed
Booleanuse_riseTimetrueSet to true to continuously change motor speed
Modelica.Units.SI.TimeriseTime30Time needed to change motor speed between zero and full speed
Modelica.Blocks.Types.InitinitModelica.Blocks.Types.Init.InitialOutputType of initialization (no init/steady state/initial state/initial output)

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)
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nPum]y1Start signal (VFD Run or motor starter contact)
Buildings.Controls.OBC.CDL.Interfaces.RealOutputPTotal power (all pumps)
Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput[nPum]y1_actualPump status

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
Fluid.BaseClasses.MassFlowRateMultipliermulOutFlow rate multiplier
Fluid.BaseClasses.MassFlowRateMultipliermulInlFlow rate multiplier
Fluid.Movers.SpeedControlled_ypum
Buildings.Templates.Components.Controls.MultipleCommandscomConvert command signal
Buildings.Controls.OBC.CDL.Conversions.BooleanToRealbooToReaConvert to real
Buildings.Controls.OBC.CDL.Reals.MultiplymulCompute total power
Buildings.Controls.OBC.CDL.Reals.MultiplyinpCompute pump input signal
Buildings.Controls.OBC.CDL.Reals.Sources.ConstantcstConstant setpoint
Buildings.Controls.OBC.CDL.Reals.GreaterThresholdisOpeEvaluate if pump is operating
Fluid.FixedResistances.CheckValvecheValCheck valve (optional)
Buildings.DHC.Plants.Combined.Subsystems.BaseClasses.PassThroughFluidpasDirect fluid pass-through (case without check valve)
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicatorrepReplicate
Buildings.Controls.OBC.CDL.Logical.Pre[nPum]preY1Left limit of signal avoiding direct feedback of status to controller

Revisions

  • February 24, 2023, by Antoine Gautier:
    First implementation.