Repository navigation
BeamZ v0.6.0
Added
- Added end-to-end differentiable FDTD with portable JAX and accelerated native
CUDA reverse-mode execution, checkpointing, and differentiable modal objectives. - Added 2D and volumetric 3D topology inverse design with autodiff and spectral
adjoint gradients, broadband objectives, schedules, and fabrication-aware exports. - Added dispersive materials, a bundled optical material library, Bloch-periodic
boundaries, and executed metasurface and CMOS RGB sensor examples. - Added consistent full-tensor dielectric ports on uniform and rectilinear grids,
native CUDA full-tensor updates, and compact JAX/CUDA material storage. - Added experimental CUDA multistep scheduling and opt-in region rasterization
for Gmsh-derived scenes. - Added passive SOI differential benchmarks and expanded inverse-design,
grating-coupler, and interface-smoothing notebooks and validation reports.
Changed
- BeamZ now requires Python 3.11–3.14. Python 3.10 users must upgrade their
environment before installing v0.6.0. - The optional CUDA component is now version 0.30.0 / ABI 30. Rebuild the
extension when upgrading from an earlier ABI. - Reduced CPML and material storage overhead, reused modal solves, and improved
sharded CUDA storage selection and arithmetic consistency. - Updated dependencies for security fixes and added locked Python and Rust
dependency audits in CI.
Fixed
-
Corrected 2D mode launch and extraction in all four directions, normal Yee
sampling in 3D modal projection, tensor-axis mapping, and symmetric mode seeds. -
Made forced mode mirror symmetry opt-in and stabilized CPML coefficients,
including timestep-independent default alpha and compact 2D profiles. -
Fixed electrical conductivity binding in differentiable simulations.
-
Fixed topology contours shrinking away from design-region boundaries (#331).
Region clearing now uses exact cell footprints and fixed geometry supplies
interpolation context inTopologyProblem. -
Added
mode="pixel_exact"and optional bilinear contoursample_spacingto both
optimization export workflows, and fixed solid/void masks for port cells. -
Added explicit GDS coordinate precision and material/layer selection, preserving
holes without intermediate quantization through a global layout grid. -
Added a runnable mode-converter export showcase with GDS round-trip geometry and
transmission comparisons on 100 nm and 50 nm meshes.
Execution limits
- Native CUDA full-tensor updates require canonical, unpadded float32 streamed
storage. Full-tensor gradients use JAX; CUDA multistep scheduling has a narrower
supported physics and storage envelope. See CUDA documentation
for backend requirements and measured performance limits.
What's Changed
- docs: update citation for BeamZ v0.5.3 by @QuentinWach in #312
- build(deps): bump pyo3 from 0.29.2 to 0.29.3 in the rust-minor-patch group by @dependabot[bot] in #313
- build(deps): bump the python-minor-patch group with 2 updates by @dependabot[bot] in #314
- fix: make default CPML alpha independent of timestep by @QuentinWach in #317
- Revert #317 before replacing it with a minimal CPML fix by @QuentinWach in #318
- fix: keep CPML alpha fixed under timestep refinement by @QuentinWach in #319
- test: verify compiled CPML alpha defaults in 2D and 3D by @QuentinWach in #321
- test: add passive SOI benchmarks with stable DFT clocks by @teevee112 in #245
- feat: add broadband dispersive media, periodic boundaries for CMOS RGB sensor example by @QuentinWach in #233
- feat: add Bloch meta-atom optics and executed metasurface notebooks by @QuentinWach in #323
- build(deps): bump fsspec from 2026.1.0 to 2026.6.0 by @dependabot[bot] in #324
- docs: restore README to October 7, 2026 version by @QuentinWach in #325
- fix: make sharded CUDA storage selectable with consistent arithmetic by @vvahidd in #329
- feat: add topology inverse design with adjoint and autodiff workflows by @QuentinWach in #327
- [Docs]: Revise example links in README.md by @QuentinWach in #332
- [Docs]: Update inverse design description in README by @QuentinWach in #333
- Fix topology GDS boundary gaps and add explicit export modes by @QuentinWach in #335
- build(deps): bump hypothesis from 6.168.3 to 6.168.5 in the python-minor-patch group by @dependabot[bot] in #339
- Add volumetric inverse design and grating coupler notebook by @QuentinWach in #336
- test: fix float32 objective sign tolerance in main CI by @QuentinWach in #340
- perf(boundaries): store uniform 3D CPML constants as scalars; add interface smoothing report by @cdaunt in #341
- Add accelerated CUDA reverse-mode FDTD with portable JAX imports by @QuentinWach in #338
- Add experimental CUDA multistep scheduling based on PR #308 by @QuentinWach in #334
- Add experimental Futhark execution backend by @pepijndevos in #308
- Reduce modal projection overhead by reusing mode solves by @QuentinWach in #344
- Stabilize CPML coefficients and compact 2D profiles by @QuentinWach in #345
- Fix electrical conductivity binding in differentiable simulations by @QuentinWach in #349
- Fix 2D mode launch and extraction in all four directions by @QuentinWach in #350
- build(deps): bump the rust-minor-patch group with 2 updates by @dependabot[bot] in #351
- build(deps): bump the python-minor-patch group with 2 updates by @dependabot[bot] in #352
- fix(modes): make forced mirror symmetry opt-in by @QuentinWach in #357
- fix(analysis): account for normal Yee sampling in 3D modal projection by @QuentinWach in #358
- Add consistent full-tensor ports and compact JAX/CUDA material updates by @QuentinWach in #362
- Fix material tensor axis mapping in mode solves by @QuentinWach in #367
- Fix missing symmetric permittivity entries in mode seeds by @QuentinWach in #368
- build(deps): bump gitpython from 3.1.62 to 3.2.1 by @dependabot[bot] in #372
- build(deps): bump black from 26.3.1 to 26.10.1 by @dependabot[bot] in #373
- docs: make AI contribution disclosure optional by @QuentinWach in #378
- fix(deps): update certifi and Pillow security fixes by @QuentinWach in #379
- fix!: require Python 3.11 and patched Pillow by @QuentinWach in #380
- ci: audit locked Python and Rust dependencies by @QuentinWach in #381
- Add opt-in region rasterization for Gmsh-derived scenes by @vvahidd in #370
- chore(release): prepare BeamZ v0.6.0 by @QuentinWach in #383
- fix(docs): unblock v0.6.0 release qualification by @QuentinWach in #385
New Contributors
- @cdaunt made their first contribution in #341
- @pepijndevos made their first contribution in #308
Full Changelog: v0.5.3...v0.6.0