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)
yfor 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
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | addPowerToMedium (from PartialPump) | false | Set to false to avoid any power (=heat and flow work) being added to medium (may give simpler equations) |
| Buildings.Templates.Components.Data.PumpSingle | dat (from PartialPumpSingle) | Design and operating parameters | |
| Configuration | |||
| Buildings.Templates.Components.Types.Pump | typ (from PartialPump) | Equipment type | |
| Boolean | have_var (from PartialPump) | true | Set to true for variable speed pump, false for constant speed pump |
| Boolean | have_varCom (from PartialPump) | true | Set to true for single common speed signal, false for dedicated signals |
| Boolean | have_valChe (from PartialPump) | true | Set to true to include a check valve in pump line |
| Dynamics › Nominal condition | |||
| Modelica.Units.SI.Time | tau (from PartialPump) | 1 | Time constant of fluid volume for nominal flow, used if energy or mass balance is dynamic |
| Dynamics › Conservation equations | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics (from PartialPump) | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
| Assumptions | |||
| Boolean | allowFlowReversal (from PartialPump) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Graphics | |||
| Integer | text_rotation (from PartialPump) | 0 | Text rotation angle in icon layer |
| Boolean | text_flip (from PartialPump) | false | True to flip text horizontally in icon layer |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m_flow_nominal (from PartialTwoPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.PressureDifference | dp_nominal (from PartialPumpSingle) | dat.dp_nominal | Pump head at design conditions |
| Modelica.Units.SI.PressureDifference | dpValChe_nominal (from PartialPumpSingle) | Buildings.Templates.Data.Defaults.dpValChe | Check valve pressure drop at design conditions |
| Advanced | |||
| Modelica.Units.SI.MassFlowRate | m_flow_small (from PartialTwoPortInterface) | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialTwoPortInterface) | false | = true, if actual temperature at port is computed |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Buildings.Templates.Components.Interfaces.Bus | bus (from PartialPump) | Control bus | |
| 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) |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Units.SI.MassFlowRate | m_flow (from PartialTwoPortInterface) | 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 PartialTwoPortInterface) | port_a.p - port_b.p | Pressure difference between port_a and port_b |
| Medium.ThermodynamicState | sta_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.ThermodynamicState | sta_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_y | pum | Pump | |
| Buildings.Controls.OBC.CDL.Conversions.BooleanToReal | sigSta | Start/stop signal | |
| Buildings.Controls.OBC.CDL.Reals.Multiply | sigCon | Resulting control signal | |
| Fluid.FixedResistances.CheckValve | valChe | Check valve | |
| Routing.PassThroughFluid | pas | Fluid pass through if no check valve | |
| Buildings.Controls.OBC.CDL.Reals.Sources.Constant | speCst | Constant signal in case of constant speed pump | |
| Modelica.Blocks.Routing.RealPassThrough | pasSpe | Direct pass through for variable speed signal | |
| Controls.StatusEmulator | sta | Emulate 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.