ThrottleCheckValvePT1

model ThrottleCheckValvePT1
    HydraulicsByFluidon.Components.Valves.CheckValves.CheckValvePT1 checkValvePT11(forwardFluidProperties = false, valveEdge1(idealResistorVariable1(resistorType = resistorTypeCV), NominalPressureDifference = NominalPressureDifferenceCV, NominalVolumeFlow = NominalVolumeFlowCV), ReferenceDensity = ReferenceDensity, OpeningPressure = OpeningPressureCV, MaxOpeningPressure = MaxOpeningPressureCV, deadVolume = deadVolume, pA = pA, pB = pB) annotation (Placement(
        visible = true,
        transformation(
            origin = {30, 10},
            extent = {
                {-10, -10}, 
                {10, 10}},
            rotation = 0)));
    HydraulicsByFluidon.Components.Resistors.IdealResistor idealResistor1(forwardFluidProperties = false, NominalVolumeFlow = NominalVolumeFlowThrottle, NominalPressureDifference = NominalPressureDifferenceThrottle, resistorType = HydraulicsByFluidon.Types.TResistorTypes.Throttle) annotation (Placement(
        visible = true,
        transformation(
            origin = {-30, 10},
            extent = {
                {-10, -10}, 
                {10, 10}},
            rotation = 0)));
    parameter Modelica.SIunits.VolumeFlowRate NominalVolumeFlowThrottle = 5e-4 "Nominal volume flow"
        annotation (Dialog(group = "Throttle"));
    parameter Modelica.SIunits.Pressure NominalPressureDifferenceThrottle = 500000 "Nominal pressure difference"
        annotation (Dialog(group = "Throttle"));
    parameter Modelica.SIunits.Pressure OpeningPressureCV = 100000 "Opening pressure difference"
        annotation (Dialog(group = "Check Valve"));
    parameter Modelica.SIunits.Pressure MaxOpeningPressureCV = 200000 "Opening pressure difference"
        annotation (Dialog(group = "Check Valve"));
    parameter Modelica.SIunits.VolumeFlowRate NominalVolumeFlowCV = 5e-4 "Nominal volume flow"
        annotation (Dialog(group = "Check Valve"));
    parameter Modelica.SIunits.Pressure NominalPressureDifferenceCV = 500000 "Nominal pressure difference"
        annotation (Dialog(group = "Check Valve"));
    parameter HydraulicsByFluidon.Types.TResistorTypes resistorTypeCV = HydraulicsByFluidon.Types.TResistorTypes.Orifice "Type of the resistor"
        annotation (Dialog(group = "Check Valve"));
    parameter Modelica.SIunits.Density ReferenceDensity = 860 "Reference density for volume flow and pressure difference";
    parameter Modelica.SIunits.Volume deadVolume(final min = 1e-9) = 1e-6 "Dead volume at ports"
        annotation (Dialog(group = "Geometry"));

    extends HydraulicsByFluidon.Components.Base.HydTwoPortVerticalExt annotation (IconMap(
        extent = {
            {-100, -100}, 
            {100, 100}},
        primitivesVisible = true));
equation
    connect(checkValvePT11.fluidPortA,fluidPortA) annotation (Line(
        points = {
            {30, 0}, 
            {30, 0}, 
            {30, -10}, 
            {0, -10}, 
            {0, -100}, 
            {0, -100}},
        color = {0, 93, 152}));
    connect(checkValvePT11.fluidPortB,fluidPortB) annotation (Line(
        points = {
            {30, 20}, 
            {30, 20}, 
            {30, 30}, 
            {0, 30}, 
            {0, 100}, 
            {0, 100}},
        color = {0, 93, 152}));
    connect(idealResistor1.fluidPortA,fluidPortA) annotation (Line(
        points = {
            {-30, 0}, 
            {-30, 0}, 
            {-30, -10}, 
            {0, -10}, 
            {0, -100}, 
            {0, -100}},
        color = {0, 93, 152}));
    connect(idealResistor1.fluidPortB,fluidPortB) annotation (Line(
        points = {
            {-30, 20}, 
            {-30, 20}, 
            {-30, 30}, 
            {0, 30}, 
            {0, 100}, 
            {0, 100}},
        color = {0, 93, 152}));

    annotation (
        Icon(
            coordinateSystem(
                extent = {
                    {-60, -100}, 
                    {140, 100}},
                initialScale = 0.1,
                preserveAspectRatio = false),
            graphics = {
                Rectangle(
                    origin = {-40, -80},
                    extent = {
                        {0, 0}, 
                        {160, 160}}), 
                Ellipse(
                    origin = {0, 60},
                    fillColor = {0, 0, 0},
                    fillPattern = FillPattern.Solid,
                    extent = {
                        {-5, 5}, 
                        {5, -5}},
                    endAngle = 360), 
                Line(
                    origin = {10, 0},
                    points = {
                        {12, -30}, 
                        {4, -20}, 
                        {-1, 0}, 
                        {4, 20}, 
                        {12, 30}},
                    smooth = Smooth.Bezier), 
                Line(
                    origin = {-10, 0},
                    points = {
                        {-12, -30}, 
                        {-4, -20}, 
                        {1, 0}, 
                        {-4, 20}, 
                        {-12, 30}},
                    smooth = Smooth.Bezier), 
                Line(
                    origin = {0, 60},
                    points = {
                        {0, 0}, 
                        {80, 0}}), 
                Ellipse(
                    origin = {0, -60},
                    fillColor = {0, 0, 0},
                    fillPattern = FillPattern.Solid,
                    extent = {
                        {-5, 5}, 
                        {5, -5}},
                    endAngle = 360), 
                Line(
                    origin = {0, -60},
                    points = {
                        {0, 0}, 
                        {80, 0}}), 
                Ellipse(
                    origin = {80, 0},
                    fillColor = {255, 255, 255},
                    fillPattern = FillPattern.Solid,
                    extent = {
                        {-7.5, 7.5}, 
                        {7.5, -7.5}},
                    endAngle = 360), 
                Line(
                    origin = {80, 60},
                    points = {
                        {0, 0}, 
                        {0, -52.5}}), 
                Line(
                    origin = {80, -12},
                    points = {
                        {-15, 15}, 
                        {0, 0}, 
                        {15, 15}}), 
                Line(
                    origin = {80, -60},
                    points = {
                        {0, 0}, 
                        {0, 48}}), 
                Line(
                    origin = {0, 0},
                    points = {
                        {0, 93}, 
                        {0, -93}})}),
        Documentation(info = "<html>\n            <p>\n                The component ThrottleCheckValvePT1 is a model that combines a <a href=\"modelica://HydraulicsByFluidon.Components.Resistors.IdealResistor\">throttle</a> \n                and a <a href=\"modelica://HydraulicsByFluidon.Components.Valves.CheckValves.CheckValvePT1\">check valve</a>.\n                If pressure p2 &#62; p1 the flow passes the throttle only whereas if the pressure p1 &#62; p2 \n                the flow will be distributed over throttle and check valve according to the respective resistances.\n            </p>\n            <p>\n                The opening condition is:\n            </p>\n            <p>\n                fluidPortA.p &#62; fluidPortB.p + Opening pressure difference. \n            </p>\n            <p>\n                <var>Max. opening pressure difference</var> defines the point where the check valve is completely open and the \n                values <var>Nominal volume flow</var> and <var>Nominal pressure difference</var> apply. From <var>Opening pressure difference</var> to \n                <var>Max. opening pressure difference</var> the flow is scaled proportionally.\n            </p>\n            </html>"));
end ThrottleCheckValvePT1;