示例#1
0
        public override void Analyze(Analysis Mna)
        {
            Expression Ip = Mna.AddUnknown("i" + Name + "p");
            Mna.AddPassiveComponent(pa, pc, Ip);
            Expression Is = Mna.AddUnknown("i" + Name + "s");
            Mna.AddPassiveComponent(sc, sa, Is);
            Mna.AddEquation(Ip * turns, Is);

            Expression Vp = pa.V - pc.V;
            Expression Vs = sa.V - sc.V;
            Mna.AddEquation(Vp, turns * Vs);
        }
示例#2
0
        public override void Analyze(Analysis Mna)
        {
            Expression Ip = Mna.AddUnknown("i" + Name + "p");

            Mna.AddPassiveComponent(pa, pc, Ip);
            Expression Is = Mna.AddUnknown("i" + Name + "s");

            Mna.AddPassiveComponent(sc, sa, Is);
            Mna.AddEquation(Ip * turns, Is);

            Expression Vp = pa.V - pc.V;
            Expression Vs = sa.V - sc.V;

            Mna.AddEquation(Vp, turns * Vs);
        }
示例#3
0
 public static void Analyze(Analysis Mna, string Name, Node Anode, Node Cathode, Expression V)
 {
     // Unknown current.
     Mna.AddPassiveComponent(Anode, Cathode, Mna.AddUnknown("i" + Name));
     // Set the voltage.
     Mna.AddEquation(Anode.V - Cathode.V, V);
 }
示例#4
0
 public static Expression Analyze(Analysis Mna, string Name, Node Anode, Node Cathode)
 {
     Expression i = Mna.AddUnknown("i" + Name);
     Mna.AddPassiveComponent(Anode, Cathode, i);
     Mna.AddEquation(Anode.V, Cathode.V);
     return i;
 }
示例#5
0
 public static void Analyze(Analysis Mna, string Name, Node Anode, Node Cathode, Expression V)
 {
     // Unknown current.
     Mna.AddPassiveComponent(Anode, Cathode, Mna.AddUnknown("i" + Name));
     // Set the voltage.
     Mna.AddEquation(Anode.V - Cathode.V, V);
 }
示例#6
0
        public static Expression Analyze(Analysis Mna, string Name, Node Anode, Node Cathode)
        {
            Expression i = Mna.AddUnknown("i" + Name);

            Mna.AddPassiveComponent(Anode, Cathode, i);
            Mna.AddEquation(Anode.V, Cathode.V);
            return(i);
        }
示例#7
0
 public override void Analyze(Analysis Mna)
 {
     // Infinite input impedance.
     Mna.AddPassiveComponent(Positive, Negative, 0);
     // Unknown output current.
     Mna.AddTerminal(Out, Mna.AddUnknown("i" + Name));
     // The voltage between the positive and negative terminals is 0.
     Mna.AddEquation(Positive.V, Negative.V);
 }
示例#8
0
        public static Expression Analyze(Analysis Mna, string Name, Node Anode, Node Cathode, Expression L)
        {
            // Define a new unknown for the current through the inductor.
            Expression i = Mna.AddUnknown("i" + Name);
            Mna.AddPassiveComponent(Anode, Cathode, i);
            // V = L*di/dt
            Mna.AddEquation(Anode.V - Cathode.V, L * D(i, t));

            return i;
        }
示例#9
0
        public static Expression Analyze(Analysis Mna, string Name, Node Anode, Node Cathode, Expression C)
        {
            // Ensure that V is not multiple variables.
            Expression V = Mna.AddUnknownEqualTo("V" + Name, Anode.V - Cathode.V);
            // i = C*dV/dt
            Expression i = C * D(V, t);

            Mna.AddPassiveComponent(Anode, Cathode, i);
            return(i);
        }
示例#10
0
        public static Expression Analyze(Analysis Mna, string Name, Node Anode, Node Cathode, Expression L)
        {
            // Define a new unknown for the current through the inductor.
            Expression i = Mna.AddUnknown("i" + Name);

            Mna.AddPassiveComponent(Anode, Cathode, i);
            // V = L*di/dt
            Mna.AddEquation(Anode.V - Cathode.V, L * D(i, t));

            return(i);
        }
