π£ Releasesο
Release notes of every Wakis packaged version in PyPI, also available in Zenodo and Github Releases.
Wakis v0.6.0ο
π New Featuresο
πΌοΈ Plotting
Unified plotting tools for both MPI and non-MPI simulations.
plot1Dnow supports field visualization independently of MPI use.Plot2Dsupports parallel execution.Error handling added for
plot3Dandplot3DonSTLwhenuse_mpi = True.Support for
dpiandreturn_handlesin plot utilities to further customize plots.Enhanced examples and notebook suite visualization cells.
π§± GridFIT3D
Added
mpi_initialize()to handle domain decomposition (Z-slicing).New method
mpi_gather_asGrid()to retrieve the full global grid from distributed subdomains.Full support for multi-GPU domain decomposition through
cupy(CUDA-aware, Linux only).Improved communication layer for subdomain synchronization via ghost cells.
β‘ SolverFIT3D
MPI-compatible time-stepping routine
mpi_one_step()using a leapfrog scheme.mpi_communicate()to send/receive boundary field values between subdomains.mpi_gather()to retrieve field data as a NumPy array andmpi_gather_asField()to reconstruct aFieldobject.MPI-safe support integrated into
update()and field getter logic.Introduced
save_state()method for checkpointing during MPI runs together withload_state(). Added support for MPI save state too.Feature in progress: multiGPU support (
use_GPU=Truewhenuse_MPI=True) for distributed simulations (Linux only!).Added missing docstrings (Numpy-style)
π₯ Sources
Beam:
Added
plot(t)to visualize beam current evolution.Generalized
update()to work with or without MPI.Enhanced support for time-aligned injection with beta and MPI shifts.
New example for MPI+GPU simulation (topic in progress).
π WakeSolver
Refactored to internally store the full longitudinal domain.
skip_cellsnow acts only at analysis level, preserving resolution.add_spaceanduse_edtretained for compatibility, butadd_spaceis deprecated for new parameterskip_cells, more adequate to its utility (i.e. skip cells in the integration path).
Future-ready structure for distributed wake solving with MPI-aware GPU.
Improved numerical robustness by preventing indexing errors in
WakePotentialintegration -> solves issue #12Enhanced extrapolation method with
iddefix.New example
004for wakefield simulation with MPI+GPU configuration.
π‘οΈ Security & Documentation
Added
SECURITY.mdto describe supported versions and vulnerability reporting.Improved installation guide with Miniforge (supports both Windows/Linux) and MPI setup instructions.
Added new issue templates for Bug Report and Feature Request with markdown formatting and emojis for readability.
Addition of the Physics Guide, with detailed physics models and numerical methods explanations.
Userβs guide updated to include Wake extrapolation with
iddefix, Wake function calculation withneffint, and power loss calculation withBIHC.Added a Table of Contents (ToC) to the documentation for easier navigation.
Expanded installation guide with multiGPU configuration and MPI-aware domain partitioning.
π Other Tag highlightsο
π Nightly tests with GitHub Actions:
Enabled infrastructure for MPI-based test cases (
test_003,test_005).Improved test coverage for MPI and GPU simulations.
MultiGPU end-to-end tests for distributed domain synchronization.
π Examples:
notebook
003β MPI wakefield simulation usingmpi4py.notebook
005β Full MPI simulation inside Jupyter usingipyparallel+mpi4py.New example
003with MPI + GPU configuration for large-scale simulations.
π Notebooks:
005β Full MPI simulation inside Jupyter usingipyparallel+mpi4py.New Jupyter notebook showcasing multiGPU configuration.
π Bugfixesο
Fixed crash in
plot3Dandplot3DonSTLwhenuse_mpi=True.Fixed default
use_mpi=Trueto now default toFalsefor general usage.Fixed a typo in beam injection routine
solver.z.min().Fixed potential rounding error in wake potential integration with negligible performance impact (~0.1ns) -> solves issue #12
Corrected default beam injection time to align with CST Wakefield Solver reference in beta<1 cases.
Fixed minor typos in the documentation.
Fixed synchronization issues with MPI runs when saving states.
Resolved encoding issues when installing in Windows editable mode.
Corrected result folder naming in GPU example
002.
ππ©βπ» New Contributorsο
π Full changelogο
78 commits |
π Docs |
π§ͺ Tests |
π Fixes |
π¨ Style |
β¨ Features |
Other |
|---|---|---|---|---|---|---|
% of Commits |
30.3% |
10.5% |
9.2% |
10.5% |
22.4% |
17.1 |
Full Changelog: https://github.com/ImpedanCEI/wakis/compare/v0.5.1β¦v0.6.0
Wakis v0.5.1ο
Minor fixes and updates
π New Featuresο
Plotting
Allow passing camera position to solverβs 3D plots
plot3Dandplor3DnSTL
π Other Tag highlightsο
π Nightly tests with GitHub actions:
003 -> coverage for grid
inspectandplot_solid
π Examples:
003 -> MPI wakefield simulation with
mpi4py
π Notebooks:
005 -> MPI example in jupyter notebooks with
ipyparallel+mpi4py
π Bugfixesο
__version__now matches PyPI release and taggridFIT3D.plot_solids()fix typo in the opacity assignmentexample/001fixed stl_solids parameter in grid.inspect() call
πFull changelogο
Full Changelog: https://github.com/ImpedanCEI/wakis/compare/v0.5.0β¦v0.5.1
Wakis v0.5.0ο
π New Featuresο
π§± Geometry import:
Functions to read
.STPfiles, exporting each solid into an.STLfile indicating the name and material:wakis.geometry.generate_stl_solids_from_stp(stp_file)Functions to extract from
.STPfilessolidnames,colors, andmaterials:wakis.geometry.extract_XXX(stp_file)to easily build the input dictionaries needed forGridFIT3D
β‘Solver:
New maximal timestep calculation for high-conductive regions based on CFL + relaxation time criterion
New methods:
save_state(),load_state()to export and import the fields at a particular simulation timestep (HDF5 format). Methodreset_fields()to clear fields before restarting a simulation.Perfect Matching Layers (PML) boundary conditions: First version out!
πΌοΈ Plotting:
solver.plot3DonSTLField on STL solid usingpyvista.sampleinterpolation algorithmInteractive plane clipping on
plot3DonSTLField shown on clipping plane
grid.plot_solids()3D plot with the imported solids and the position in the simulation bounding box whenbounding_box=True
π₯Sources:
Add
plot(t)method to plot the source over the simulation timetCustom amplitude as an attribute
self.amplitudeCustom phase as an attribute
self.phaseCustom injection time
self.tinjFor
PlaneWaveallow for truncation at specific number ofself.nodesinjected
π± Ecosytem:
Wake extrapolation of partially decayed wakes coupling with [
IDDEFIX]: https://github.com/ImpedanCEI/IDDEFIX:IDDEFIX is a physics-informed machine learning framework that fits a resonator-based model (parameterized by R, f, Q) to wakefield simulation data using Evolutionary Algorithms. It leverages Differential Evolution to optimize these parameters, enabling efficient classification and extrapolation of electromagnetic wakefield behavior. This allows for reduced simulation time while maintaining long-term accuracy, akin to time-series forecasting in machine learning
Impedance to wake function conversion using non-equidistant Fourier transform with: [`neffint]: https://github.com/ImpedanCEI/neffint
Neffint is an acronym for Non-equidistant Filon Fourier integration. This is a python package for computing Fourier integrals using a method based on Filonβs rule with non-equidistant grid spacing.
Beam-induced power loss calculations for different beam shapes and filling schemes using [βBIHC`]: https://github.com/ImpedanCEI/BIHC
Beam Induced Heating Computation (BIHC) tool is a package that allows the estimation of the dissipated power due to the passage of a particle beam inside an accelerator component. The dissipated power value depends on the characteristics of the particle beam (beam spectrum and intensity) and on the characteristics of the considered accelerator component (beam-coupling impedance).
π Other Tag highlightsο
π Nightly tests with GitHub actions: 000 - 005
π notebooks: containing interactive examples
π examples: major cleanup, examples on CPU and GPU
π Bugfixesο
Patch representation when a list is passed in
Plot2Dipympladded as a dependency towakis['notebook']installationInjection time to account for relativistic beta in sources
ππ©βπ»New Contributorsο
@MaltheRaschke made their first contribution in https://github.com/ImpedanCEI/wakis/pull/4
Full Changelog: https://github.com/ImpedanCEI/wakis/compare/v0.4.0β¦v0.5.0