[Ktechlab-devel] The state of the engine report.

Alan Grimes agrimes at speakeasy.net
Thu Oct 29 05:03:21 UTC 2009


In recent weeks, all of my changes had to do with the Component
heirarchy, fixing pins and wires, and a pass through the connector
hell-hole.

I've also added some compile-time switches to toggle strict error
checking in the engine, that's all.

Okay, so what in god's name is going on here? Well, I'll tell you.


Problem 1:

The row permutation algorithm is broken.

Many cases the engine will be given a pathalogical but non-broken
matrix. A matrix for which there is a solution but the current
single-pass permutation system will not find the correct permutation and
then the thing goes crazy. When this happens, the simulation goes crazy
showing absurdly large currents and voltages. Want to know why? The
permutation loop. Fixing it will not be easy and will involve carefully
evaluating how changes to that loop will affect the partial solution
cache that ktechlab owes much of its speed to.

There are a number of things that can be done to further improve the
performance of the linear algebra engine but these will not earn you
more than 5% over what we have now. The slowness we see in profiling is
due to the issues below. (It might also simply be inherent to the
problem at hand...)


Problem 2: Nonlinear and all of its children.

The reason perform non-linear is slow is two reasons, first, inherent
slowness in the system and second, because the models for a number of
the components are horribly, horribly wrong. I'm about 85% sure that the
computation of the conductance of the diode in forward bias is correct.
I'm not at all sure about the current calculation. =( Also, correcting
the conductance in the diode seems to have broken something about Jfet,
which had seemed to be doing very well recently. =( (Not all of these
changes are in SVN).

To better understand WTF is going on here, the word of the day may as
well be "Numerical Integration." What is basically going on is that the
nonlinear classes generate values for the derivative of the conductance
and then by iteration attempt to converge on the solution. If this
works, everything's happy. If it doesn't, well...


Problem 3: My current diodeTest circuit is showing some faults that I
can't readily explain. The test of the many different LED circuits seems
to stall out even though the engine is configured to keep going no
matter what. I have no idea what's really going on there. =(


-- 
New president: Here we go again...
Chemistry.com: A total rip-off.
Powers are not rights.





More information about the Ktechlab-devel mailing list