A first OP example¶
Performing numeric Operating Point (OP) simulations with ahkab
of
linear networks – like those in undergrad network theory textbooks– is
really straight-forward.
Circuit description¶
First of all, we need the ahkab
library to be imported:
import ahkab
Next, we create a new circuit object. The only parameter you need is the name, which in the following is ‘Simple Example Circuit’.
mycir = ahkab.Circuit('Simple Example Circuit')
Now’s time to add the elements. The circuit object we just created
(mycir
) offers plenty of convenience
methods
to add elements to your circuit instances.
The general structure of the methods signature is:
add_<element_type>(part_id, node1, node2, value)
For example, we have an add_resistor
method, with signature:
add_resistor(part_id, n1, n2, value)
Our circuit is described by:
mycir.add_resistor('R1', 'n1', mycir.gnd, value=5)
mycir.add_vsource('V1', 'n2', 'n1', dc_value=8)
mycir.add_resistor('R2', 'n2', mycir.gnd, value=2)
mycir.add_vsource('V2', 'n3', 'n2', dc_value=4)
mycir.add_resistor('R3', 'n3', mycir.gnd, value=4)
mycir.add_resistor('R4', 'n3', 'n4', value=1)
mycir.add_vsource('V3', 'n4', mycir.gnd, dc_value=10)
mycir.add_resistor('R5', 'n2', 'n4', value=4)
Defining the simulation and running it¶
Next, we need the OP simulation object. And then we start the simulation.
opa = ahkab.new_op()
r = ahkab.run(mycir, opa)['op']
The simulation takes a few milliseconds.
Inspecting the results¶
Simply printing the results with print
formats the simulation
results in a nice table:
print r
OP simulation results for 'Simple Example Circuit'.
Run on 2015-05-09 12:38:54, data file /var/folders/9y/nry2qj0962l38pqk3_8_8ndm0000gn/T/tmpiF4Jvs.op.
Variable Units Value Error %
---------- ------- --------- ------------ ---
VN1 V -3.86364 3.86369e-12 0
VN2 V 4.13636 -4.13614e-12 0
VN3 V 8.13636 -8.13571e-12 0
VN4 V 10 -1.00027e-11 0
I(V1) A -0.772727 0 0
I(V2) A -0.170455 0 0
I(V3) A -3.32955 0 0
The op_solution class also provides an easy to use dictionary-like interface to access your data, which is described in the documentation.
Conclusions¶
We hope this example, while basic, allows you to get more confident with
using ahkab
, especially to simulate linear networks.
Don’t forget to report any bugs you may run into – it happens! – and have fun doing electronics! :)