The comp_pump submodule

Pump component models and Q-H curve handling.

This module implements hydraulic pump components that act as energy sources in the network solver. Pump behavior is primarily defined through Q-H curve data and operating speed scaling.

Main features:

  • generic pump base class with shared pump metadata,

  • curve-driven head evaluation over flow,

  • speed-dependent behavior through rated vs operating speed,

  • support for catalogue-driven centrifugal pump definitions.

Design conventions:

  • pumps add energy (sign = +1),

  • mounting direction is port 1 -> port 2,

  • flow direction is provided through sense,

  • sense = +1 follows mounting direction,

  • sense = -1 represents reverse-flow use (no useful pump head),

  • pump curves are interpreted as positive-head source data.

Implementation notes:

  • curve interpolation is used to evaluate head at intermediate flow values,

  • flow/head units are normalized with the shared unit registry,

  • curve sampling helpers are available for plotting and working-point tools.

Typical usage:

pump = Comp_PumpCentrifugal(
    dataQH=[0, 20, 10, 18, 20, 12],
    speed0=2900,
    speed=2600,
)
H = pump.calcH(8 * u.m**3 / u.h, sense=1)

These pump classes are typically instantiated via the core factory helpers, which provide consistent naming and defaults across a full hydraulic model.

class fluidsolve.comp_pump.Comp_Pump(**kwargs: Any)[source]

Bases: Comp_Base

Generic pump component class.

Parameters:
  • vendor (str, optional) – Vendor name.

  • spec (str, optional) – Pump specification or type.

  • din (int | float | Quantity, optional) – Pump inlet diameter (mm).

  • dout (int | float | Quantity, optional) – Pump outlet diameter (mm).

  • speed0 (int | float | Quantity) – Pump rated speed (in rpm).

  • speed (int | float | Quantity, optional) – Pump operating speed (rpm).

  • hasdata (bool, optional) – Whether Q-H curve data is required.

  • dataQH (list, optional) – Q-H curve data as [Q0, H0, Q1, H1, … , Qn, Hn].

Returns:

None

_group: str = 'Pump'
_part: str = 'Generic'
_prefix: str = 'P'
_sign: float = 1.0
__init__(**kwargs: Any) Any[source]
property vendor: str

Pump vendor.

Returns:

Pump vendor.

Return type:

str

property spec: str

Pump specification (for example model or type number).

Returns:

Pump specification.

Return type:

str

property din: Quantity

Pump inlet diameter (mm).

Returns:

Pump inlet diameter.

Return type:

Quantity

property dout: Quantity

Pump outlet diameter (mm).

Returns:

Pump outlet diameter.

Return type:

Quantity

property speed0: Quantity

Pump rated speed (rpm).

Returns:

Pump rated speed.

Return type:

Quantity

property speed: int | float

Pump operating speed (rpm).

Returns:

Pump operating speed.

Return type:

int | float

property Qb: Quantity

Minimum flow rate (m3/h).

Returns:

Flow rate.

Return type:

Quantity

property Qe: Quantity

Maximum flow rate (m3/h).

Returns:

Flow rate.

Return type:

Quantity

property Qc: Quantity

Critical flow rate (m3/h).

Returns:

Critical flow rate.

Return type:

Quantity

property Hb: Quantity

Lower curve-bound marker.

Returns:

Lower bound marker.

Return type:

Quantity

property He: Quantity

Upper curve-bound marker.

Returns:

Upper bound marker.

Return type:

Quantity

property dataH: list

curve H data.

Returns:

curve H data.

Return type:

list

property dataQ: list

curve Q data.

Returns:

curve Q data.

Return type:

list

calcH(Q: Quantity, sense: int = 1, pin: int = 1, pout: int = 2) Quantity[source]
Calculate pump head.

Reverse flow produces no head.

Parameters:
  • Q (int | float | Quantity) – Flow rate (default unit: m3/h).

  • sense (int) – Flow direction indicator (+1 or -1).

  • pin (int) – Inlet port number.

  • pout (int) – Outlet port number.

Returns:

Pump head (m).

Return type:

Quantity

calcQ(H: Quantity, guess: Any = 200, sense: int = 1, pin: int = 1, pout: int = 2) Quantity[source]

Calculate flow rate from head.

