RF & antenna · FDTD physics + ML surrogate

Interactive surrogate model for meander-line PCB antenna design

Tools

openEMS (FDTD) · Python · scikit-learn

Domain

RF & antenna design

Result

2.6 ms GUI update vs ~90 s per FDTD solve

2.6 ms per design point, against ~90 s for a full FDTD solve. Explore the design space by dragging, not queueing solves.
Physics
  • ElectromagneticsFull-wave openEMS FDTD solves of Maxwell's equations
  • MeshConvergence checked from 0.4 to 7.4 million cells: under 1.3 % shift in resonance
  • Data288 geometry solves, plus 30 for substrate temperature and Dk
Role of ML
An ML surrogate trained on openEMS solves, and validated against held-out ones, answers in 2.6 ms compared with about 90 s for a full-wave solve. The design space can then be explored continuously rather than one queued solve at a time.

Background

Meander-line antennas pack a resonant length into a small PCB footprint by folding the trace back on itself. That folding is also what makes them hard to design by hand: the number of meander cells (N), trace width and segment lengths all interact, and a small geometry change shifts resonant frequency and radiation efficiency substantially. Each openEMS FDTD solve took roughly 90 seconds in this setup, too slow for interactive exploration. I built this project to see whether a surrogate trained on a real design-of-experiments sweep could stand in for the solver while you design.

Approach

I wrote a parametric CSXCAD/openEMS geometry generator for meander antennas with N = 2–5 cells and ran Sobol design-of-experiments sweeps in a Dockerized openEMS 0.0.35 / CSXCAD build. That gave 72 real FDTD solves per N (60 train, 12 held out), 288 in total. Four surrogate families are fitted on that data:

Meander Antenna Explorer, N = 5 design at 2.471 GHz: 3D radiation pattern over the antenna, steady-state E-field on the trace, φ = 0° and 90° pattern cuts, S11 with three resonances, and radiation efficiency
Every surrogate output in one view (N = 5, 2.471 GHz): 3D radiation pattern, steady-state E-field on the trace, φ-cuts with peak directivity, and S11 with three predicted resonances next to radiation efficiency. No solver call involved.

Mesh convergence first

Before trusting any DoE data, I ran a mesh-convergence study on 395,850, 1,351,814 and 7,365,600-cell meshes of the same geometry. Resonant frequency moved less than 1.3% between the two finest meshes, and only then were the mesh settings locked for the full sweep.

Mesh convergence study: S11 curves and resonant frequency across three mesh refinement levels
Mesh convergence check, run before any DoE data was trusted: under 1.3% f_res movement between the two finest meshes.

Substrate effects, measured rather than assumed

Two materials sliders sit on top of the geometry surrogate, each backed by real solves: substrate temperature (6 solved temperatures) and FR4 dielectric constant, Dk 3.8–4.8 (24 solves across 6 contrasting geometries). The Dk sweep produced a genuine finding. Textbook microstrip theory predicts a log-log sensitivity of about −0.43 and says trace width is the lever. The solves showed −0.26 at N = 2, falling steadily to −0.16 at N = 5, with width barely mattering. These antennas are roughly half as Dk-sensitive as theory suggests, because more of their field fringes into air, so the model resolves sensitivity per N. The app also reports each Dk shift as a fraction of that design's own −10 dB bandwidth, which is the number that actually tells you whether a substrate lot will detune it.

Results

Live demo

Screen recording of the app: adjusting geometry and watching S11, efficiency and the 3D model update in real time.

Meander Antenna Explorer walkthrough (recorded on an earlier build, before the Dk slider was added)

Have a similar problem on your bench?