Releases: ImpedanCEI/wakis
Releases · ImpedanCEI/wakis
Wakis v0.6.0
Wakis v0.6.0
🚀 New Features
-
🖼️ Plotting
- Unified plotting tools for both MPI and non-MPI simulations.
plot1D
now supports field visualization independently of MPI use.Plot2D
supports parallel execution.- Error handling added for
plot3D
andplot3DonSTL
whenuse_mpi = True
. - Support for
dpi
andreturn_handles
in 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.
- Added
-
⚡ 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 aField
object.- 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=True
whenuse_MPI=True
) for distributed simulations (Linux only!). - Added missing docstrings (Numpy-style)
- MPI-compatible time-stepping routine
-
📥 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).
- Added
- Beam:
-
🌊 WakeSolver
- Refactored to internally store the full longitudinal domain.
skip_cells
now acts only at analysis level, preserving resolution.add_space
anduse_edt
retained for compatibility, butadd_space
is 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
WakePotential
integration -> solves issue #12 - Enhanced extrapolation method with
iddefix
. - New example
004
for wakefield simulation with MPI+GPU configuration.
-
🛡️ Security & Documentation
- Added
SECURITY.md
to 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.
- Added
💗 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.
- Enabled infrastructure for MPI-based test cases (
-
📁 Examples:
- notebook
003
→ MPI wakefield simulation usingmpi4py
. - notebook
005
→ Full MPI simulation inside Jupyter usingipyparallel
+mpi4py
. - New example
003
with MPI + GPU configuration for large-scale simulations.
- notebook
-
📁 Notebooks:
005
→ Full MPI simulation inside Jupyter usingipyparallel
+mpi4py
.- New Jupyter notebook showcasing multiGPU configuration.
🐛 Bugfixes
- Fixed crash in
plot3D
andplot3DonSTL
whenuse_mpi=True
. - Fixed default
use_mpi=True
to now default toFalse
for 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
git log v0.5.1... --date=short --pretty=format:"* %ad %d %s (%aN)" | copy
78 commits | 📚 Docs | 🧪 Tests | 🐛 Fixes | 🎨 Style | ✨ Features | Other |
---|---|---|---|---|---|---|
% of Commits | 30.3% | 10.5% | 9.2% | 10.5% | 22.4% | 17.1 |
- 2025-05-27 docs: add docstrings for
mpi_gather
andmpi_gather_asField
(elenafuengar) - 2025-05-26 tests: fix mpi folder creation issues (elenafuengar)
- 2025-05-23 tests: only allowed 2 procs per CI workflow... (elenafuengar)
- 2025-05-23 tests: reduce MPI pipeline to only 007 (elenafuengar)
- 2025-05-23 fix: update run workflow name (elenafuengar)
- 2025-05-23 tests: add MPI CI/CD on manual py3.10 (elenafuengar)
- 2025-05-23 test: add 007 to pytest pipeline (elenafuengar)
- 2025-05-22 style: remove duplicates, prepare for release (elenafuengar)
- 2025-05-23 tests: passing 007 for single core and mpiexec! (elenafuengar)
- 2025-05-19 fix: nightly test report fix (elenafuengar)
- 2025-05-14 style: move mpl.plt import (elenafuengar)
- 2025-05-13 docs: update release draft, prepare for deployment (elenafuengar)
- 2025-05-09 feature: multiGPU working (Ubuntu) -but needs optimization (elenafuengar)
- 2025-05-09 style: revise GPU example 002, fix folder result name (Elena De La Fuente Garcia)
- 2025-05-09 build: fix encoding when installing editable in Windows (Elena De La Fuente Garcia)
- 2025-05-08 docs: add miniforge (Windows/Linux) to python installation guide (elenafuengar)
- 2025-05-08 docs: fix reference typo (elenafuengar)
- 2025-05-07 feature: support
save_state
for MPI runs (elenafuengar) - 2025-05-06 docs: fix few mistakes spotted after RTD deployment (elenafuengar)
- 2025-05-06 docs: minor changes to adapt to the physics guide content (elenafuengar)
- 2025-05-06 docs: revised physics guide,
make html
passed (elenafuengar) - 2025-05-05 docs: first version of physics guide (elenafuengar)
- 2025-05-02 feat: new example for MPI+GPU simulation (in progress) (elenafuengar)
- 2025-04-29 docs: update installation with MPI-GPU findings (elenafuengar)
- 2025-04-24 Update README.md (Elena de la Fuente García)
- 2025-04-24 Create SECURITY.md (Elena de la Fuente García)
- 2025-04-24 Update and rename feature-request-💡.md to feature-request.md (Elena de la Fuente García)
- 2025-04-24 Update bug-report.md (Elena de la Fuente García)
- 2025-04-24 Update and rename bug-report-🐛.md to bug-report.md (Elena de la Fuente García)
- 2025-04-24 Update and rename 💡feature-request-.md to feature-request-💡.md (Elena de la Fuente García)
- 2025-04-24 Add issue templates (bug & feature) (Elena de la Fuente García)
- 2025-04-09 docs: small typo in readme (Elena de la Fuente García)
- 2025-04-07 docs: update readme with playground contents (elenafuengar)
- 2025-04-02 build: update release draft version to 0.6.0 (elenafuengar)
- 2025-04-02 tests: add MPI test files and test script in progress (elenafuengar)
- 2025-04-02 build: add neffint, iddefix and bihc as dependencies (elenafuengar)
- 2025-04-02 style: fix results folder and plot kwargs (elenafuengar)
- 2025-03-29 docs: update release.md (elenafuengar)
- 2025-03-29 docs: small typo (elenafuengar)
- 2025-03-27 style: revised notebook 004, in particular the iddefix extrapolation (elenafuengar)
- 2025-03-27 feature: include wakefield simulation in example 003 (elenafuengar)
- 2025-03-27 docs: fix sidebar TOC in conf.py, add TOC to installation and user guide, minor fixes (elenafuengar)
- 2025-03-27 feature: add wakefield simulation to MPI example and extrapolation to fully decayed (elenafuengar)
- 2025-03-27 feature: MPI wakefield simulation with
solver.wakesolve
is now working (elenafuengar) - 2025-03-27 docs: update MPI installation after testing on imp machines (elenafuengar)
- 2025-03-27 docs: fix in
index.md
for missing logo (elenafuengar) - 2025-03-26 docs: prepare v0.5.2 release (elenafuengar)
- 2025-03-26 feature: support for MPI in
wakesolve
in progress + refact: wakesolve saves now all longitudinal values,skip_cells
will only be applied insideWakeSolver
.add_space
anduse_edt
kept for legacy (elenafuengar) - 2025-03-26 test: adjust tes_001 to
WakeSolver
refactor in previous commit (elenafuengar) - 2025-03-26 fix: add
if
statement in wake potential calculation to catch rounding errors (profiler indicates only 0.1ns overhead) + refact:add_space
now deprecated forskip_cells'. This parameter now adjusts the slicing of z instead of modyfing zmin and zmax, since
solver.wakesolve` will now save all the longitudinal data (elenafuengar) - 2025-03-26 fix: typo in
solver.z.min()
(elenafuengar) - 2025-03-25 fix: change default to False for MPI (elenafuengar)
- 2025-03-21 feature: notebook 005 containing working MPI example using
ipyparallel
andmpi4py
, using MPI methods ins...
Wakis v0.5.1
Wakis v0.5.1
Minor fixes and updates
🚀 New Features
- Plotting
- Allow passing camera position to solver's 3D plots
plot3D
andplor3DnSTL
- Allow passing camera position to solver's 3D plots
💗 Other Tag highlights
- 🔁 Nightly tests with GitHub actions:
- 003 -> coverage for grid
inspect
andplot_solid
- 003 -> coverage for grid
- 📁 Examples:
- 003 -> MPI wakefield simulation with
mpi4py
- 003 -> MPI wakefield simulation with
- 📁 Notebooks:
- 005 -> MPI example in jupyter notebooks with
ipyparallel
+mpi4py
- 005 -> MPI example in jupyter notebooks with
🐛 Bugfixes
__version__
now matches PyPI release and taggridFIT3D.plot_solids()
fix typo in the opacity assignmentexample/001
fixed stl_solids parameter in grid.inspect() call
📝Full changelog
- 2025-03-12 fix: typo in ocpacity, variable overwritten (elenafuengar)
- 2025-03-12 test: add coverage for grid.inspect and grid.plot_solids (elenafuengar)
- 2025-03-12 fix: add_stl use keys not stl file path, add default parameters and uncomment (elenafuengar)
- 2025-03-11 feature: allow passing camera position as argument on 3D plotting routines (elenafuengar)
- 2025-03-11 test: study different pml_func profiles and compare smoothness and derivatives (elenafuengar)
- 2025-03-10 docs: update release.md for next version (elenafuengar)
- 2025-03-07 docs: update supported python versions 3.8+ <3.12 (elenafuengar)
- 2025-03-07 docs: update version (elenafuengar)
- 2025-03-07 docs: update CITATION.cff with v0.5.0 doi (Elena de la Fuente García)
- 2025-03-07 docs: add zenodo badge to readme.md (Elena de la Fuente García)
Wakis v0.5.0
Wakis v0.5.0
🚀 New Features
-
🧱 Geometry import:
- Functions to read
.STP
files, exporting each solid into an.STL
file indicating the name and material:wakis.geometry.generate_stl_solids_from_stp(stp_file)
- Functions to extract from
.STP
filessolid
names,colors
, andmaterials
:wakis.geometry.extract_XXX(stp_file)
to easily build the input dictionaries needed forGridFIT3D
- Functions to read
-
⚡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.plot3DonSTL
Field on STL solid usingpyvista.sample
interpolation algorithm- Interactive plane clipping on
plot3DonSTL
- Field shown on clipping plane
- Interactive plane clipping on
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 timet
- Custom amplitude as an attribute
self.amplitude
- Custom phase as an attribute
self.phase
- Custom injection time
self.tinj
- For
PlaneWave
allow for truncation at specific number ofself.nodes
injected
- Add
-
🌱 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
Plot2D
ipympl
added as a dependency towakis['notebook']
installation- Injection time to account for relativistic beta in sources
👋👩💻New Contributors
- @MaltheRaschke made their first contribution in #4
Full Changelog: v0.4.0...v0.5.0