Hi all,
I’ve just released version 1.0 of *impulso-mna*, a Python-based analog circuit simulator built around Modified Nodal Analysis.
The main goal is not to replace tools like LTspice, but to provide a lightweight simulator that integrates directly into Python workflows (e.g. optimization, parameter sweeps, algorithmic circuit design).
I originally built this while working on a Foster–Seeley FM detector, where I needed to explore how a coupling capacitor affects resonance. Doing that kind of parameter sweep and analysis in traditional SPICE tools felt cumbersome, which led me to build a Python-native approach.Key characteristics:
* Pure Python (only depends on NumPy)
* No SPICE backend required
* Easy integration into scripts and optimization loops
* Platform independent
* Useful for learning and experimenting with MNA
Current features:
* DC, AC, transient, and sweep analysis
* Components: R, C, L, mutual inductance
* Sources: AC/DC voltage and current
* Controlled sources (VCCS, CCCS, VCVS, CCVS)
* Nonlinear devices: diode, BJT (npn/pnp)
* Ideal op-amp
* Support for building compound/lumped components
The solver is based on standard MNA formulations and companion models for dynamic elements.
Source code:
[https://github.com/kvdijken/impulso-mna](
https://github.com/kvdijken/impulso-mna)
Available on PyPI as **impulso-mna**.
This 1.0 version is intended to be feature-stable and maintained. A more experimental branch (*impulsox-mna*) will be used to explore additional features.
I’d be very interested in feedback, especially on:
* correctness of device models
* numerical stability / convergence
* missing features
Some example results (BJT curves, rectifier, etc.) are attached.
Regards,
Koen