[pre-ANN] Differentiable FDTD for inverse design in photonics, acoustics and RF

3d works now :slight_smile: We even did (attempted) 3d inverse design of a silicon photonics signal splitter - it’s converging though the low resolution (for saving time) produced artifacts. Below are 3d scattering and antenna simulations. Previous 1d/2d code broke but will be fixed later

We also reduced malloc without messing up autodiff by using Zygote.Buffer and renamed to FDTDEngine until we find a better name :smiley:

If you’re running 3d simulations feel free to try. Follow the quickstart in docs
If you’re doing inverse design then it’s more complicated since geometry generation and FOM are problem specific. Message me for starter scripts.

We’ll clean up repo and tighten up the inverse design scripts for silicon photonics and RF metamaterials in the coming weeks


11 Likes

Could this simulate arbitrary strip-line antenna geometry and calculate far-field complex polarization responses for arbitrary frequencies and angle of arrivals?

Yes I can add such a postprocessing feature - just need to fft the monitor surfaces and do a far field integration. Or just far field integrate the approximate current distribution on the strip without FDTD. I can make either adjoint differentiable. Feel free to PM me.

Added GPU support, forward and adjoint. Improved API for monitors, modal sources… Did inverse design of a simple 3d signal splitter in silicon photonics

2 Likes

Would it make sense to move this package to JuliaPhysics?

There is also a couple of other wave/optics packages

1 Like

Sweet! Can you link to the file which produced this? Edit - found it

1 Like

Cool - fOr other folks that file is at FDTDEngine.jl/examples/inverse_design_signal_splitter/inverse_design_signal_splitter.jl at master · paulxshen/FDTDEngine.jl · GitHub
sorry missed couple installation issues - fixed now - that example should run

Still prerelease but pushed updates:

  • spherical monitor for nearfield radiation pattern (see antenna example)
  • documentation for tutorials
  • inverse design example now does a 2D TE adjoint optimization first as a fast approximation (3D adjoint optimization has stability issues requiring a low Courant #)
  • bug fixes
6 Likes