The README assumed Windows throughout. Setup now gives the interpreter
path, deploy command and venv location for Windows, macOS and Linux
(venv paths verified against KiCad 10 sources: GetUserCachePath +
python-environments), plus a Platform notes section: macOS bundles
Python 3.9.13 so pip resolves an older wheel stack (KiCad installs with
--only-binary :all:), and windows there may open behind KiCad; Linux
needs python3-venv on Debian/Ubuntu.
pyamg has never published Linux aarch64 wheels, and with KiCad's
wheels-only pip one unresolvable requirement kills the whole venv
build - so an environment marker skips pyamg there and the solver
falls back to Jacobi-CG, which it already supports.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Hybrid rasterizer: PIL scanline fill for the bulk, with cells in a
~2 px band around each ring edge re-tested exactly against the
polygon - cell-for-cell identical to the old center-in-polygon pass
(equivalence test added) but O(vertices + cells) instead of
O(vertices x cells). Measured 4.5 s -> 0.11 s at 1.45M cells with
8.8k polygon vertices.
- AMG-preconditioned CG (pyamg, new requirement) above 500k unknowns:
measured 7.0 s vs 15.3 s spsolve at 1.4M unknowns at a fraction of
the memory, R identical to 1e-6; the old Jacobi-CG (kept as fallback
when pyamg is missing) needed tens of minutes there. spsolve stays
the default below 500k where it is exact and fastest.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
DC/AC resistance, power dissipation, and via/injection-area currents of
copper zone fills. KiCad 10 IPC-API plugin (kicad-python/kipy):
multi-layer via-coupled FDM solver, multi-part terminals via User.1/User.2
marker layers, pads as contacts, uniform-injection and equipotential
contact models, per-foil skin effect, optional solder/copper buildup on
mask openings. 54-case test suite incl. exact analytic references.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>