A lightweight python library for symbolic circuit analysis.
Documentation is available on GitHub Pages.
SymCirc currently offers symbolic and semisymbolic DC, AC and transient small frequency circuit analysis. It supports the following ideal circuit elements: resistors, inductors, capacitors, independent sources, controlled sources, ideal operational amplifiers and coupled inductors. Transient simulation allows for initial conditions of capacitors and standard/coupled inductors.
Use this command to install via pip
pip install symcirc
SymCirc is a light-weight package. It needs only the SymPy package, which is used for computations. It should get automatically installed with SymCirc when installed using pip.
To achieve better performance install the gmpy2 package. If gmpy2 is installed, SymPy automatically uses it for integer operations. It significantly impacts semi-symbolic analysis performance.
SymEngine is an optional symbolic core for SymPy. To use the SymEngine core, run your script with the environment variable USE_SYMENGINE=1
, or run AnalyseCircuit with an optional argument use_symengine=True
Example: symcirc.AnalyseCircuit(netlist, use_symengine=True)
Or you can build with this command:
python setup.py sdist bdist_wheel
from symcirc import *
# Insert your netlist
netlist = """CIRCUIT NAME - First line is always the circuit name
* This is a comment
R1 1 0 2k
R2 3 0 (1/G)
V1 2 1 dc 1 ac 1
R3 3 4 6k
C1 3 4 1n
R4 4 0 10k
V2 4 0 dc 5
I1 3 2 dc 1m ac 0
"""
# Execute netlist simulation
analysis_type = "DC" # or "AC", "TF", "tran"
method = "tableau" # Default is "two_graph_node", which is faster, but currently lacks coupled inductors.
symbolic = True # If set to False, only elements which have no numeric value are left as symbolic. In this case only R2 stays symbolic.
circuit = AnalyseCircuit(netlist, analysis_type, symbolic=True, method=method)
all_values = circuit.component_values("all")
latex_formatted_values = to_latex(all_values)
print(all_values)
There are many example netlists available in the netlists folder. This folder contains a database of netlists which are used to automatically test every new version of SymCirc.