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 = +1follows mounting direction,sense = -1represents 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_BaseGeneric 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
- 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
- class fluidsolve.comp_pump.Comp_PumpCentrifugal(**kwargs: Any)[source]
Bases:
Comp_PumpCentrifugal 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'
- 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
- class fluidsolve.comp_pump.Comp_PumpSerial(**kwargs: Any)[source]
Bases:
Comp_PumpPumps connected in series. Heads add, flow is identical.
- _part: str = 'PumpSerial'
- 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
- class fluidsolve.comp_pump.Comp_PumpParallel(**kwargs: Any)[source]
Bases:
Comp_PumpPumps connected in parallel. Flows add, head is identical.
- _part: str = 'PumpParallel'
- 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