Skip to main content

LinkedInCover

GitHub License GitHub Release PyPI - Downloads DOI

Introduction

EMerge is a python based FEM EM library for the time harmonic helmholtz formulation. It is thus best suited for Electromagnetic wave phenomenon. You can use it to simulate:

  • RF Filters
  • Signal propagation through PCBs
  • Antennas
  • Optycal systems
  • Arrays and periodic structures
  • Much more!

It is designed to be as easy to use and compatible as possible. It runs on all operating systems and on all hardware.

EMerge is designed to have your entire simulation start and finish in the same Python script (or more if you want). You require no awkward configuration files, JSON's, external software to do modelling etc. It allows you to do everything in Python:

  • Geometry Creation/description |
  • Material assignment |
  • Meshing + mesh settings and adaptive mesh refinement |
  • Boundary condition setup |
  • Solving |
  • Post processing and visualization |

If you have questions, suggestions, bug reports or just want to hang out, feel free to join the discord!

Discord Invitation


How to install

You can now install the basic version of emerge from PyPi!

pip install emerge

Direct solvers

EMerge solves all systems with direct solvers only. Some are faster than others. Depending on the operating system and hardware you have, some might work better and/or are easier to install than others. EMerge picks a solver automatically; em.solvers.available() lists the solvers installed on your system and model.set_solver(em.solvers.Sparta) selects one yourself.

For the best performance, install SPARTA, the open source sparse direct solver made for EMerge. It is the fastest CPU solver for EMerge, and it can also run on the GPU: Apple silicon (Metal) and AMD (Vulkan).

Install the wheel of the latest SPARTA release, with the version of that release in the link. For example, for v0.3.2:

pip install sparta-solver --find-links https://github.com/FennisRobert/SPARTA/releases/expanded_assets/v0.3.2

Once installed, EMerge uses SPARTA on the CPU. Where PARDISO is available (x86) EMerge picks PARDISO for single sweeps; select SPARTA with model.set_solver(em.solvers.Sparta). To run SPARTA on the GPU, set:

model.set_device("GPU")     # or "HYBRID" for a combined GPU + CPU factorization

Threads

Set the number of CPU threads with:

em.set_threads(4)

This applies to EMerge's compiled kernels (assembly, interpolation, far fields) and is the default thread count of the solvers that support one (SPARTA, PARDISO). A run method can override it for the solver, for example model.mw.run_sweep(nthreads=4).

Settings that native libraries read when they load (the Accelerate, RSLab and MUMPS threads) must be set before importing EMerge. The emerge_config module, installed with EMerge, does that:

from emerge_config import config
config.set_acc_threads(4)   # Apple Accelerate
import emerge as em

Other solvers

MacOS (ARM)

Without SPARTA, EMerge uses the Apple Accelerate sparse solver. From 3.0 onwards it is installed automatically with EMerge on macOS (the precompiled emerge-aasds package on PyPI), so no extra installation is needed.

The Accelerate solver does not take a thread count from em.set_threads(). EMerge limits it to a single thread for frequency distributed sweeps. To allow more threads, use the emerge_config module before importing EMerge:

from emerge_config import config
config.set_acc_threads(4)   # before importing emerge
import emerge as em
Windows (x86)

Windows has easy access to the lightning fast PARDISO solver out of the box, no installation needed.

GPU based CuDSS solver

If you have a new NVidia card you can try the first test implementation of the cuDSS solver. The dependencies can be installed through:

pip install emerge[cudss]

To use the GPU, set:

model.set_device("GPU")
Legacy solvers

UMFPACK is still supported but is slow compared to the solvers above, so it is only used when none of them is available. If you want it anyway, it installs through conda forge:

conda install conda-forge::scikit-umfpack

Install GMSH Version 5.0.0 MacOS

pip install https://gmsh.info/python-packages-dev/gmsh/gmsh-5.0.0.dev1-py2.py3-none-macosx_12_0_arm64.whl --force-reinstall

Dependencies

