Compute mass flow rate from constant loss factor and pressure drop (m_flow = f(dp)). For small pressure drops (dp < dp_small), the characteristic is approximated by a polynomial in order to have a finite derivative at zero mass flow rate.
function massFlowRate_dp extends Modelica.Icons.Function; input SI.Pressure dp "Pressure drop (dp = port_a.p - port_b.p)"; input SI.Density rho_a "Density at port_a"; input SI.Density rho_b "Density at port_b"; input LossFactorData data "Constant loss factors for both flow directions" annotation( choices(choice = Modelica.Fluid.Fittings.BaseClasses.QuadraticTurbulent.LossFactorData.wallFriction(), choice = Modelica.Fluid.Fittings.BaseClasses.QuadraticTurbulent.LossFactorData.suddenExpansion(), choice = Modelica.Fluid.Fittings.BaseClasses.QuadraticTurbulent.LossFactorData.sharpEdgedOrifice())); input SI.AbsolutePressure dp_small = 1 "Turbulent flow if |dp| >= dp_small"; output SI.MassFlowRate m_flow "Mass flow rate from port_a to port_b"; end massFlowRate_dp;