Skip to content

Commit

Permalink
Don't add unknowns for anonymous constants or other simple expressions
Browse files Browse the repository at this point in the history
  • Loading branch information
dsharlet committed Dec 4, 2024
1 parent c01596e commit 5aa0347
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 4 deletions.
6 changes: 5 additions & 1 deletion Circuit/Analysis.cs
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,11 @@ public Expression AddUnknownEqualTo(string Name, Expression Eq)
/// </summary>
/// <param name="Eq"></param>
/// <returns></returns>
public Expression AddUnknownEqualTo(Expression Eq) { return AddUnknownEqualTo(AnonymousName(), Eq); }
public Expression AddUnknownEqualTo(Expression x) {
if (x is Constant) return x;
if (x is Call c && c.Target is UnknownFunction) return x;
return AddUnknownEqualTo(AnonymousName(), x);
}

/// <summary>
/// Add initial conditions to the system.
Expand Down
6 changes: 4 additions & 2 deletions Circuit/Components/VacuumTubes/Triode.cs
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,8 @@ public override void Analyze(Analysis Mna)
break;
case TriodeModel.Koren:
Expression E1 = Ln1Exp(Kp * (1.0 / Mu + Vgk * Binary.Power(Kvb + Vpk * Vpk, -0.5))) * Vpk / Kp;
ip = Mna.AddUnknownEqualTo(Call.If(E1 > 0, 2d * (E1 ^ Ex) / Kg, 0));
ip = Call.If(E1 > 0, 2d * (E1 ^ Ex) / Kg, 0);
ip = Mna.AddUnknownEqualTo("Ip", ip);

var vg = (Real)Vg;
var knee = (Real)Kn;
Expand All @@ -156,7 +157,8 @@ public override void Analyze(Analysis Mna)
var b = (knee - vg) / (2 * knee * rg1);
var c = (-a * Binary.Power(vg - knee, 2)) - (b * (vg - knee));

ig = Mna.AddUnknownEqualTo(Call.If(Vgk < vg - knee, 0, Call.If(Vgk > vg + knee, (Vgk - vg) / rg1, a * Vgk * Vgk + b * Vgk + c)));
ig = Call.If(Vgk < vg - knee, 0, Call.If(Vgk > vg + knee, (Vgk - vg) / rg1, a * Vgk * Vgk + b * Vgk + c));
ig = Mna.AddUnknownEqualTo("Ig", ig);
ik = -(ip + ig);
break;
case TriodeModel.DempwolfZolzer:
Expand Down
8 changes: 7 additions & 1 deletion Circuit/Components/VoltageSource.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ public static void Analyze(Analysis Mna, string Name, Node Anode, Node Cathode,
{
// Unknown current.
Mna.AddPassiveComponent(Anode, Cathode, Mna.AddUnknown("i" + Name));

V = Mna.AddUnknownEqualTo(V);

// Set the voltage.
Mna.AddEquation(Anode.V - Cathode.V, V);
}
Expand All @@ -35,7 +38,10 @@ public static void Analyze(Analysis Mna, string Name, Node Anode, Node Cathode,
Mna.AddInitialConditions(InitialConditions);
}
public static void Analyze(Analysis Mna, Node Anode, Node Cathode, Expression V) { Analyze(Mna, Mna.AnonymousName(), Anode, Cathode, V); }
public static void Analyze(Analysis Mna, Node Anode, Node Cathode, Expression V, Arrow InitialConditions) { Analyze(Mna, Mna.AnonymousName(), Anode, Cathode, V, InitialConditions); }
public static void Analyze(Analysis Mna, Node Anode, Node Cathode, Expression V, Arrow InitialConditions)
{
Analyze(Mna, Mna.AnonymousName(), Anode, Cathode, V, InitialConditions);
}

public override void Analyze(Analysis Mna) { Analyze(Mna, Name, Anode, Cathode, Voltage); }

Expand Down

0 comments on commit 5aa0347

Please sign in to comment.