Skip to main content
wakis-logo-light-background

Open-source Wake and Impedance Solver

Documentation Status nightly_tests_CPU_py3.14 codecov Ruff LoC

PyPI - Version PyPI - Downloads PyPI - License DOI

wakis is a 3D Time-domain Electromagnetic solver that solves the Integral form of Maxwell's equations using the Finite Integration Technique (FIT) numerical method. It computes the longitudinal and transverse wake potential and beam-coupling impedance from the simulated electric and magnetic fields. It is also a multi-purpose solver, capable of simulating planewaves interaction with nano-structures, optical diffraction, and much more!

About

🚀 Some of wakis features:

  • Wake potential and impedance calculations for particle beams with different relativistic $\beta$
  • Material tensors: permittivity $\varepsilon$, permeability $\mu$, conductivity $\sigma$. Possibility of anisotropy.
  • CAD geometry importer (STL & STEP format) for definition of embedded boundaries and material regions, based on pyvista, with sub-cell smoothing added in v0.8.0.
  • Snappy Smart mesh added in v0.6.2
  • Boundary conditions: PEC, PMC, periodic, first-order Mur absorbing boundaries (abc), PML and CPML, added in v0.8.0
  • Different time-domain sources: particle beam, planewave, gaussian wavepacket
  • 100% Python, fully exposed API (material tensors and fields $E$, $H$, $J$), with matrix operations based on numpy and scipy.sparse. Routines ensure multithreaded calculations using Intel's mkl-service.
  • 1d, 2d, 3d built-in plotting on-the-fly
  • Optimized memory consumption & GPU acceleration using cupy/cupyx on double and single precision: added in v0.6.1
  • CUDA-aware MPI parallelization with mpi4py and ipyparallel: added in v0.6.0

🧩 Other complementary tools in the ecosystem:

  • Wakefield extrapolation via broadband resonator fitting with PIML iddefix evolutionary algorithms
  • Non-equidistant Filon Fourier integration with neffint
  • Beam-induced heating estimation due to impedance with bihc

📣 Tag and version changes are described in each Wakis GitHub release.

How to use

📖 Documentation, powered by sphinx, is available at wakis.readthedocs.io

Check 📁 examples/ and notebooks/ for different physical applications:

  • Planewave interacting with a PEC or dielectric sphere
  • Gaussian wavepacket travelling through vacuum / dielectric
  • Custom perturbation interacting with PEC geometry
  • And of course, full Wakefield simulation of different accelerator components on CPU, GPU and with MPI.

Check 🌐📁 SWAN_tutorial/ for hands-on notebook examples ready to run on CERN's SWAN service's GPUs (A100, Tesla T4):

Open this Gallery in SWAN

Check 🌐📁 wakis-benchmarks/ for beam-coupling impedance calculations & comparisons to the commercial tool CST® Wakefield solver:

  • PEC cubic cavity below cutoff (mm) and above cutoff (cm)
  • Conductive cubic cavity below cutoff
  • Lossy pillbox cavity (cylindrical) above cutoff
  • Simulations using beams with different relativistic $\beta$

Check 🌐📁 BE-Seminar-demo/ for a complete live demonstration of Wakis usage.

Installation

Wakis supports Python 3.9 - 3.14 and can be installed in any conda or venv environment.

📖 For a detailed installation guide (GPU, MPI setup, FAQs), check our documentation.

Install via PyPI

For basic usage, simply run:

pip install wakis

For additional features, including interactive 3D plots in Jupyter notebooks and Wakis' satellite packages, use:

pip install wakis['all']

GPU execution also requires a CuPy build compatible with your CUDA or ROCm installation, and MPI execution requires mpi4py plus an MPI runtime. See the GPU and MPI installation instructions before running those examples.

To install Wakis from the source, clone the repository and install it in editable mode:

git clone https://github.com/ImpedanCEI/wakis.git
cd wakis
pip install -e .

Install via Docker

A pre-built Docker image of Wakis is available for easy setup and reproducibility.

sudo docker pull docker.io/edelafue/wakis:latest
sudo docker run --rm -it docker.io/edelafue/wakis:latest /bin/bash

💡 Have a bug, feature request, or suggestion? Open a GitHub Issue so the community can track it.

🛠️ Want to contribute? To merge your changes into main, create a Pull Request (PR) following our PR template.

Motivation

🎯 The determination of electromagnetic wakefields and their impact on accelerator performance is a significant issue in current accelerator components. These wakefields, which are generated within the accelerator vacuum chamber as a result of the interaction between the structure and a passing beam, can have significant effects on the machine. These effects can be characterized through the beam coupling impedance in the frequency domain and wake potential in the time domain. Accurate evaluation of these properties is essential for predicting dissipated power and maintaining beam stability. wakis is an open-source tool that can compute wake potential and impedance for both longitudinal and transverse planes for general 3D structures.

Citing Wakis

🔖 Each Wakis release is archived on Zenodo with a version-specific DOI. For a citation that points to the latest archived version, use the concept DOI:

E. de la Fuente Garcia et al., “Wakis”. Zenodo. https://doi.org/10.5281/zenodo.14988676


Tests badges

nightly_tests_CPU_py3.10 nightly_tests_CPU_py3.11 nightly_tests_CPU_py3.12 nightly_tests_CPU_py3.13 nightly_tests_CPU_py3.14

Metadata

Release files for wakis 0.8.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 wakis 0.8.0
File Size Uploaded
wakis-0.8.0.tar.gz 152.1 kB Details

Built distribution (wheel)

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

Total release size: 273.2 kB

Release files / wakis-0.8.0.tar.gz

Download URL wakis-0.8.0.tar.gz
Size 152.1 kB
Tags Source
SHA-256 checksum
How to use checksums
3cdc4b30dbdad66f729fb23ebec1a4504b298dc9bf981a4be6cf73efe19c0dff
BLAKE2b-256 checksum
How to use checksums
c587a84488367b474f78949970c54ce6900bb5e1eb4872c7a17fcdcc0e35a13e
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 2, 2026.

Transparency log

Release files / wakis-0.8.0-py3-none-any.whl

Download URL wakis-0.8.0-py3-none-any.whl
Size 121.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
84ff080fc4677fe4b7a7edf6a170ce553e7f2fd996b00539714a1a566582f2bf
BLAKE2b-256 checksum
How to use checksums
df55899bb2b5ad4f5d04fb3f05fcbd2606bf9ad9a97561bc8c184da95d7df21b
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 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.8.0 This release

2 release files

0.7.0

2 release files

0.6.2

1 release file

0.6.1

1 release file

0.6.0

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.0

1 release file

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