# GPU-native inverse design of a high-Q nanobeam cavity

<span class="validation-badge">validated · 2026-08-28</span>

<div class="case-meta"><span>invdes</span><span>resolution 1</span><span>invdes</span><span>cavity</span><span>high_q</span><span>fitted_q</span><span>autodiff</span><span>symmetry</span><span>binary</span><span>fabrication_constraints</span></div>

This case checks optimization performance: the best objective reached, not geometry identity or convergence speed.

::::{grid} 1

:::{grid-item-card} Open the complete executed tutorial →
:link: ../notebooks/high_q_nanobeam_optimization
:link-type: doc
:class-card: device-ladder-card

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 |
|---|---:|---:|---:|---:|---:|
| `validated_q_ratio` | 5.32759 | 2 | -3.32759 | — | <span class="metric-pass">PASS</span> |
| `optimized_vs_mirror_completed_control` | 2.02321 | 1 | -1.02321 | — | <span class="metric-pass">PASS</span> |
| `fabrication_violation_nm` | 0 | 0 | 0 | 1.000e-06 | <span class="metric-pass">PASS</span> |
| `material_binary_fraction` | 1 | 1 | 0 | 0 | <span class="metric-pass">PASS</span> |

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

```bash
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`.

[Return to the example atlas](../index.md)
