modelCentrifugalPump
Extends from ThermofluidStream.Processes.Internal.SISOFlowAdvanced.
Information
Remark: This model is scheduled for release in v1.3.0 due to its advantages. However, it currently combines multiple features that are likely to be separated into dedicated models in future revisions. Please take this into account.
-
The capability to prescribe the mass flow rate (
flowControlled) is intended to be moved to a simplified model (ideal flow source, incompressible fluid, fixed isentropic efficiency). -
The capability to prescribe the pressure (
pressureControlled) is intended to be moved to a simplified model (ideal pressure source, incompressible fluid, fixed isentropic efficiency).
Model of a centrifugal pump based on similarity laws: volume flow rate V_flow ∼ w, head/pressure difference head ∼ w^2, power P ∼ rho*w^3,
where rho is the density and w is the pump speed.
The model assumes incompressible fluid rho = constant, which implies that the hydraulic work P_hyd = dp*V_flow.
Additionally quadratic polynomials are used to approximate head/pressure difference and power/torque depending on volume flow rate V_flow:
head_n = c_head[1]*w_n^2 + c_head[2]*w_n*V_n + c_head[3]*V_n^2
P_n/w_n = tau_n = rho_n*(c_power[1]*w_n^2 + c_power[2]*w_n*V_n + c_power[3]*V_n^2)
where:
-
head_n = head/head_ref,w_n = w/w_ref,V_n = V_flow/V_flow_ref,P_n = P/P_reftau_n = tau/tau_refandrho_n = rho/rho_refare normalized head, speed, volume flow rate, power, torque and density -
head_ref,w_ref,V_flow_ref,P_ref,tau_refandrho_refare reference head, speed, volume flow rate, power, torque and density c_head[1:3]andc_power[1:3]are coefficients
The centrifugal pump can be parameterized either with a measurement record
or with a coefficient record.
There are already measurements records and coefficient records for some exemplary centrifugal pumps.
User specific pumps can be added by creating a new measurement record or by calculating the coefficient record using the example
CalculateCoefficientsFromMeasurements.
Furthermore coefficient records are designed to enable the user to generate a reasonable pump curve by scaling, e.g. by applying similarity laws.
The centrifugal pump can be used in different modes:
-
flangeenables a mechanical connector -
flowControlledenables to set mass or volume flow rate by parameter or by input signal -
pressureControlledenables to set outlet pressure, pressure ratio or pressure difference by parameter or by input signal. -
speedControlledenables to set angular velocity by parameter or by input signal.
The pump mode is displayed on icon level in terms of ṁ for mass flow rate, V for volume flow rate, dp for pressure difference, pr for pressure ratio,
p for outlet pressure and w for speed.
The parameter setpointFromInput enables switching between setpoint by parameter or from input signal.
Further assumptions:
- stationary, i.e.
dEsys/dt = 0, dmsys/dt = 0 - no heat transfer, i.e.
q=0 - no external force or momentum acting on the pump as a rigid body, i.e.
Wdot_external = 0 - ridig boundary, i.e.
Wdot_v = 0(no work due to change of volume) - difference of kinetic and potential energy of the fluid are negleted, i.e.
g*z + 1/2*c^2 = const. - no change in mass fractions
X_in = X_out
The model is supposed to be used for non negative speed w >= 0 and non negative volume flow rate V_flow >= 0, but the implemented modification:
head_n = c_head[1]*w_n^2 + c_head[2]*w_n*V_n + c_head[3]*V_n*abs(V_n)
P_n/w_n = tau_n = if noEvent(V_n > 0) then rho_n*(c_power[1]*w_n^2 + c_power[2]*w_n*V_n + c_power[3]*V_n^2) else rho_n*c_power[1]*w_n^2
yields at least qualitative reasonable results for head at negative volume flow rates V_flow < 0. For quantitative results or for negative speeds w < 0
further modifications are necessary.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| ThermofluidStream.Processes.Internal.CentrifugalPump.Auxiliaries.InternalCoefficients | coeff | if dataFromMeasurements then ThermofluidStream.Processes.Internal.CentrifugalPump.Auxiliaries.internalCoefficientsFromMeasurements(measurements) else ThermofluidStream.Processes.Internal.CentrifugalPump.Auxiliaries.internalCoefficientsFromCoefficients(coefficients) | |
| String | setpointModeString | if pumpMode == ThermofluidStream.Processes.Internal.Types.PumpMode.flowControlled then if setpointFlow == ThermofluidStream.Processes.Internal.Types.SetpointModeFlow.m_flow then "ṁ" elseif setpointFlow == ThermofluidStream.Processes.Internal.Types.SetpointModeFlow.V_flow then "V" else "error" elseif pumpMode == ThermofluidStream.Processes.Internal.Types.PumpMode.pressureControlled then if setpointPressure == ThermofluidStream.Processes.Internal.Types.SetpointModePressure.dp then "Δp" elseif setpointPressure == ThermofluidStream.Processes.Internal.Types.SetpointModePressure.pr then "pr" elseif setpointPressure == ThermofluidStream.Processes.Internal.Types.SetpointModePressure.p_out then "p" else "error" elseif pumpMode == ThermofluidStream.Processes.Internal.Types.PumpMode.speedControlled then "w" elseif pumpMode == ThermofluidStream.Processes.Internal.Types.PumpMode.flange then "" else "error" | |
| String | setpointValueString | if pumpMode == ThermofluidStream.Processes.Internal.Types.PumpMode.flowControlled then if setpointFlow == ThermofluidStream.Processes.Internal.Types.SetpointModeFlow.m_flow then "m_flow = %m_flow_par" elseif setpointFlow == ThermofluidStream.Processes.Internal.Types.SetpointModeFlow.V_flow then "V_flow = %V_flow_par" else "error" elseif pumpMode == ThermofluidStream.Processes.Internal.Types.PumpMode.pressureControlled then if setpointPressure == ThermofluidStream.Processes.Internal.Types.SetpointModePressure.dp then "dp = %dp_par" elseif setpointPressure == ThermofluidStream.Processes.Internal.Types.SetpointModePressure.pr then "pr = %pr_par" elseif setpointPressure == ThermofluidStream.Processes.Internal.Types.SetpointModePressure.p_out then "p_out = %p_out_par" else "error" elseif pumpMode == ThermofluidStream.Processes.Internal.Types.PumpMode.speedControlled then "w = %w_par" elseif pumpMode == ThermofluidStream.Processes.Internal.Types.PumpMode.flange then "" else "error" | |
| String | displayPos1 | if displaySetpoint then setpointValueString else "" | |
| Data | |||
| Boolean | dataFromMeasurements | true | = true, if measurement data shall be given, (=false, if coefficients shall be set) |
| ThermofluidStream.Processes.Internal.CentrifugalPump.Coefficients.GenericPump | coefficients | Pump coefficients | |
| ThermofluidStream.Processes.Internal.CentrifugalPump.Measurements.GenericPump | measurements | Pump measurement data | |
| Mode | |||
| PumpMode | pumpMode | ThermofluidStream.Processes.Internal.Types.PumpMode.flowControlled | Pump mode |
| Boolean | setpointFromInput | false | = true, if setpoint input connector is enabled |
| Flow setpoint | |||
| SetpointModeFlow | setpointFlow | ThermofluidStream.Processes.Internal.Types.SetpointModeFlow.m_flow | Flow setpoint (m_flow or V_flow) |
| SI.MassFlowRate | m_flow_par | 0 | Constant mass flow rate |
| SI.VolumeFlowRate | V_flow_par | 0 | Constant volume flow rate |
| Pressure setpoint | |||
| SetpointModePressure | setpointPressure | ThermofluidStream.Processes.Internal.Types.SetpointModePressure.dp | Pressure setpoint (dp, pr or p_out) |
| SI.PressureDifference | dp_par | 0 | Constant pressure difference p_out - p_in |
| Real | pr_par | 1 | Constant pressure ratio p_out/p_in |
| SI.PressureDifference | p_out_par | 1e5 | Constant outlet pressure |
| Speed setpoint | |||
| SI.AngularVelocity | w_par | measurements.w_ref | Constant speed |
| Advanced | |||
| SI.MassFlowRate | m_flow_reg | dropOfCommons.m_flow_reg | Mass flow rate for regularization |
| SI.Power | P_reg | 1 | Power for regularization (eta = 0 for P < P_reg) |
| Layout › Display parameters | |||
| Boolean | displaySetpoint | true | = true, if setpoint value is displayed |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Blocks.Interfaces.RealInput | setpoint_var | Setpoint input connector [SI-units] | |
| Modelica.Mechanics.Rotational.Interfaces.Flange_a | flange | ||
| SI.Angle | phi | Angle | |
| SI.VolumeFlowRate | V_flow | m_flow/rho | Volume flow rate |
| SI.AngularVelocity | w | Speed | |
| SI.Torque | tau | Torque | |
| SI.Height | head | Head | |
| Medium.SpecificEnthalpy | w_t | Specific technical work | |
| SI.Power | P | Power (technichal work flow rate) | |
| Real | eta_is | Isentropic efficiency |
Revisions
-
May 2025, by Raphael Gebhart (raphael.gebhart@dlr.de):
Initial version.