Quickstart
Run the workbench with Docker
Section titled “Run the workbench with Docker”The fastest path needs nothing but Docker — the published image serves the full workbench, no install (new in v0.34):
docker run --rm -p 8000:8000 stevenmburns/antennaknobs:latest# -> http://localhost:8000(See DOCKER.md for compose, mounting your own designs, and the optional NEC2 engine.)
Install with Python
Section titled “Install with Python”To use the library — or hack on designs in your editor — install from PyPI.
antennaknobs and its engine momwire ship prebuilt wheels, so a plain
install needs no compiler:
python3 -m venv .venv && source .venv/bin/activatepip install --upgrade pip
pip install "antennaknobs[web]"This install serves the same web workbench as the Docker image:
uvicorn antennaknobs.web.server:app # then open http://127.0.0.1:8000Pick a design from the dropdown and drag its knobs — the pattern, SWR, and impedance re-solve live.
Solve from Python
Section titled “Solve from Python”Every design is an AntennaBuilder. Wrap one in an
Antenna and ask for its feed-point impedance:
from antennaknobs import Antennafrom antennaknobs.designs.dipoles.invvee import Builder
ant = Antenna(Builder()) # an inverted-vee dipole, default parametersprint(ant.impedance()) # -> [(48.6-8.8j)] ohms, one entry per feed portTune a knob and re-solve — parameters are plain attributes:
b = Builder()b.length_factor = 1.0 # stretch the armsprint(Antenna(b).impedance())Antenna also gives you the far-field pattern, a frequency sweep of the
impedance, and the current distribution:
ant.far_field() # full-sphere far-field ringsant.impedance_sweep(...) # impedance across a frequency rangeBy default Antenna uses a finite ground; pass ground="free" (or a
("finite", eps_r, sigma) tuple) to change it.