Operating point and frequency response
Updated v2.4.4At a glance
- DC operating point solves the settled circuit — capacitors open, inductors shorted — and tables every node voltage and device current
- The same solve seeds a transient run, so playback starts settled instead of jolting at t = 0
- Frequency response sweeps a source on a log grid and plots gain and phase from the linearised operating point
- Pick the source to drive, the outputs to plot, and the start, stop and point count
- Every device that carries a branch current reports its real current, not whatever the last stamp left behind
- Both open from the transport — ⚡ for operating point, ∿ for frequency response
Two analyses sit on the simulation transport beside the transient run.
DC operating point — ⚡
Solves the circuit at rest: capacitors open, inductors shorted, AC sources at their DC offset. You get a table of every node voltage and every device current — the bias check you'd do first on paper.
It is also what seeds a transient run, so playback starts from the settled state rather than jolting at t = 0. Invisible on a resistive divider; the difference between a clean start and a phantom turn-on transient on anything with a capacitor in it. Restart (⟲) re-solves it, which a plain stop-then-play does not.
Currents are read from the final solution rather than from whatever the last iteration happened to leave behind. A device that carries a branch current — a source, an inductor, a transformer, an opamp — latches its current at the end of a timestep, and an operating point never commits one, so reading it the lazy way gives a table full of 0 A that looks exactly like a solver bug.
Frequency response — ∿
Pick a source to drive, the outputs to plot, and a start frequency, stop frequency and point count. The circuit is linearised at its operating point and solved per frequency on a log grid, giving gain in dB and phase in degrees.
An RC low-pass comes out at −3 dB and −45° at its analytic corner, rolling off at −20 dB/decade — which is what the engine's own tests assert against, since a regression suite that only compares to a previous run will happily lock in a wrong simulator.
What the engine does under the hood, and why you'd care
Two decisions show up in what you see:
A linear circuit at a fixed timestep is factored once, and every step after that is a substitution. That's what makes an interactive simulation affordable at all — and it's why changing a value costs a re-factor while dragging a variable supply doesn't wipe your traces. Any circuit with a nonlinear device in it re-factors per iteration, which is unavoidable.
The transient integration is backward Euler, chosen deliberately over trapezoidal. Trapezoidal is more accurate but rings on switching edges, and ringing that isn't in the circuit reads as a bug. Backward Euler is unconditionally stable, which matters far more when you're driving the thing by hand. The cost is a slight first-order lag — an RC curve that trails the analytic exponential a little while having exactly the right shape and time constant.