Wakis
Authors/Creators
Description
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.
- 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 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)
- 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_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 #12 - Enhanced 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.
- 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
003with 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
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
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_gatherandmpi_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_statefor 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 htmlpassed (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.wakesolveis now working (elenafuengar) - 2025-03-27 docs: update MPI installation after testing on imp machines (elenafuengar)
- 2025-03-27 docs: fix in
index.mdfor missing logo (elenafuengar) - 2025-03-26 docs: prepare v0.5.2 release (elenafuengar)
- 2025-03-26 feature: support for MPI in
wakesolvein progress + refact: wakesolve saves now all longitudinal values,skip_cellswill only be applied insideWakeSolver.add_spaceanduse_edtkept for legacy (elenafuengar) - 2025-03-26 test: adjust tes_001 to
WakeSolverrefactor in previous commit (elenafuengar) - 2025-03-26 fix: add
ifstatement in wake potential calculation to catch rounding errors (profiler indicates only 0.1ns overhead) + refact:add_spacenow deprecated forskip_cells'. This parameter now adjusts the slicing of z instead of modyfing zmin and zmax, sincesolver.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
ipyparallelandmpi4py, using MPI methods insideGridandSolver. Beautiful <3 (elenafuengar) - 2025-03-21 feature: working MPI script for an electromagnetic simulation, using new MPI methods inside Grid and Solver (elenafuengar)
- 2025-03-21 style: change BCs for MPI subdmains to
mpifor code readability (elenafuengar) - 2025-03-21 feature: MPI implementation in SolverFIT3D, with
mpi_one_step()to perform MPI leapfrog update,mpi_communicate()to send/recv information between mpisubdomains,mpi_gather()to retrieve the global field as a np.array for the specific x,y,z and componen, andmpi_gather_asField()to retrieve the global field as aFieldinstance (elenafuengar) - 2025-03-21 feature: MPI implementation in GridFIT3D inside init, with
mpi_initialize()to generate the z-subdomains andmpi_gather_asGrid()to retrieve the global grid (elenafuengar) - 2025-03-21 fix: error handling for
plot3Dandplot3DonSTLwhenuse_mpi = True-not supported (elenafuengar) - 2025-03-21 feature: support for MPI and non-MPI inside
plot1D-input script agnostic! (elenafuengar) - 2025-03-21 feature: support for MPI and non MPI plots in Plot2D (elenafuengar)
- 2025-03-21 refactor: include MPI support inside
uptade()(elenafuengar) - 2025-03-21 style: remove check for component Abs, using getitem supported key (elenafuengar)
- 2025-03-20 feature: support key[3] = 'abs' or 'Abs' in getitem (elenafuengar)
- 2025-03-20 feature: update script to use MPI functions inside solver (elenafuengar)
- 2025-03-20 feature: include MPI functions inside solver to run MPI simulations with
mpi4pyand openmpi (elenafuengar) - 2025-03-19 refact: change MPI update to use global ZMIN when solver hassattr, add plot(t) function (elenafuengar)
- 2025-03-18 Merge pull request #11 from mctfr/patch-1 (Elena de la Fuente García)
- 2025-03-18 Update installation.md (Manuel Cotelo Ferreiro)
- 2025-03-18 docs: revise docstrings (elenafuengar)
- 2025-03-18 docs: major revision of user guide, update index and installation guide to include MPI setup (elenafuengar)
- 2025-03-16 docs: update README & citation (elenafuengar)
- 2025-03-14 docs: add PR template (elenafuengar)
- 2025-03-13 fix: update default injection time to account for beta (elenafuengar)
- 2025-03-13 feature: add
dpiandreturn_handlesas kwargs (elenafuengar)
Full Changelog: https://github.com/ImpedanCEI/wakis/compare/v0.5.1...v0.6.0
Notes
Files
ImpedanCEI/wakis-v0.6.0.zip
Files
(14.0 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:8f8a827c36f93040e6a7f7d528db75b8
|
14.0 MB | Preview Download |
Additional details
Related works
- Is supplement to
- Software: https://github.com/ImpedanCEI/wakis/tree/v0.6.0 (URL)
Software
- Repository URL
- https://github.com/ImpedanCEI/wakis