File contents
package INTERFACE
connector PowerDissipation
flow SI.Power dissipatedPower "Dissipated power";
annotation (
Coordsys(extent=[-1, -1; 1, 1]),
Documentation(info=""),
Icon(Rectangle(extent=[0, 0; 0, 0], style(color=8))));
end PowerDissipation;
connector Pin
SI.Voltage vDC "DC potential at the pin";
SI.Voltage vTran "Transient/Small-signal potential at the pin";
SI.Voltage vAC_Re "Small-signal potential at the pin. Real part";
SI.Voltage vAC_Im "Small-signal potential at the pin. Imaginary part";
flow SI.Current iDC "DC current flowing into the pin";
flow SI.Current iTran "Transient current flowing into the pin";
flow SI.Current iAC_Re
"Small-signal current flowing into the pin. Real part";
flow SI.Current iAC_Im
"Small-signal current flowing into the pin. Imaginary part";
annotation (
Coordsys(extent=[-1, -1; 1, 1]),
Documentation(info=""),
Icon(Rectangle(extent=[-1, -1; 1, 1], style(color=1, fillColor=1))),
Diagram(Rectangle(extent=[-1, -1; 1, 1], style(color=1, fillColor=1))),
Terminal(Rectangle(extent=[-1, -1; 1, 1], style(color=1, fillColor=1))));
end Pin;
partial model OnePin
Pin p "(+) node" annotation (extent=[-10, 100; 10, 120]);
end OnePin;
partial model TwoPin
Pin p "(+) node" annotation (extent=[-120, -10; -100, 10]);
Pin n "(-) node" annotation (extent=[100, -10; 120, 10]);
annotation (
Coordsys(extent=[-100, -100; 100, 100]),
Documentation(info=""),
Icon(Text(
extent=[-140, -10; -40, 80],
string="+",
style(color=0)), Text(
extent=[40, -10; 140, 80],
string="-",
style(color=0))));
end TwoPin;
partial model MOSFET
Pin d "Drain" annotation (extent=[-10, 100; 10, 120]);
Pin s "Source" annotation (extent=[-10, -120; 10, -100]);
Pin g "Gate" annotation (extent=[-150, -10; -130, 10]);
Pin b "Bulk" annotation (extent=[130, -10; 150, 10]);
end MOSFET;
partial model OnePort
extends TwoPin;
protected
SI.Voltage vDC "DC voltage between pines";
SI.Voltage vTran "Transient voltage between pines";
SI.Voltage vAC_Re "Real part of AC small-signal voltage between pines";
SI.Voltage vAC_Im "Imaginary part of AC small-signal voltage between pines"
;
SI.Current iDC "DC current";
SI.Current iTran "Transient/Small-signal current";
SI.Current iAC_Re "Small-signal current. Real part";
SI.Current iAC_Im "Small-signal current. Imaginary part";
equation
// i, v sign criterion: Positive current flows from
// the (+) node through the part to the (-) node
{iDC,iTran,iAC_Re,iAC_Im} = {p.iDC,p.iTran,p.iAC_Re,p.iAC_Im};
{iDC,iTran,iAC_Re,iAC_Im} = -{n.iDC,n.iTran,n.iAC_Re,n.iAC_Im};
{vDC,vTran,vAC_Re,vAC_Im} = {p.vDC,p.vTran,p.vAC_Re,p.vAC_Im} - {n.vDC,n.
vTran,n.vAC_Re,n.vAC_Im};
end OnePort;
partial model TwoPort
protected
SI.Voltage vDC1 "DC Voltage drop over the left port";
SI.Voltage vTran1 "Transient voltage drop over the left port";
SI.Voltage vAC_Re1
"Real part of AC small-signal voltage drop over the left port";
SI.Voltage vAC_Im1
"Imaginary part of AC small-signal voltage drop over the left port";
SI.Current iDC1 "DC current flowing from pos. to neg. pin of the left port"
;
SI.Current iTran1
"Transient/Small-signal current flowing from pos. to neg. pin of the left port"
;
SI.Current iAC_Re1
"Small-signal current flowing from pos. to neg. pin of the left port. Real part"
;
SI.Current iAC_Im1
"Small-signal current flowing from pos. to neg. pin of the left port. Imaginary part"
;
SI.Voltage vDC2 "DC Voltage drop over the right port";
SI.Voltage vTran2 "Transient voltage drop over the right port";
SI.Voltage vAC_Re2
"Real part of AC small-signal voltage drop over the right port";
SI.Voltage vAC_Im2
"Imaginary part of AC small-signal voltage drop over the right port";
SI.Current iDC2
"DC current flowing from pos. to neg. pin of the right port";
SI.Current iTran2
"Transient/Small-signal current flowing from pos. to neg. pin of the right port"
;
SI.Current iAC_Re2
"Small-signal current flowing from pos. to neg. pin of the right port. Real part"
;
SI.Current iAC_Im2
"Small-signal current flowing from pos. to neg. pin of the right port. Imaginary part"
;
public
Pin p1 "Positive pin of the left port" annotation (extent=[-100, 50; -80,
70], color=3);
Pin n1 "Negative pin of the left port" annotation (extent=[-100, -50; -80,
-30], color=3);
Pin p2 "Positive pin of the right port" annotation (extent=[100, 50; 120,
70]);
Pin n2 "Negative pin of the right port" annotation (extent=[100, -50; 120,
-30]);
equation
// i, v sign criterion: Positive current flows from
// the (+) node through the part to the (-) node
{iDC1,iTran1,iAC_Re1,iAC_Im1} = {p1.iDC,p1.iTran,p1.iAC_Re,p1.iAC_Im};
{iDC1,iTran1,iAC_Re1,iAC_Im1} = -{n1.iDC,n1.iTran,n1.iAC_Re,n1.iAC_Im};
{vDC1,vTran1,vAC_Re1,vAC_Im1} = {p1.vDC,p1.vTran,p1.vAC_Re,p1.vAC_Im} - {n1
.vDC,n1.vTran,n1.vAC_Re,n1.vAC_Im};
{iDC2,iTran2,iAC_Re2,iAC_Im2} = {p2.iDC,p2.iTran,p2.iAC_Re,p2.iAC_Im};
{iDC2,iTran2,iAC_Re2,iAC_Im2} = -{n2.iDC,n2.iTran,n2.iAC_Re,n2.iAC_Im};
{vDC2,vTran2,vAC_Re2,vAC_Im2} = {p2.vDC,p2.vTran,p2.vAC_Re,p2.vAC_Im} - {n2
.vDC,n2.vTran,n2.vAC_Re,n2.vAC_Im};
annotation (Diagram(
Line(points=[-80, 88; -80, 72; -80, 80; -90, 80; -70, 80]),
Line(points=[100, 88; 100, 72; 100, 80; 90, 80; 110, 80]),
Line(points=[-90, -20; -70, -20]),
Line(points=[90, -20; 110, -20; 108, -20])), Icon(
Line(points=[-80, 88; -80, 72; -80, 80; -90, 80; -70, 80]),
Line(points=[100, 88; 100, 72; 100, 80; 90, 80; 110, 80]),
Line(points=[-90, -20; -70, -20]),
Line(points=[90, -20; 110, -20; 108, -20])));
end TwoPort;
annotation (Icon(Rectangle(extent=[-80, 60; 80, -60], style(color=71,
thickness=2)), Text(
extent=[-76, 18; 76, -20],
style(thickness=2),
string="INTERFACE")));
end INTERFACE;