示例#11
0
        public static Expression Analyze(Analysis Mna, string Name, Node Anode, Node Cathode, Expression IS, Expression n, Expression VT)
        {
            // V = Va - Vc
            Expression Vac = Mna.AddUnknownEqualTo("V" + Name, Anode.V - Cathode.V);

            // Evaluate the model.
            Expression i = IS * (LinExp(Vac / (n * VT)) - 1);
            i = Mna.AddUnknownEqualTo("i" + Name, i);

            Mna.AddPassiveComponent(Anode, Cathode, i);

            return i;
        }
示例#12
0
 public static Expression Analyze(Analysis Mna, string Name, Node Anode, Node Cathode, Expression R)
 {
     // i = V/R
     if (R.EqualsZero())
     {
         return(Conductor.Analyze(Mna, Name, Anode, Cathode));
     }
     else
     {
         Expression i = (Anode.V - Cathode.V) / R;
         Mna.AddPassiveComponent(Anode, Cathode, i);
         return(i);
     }
 }
示例#13
0
 public static Expression Analyze(Analysis Mna, string Name, Node Anode, Node Cathode, Expression R)
 {
     // i = V/R
     if (R.EqualsZero())
     {
         return Conductor.Analyze(Mna, Name, Anode, Cathode);
     }
     else
     {
         Expression i = (Anode.V - Cathode.V) / R;
         Mna.AddPassiveComponent(Anode, Cathode, i);
         return i;
     }
 }
示例#14
0
        public static Expression Analyze(Analysis Mna, string Name, Node Anode, Node Cathode, Expression IS, Expression n, Expression VT)
        {
            // V = Va - Vc
            Expression Vac = Mna.AddUnknownEqualTo("V" + Name, Anode.V - Cathode.V);

            // Evaluate the model.
            Expression i = IS * (LinExp(Vac / (n * VT)) - 1);

            i = Mna.AddUnknownEqualTo("i" + Name, i);

            Mna.AddPassiveComponent(Anode, Cathode, i);

            return(i);
        }
示例#15
0
        public override void Analyze(Analysis Mna)
        {
            Expression Ip = Mna.AddUnknown("i" + Name + "p");
            Mna.AddPassiveComponent(pa, pc, Ip);
            Expression Isa = Mna.AddUnknown("i" + Name + "sa");
            Expression Isc = Mna.AddUnknown("i" + Name + "sc");
            Mna.AddTerminal(sa, -Isa);
            Mna.AddTerminal(sc, Isc);
            Mna.AddTerminal(st, Isa - Isc);
            Mna.AddEquation(Ip * turns, Isa + Isc);

            Expression Vp = pa.V - pc.V;
            Expression Vs1 = sa.V - st.V;
            Expression Vs2 = st.V - sc.V;
            Mna.AddEquation(Vp, Vs1 * turns * 2);
            Mna.AddEquation(Vp, Vs2 * turns * 2);
        }
示例#16
0
        public override void Analyze(Analysis Mna)
        {
            Expression Ip = Mna.AddUnknown("i" + Name + "p");

            Mna.AddPassiveComponent(pa, pc, Ip);
            Expression Isa = Mna.AddUnknown("i" + Name + "sa");
            Expression Isc = Mna.AddUnknown("i" + Name + "sc");

            Mna.AddTerminal(sa, -Isa);
            Mna.AddTerminal(sc, Isc);
            Mna.AddTerminal(st, Isa - Isc);
            Mna.AddEquation(Ip * turns, Isa + Isc);

            Expression Vp  = pa.V - pc.V;
            Expression Vs1 = sa.V - st.V;
            Expression Vs2 = st.V - sc.V;

            Mna.AddEquation(Vp, Vs1 * turns * 2);
            Mna.AddEquation(Vp, Vs2 * turns * 2);
        }
示例#17
0
 public static void Analyze(Analysis Mna, Node Anode, Node Cathode, Expression Current)
 {
     Mna.AddPassiveComponent(Anode, Cathode, Current);
 }
示例#18
0
 public override void Analyze(Analysis Mna)
 {
     // Infinite input impedance.
     Mna.AddPassiveComponent(Positive, Negative, 0);
     // Unknown output current.
     Mna.AddTerminal(Out, Mna.AddUnknown("i" + Name));
     // The voltage between the positive and negative terminals is 0.
     Mna.AddEquation(Positive.V, Negative.V);
 }
示例#19
0
 public static void Analyze(Analysis Mna, Node Anode, Node Cathode, Expression Current)
 {
     Mna.AddPassiveComponent(Anode, Cathode, Current);
 }