[ANN] FluxOptics.jl - Inverse optical design with automatic differentiation

Hi,

I developed FluxOptics.jl, a package for differentiable optical field propagation. It is now registered and I would appreciate any feedback from the community.

The name draws inspiration from Flux.jl: optical components act as differentiable layers that can be composed and optimized end-to-end. The package emphasizes performance, flexibility, and integration with Julia’s scientific computing ecosystem.

What it does

Scalar wave propagation with full automatic differentiation support for gradient-based optimization. Applications include analysis problems (tomography, field retrieval) and synthesis problems (inverse design of multi-element systems, multimode/multi-wavelength beam shaping).

Key features

The package integrates with Optimisers.jl and extends it to use proximal operators for TV regularization, ISTA, and constraints. It offers a flexible architecture with pure components for rapid prototyping or custom components with manual adjoints for production-level performance. GPU acceleration is supported via CUDA.

The package includes tutorials covering various applications. Any feedback on the API, documentation, or examples would be very helpful. I’m also looking for people who might be interested in testing it.

Thanks!

5 Likes