EMerge ships compiled Rust kernels (the emr module, source in emr/). PyPI wheels include them; installing from source (pip install /path/to/EMerge or pip install git+https://github.com/FennisRobert/EMerge.git) compiles them automatically and requires a Rust toolchain (https://rustup.rs).

pip install emerge installs the required libraries automatically; you don't need to install them yourself. The optional extras are only installed when you ask for them.

Installed automatically Optional extras
  • numpy
  • scipy
  • gmsh
  • loguru
  • matplotlib (for the matplotlib base display)
  • pyvista (for the PyVista base display)
  • joblib
  • msgpack, msgpack-numpy
  • psutil
  • emsutil
  • mkl (x86 devices only)
  • emerge-aasds (macOS only, the Apple Accelerate solver)

Installed with pip install emerge[<extra>]:

  • cudss: the NVIDIA cuDSS GPU solver
  • dxf: ezdxf
  • cad: emcad and pygerber (Gerber and ODB++)
  • spyder: trame-pyvista, nest_asyncio2, ipywidgets
  • umfpack: scikit-umfpack (legacy)

Installed separately:

  • SPARTA (recommended, see SPARTA)

PCB and CAD readers

You can read Gerber and ODB++ files using the optional emcad dependency which I also maintain. To get all the dependencies its easiest to do:

pip install emerge[cad]

Resources / Manual

You can find the latest versions of the manual on: https://www.emerge-software.com/resources/

Metadata

Release files for emerge 3.0.1

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

Source distribution (sdist)

Source distribution for emerge 3.0.1
File Size Uploaded Provenance Actions
emerge-3.0.1.tar.gz 905.2 kB With provenance Details for emerge-3.0.1.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for emerge 3.0.1
File Actions
emerge-3.0.1-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details for emerge-3.0.1-cp310-abi3-win_amd64.whl
emerge-3.0.1-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-64 Details for emerge-3.0.1-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
emerge-3.0.1-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details for emerge-3.0.1-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
emerge-3.0.1-cp310-abi3-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64 Details for emerge-3.0.1-cp310-abi3-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl

Total release size: 9.5 MB

Release files / emerge-3.0.1.tar.gz

Download URL emerge-3.0.1.tar.gz
Size 905.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4e18c6909b9f6105c756cceb392aca758ca1dedc3b65645704058ce3355891a4
BLAKE2b-256 checksum
How to use checksums
1b27fa5cd1e11ba18d86755225a9655404e0c1a5ce18d18be7f521676fd6e15c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Release files / emerge-3.0.1-cp310-abi3-win_amd64.whl

Download URL emerge-3.0.1-cp310-abi3-win_amd64.whl
Size 1.9 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
d3f6c72e47599f6a367a80563446ee63669508bb573459786110503b3b4b2003
BLAKE2b-256 checksum
How to use checksums
6a5de8f880b89973ac7c17cf4cc49970c5f0b91feb3bf975d9938f1ce5c4f3e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Release files / emerge-3.0.1-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL emerge-3.0.1-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 2.0 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
6cbe89720f050fbd71bee4d2dfae90d7a6bb1a4d1b2219b98737009af3a48d7f
BLAKE2b-256 checksum
How to use checksums
873fa9d68bdc1cb257a06358d820fbb7bf49ba1727bb764d6e495eb0f935bbab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Release files / emerge-3.0.1-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL emerge-3.0.1-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 1.9 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
4f82607fbfc2b59d01ba422bbff486266b3f12ad15ac63f3f55ffb1d9f5c0016
BLAKE2b-256 checksum
How to use checksums
f3a29937cbd5a3bdaab008a87fac0fc8b6205967710ab5b39727490ec96665f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Release files / emerge-3.0.1-cp310-abi3-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl

Download URL emerge-3.0.1-cp310-abi3-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl
Size 2.8 MB
Tags CPython 3.10 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
334fcce036a445653195ef2d7238710be5f0c8a423e274b6bdb74a97d7fab1f5
BLAKE2b-256 checksum
How to use checksums
a13fdac4a674a73bf1fed1a5e8bab15bf2edb6e4e2c34755be6a5e443d1bb0f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Security for emerge 3.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 5 files in this release have been uploaded with provenance metadata.

Select from 5 files

Attestation for emerge-3.0.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

3.0.1 This release

5 release files Full provenance

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