---
title: FDTDX · GPU FDTD and inverse design
---

```{raw} html
<section class="fdtdx-hero">
  <div class="hero-kicker">Open source · JAX native · independently benchmarked</div>
  <h1>Electromagnetics at <span class="hero-gradient">accelerator speed.</span></h1>
  <p class="hero-lede">FDTDX is a differentiable finite-difference time-domain solver for photonic simulation and inverse design. This Hood Lab fork develops and tests the solver against analytical physics and pinned Tidy3D reference data.</p>
  <div class="hero-actions">
    <a class="hero-button primary" href="getting_started/installation.html">Install and simulate →</a>
    <a class="hero-button" href="tutorials/index.html">Explore tutorials</a>
    <a class="hero-button" href="project/fryett_encapsulated_qv_dashboard.html">Live boundary-LDOS optimizer</a>
    <a class="hero-button" href="project/optimization_campaigns.html">Optimization atlas</a>
    <a class="hero-button" href="project/validation.html">See validation evidence</a>
  </div>
</section>

<div class="metrics-strip">
  <div class="metric-card"><span class="metric-value" data-count="46">46</span><span class="metric-label">passing cases</span></div>
  <div class="metric-card"><span class="metric-value" data-count="6">6</span><span class="metric-label">active failures</span></div>
  <div class="metric-card"><span class="metric-value" data-count="16">16</span><span class="metric-label">executed notebooks</span></div>
  <div class="metric-card"><span class="metric-value" data-count="3">3</span><span class="metric-label">honestly blocked</span></div>
</div>
```

## One computational graph, from fields to designs

FDTDX expresses geometry, sources, Maxwell time stepping, detector readout, and objectives with JAX arrays. The result is a simulation that can be JIT-compiled onto accelerators and differentiated end-to-end. The Hood Lab fork adds the validation and interoperability needed to use that foundation with confidence.

```{figure} _static/generated/workflow.svg
:alt: FDTDX workflow from geometry through Maxwell stepping to optimization
:class: figure-shell

A forward simulation and its reverse-mode gradient share the same JAX-native model.
```

::::{grid} 1 2 2 3
:gutter: 3

:::{grid-item-card} ⚡ JAX-native execution
:class-card: feature-card

JIT compilation, GPU execution, vectorization, and automatic differentiation are part of the numerical model—not wrappers around a separate engine.
:::

:::{grid-item-card} 🌊 Full-wave time domain
:class-card: feature-card

Yee-grid electric and magnetic fields, PML and periodic boundaries, dispersive media, anisotropy, phasor monitors, mode sources, and S-parameters.
:::

:::{grid-item-card} ◇ Differentiable design
:class-card: feature-card

Optimize material density through a real Maxwell solve. Gradient plumbing is validated; device-level parity is now fail-closed while each reference's initialization, symmetry, constraints, and FOM are reproduced exactly.
:::

:::{grid-item-card} ⬡ Geometry as code
:class-card: feature-card

Compose boxes, polygons, cylinders, material tensors, sources, detectors, and boundaries using immutable, transformation-friendly objects.
:::

:::{grid-item-card} ✓ Evidence first
:class-card: feature-card

Every claim here traces to a runnable analytical test or a frozen Tidy3D golden. Coarse-grid comparisons use declared resolution-aware budgets.
:::

:::{grid-item-card} ⟲ Open and inspectable
:class-card: feature-card

MIT-licensed solver code, readable benchmark runners, checked-in compact goldens, and no paid cloud simulation in the test loop.
:::

::::

## Choose a path

::::{grid} 1 2 2 2
:gutter: 3

:::{grid-item-card} First simulation →
:link: getting_started/first_simulation
:link-type: doc

Learn the scene → placement → configuration → run pattern with a compact dielectric-scattering example.
:::

:::{grid-item-card} Understand the solver →
:link: concepts/how_fdtd_works
:link-type: doc

Follow Maxwell's curl equations onto the staggered Yee grid, through boundaries and detector readout.
:::

:::{grid-item-card} Design a splitter →
:link: tutorials/inverse_design
:link-type: doc

Work through density filtering, differentiable material maps, objective normalization, and optimization diagnostics.
:::

:::{grid-item-card} Inspect every result →
:link: examples/index
:link-type: doc

Browse every currently passing case, exact metrics, implementation paths, and rerun commands. Excluded inverse-design audits remain visible separately.
:::

:::{grid-item-card} Tour real devices →
:link: examples/real_world_devices
:link-type: doc

Compare ten validated forward notebooks, the fitted-Q high-Q cavity optimization, and the fail-closed inverse-design audits with independent forward checks of final binary geometries.
:::

:::{grid-item-card} Watch the beta-first optimizer →
:link: project/optimization_campaigns
:link-type: doc

Find every live, paused, stopped, and completed optimization through paired
geometry and field thumbnails, then open its full evidence page.
:::

::::

```{admonition} Project identity
:class: truth-note

**FDTDX** is the upstream open-source solver created by Yannik Mahlau and collaborators. **fdtdx-hoodlab** is a research fork that extends and validates it toward Tidy3D-like FDTD coverage. These docs distinguish validated behavior from work still in progress.
```

```{toctree}
:hidden:
:maxdepth: 3

getting_started/index
concepts/index
tutorials/index
examples/index
reference/index
project/index
```
