Skip to content

meowstr/circuitsim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

circuitsim

Refer to my tutorial at https://github.com/meowstr/circuitsim_tutorial to get an idea of how it works.

Supports:

  • Current sources
  • Voltage sources
  • Resistors
  • Diodes
  • BJT's (NPN and PNP)
  • Capacitors (Transient analysis only)
  • Inductors (Transient analysis only)

Operating point analysis example

Input file (test.txt):

v1 0 5v 5
v2 0 9v 9
r1 5v v1 1000
r2 v1 v3 1000
r3 9v v2 1000
d1 v3 0
d2 v2 v3 

Output:

$ ./sim test.txt
unknowns: i_v1 5v i_v2 9v v1 v3 v2
equations:
        name: vsource
                v 0 5v 5
        name: 5v
                i_v1 +
                r 5v v1 1000
        name: vsource
                v 0 9v 9
        name: 9v
                i_v2 +
                r 9v v2 1000
        name: v1
                r 5v v1 1000
                r v1 v3 1000
        name: v3
                r v1 v3 1000
                d v3 0
                d v2 v3
        name: v2
                r 9v v2 1000
                d v2 v3

system at 0: -5.00e+00  0.00e+00 -9.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00
jacobian at 0:
         0.00e+00  1.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00
         1.00e+00 -1.00e-03  0.00e+00  0.00e+00  1.00e-03  0.00e+00  0.00e+00
         0.00e+00  0.00e+00  0.00e+00  1.00e+00  0.00e+00  0.00e+00  0.00e+00
         0.00e+00  0.00e+00  1.00e+00 -1.00e-03  0.00e+00  0.00e+00  1.00e-03
         0.00e+00  1.00e-03  0.00e+00  0.00e+00 -2.00e-03  1.00e-03  0.00e+00
         0.00e+00  0.00e+00  0.00e+00  0.00e+00  1.00e-03 -1.00e-03  0.00e+00
         0.00e+00  0.00e+00  0.00e+00  1.00e-03  0.00e+00  0.00e+00 -1.00e-03
