This is a tool for calculating equivalent resistances/impedances/capacitances for a circuit (represented as a graph, hence "circuit graph"), written in C++.
This program exists for three reasons: boredom, a desire to brush up on my C++, and -- most importantly -- laziness. Why do tedious arithmetic when you can spend hours writing a program to do it for you?
circgraph will read a circuit from stdin (see below) and
output the equivalent resistance between the source and sink. The
flag will switch the calculation mode to capacitance.
circgraph can output graphs in Graphviz's
dot format to stdout for
visualization. Pass stdout to
tests/testgraph.sh to try (requires
graphviz and evince).
circgraph represents circuits as weighted undirected graphs, with
nodes representing electrically common elements (i.e. a wire) and
edges and their weights representing either resistors or capacitors
(depending on command-line options).
circgraph takes input from stdin in the following format:
<source_node> <sink_node> <node1> <node 2> <weight> <node1> <node 2> <weight> ...
The first line specifies the names of the source and sink nodes. All subsequent lines represent a weighted edge with the names of the two nodes and the weight of the edge. Node names are created upon use.
An example input (test5.txt) and its corresponding graph are given below:
a c a b 1 a c 1 b c 1
testX.txt files for further examples.