Things that can go wrong

Voltage sources in parallel



V1 1 0 10.0
V2 1 0 10.2
.print dc v(1) i(V1) i(V2)

Here we have V1 and V2 both driving the same node at about 10 volts. Actually, V2 is very slightly higher than 10 volts so there will be some argument between V1 and V2 as to exactly what the final voltage at node 1 really is. You should see that huge currents are flowing through the supplies (10,000 amps) just due to this small voltage difference. Also note that gnucap does not throw in the towel and give up, nor does it fail to converge… the answer that it gets for v(1) is a compromise, halfway between the two sources.

What is does is introduce a slight imperfection in the voltage sources so that they do have a small internal series resistor. This allows it to make the best guess that it can in a difficult situation. How much is this resistance? You can find out like so:


Look at the value of the option called “short” (near the middle of the block of options), this is the value (in ohms) of the internal resistance of a voltage source. The “u” character means “micro” or 1e-6 so the default value of a short circuit is 1e-5 ohms. You might decide that a different short circuit value is more appropriate for running the above circuit so you can type (from the prompt):

options short=0.5
get eg4.ckt

Which should show you the same voltage (10.1) but now the current has reduced to only one fifth of an Amp (still not small but a lot more reasonable if you were building this with real supplies). Other option values can be altered in much the same way and input files can contain ”.options” command lines in order to set these options whenever the circuit is loaded.

Current sources in series



I1 0 1 2.0001
I2 1 0 2.0
.print dc v(1) i(I1) i(I2)

The case of putting two current sources in series is much the same concept as two voltage sources in parallel. However notice that gnucap copes with it in a different manner. It cannot find a compromise current that is partway between the two sources and it always gives a huge value for the voltage at node 1. At least it doesn't crash and it does give results that give some suggestion as to where the problem might be. There is an option “gmin” that introduces resistance into a current source, or you can explicitly add these resistors if you like by putting the resistor in parallel with the current source.

What if you had a big, complex circuit, you messed up by putting two current sources in series but you never thought about checking the strange node? How would you ever know that the circuit was broken? Try this exercise:

get eg5.ckt
alarm dc v(*)(-1e3,1e3)

Now you get a warning whenever any component gets more that 1000 volts across it. This can be used to test component breakdown if you know that you are using components that cannot tolerate high voltages. It can also be used to ensure that your simulated circuit stays within what you might expect to be the absolute maximum values.

gnucap/manual/examples/things_that_can_go_wrong.txt · Last modified: 2015/12/11 15:39 (external edit)
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Run by Debian Driven by DokuWiki