root_newton: F(  0.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00 ) = -5.00e+00  0.00e+00 -9.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00
root_newton_step: allocate (n = 7)
root_newton_step: backtrack (dx = 9.00e+00 df = 7.23e+73)
root_newton_step: backtrack (dx = 4.50e+00 df = 2.69e+30)
root_newton_step: backtrack (dx = 2.25e+00 df = 5.18e+08)
root_newton: F(  0.00e+00  6.25e-01  0.00e+00  1.12e+00  6.25e-01  6.25e-01  1.12e+00 ) = -4.38e+00  0.00e+00 -7.88e+00  0.00e+00  0.00e+00 -7.15e-03 -4.85e-05
root_newton_step: backtrack (dx = 7.88e+00 df = 8.25e+41)
root_newton_step: backtrack (dx = 3.94e+00 df = 6.33e+18)
root_newton_step: backtrack (dx = 1.97e+00 df = 1.75e+07)
root_newton_step: backtrack (dx = 9.84e-01 df = 2.92e+01)
root_newton: F(  1.37e-04  8.98e-01  3.26e-04  1.62e+00  7.62e-01  6.25e-01  1.29e+00 ) = -4.10e+00  5.42e-20 -7.38e+00 -1.08e-19 -1.08e-19  3.05e-02 -3.73e-02
root_newton: F(  2.18e-03  5.00e+00  7.72e-03  9.00e+00  2.82e+00  6.34e-01  1.28e+00 ) =  0.00e+00  4.34e-19  0.00e+00  8.67e-19  0.00e+00  8.70e-03 -9.27e-03
root_newton: F(  2.18e-03  5.00e+00  7.73e-03  9.00e+00  2.82e+00  6.33e-01  1.27e+00 ) =  0.00e+00 -4.34e-19  0.00e+00  0.00e+00  4.34e-19  2.10e-03 -2.12e-03
root_newton: F(  2.18e-03  5.00e+00  7.74e-03  9.00e+00  2.82e+00  6.33e-01  1.26e+00 ) =  0.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00  2.11e-04 -2.11e-04
root_newton: F(  2.18e-03  5.00e+00  7.74e-03  9.00e+00  2.82e+00  6.33e-01  1.26e+00 ) =  0.00e+00  0.00e+00  0.00e+00 -8.67e-19 -4.34e-19  2.77e-06 -2.77e-06
root_newton: F(  2.18e-03  5.00e+00  7.74e-03  9.00e+00  2.82e+00  6.33e-01  1.26e+00 ) =  0.00e+00  0.00e+00  0.00e+00  8.67e-19  4.34e-19  4.91e-10 -4.91e-10
root_newton: F(  2.18e-03  5.00e+00  7.74e-03  9.00e+00  2.82e+00  6.33e-01  1.26e+00 ) =  0.00e+00 -4.34e-19  0.00e+00 -8.67e-19  0.00e+00  1.30e-17  0.00e+00
root_newton: F(  2.18e-03  5.00e+00  7.74e-03  9.00e+00  2.82e+00  6.33e-01  1.26e+00 ) =  0.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00  1.30e-17  0.00e+00
root_newton: F(  2.18e-03  5.00e+00  7.74e-03  9.00e+00  2.82e+00  6.33e-01  1.26e+00 ) =  0.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00  1.30e-17  0.00e+00
root_newton: F(  2.18e-03  5.00e+00  7.74e-03  9.00e+00  2.82e+00  6.33e-01  1.26e+00 ) =  0.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00  1.30e-17  0.00e+00
root_newton: F(  2.18e-03  5.00e+00  7.74e-03  9.00e+00  2.82e+00  6.33e-01  1.26e+00 ) =  0.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00  1.30e-17  0.00e+00
root_newton: F(  2.18e-03  5.00e+00  7.74e-03  9.00e+00  2.82e+00  6.33e-01  1.26e+00 ) =  0.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00  1.30e-17  0.00e+00
root_newton: F(  2.18e-03  5.00e+00  7.74e-03  9.00e+00  2.82e+00  6.33e-01  1.26e+00 ) =  0.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00  1.30e-17  0.00e+00
root_newton: F(  2.18e-03  5.00e+00  7.74e-03  9.00e+00  2.82e+00  6.33e-01  1.26e+00 ) =  0.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00  1.30e-17  0.00e+00
root_newton: F(  2.18e-03  5.00e+00  7.74e-03  9.00e+00  2.82e+00  6.33e-01  1.26e+00 ) =  0.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00  1.30e-17  0.00e+00
root_newton: F(  2.18e-03  5.00e+00  7.74e-03  9.00e+00  2.82e+00  6.33e-01  1.26e+00 ) =  0.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00  1.30e-17  0.00e+00
root_newton: F(  2.18e-03  5.00e+00  7.74e-03  9.00e+00  2.82e+00  6.33e-01  1.26e+00 ) =  0.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00  1.30e-17  0.00e+00
root_newton: F(  2.18e-03  5.00e+00  7.74e-03  9.00e+00  2.82e+00  6.33e-01  1.26e+00 ) =  0.00e+00  0.00e+00  0.00e+00  0.00e+00  0.00e+00  1.30e-17  0.00e+00

residual: 1.301043e-17
solution:
         i_v1 =  2.183490e-03
           5v =  5.000000e+00
         i_v2 =  7.740174e-03
           9v =  9.000000e+00
           v1 =  2.816510e+00
           v3 =  6.330193e-01
           v2 =  1.259826e+00

Transient analysis example

Input file (tran.txt):

v1 0 5v 5
r1 5v 1 1000
c1 1 0 0.002
.step 0.1 200
.plot 1

Command:

$ ./tran tran.txt

Output:

About

A circuit simulator that doesn't hide the math

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors