Skip to main content

simpleEMS

License: AGPL-3.0-or-later PyPI Version Python Version

simpleEMS is a python library built on top of openEMS to make the design of antennas and other RF structures simpler.

Motivation

This Python package provides an alternative to proprietary suites with expensive licenses or the restrictive "Student" versions such as CST, HFSS and Sonnet which often impose stifling mesh cell limits and memory caps. By leveraging the openEMS FDTD engine, it offers a scalable framework for simulating, optimizing, and visualizing complex RF designs. whether you are a professional engineer, a freelancer, or a dedicated hobbyist, this library will enable you to design RF circuits easily.

Key Features:

Antenna Design

  • Inset-Fed Patch Antenna Design
  • Probe-Fed Patch Antenna Design

Filter Design

  • Bandpass Quarter-Wave Filter Design
  • Bandstop Quarter-wave Filter Design

Simulation & Optimization

  • Parameter Sweep
  • S11 Optimization
  • S21 Optimization

Network Parameters Calculation

  • S11 (Reflection Coefficient)
  • S21 (Insertion Loss)
  • VSWR (Voltage Standing Wave Ratio)
  • Z11 (Input Impedance)
  • Input Power

Visualization & Plotting

  • Geometry Structure Visualization
  • S11 Plotting
  • S21 Plotting
  • VSWR Plotting
  • Smith Chart for S11
  • Complex Impedance (Z11) Plotting
  • 2D Radiation Pattern
  • 2D Directivity Plot
  • 3D Radiation Pattern, Gain & Power Plot

Field Dump

  • Field Dump for ParaView
    • E-Field (Time and Frequency Domain)
    • H-Field (Time and Frequency Domain)
    • Current Density (Time and Frequency Domain)

Export Options

  • Gerber Export
  • STEP Export
  • STL Export
  • Touchstone SnP Export

Solver Backends

simpleEMS supports two solver backends, selected via backend_engine on your sim params:

  • FDTD (default) — powered by openEMS, the original time-domain backend.
  • FEM (experimental) — a frequency-domain finite-element backend (via GetDP) available since v0.2.0, for cases where FDTD isn't the right fit. It shares the same plotting, sweep, optimization, and export APIs as the FDTD path, and can also mesh a raw STEP file directly without building a CSXCAD geometry first. API and behavior may still change.

See the FEM installation guide and the standalone FEM STEP tutorial in the docs.

Demo

This example creates an inset fed patch antenna and simulates the created model.

Below is a visualisation of the model created by the above code

patch_antenna_2_45GHz.png The result of the simulation s11.png

smith_chart.png

z11.png

vswr.png

radiation_pattern.png

directivity_polar.png

3d_directivity.png

3d_gain.png

3d_power.png

Installation

Refer to the installation instructions in the docs.

Release files for simpleEMS 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for simpleEMS 0.3.0
File Size Uploaded
simpleems-0.3.0.tar.gz 121.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for simpleEMS 0.3.0
File Interpreter ABI Platform
simpleems-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 261.3 kB

Release files / simpleems-0.3.0.tar.gz

Download URL simpleems-0.3.0.tar.gz
Size 121.4 kB
Tags Source
SHA-256 checksum
How to use checksums
62d0d0aa29db14107717cc0bfb0e73eeb7ece2c2794079436d3fb0f30b61f6b2
BLAKE2b-256 checksum
How to use checksums
f814550662c4272db3ddf543154cb174b7f710e10ac8bab7f12ffa8223453891
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.0 {"installer":{"name":"uv","version":"0.12.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / simpleems-0.3.0-py3-none-any.whl

Download URL simpleems-0.3.0-py3-none-any.whl
Size 139.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
18a0266e5295e5c4629d37224191fa549b5b83f707cc15dd4ae2a90be1cd6800
BLAKE2b-256 checksum
How to use checksums
23da1c2953f38e8353b5937965199673659816909c3c2e04f1ff0a2ed1199fbb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.0 {"installer":{"name":"uv","version":"0.12.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.4.0

2 release files

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page