Centrifugal pump with HQ and TQ characteristic curve.
HQ curve: TDH := f_H *(a_h*omega*abs(omega) - b_h*omega*abs(V_flow) - c_h*V_flow*abs(V_flow));
TQ curve: 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 characteristics are generalized to all four quadrants of the V_flow/omega plot.
The parameters a,b,c,v can be set directly or by three scaling factors alpha, beta and gamma, which scale the reference pump.
Reference pump:
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 getting scaled to accommodate different densities and viscosities (according to Gülich, Kreiselpumpen: Handbuch für Entwicklung, Anlageplanung und Betrieb, 3. Auflage, Chap. 13.1).
function dp_tau_centrifugal extends partial_dp_tau; import Modelica.Constants.g_n; input Boolean parametrizeByScaling = true "If true scale by three parameters" annotation( Dialog(enable = true)); input SI.Height TDH_D = 3.6610 "Design pressure head" annotation( Dialog(group = "Scaling", enable = parametrizeByScaling)); input SI.VolumeFlowRate V_flow_D = 3.06e-3 "Design volume flow" 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 "Radius of pump" 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)); end dp_tau_centrifugal;