model LocalResistance "Local Resistance"
    import HydraulicsByFluidon.Media.Base.FluidInterface;

    parameter Real Zeta(min = 0) = 1 "Pressure loss coefficient";
    parameter Modelica.SIunits.Length D = 0.032 "Diameter";

    extends HydraulicsByFluidon.Components.Base.PartialResistorBase;

    Real A = 0.25 * (D * D * Modelica.Constants.pi);
    Real signDp;
    Real pMax;
    pMax = max(fluidPortA.p, fluidPortB.p);
    signDp = noEvent(sign(dp));
    fluidPortB.mFlow = sqrt(2 / Zeta) * A * sqrt(abs(dp) * FluidInterface.calcRho(fluidId, pMax, fluidPortB.fluidTemperature)) * signDp * FluidInterface.calcLaminarFactor(abs(dp));

    annotation (
            preserveAspectRatio = true,
            extent = {
                {-100, -100}, 
                {100, 100}})),
        Documentation(info = "<html>\n            <p>\n                The component LocalResistance is a model of a flow resistance that represents the local pressure loss, which is typically \n                calculated with the <var>Pressure loss coefficient</var> zeta.\n            </p>\n            <p>\n                <center><img align=\"middle\" src=\"modelica://HydraulicsByFluidon/Resources/Images/Components/Resistors/Zeta.png\"></center>\n            </p>\n            <p>\n                <var>Diameter</var> is used for calculation of flow velocity v.\n            </p>\n            <p>\n                Values of <var>Pressure loss coefficient</var> can be found in literature, e. g. in I.E. Idelchik, Handbook of Hydraulic Resistance.\n            </p>\n            <p>\n                In the following tables standard values for the resistance coefficient <var>Zeta</var> are given. It is distinguished between \n                bends (without marked radius of curvature R) and elbows (with considerable radius of curvature R), circular \n                cross-sections are always assumed:\n            </p>\n            <p>\n                Bend\n            </p>\n            <p>\n                For bends with distinct radius of curvature R the resistance coefficient <var>Zeta</var> changes depending on the angle of \n                curvature phi according to the formula:\n            </p>\n            <p>\n                <center><img align=\"middle\" src=\"modelica://HydraulicsByFluidon/Resources/Images/Components/Resistors/LocalResistanceZetaBend.png\"></center>\n            </p>\n            <p>\n                From the first table the values for <var>Zeta</var> <sub>90deg</sub> depending on the ratio radius of curvature R to tube \n                diameter d can be taken. The second table specifies values for the factor k depending on the angle of \n                curvature phi (where appropriate interpolation is necessary).\n            </p>\n            <p>\n                <img align=\"middle\" src=\"modelica://HydraulicsByFluidon/Resources/Images/Components/Resistors/LocalResistanceRdTable.png\">\n                <img align=\"middle\" src=\"modelica://HydraulicsByFluidon/Resources/Images/Components/Resistors/LocalResistancePhiTable.png\">\n            </p>\n            <p>\n                At multiple bends, the following equations can give clues for the calculation of <var>Zeta</var>:\n            </p>\n            <p>\n                Double bend (two bends arranged semicircular):\n            </p>\n            <p>\n                <center><img align=\"middle\" src=\"modelica://HydraulicsByFluidon/Resources/Images/Components/Resistors/LocalResistanceZeta2.png\"></center>\n            </p>\n            <p>\n                Room crooked (two bends arranged angular to each other):\n            </p>\n            <p>\n                <center><img align=\"middle\" src=\"modelica://HydraulicsByFluidon/Resources/Images/Components/Resistors/LocalResistanceZeta3.png\"></center>\n            </p>\n            <p>\n                Floor crooked (two bends arranged s-shaped):\n            </p>\n            <p>\n                <center><img align=\"middle\" src=\"modelica://HydraulicsByFluidon/Resources/Images/Components/Resistors/LocalResistanceZeta4.png\"></center>\n            </p>\n            <p>\n                Elbow\n            </p>\n            <p>\n                For bends without marked radius of curvature R, <var>Zeta</var> can be taken out of the following table and/or can be computed by interpolation:\n            </p>\n            <p>\n                <img align=\"middle\" src=\"modelica://HydraulicsByFluidon/Resources/Images/Components/Resistors/LocalResistanceBendTable.png\">\n            </p></html>"));
end LocalResistance;