Skip to main content

Symbolic electronic circuit analysis

Project description

SymCircuit

Provides classes to do electronic circuit analysys using symbolic equations. For example, it is possible to automatically find equations using Kirchhoff's laws and solve them for specific properties.

As a bonus, the equation solving part can be used independently of the rest.

Installation

Minimal install using pip (just the equation solver):

pip install SymCircuit

Full install using pip:

pip install SymCircuit[EE]

Usage

For more detailed examples, see the files in directory examples/.

Example of using a netlist for a random arrangement of elements:

from io import StringIO

import plotkit.plotkit as pk

from symcircuit.bode import plot_system
from symcircuit.spice import Circuit
from symcircuit.system import SymbolicSystem

circ = Circuit()
circ.parse_spice_netlist(StringIO(r"""
* examples\network1.asc
R1 N001 0 1k
R2 N002 0 3k
C1 N002 0 50µ
L1 N001 N002 120µ
V1 N001 0 AC 1
.ac dec 30 10 10000
.backanno
.end
"""))

# translate to equation system
s = SymbolicSystem(circ.to_system_description())

# Add "measurement" characteristics
s.extend(SymbolicSystem("""
Zsys == V1 / i_V1
"""))
print(s.info())

# find transfer function
impedance = s.focus("Zsys")["Zsys"]
print("System Impedance = ", impedance)
# System Impedance =  -R1*(C1*L1*R2*s**2 + L1*s + R2)/(C1*L1*R2*s**2 + L1*s + R1*(C1*R2*s + 1) + R2)

# plot parameterised transfer function
v = dict(
    R1=1e3,
    R2=3e3,
    C1=50e-6,
    L1=120e-6,
)
fig = plot_system(impedance, 10, 50000, values=v, amplitude_linear=True, return_fig=True)
pk.finalize(fig)

Result: Example Output

Credits:

  • NetworkX is used for graph analysis
  • The focus and seek methods are based on the implementation proposed by Christopher Smith @smichr in a sympy issue.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

SymCircuit-0.2.0-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file SymCircuit-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: SymCircuit-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for SymCircuit-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 013361b7d0a6c9aec505d84288bf3620ed8c6918126ecca71ab170af46a998b0
MD5 b3bb7bf61ae702cba4c596429f3f3cc2
BLAKE2b-256 b52c6b9fa47b936ac324d21b058d38f1964d684ddb37dd67d681aeacafef9e39

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page