modelSingle

Single pump

Extends from Buildings.Templates.Components.Interfaces.PartialPumpSingle (Interface class for single pump).

Information

This is a model for a single pump with an optional check valve (depending on the value of the parameter have_valChe).

By default, a variable speed pump is modeled. A constant speed pump can be modeled by setting the parameter have_var to false.

Control points

The following input and output points are available.

  • Pump Start/Stop command (VFD Run or motor starter contact) y1: DO signal
  • Pump speed command (VFD Speed) y for variable speed pumps only: AO signal
  • Pump status (through VFD interface, VFD status contact, or current switch) y1_actual: DI signal

Model parameters

The design parameters and the pump characteristics are specified with an instance of Buildings.Templates.Components.Data.PumpSingle. The documentation of this record class provides further details on how to properly parameterize the model.

Parameters

TypeNameDefaultDescription
BooleanaddPowerToMedium (from PartialPump)falseSet to false to avoid any power (=heat and flow work) being added to medium (may give simpler equations)
Buildings.Templates.Components.Data.PumpSingledat (from PartialPumpSingle)Design and operating parameters
Configuration
Buildings.Templates.Components.Types.Pumptyp (from PartialPump)Equipment type
Booleanhave_var (from PartialPump)trueSet to true for variable speed pump, false for constant speed pump
Booleanhave_varCom (from PartialPump)trueSet to true for single common speed signal, false for dedicated signals
Booleanhave_valChe (from PartialPump)trueSet to true to include a check valve in pump line
Dynamics › Nominal condition
Modelica.Units.SI.Timetau (from PartialPump)1Time constant of fluid volume for nominal flow, used if energy or mass balance is dynamic
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamics (from PartialPump)Modelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Assumptions
BooleanallowFlowReversal (from PartialPump)true= false to simplify equations, assuming, but not enforcing, no flow reversal
Graphics
Integertext_rotation (from PartialPump)0Text rotation angle in icon layer
Booleantext_flip (from PartialPump)falseTrue to flip text horizontally in icon layer
Nominal condition
Modelica.Units.SI.MassFlowRatem_flow_nominal (from PartialTwoPortInterface)Nominal mass flow rate
Modelica.Units.SI.PressureDifferencedp_nominal (from PartialPumpSingle)dat.dp_nominalPump head at design conditions
Modelica.Units.SI.PressureDifferencedpValChe_nominal (from PartialPumpSingle)Buildings.Templates.Data.Defaults.dpValCheCheck valve pressure drop at design conditions
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

Connectors

TypeNameDefaultDescription
Buildings.Templates.Components.Interfaces.Busbus (from PartialPump)Control bus
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)

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.Templates.Components.BaseClasses.MoverSpeedControlled_ypumPump
Buildings.Controls.OBC.CDL.Conversions.BooleanToRealsigStaStart/stop signal
Buildings.Controls.OBC.CDL.Reals.MultiplysigConResulting control signal
Fluid.FixedResistances.CheckValvevalCheCheck valve
Routing.PassThroughFluidpasFluid pass through if no check valve
Buildings.Controls.OBC.CDL.Reals.Sources.ConstantspeCstConstant signal in case of constant speed pump
Modelica.Blocks.Routing.RealPassThroughpasSpeDirect pass through for variable speed signal
Controls.StatusEmulatorstaEmulate pump status

Revisions

  • July 17, 2026, by Antoine Gautier:
    Refactored to use a compiler-friendly mover model. This is for #4653.
  • November 18, 2022, by Antoine Gautier:
    First implementation.