GraetzRectifier

model GraetzRectifier "Graetz rectifier bridge"
    Modelica.SIunits.Voltage vAC = pin_pAC.v - pin_nAC.v "AC voltage";
    Modelica.SIunits.Current iAC = pin_pAC.i "AC current";
    Modelica.SIunits.ActivePower pAC = vAC * iAC "AC power";
    Modelica.SIunits.Voltage vDC = pin_pDC.v - pin_nDC.v "DC voltage";
    Modelica.SIunits.Current iDC = pin_pDC.i "DC current";
    Modelica.SIunits.Power pDC = vDC * iDC "DC power";
    Analog.Interfaces.PositivePin pin_pAC annotation (Placement(
        transformation(extent = {
            {-110, 110}, 
            {-90, 90}}),
        iconTransformation(extent = {
            {-110, 110}, 
            {-90, 90}})));
    Analog.Interfaces.NegativePin pin_nAC annotation (Placement(
        transformation(extent = {
            {-110, -110}, 
            {-90, -90}}),
        iconTransformation(extent = {
            {-110, -110}, 
            {-90, -90}})));
    Analog.Interfaces.PositivePin pin_pDC annotation (Placement(
        transformation(extent = {
            {90, 110}, 
            {110, 90}}),
        iconTransformation(extent = {
            {90, 110}, 
            {110, 90}})));
    Analog.Interfaces.NegativePin pin_nDC annotation (Placement(
        transformation(extent = {
            {90, -110}, 
            {110, -90}}),
        iconTransformation(extent = {
            {90, -110}, 
            {110, -90}})));
    Analog.Ideal.IdealDiode idealDiode1(Vknee = 0) annotation (Placement(transformation(
        extent = {
            {-10, -10}, 
            {10, 10}},
        rotation = 90,
        origin = {-40, 30})));
    Analog.Ideal.IdealDiode idealDiode2(Vknee = 0) annotation (Placement(transformation(
        extent = {
            {-10, -10}, 
            {10, 10}},
        rotation = 90,
        origin = {40, 30})));
    Analog.Ideal.IdealDiode idealDiode3(Vknee = 0) annotation (Placement(transformation(
        extent = {
            {-10, -10}, 
            {10, 10}},
        rotation = 90,
        origin = {-40, -30})));
    Analog.Ideal.IdealDiode idealDiode4(Vknee = 0) annotation (Placement(transformation(
        extent = {
            {-10, -10}, 
            {10, 10}},
        rotation = 90,
        origin = {40, -30})));
equation
    connect(pin_nAC,idealDiode4.n) annotation (Line(
        points = {
            {-100, -100}, 
            {-100, -10}, 
            {40, -10}, 
            {40, -20}},
        color = {0, 0, 255}));
    connect(pin_pAC,idealDiode1.p) annotation (Line(
        points = {
            {-100, 100}, 
            {-100, 10}, 
            {-40, 10}, 
            {-40, 20}},
        color = {0, 0, 255}));
    connect(idealDiode1.n,idealDiode2.n) annotation (Line(
        points = {
            {-40, 40}, 
            {40, 40}},
        color = {0, 0, 255}));
    connect(idealDiode1.p,idealDiode3.n) annotation (Line(
        points = {
            {-40, 20}, 
            {-40, -20}},
        color = {0, 0, 255}));
    connect(idealDiode2.n,pin_pDC) annotation (Line(
        points = {
            {40, 40}, 
            {40, 100}, 
            {100, 100}},
        color = {0, 0, 255}));
    connect(idealDiode2.p,idealDiode4.n) annotation (Line(
        points = {
            {40, 20}, 
            {40, -20}},
        color = {0, 0, 255}));
    connect(idealDiode3.p,idealDiode4.p) annotation (Line(
        points = {
            {-40, -40}, 
            {40, -40}},
        color = {0, 0, 255}));
    connect(idealDiode4.p,pin_nDC) annotation (Line(
        points = {
            {40, -40}, 
            {40, -100}, 
            {100, -100}},
        color = {0, 0, 255}));

    annotation (
        defaultComponentName = "rectifier",
        Icon(graphics = {
            Text(
                extent = {
                    {50, 30}, 
                    {100, 0}},
                lineColor = {0, 0, 255},
                textString = "DC"), 
            Text(
                extent = {
                    {-100, 30}, 
                    {-50, 0}},
                lineColor = {0, 0, 255},
                textString = "AC"), 
            Text(
                extent = {
                    {-150, 90}, 
                    {150, 50}},
                lineColor = {0, 0, 255},
                textString = "%name"), 
            Line(
                points = {
                    {-2, 40}, 
                    {-2, 40}, 
                    {-70, 40}, 
                    {-2, 40}, 
                    {-70, -50}, 
                    {-2, -50}, 
                    {-2, 40}, 
                    {-2, -50}},
                color = {0, 0, 255}), 
            Line(
                points = {
                    {2, 40}, 
                    {70, 40}, 
                    {2, 40}, 
                    {70, -50}, 
                    {2, -50}, 
                    {2, 40}, 
                    {2, -50}},
                color = {0, 0, 255})}),
        Documentation(info = "<html>\n<p>\nThis is a so called Graetz-bridge, a single phase rectifier built from 4 diodes.\n</p>\n</html>"));
end GraetzRectifier;