Tutorial: Patch Antenna Design
This page connects the model that passes preflight in
Your First Patch Antenna with the separate patch
cross-check in validation/crossval/05_patch_antenna.py.
Recommended workflow
Section titled “Recommended workflow”| Stage | Goal | Primary page / script |
|---|---|---|
| 1. Setup check | Size the patch, resolve preflight, and verify finite data from a short run | Your First Patch Antenna |
| 2. Narrow cross-check | Run the repository’s exact rfx/OpenEMS configuration and apply its stated gates | validation/crossval/05_patch_antenna.py |
| 3. Radiation / reporting | Move to far-field reporting after the resonance setup is stable | Far-Field & RCS |
Baseline geometry
Section titled “Baseline geometry”The workflow models a rectangular 2.4 GHz patch on a 1.5 mm FR4 substrate over a finite ground plane. One setup choice is load-bearing: place the ground plane as an explicit finite PEC box inside the domain, not as a full-domain PEC boundary wall. A finite ground plane radiates into the absorber beneath it, which is the physical open-radiation problem; turning the bottom of the domain into a PEC wall instead makes the structure a closed cavity and shifts the resonance high. Pair the geometry with absorbing (CPML) boundaries on all faces.
How to run the cross-check
Section titled “How to run the cross-check”python validation/crossval/05_patch_antenna.pyWith the OpenEMS/CSXCAD Python bindings installed, the script prints a console summary comparing the rfx and OpenEMS resonances and writes a plot plus a JSON result file. Those bindings are not an rfx dependency: if they are missing, the script runs the rfx portion and then exits with status 2 behind a SKIPPED banner. That run is inconclusive and does not report a cross-solver pass.
Interpretation rules
Section titled “Interpretation rules”- Read Harminv resonance as the primary frequency estimate. The script’s primary gate is a resonance-frequency agreement — rfx Harminv vs OpenEMS Harminv within 20 %, and rfx internal self-consistency (Harminv vs the lumped-port S11 local dip) within 5 % — not an |S11| magnitude match.
- Those tolerances and results apply only to the script’s geometry, mesh, frequency band, and metric. They do not validate the First Patch model or the patch gallery diagnostic.
- Use impedance-referenced S-parameter results only through a documented port workflow — see Sources & Ports for
add_port. The lumped-port S11 dip in this script is a secondary check with a known single-cell parasitic reactance, so read it as a local dip near the Harminv frequency, not a deep matched null. - Treat non-uniform mesh variants as limited support unless the page you are following says otherwise.
Where to go next
Section titled “Where to go next”- Start with Your First Patch Antenna to build the model and verify finite data in a short run.
- Continue to Far-Field & RCS once the resonance setup is stable.
- See Cross-Validation and Accuracy for the broader support overview.