Deprecation notice:
The legacy Reynolds formulation (useLegacyReynolds =
true) is deprecated. When enabled, a
warning is issued to inform the user about the upcoming removal.
The legacy option will be removed in v2.0 of the
ThermoFluidStream Library.
Recommended usage:
useLegacyReynolds = false
and use it for all new models.Remark:
The legacy Reynolds formulation overestimated friction effects by a factor of 1000. Depending on the operating point, the legacy formulation may lead to deviations of the pump characteristic by a factor of approximately 2–5 compared to the corrected implementation. Simulation results will likely change. Closed loop controllers might have to be adapted.
Documentation:
Centrifugal pump model with head–flow (H–Q) and
torque–flow (T–Q) characteristic curves.
H–Q characteristic:
TDH := f_H * (a_h*omega*abs(omega) - b_h*omega*abs(V_flow) -
c_h*V_flow*abs(V_flow));
T–Q characteristic:
tau_st := (f_Q*f_H/f_eta) * (v_ref/v_in*a_t*abs(omega)*V_flow
- v_ref/v_in*b_t*abs(V_flow)*V_flow + v_i*abs(omega)*omega +
v_s*abs(omega));
Both characteristic curves are extended to all four quadrants of
the V_flow–omega operating map.
The parameters a, b, c,
and v can either be specified directly or derived from
three scaling factors alpha, beta, and
gamma, which scale a reference pump.
Reference pump parameters:
omega_D = 314.2 rad/s
V_flow_D = 3.06e-3 m3/s
TDH_D = 3.6610 m
a_h_ref = 4.864e-5 m.s2/rad2
b_h_ref = -2.677 s2/(m2.rad)
c_h_ref = 3.967e+5 s2/m5
a_t_ref = 5.427e-1 N.m.s2/(rad.m3)
b_t_ref = 2.777e+4 N.m.s2/m6
v_i_ref = 1.218e-6 N.m.s2/rad2
v_s_ref = 1.832e-4 N.m.s/rad
f_q_ref = 1
K_D_ref = 9.73e-06 m3/rad
rho_ref_ref = 1.00e3 kg/m3
r_ref = 1.60e-2 m
The characteristic curves are scaled to account for variations in fluid density and viscosity, following the approach described in Gülich, Kreiselpumpen: Handbuch für Entwicklung, Anlageplanung und Betrieb, 3rd edition, Chapter 13.1.
function dp_tau_centrifugal
extends partial_dp_tau;
import Modelica.Constants.g_n;
input Boolean useLegacyReynolds = true "= true, if legacy Reynolds formulation is used (overestimates viscosity). Set to false to enable the corrected formulation. Will be removed in ThermoFluidStream v2.0." annotation(
Dialog(enable = true),
Evaluate = true,
choices(checkBox = true));
input Boolean parametrizeByScaling = true "= true, if pump characteristic curve is computed from one design point" annotation(
Dialog(enable = true));
input SI.Height TDH_D = 3.6610 "Design pressure head (max efficiency)" annotation(
Dialog(group = "Scaling", enable = parametrizeByScaling));
input SI.VolumeFlowRate V_flow_D = 3.06e-3 "Design volume flow (max efficiency)" annotation(
Dialog(group = "Scaling", enable = parametrizeByScaling));
input SI.AngularVelocity omega_D = 314.2 "Design angular velocity" annotation(
Dialog(group = "Scaling", enable = parametrizeByScaling));
input Real K_D_input(unit = "m3/rad") = 9.73e-06 "Vflow_D / omega_D" annotation(
Dialog(group = "General", enable = not parametrizeByScaling));
input Integer f_q_input = 1 "Number of floods" annotation(
Dialog(group = "General", enable = not parametrizeByScaling));
input SI.Radius r_input = 1.60e-2 "Pump radius (r2)" annotation(
Dialog(group = "General", enable = not parametrizeByScaling));
input SI.Density rho_ref_input = 1.00e3 "Reference density" annotation(
Dialog(group = "General", enable = not parametrizeByScaling));
input Real a_h_input(unit = "m.s2/rad2", displayUnit = "m.min2") = 4.864e-5 "HQ factor 1" annotation(
Dialog(group = "HQ characteristic", enable = not parametrizeByScaling));
input Real b_h_input(unit = "s2/(m2.rad)", displayUnit = "m.h.min/l") = -2.677 "HQ factor 2" annotation(
Dialog(group = "HQ characteristic", enable = not parametrizeByScaling));
input Real c_h_input(unit = "s2/m5", displayUnit = "m.h2/l2") = 3.967e+5 "HQ factor 3" annotation(
Dialog(group = "HQ characteristic", enable = not parametrizeByScaling));
input Real a_t_input(unit = "N.m.s2/(rad.m3)", displayUnit = "N.m.min.h/l") = 5.427e-1 "TQ factor 1" annotation(
Dialog(group = "TQ characteristic", enable = not parametrizeByScaling));
input Real b_t_input(unit = "N.m.s2/m6", displayUnit = "N.m.h2/l2") = 2.777e+4 "TQ factor 2" annotation(
Dialog(group = "TQ characteristic", enable = not parametrizeByScaling));
input Real v_i_input(unit = "N.m.s2/rad2", displayUnit = "N.m.min2") = 1.218e-6 "TQ factor 4" annotation(
Dialog(group = "TQ characteristic", enable = not parametrizeByScaling));
input Real v_s_input(unit = "N.m.s/rad", displayUnit = "N.m.min") = 1.832e-4 "TQ factor 3" annotation(
Dialog(group = "TQ characteristic", enable = not parametrizeByScaling));
input Real Re_mod_min(unit = "1") = 1e2 "Minimum modified Reynolds number" annotation(
Dialog(tab = "Advanced", enable = true));
input String name = getInstanceName() "Hack to access the instance name";
end dp_tau_centrifugal;