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!
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.
SPARTA (recommended)
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
emrmodule, source inemr/). PyPI wheels include them; installing from source (pip install /path/to/EMergeorpip 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 |
|---|---|
|
Installed with
Installed separately:
|
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)
| 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)
| File | Actions Reset | |||
|---|---|---|---|---|
| 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logSecurity 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.
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 logA 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.