Skip to content

3D electromagnetic time-domain solver, specialized in wake potential and beam-coupling impedance computation for particle accelerators

License

Notifications You must be signed in to change notification settings

ImpedanCEI/wakis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

wakis-logo-light-background

Open-source Wake and Impedance Solver

Documentation Status Tests badge codecov

PyPI - Version PyPI - License Tokei - LOC 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
  • Boundary conditions: PEC, PMC, Periodic, ABC-FOEXTRAP, Perfect Matched Layers (PML)
  • Different time-domain sources: particle beam, planewave, gaussian wavepacket
  • 100% python, fully exposed API (material tensors, fields $E$, $H$, $J$). Matrix operators based on numpy and scipy.sparse routines ensure fast calculations.
  • 1d, 2d, 3d built-in plotting on-the-fly
  • Optimized memory consumption
  • GPU acceleration using cupy/cupyx
  • 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 decribed in each Wakis Github Release:

  • To be informed of the latest features/bug fixes pushed to main, check the draft release.md
  • For specific needs, please contact the developer ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘‹: [email protected]

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
  • Wakefield simulation of accelerator cavity on CPU, GPU and with MPI

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 ๐ŸŒ๐Ÿ“ CEI-logo/ for a fun & complete beam-coupling impedance workflow tutorial, including:

  • 001: Electromagnetic simulation preparation, inspection & 1d, 2d, 3d plotting.
  • 002: Wakefield simulation on GPU
  • 003: Extrapolation of wakefield simulation to fully decayed with iddefix. Conversion to wake function for beam dynamics simulation with neffint.
  • 004: Beam-induced heating estimation due to impedance with bihc
  • 005: MPI simulation example in notebooks with ipyparallel and mpi4py

Installation

Wakis supports Python 3.9 - 3.11 and can be installed in any conda environment.

๐Ÿ“– For a detailed installation guide (GPU, MPI setup, FAQs), check our documentation.

Users: Install via PyPI

For basic usage, simply run:

pip install wakis

For additional features, including interactive 3D plots in Jupyter notebooks, use:

pip install wakis['notebook']

To install complementary tools in the Wakis ecosystem:

pip install neffint iddefix bihc

๐Ÿ’ก Have a bug, feature request, or suggestion? Open a GitHub Issue so the community can track it.

Developers: Contribute to Wakis

First, Fork the repository and clone it from main:

# SSH:
git clone [email protected]:YourUserName/wakis.git

# or HTTPS:
git clone https://github.com/YourUserName/wakis.git

Create a dedicated conda environment and install dependencies:

cd wakis/
conda create --name wakis-env python=3.11
conda activate wakis-env
pip install -r requirements.txt
pip install -e .  # install wakis in editable mode
pip install neffint iddefix bihc  # Optional tools

๐Ÿ› ๏ธ 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 linked to a Zenodo publication under a unique DOI. If you are using Wakis in your scientific research, please help our scientific visibility by citing this work:

[1] E. de la Fuente Garcia et. al., โ€œWakisโ€. Zenodo, 2025. doi: https://doi.org/10.5281/zenodo.15527405