Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

GitHub License GitHub Release PyPI - Downloads DOI

Introduction

LinkedInCover

Hello everybody. Thanks for showing interest in my EM FEM library!

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 allthough some solvers are a bit harder to make work on some systems than others.

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.

MacOS (ARM)

It is advised to use the Apple Accelerate sparse solver for all cases. On all versions before 2.5.3 install through

pip install https://github.com/FennisRobert/emerge-aasds@v0.2.0

By default the Accelrate solver will be limited to a single thread for frequency distributed sweeps. To allow for more threads either set the environment variable manually:

VECLIB_MAXIMUM_THREADS = 4

Or in Python before loading EMerge:

import os
os.environ['VECLIB_MAXIMUM_THREADS'] = '4'

Of from 2.5.3 onwards also through the config sister module

from emerge_config import config
config.set_acc_threads(4)

Single threaded UMFPACK

There is also an UMFPACK interface but it is more difficult to install and not as fast as the Accelerate solver.

brew install cmake swig suite-sparse pkg-config #MacOS
sudo apt-get install libsuitesparse-dev #Linux

Then on MacOS do:

export PKG_CONFIG_PATH="/opt/homebrew/lib/pkgconfig:$PKG_CONFIG_PATH"
export CFLAGS="-I/opt/homebrew/include"
export LDFLAGS="-L/opt/homebrew/lib"
export CFLAGS="-Wno-error=int-conversion"

Finally:

pip install meson-python ninja
pip install --no-build-isolation --no-binary=scikit-umfpack scikit-umfpack

note: If you have any corrections to these instructions (for any os) please let me know!

Multi threaded MUMPS

To install the MUMPS solver on MacOS, download the installer directory from my website and follow the instructions. Please note that Accelerate is also faster than MUMPS in multi-core performance.

https://www.emerge-software.com/resources

Windows (x86)

Windows has easy access to the lightning fast PARDISO solver out of the box, no installation needed. If you want to install the UMFPACK solver for distributed sweeps this distribution should work through conda forge:

conda install conda-forge::scikit-umfpack

Otherwise try the solution in the user manual.

https://www.emerge-software.com/resources

GPU bsed 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]

Limitations: * Cupy is currently only supporting 32 bit integer address so large EM problems cannot be correctly solved currently. This is not something I can do anything about.

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

Required libraries

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).

To run this FEM library you need the following libraries

  • numpy
  • scipy
  • gmsh
  • loguru
  • matplotlib (for the matplotlib base display)
  • pyvista (for the PyVista base display)
  • mkl (x86 devices only)
  • emsutil

Optional:

  • scikit-umfpack
  • cudss
  • ezdxf

Resources / Manual

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

Generative AI Policy

In this project, generative AI and LLM based AI tools are used for coding assistance, writing of code for quick tests and sometimes the implementations of functions.

This project does not or rarely uses functions that are completely written by generative AI.

This project does not accept completely vibe coded functionality without human supervision, interpretation and validation.

Because the repository has one active developer with multiple personal computers, the commit history is used to transfer code between computers that is not finished. The commit history may therefore contain code that is AI generated during development phases after which it is usually refactored/rewritten.

Some small trivial functions may be copied from LLM output but these are often so trivial that they are not copyrightable anyway. Examples are hard coded matrix multiplication for Numba compiled functions: (this function is coincidentally not generated by LLM's but such functions might have been.)

# Example of a function that could have been but in this case is not written by AI models.
@njit(f8[:, :](f8[:, :], f8[:, :]), cache=True, nogil=True)
def matmul(a, b):
    out = np.empty((3, b.shape[1]), dtype=np.float64)
    out[0, :] = a[0, 0] * b[0, :] + a[0, 1] * b[1, :] + a[0, 2] * b[2, :]
    out[1, :] = a[1, 0] * b[0, :] + a[1, 1] * b[1, :] + a[1, 2] * b[2, :]
    out[2, :] = a[2, 0] * b[0, :] + a[2, 1] * b[1, :] + a[2, 2] * b[2, :]
    return out

Metadata

Release files for emerge 3.0.0a25

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.0a25
File Size Uploaded Provenance
emerge-3.0.0a25.tar.gz 860.3 kB With provenance Details

Built distributions (wheels)

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

Total release size: 9.7 MB

Release files / emerge-3.0.0a25.tar.gz

Download URL emerge-3.0.0a25.tar.gz
Size 860.3 kB
Tags Source
SHA-256 checksum
How to use checksums
97d16ff6b905c9d9b9c0a977ca312860e0b2f4ddeec925cb5823920aea6a3583
BLAKE2b-256 checksum
How to use checksums
66c4fb1e5df91ea9fb2a53f31c5800eb9360d2597c990dfc04241437b9faba65
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 20, 2026.

Transparency log

Release files / emerge-3.0.0a25-cp310-abi3-win_amd64.whl

Download URL emerge-3.0.0a25-cp310-abi3-win_amd64.whl
Size 1.8 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
6b037795ef750155e3c85adc0ed98e09f8876b26ef80861afc0d67c9efa89c6d
BLAKE2b-256 checksum
How to use checksums
c74565ba4d94c6a5d36bffe55d8b5d913b5515c2de909ffdec814b85aedc5f23
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 20, 2026.

Transparency log

Release files / emerge-3.0.0a25-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL emerge-3.0.0a25-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.8 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
27be2266d33155d691705da14ee796b4d3d69709dee49135d652b06e80ea6490
BLAKE2b-256 checksum
How to use checksums
e7dcb7d65109c3846d865326ef7e7e5eb41b68c1cf24e78a891f94564335b11e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 20, 2026.

Transparency log

Release files / emerge-3.0.0a25-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL emerge-3.0.0a25-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.7 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
fe1e09fb179bfa0bc1c4474431d677f45e45b904fae91f92c8bc4eb18c9a3b35
BLAKE2b-256 checksum
How to use checksums
fbb3dedca1607f9e68c0401bfb90f395a6012e8a69010be39c23c5865945251f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 20, 2026.

Transparency log

Release files / emerge-3.0.0a25-cp310-abi3-macosx_11_0_arm64.whl

Download URL emerge-3.0.0a25-cp310-abi3-macosx_11_0_arm64.whl
Size 1.7 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
242a2c23c7d7f287f390ccb4fa9019547a6f608e5aa1f2c6e12469e2b2858aa2
BLAKE2b-256 checksum
How to use checksums
2445b5537ec6727e97db344020a1642fed45a7de7ce6524f2eedb2a3a513a47b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 20, 2026.

Transparency log

Release files / emerge-3.0.0a25-cp310-abi3-macosx_10_12_x86_64.whl

Download URL emerge-3.0.0a25-cp310-abi3-macosx_10_12_x86_64.whl
Size 1.8 MB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
7203c8f65786e4352222ba510f76ba50a9bd9aced1f88da212bfabaec5a0f205
BLAKE2b-256 checksum
How to use checksums
20ab0556387da68b9e1cb827a7f11911cd0fc6932c290c68e65bf5655a7a7a9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 20, 2026.

Transparency log

Security for emerge 3.0.0a25

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 6 files in this release have been uploaded with provenance metadata.

Select from 6 files

Attestation for emerge-3.0.0a25.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 Oct 20, 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.

Release history Release notifications | RSS feed

This release
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