Skip to content

BeamZ v0.6.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 12:41
· 42 commits to main since this release
548f4e5

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 in TopologyProblem.

  • Added mode="pixel_exact" and optional bilinear contour sample_spacing to 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

Full Changelog: v0.5.3...v0.6.0