# 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: ``` ... ``` 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 ``` ![test5](http://fwei.tk/git/circgraph/plain/tests/test5.png) See the `testX.txt` files for further examples.