Parameters:
  • H (int | float | Quantity) – Head (default unit: m).

  • guess (Any) – Unused in pump inverse curve lookup; kept for API compatibility.

  • sense (int) – Flow direction indicator (+1 or -1).

  • pin (int) – Inlet port number.

  • pout (int) – Outlet port number.

Returns:

Flow rate (in m3/h).

Return type:

Quantity

updateCurve() Any[source]

Update curve arrays and interpolation functions.

toString(detail: int = 0) str[source]

Return string representation.

Parameters:

detail (int, optional) – Detail level.

Returns:

String representation.

Return type:

str

class fluidsolve.comp_pump.Comp_PumpCentrifugal(**kwargs: Any)[source]

Bases: Comp_Pump

Centrifugal pump component.

Parameters:
  • impeller0 (int | float | Quantity) – Pump rated impeller (in mm).

  • impeller (int | float | Quantity, optional) – Pump operating impeller diameter (mm).

Returns:

None

_part: str = 'Centrifugal'
__init__(**kwargs: Any) Any[source]
property impeller0: Quantity

Pump rated impeller size (mm).

Returns:

Pump rated impeller size.

Return type:

Quantity

property impeller: Quantity

Pump operating impeller size (mm).

Returns:

Pump operating impeller size.

Return type:

Quantity

updateCurve() None[source]

Update curve arrays and interpolation functions.

toString(detail: int = 0) str[source]

Return string representation.

Parameters:

detail (int, optional) – Detail level.

Returns:

String representation.

Return type:

str

class fluidsolve.comp_pump.Comp_PumpSerial(**kwargs: Any)[source]

Bases: Comp_Pump

Pumps connected in series. Heads add, flow is identical.

_part: str = 'PumpSerial'
__init__(**kwargs: Any) Any[source]
calcH(Q: int | float | Quantity, sense: int = 1, pin: int = 1, pout: int = 2) Quantity[source]

Calculate head for the serial pump assembly.

Parameters:
  • Q (int | float | Quantity) – Flow rate (default unit: m3/h).

  • sense (int) – Flow direction indicator (+1 or -1).

  • pin (int) – Inlet port number.

  • pout (int) – Outlet port number.

Returns:

Head (m).

Return type:

Quantity

calcQ(H: int | float | Quantity, guess: Any = 200, sense: int = 1, pin: int = 1, pout: int = 2) Quantity[source]

Calculate flow rate for the serial pump assembly.

Parameters:
  • H (int | float | Quantity) – Head (default unit: m).

  • guess (Any) – Unused; kept for API compatibility.

  • sense (int) – Flow direction indicator (+1 or -1).

  • pin (int) – Inlet port number.

  • pout (int) – Outlet port number.

Returns:

Flow rate (in m3/h).

Return type:

Quantity

updateCurve() Any[source]

Update curve arrays and interpolation functions.

toString(detail: int = 0) str[source]

Return string representation.

Parameters:

detail (int, optional) – Detail level.

Returns:

String representation.

Return type:

str

class fluidsolve.comp_pump.Comp_PumpParallel(**kwargs: Any)[source]

Bases: Comp_Pump

Pumps connected in parallel. Flows add, head is identical.

_part: str = 'PumpParallel'
__init__(**kwargs: Any) Any[source]
calcH(Q: int | float | Quantity, sense: int = 1, pin: int = 1, pout: int = 2) Quantity[source]

Calculate head for the parallel pump assembly.

Parameters:
  • Q (int | float | Quantity) – Flow rate (default unit: m3/h).

  • sense (int) – Flow direction indicator (+1 or -1).

  • pin (int) – Inlet port number.

  • pout (int) – Outlet port number.

Returns:

Head (m).

Return type:

Quantity

calcQ(H: int | float | Quantity, guess: Any = 200, sense: int = 1, pin: int = 1, pout: int = 2) Quantity[source]

Calculate flow rate for the parallel pump assembly.

Parameters:
  • H (int | float | Quantity) – Head (default unit: m).

  • guess (Any) – Unused; kept for API compatibility.

  • sense (int) – Flow direction indicator (+1 or -1).

  • pin (int) – Inlet port number.

  • pout (int) – Outlet port number.

Returns:

Flow rate (in m3/h).

Return type:

Quantity

updateCurve() None[source]

Update curve arrays and interpolation functions.

toString(detail: int = 0) str[source]

Return string representation.

Parameters:

detail (int, optional) – Detail level.

Returns:

String representation.

Return type:

str