circgraph
This is a tool for calculating equivalent resistances/impedances/capacitances for a circuit (represented as a graph, hence "circuit graph"), written in C++.
Motivation
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?
Usage
Compile with:
make
Run as:
./circgraph
By default, circgraph
will read a circuit from stdin (see below) and
output the equivalent resistance between the source and sink. The -C
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).
Circuit Input
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
See the testX.txt
files for further examples.