An openEMS alternative with a GUI, a GPU solver, and live results
If you have used openEMS you know the trade: the physics is solid and the price is zero, and you pay in scripting, manual meshing, CPU run times, and a workflow stitched together from separate tools. RayRF exists because that trade has another side.
What openEMS gives you
- Free and open source. No license, no seat count, no renewal.
- An FDTD core that has been used in published work for years.
- Full scriptability, so it drops into automated pipelines and parameter sweeps.
- Windows, Linux, and macOS, on any CPU.
What the openEMS workflow costs
A typical openEMS project is 50 to 200 lines of MATLAB or Python before the first result. Geometry is defined in code, the mesh is built by hand (which is where most accuracy bugs live), the solver runs from a script, and the output loads into another tool for S-parameters or a pattern. Each change is an edit to the script and a CPU-length wait.
What RayRF changes
RayRF puts the whole loop in one window. Draw or import a board in a layer-based 2D editor, set the stackup and ports, slide one quality preset, and click Run. The mesh is derived for you, with a full manual override panel when you want control. The solver runs on your NVIDIA GPU and the S-parameter curves update while it runs. Smith chart, 2D and 3D radiation patterns, volumetric fields, and surface currents are tabs in the same app. RayRF is built for planar PCB RF: microstrip, CPW, patches, filters, couplers. It is not a general 3D multiphysics package, and full speed needs an NVIDIA GPU (a CPU engine is included and is itself 20.3x faster than openEMS on the same chip).
Speed, on the same problem
The case below is a 5.8 GHz patch on an 82.8M-cell mesh, stepped 1,000,000 times, both tools solving the identical setup on the same workstation (RTX 5090 GPU, Ryzen 9 9950X CPU). Throughput is what was measured; the wall-clock column is that rate carried out to 1,000,000 timesteps. Full setup on the benchmarks page.
| Engine | Throughput | Wall-clock, extrapolated | Speedup |
|---|---|---|---|
| RayRF GPU (RTX 5090) | 39,600 MCell/s | 34 m 51 s | 173.7x |
| RayRF CPU (Ryzen 9 9950X) | 4,620 MCell/s | 4 h 59 m | 20.3x |
| openEMS (CPU SSE) | 228 MCell/s | 4 d 5 h | 1.0x (baseline) |
A 35 minute answer and a 4 day answer are different workflows, not different waits. The first one you iterate on.
Accuracy against hardware
RayRF is validated against 43 structures measured on a VNA across 4 fabricated PTFE boards: patch antennas, a dual-band patch, an interdigital bandpass filter, ring resonators. Resonant and pole frequencies track the measurements within 1-2% at the higher mesh refinements. The per-structure overlays are on the validation page, and the method is in the measurement write-up. RayRF also agrees with openEMS itself when both run the same realized mesh, which took careful case-building to prove, because the two tools discretize edges onto cells differently.
Which one to use
- Stay on openEMS if free is the requirement, you are comfortable scripting, you need macOS or non-NVIDIA hardware, or your work is outside planar PCB RF.
- Use RayRF if you want to draw a board and have S-parameters in minutes, and the scripting and wait times are the reason you skip simulation. It is free to try for 30 days.
Draw a board, slide the quality preset, and click Run. 30-day free trial, no card required. Windows and Linux.
Start the free trial