Skip to content

Add a Yagi designer wizard, completing the five-wizard set - #7

Merged
skip17331 merged 1 commit into
mainfrom
yagi-wizard
Jun 3, 2026
Merged

Add a Yagi designer wizard, completing the five-wizard set#7
skip17331 merged 1 commit into
mainfrom
yagi-wizard

Conversation

@skip17331

Copy link
Copy Markdown
Owner

What

The fifth and final design wizard, now that per-element Yagi control exists (PR #6). Pick a band, the number of elements, and the boom height; the wizard lays out a tapered beam — reflector + driven + directors that shorten progressively and sit at a widening spacing — and turns on per-element control with those elements.

This completes the design-wizard suite: trapped dipole, inverted-L, multiband vertical, fan dipole, and now Yagi.

How

  • results/yagi_design.py — the tapered layout: reflector (1.05×, 0.15 λ behind), driven, then directors stepping out (first at 0.10 λ, then 0.20 λ apart) and shortening ~1%/director to a floor. A stronger starting point than the uniform rules-of-thumb auto-design — still a starting design, not numerically optimized (§16).
  • ui/yagi_wizard.py — band combo + element count (2–10) + boom height.
  • MainWindow.apply_yagi_design — switches to a Yagi, sets frequency + boom height, promotes to Advanced, fills the per-element editor, and checks "Customise Yagi elements" so the build uses the designed elements (set before the toggle so the auto-seed doesn't overwrite).

Verified end to end: a designed 4-element beam solves at ~12.8 dBi / 16 dB F-B.

Tests

tests/test_yagi_wizard.py (+8): layout + taper ordering, the two-element case, input rejections, an end-to-end NEC solve with forward gain, the apply hook (custom box on, editor populated, build uses the elements), and the dialog flow. Suite 504 → 512, green locally and in a clean CI-equivalent venv.

🤖 Generated with Claude Code

The fifth design wizard, now that per-element Yagi control exists. The user
picks a band, the number of elements, and the boom height; the wizard lays out
a tapered beam — reflector + driven + directors that shorten progressively and
sit at a widening spacing — and turns on per-element control with those
elements.

  * results/yagi_design.py — the tapered layout (a stronger starting point
    than the uniform rules-of-thumb auto-design, though still not optimized).
  * ui/yagi_wizard.py — band + element count (2-10) + boom height.
  * MainWindow.apply_yagi_design — sets the Yagi, promotes to Advanced, fills
    the per-element editor, and checks the "Customise Yagi elements" box so the
    build uses the designed elements.

Tests cover the layout and taper, the two-element case, the rejections, an
end-to-end NEC solve with forward gain, the apply hook, and the dialog flow.
Suite 504 -> 512. The design-wizard suite (trapped dipole, inverted-L,
multiband vertical, fan dipole, Yagi) is now complete.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@skip17331
skip17331 merged commit cedc38d into main Jun 3, 2026
6 of 8 checks passed
@skip17331
skip17331 deleted the yagi-wizard branch June 3, 2026 11:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant