GPU-native inverse design of a high-Q nanobeam cavity#
validated · 2026-08-28
This case checks optimization performance: the best objective reached, not geometry identity or convergence speed.
Parameters → exact geometry → voxelized material → local FDTDX run → simulated field → quantitative analysis. Every code cell and retained output is visible, and the .ipynb source is downloadable.
This page is the compact benchmark record. The linked notebook is the primary scientific documentation and contains the actual simulation evidence.
What is exercised#
Starts from the unchanged documented eight-hole nanobeam cavity. A generic mirror-completion helper fills every nominal period that fits before the non-PML boundary; the silicon beam itself continues through the PML. All ten positive-side hole centers and radii are then independent bounded controls, while x/y field parity generates the other quarters. The objective is a differentiable multi-window pole fit to 0.6 ps of post-source ringdown, and exact checkpointed FDTD supplies the GPU-native gradient. Binary 8x8 subcell circle fills are used in the forward pass, with a smooth straight-through shape derivative and Armijo backtracking. Final metrics come only from a fresh 3 ps rebuild of literal symmetric cylinders analyzed by the independent local ResonanceFinder. The unchanged Q=35125.30 defines the twofold target; the stricter second metric also requires no regression from the unoptimized mirror-completed Q=92493.30 control. Hard center/radius bounds guarantee at least 65 nm silicon bridges; the realized minimum is reported at runtime. A separate held-out 20nm replay with matched 0.30um PML thickness retains a 3.12x optimized/baseline Q ratio; it is documented as robustness evidence, not used as a pass metric because the 500nm beam spans an odd cell count.
This case runs at its declared full benchmark resolution (resolution factor 1.0).
Reconstruction choices#
This is a performance-equivalence reconstruction of the official notebook, not a pixel copy. The design is optimized by differentiating a real FDTDX time-domain solve. No final Tidy3D material pixels are imported. The recorded best result uses a documented Yee grid, — time steps per solve, and 1 local updates, versus — updates in the published Tidy3D run.
The acceptance target is 95% of the published best FOM. Iteration count may be up to three times the Tidy3D count, because device performance—not matching a particular topology or optimizer speed—is the scientific claim. Incident power is calibrated independently, port power is checked for passivity, and wavelength-routing cases share one physical filtering/projection policy.
Recorded result#
Metric |
Observed / error |
Reference / limit |
Error |
Effective budget |
Result |
|---|---|---|---|---|---|
|
5.32759 |
2 |
-3.32759 |
— |
PASS |
|
2.02321 |
1 |
-1.02321 |
— |
PASS |
|
0 |
0 |
0 |
1.000e-06 |
PASS |
|
1 |
1 |
0 |
0 |
PASS |
The table is rendered from progress.json; it is not a hand-written success claim. For metrics that report an error directly, the “observed” column repeats that error and the reference column is the acceptance threshold.
Reproduce#
uv run fdtdx-bench run --case invdes_nanobeam_cavity
Implementation and provenance: benchmarks/cases/invdes_nanobeam_cavity/case.yaml, benchmarks/cases/invdes_nanobeam_cavity/run.py.