Skip to content

Campaign: design23_v1/pure_bfgs_maxQ_diagFDTD

Assembled 2026-07-29 15:57 UTC.

Engine: design23_v1 · path: engines/design23_v1/campaigns/pure_bfgs_maxQ_diagFDTD/

campaign.yaml

# Design23 pure analytical BFGS + diagnostic FDTD
name: design23_pure_bfgs_maxQ_diagFDTD
device: design23_multilayer_nanobeam
engine:
  path: engines/design23/v1.4.0/design23_recentered_optimizer
  version: "1.4.0"
seed: seed.json
objective:
  type: maximize
  formula: "-log(Q)"
  notes: "Pure BFGS on analytical Q + gradient; no max-Δnm trust cap."
constraints:
  continuum_agreement_max_relative: 0.05
  dual_resolution_screen_and_confirm: true
fdtd:
  role: diagnostic_only
  every_n_accepted_analytical_steps: 3
  never_accept_reject_or_rollback: true
budget:
  flexcredits_default: 10
entrypoints:
  campaign: run_campaign.py
  optimizer: run_pure_bfgs.py
  dashboard: publish_dashboard.py
docs:
  strategy: README.md

README

Design23 pure analytical BFGS + diagnostic FDTD

Strategy package for testing a simple Design23 optimization path:

  1. Optimize with BFGS only on the analytical quality factor and its derivative (objective = -log Q), using the Design23 v1.4.0 dual-resolution continuum machinery (screen panel + confirmation panel, Armijo, continuum agreement).
  2. Do not use FDTD to accept, reject, roll back, or otherwise steer the optimizer. The analytical path is treated as an exact black-box function.
  3. Every 3 accepted analytical steps, run a Tidy3D FDTD job as a diagnostic only. The current routine uses a 16 ps auto-14 ringdown with automatic shutoff, followed by an exact-pole coherent E/H, flux, and mode-port measurement for trustworthy mode volume and TE0 beta.
  4. Stop when a STOP file appears or the session spends 10 FlexCredits.

Dashboard

Persistent public dashboard (served by the shared hub):

  • https://hub.157.173.197.248.sslip.io/hub/runs/20260725T122124Z_design23_pure_bfgs_maxQ/dashboard/

The dashboard is a static run artifact. It remains available after the optimizer exits and does not need a campaign-specific HTTP port.

Shows:

  • current state / FlexCredit spend
  • analytical Q vs accepted step, with FDTD diagnostic points overlaid
  • parameter deltas vs seed (gaps, mean radius, ellipticity)
  • Tidy3D plot_field |E|² midplanes (XY + XZ) for initial and latest diagnostic FDTD (geometry overlay via eps_alpha)

Run

cd design23_analytical_bfgs_diagnostic
../.venv/bin/python -u run_campaign.py \
  --flexcredit-cap 10 \
  --diagnostic-every 3 \
  --run-time-ps 16 \
  --steps-per-wavelength 14

Stop:

touch runs/<run>/STOP

Layout

Path Role
run_campaign.py Outer loop: BFGS batches ↔ diagnostic FDTD, budget, STOP
run_pure_bfgs.py Pure analytical BFGS (no FDTD gate)
diagnostic_fdtd.py Tidy3D submit + hi-res dashboard_xy / dashboard_xz monitors
extract_field_plots.py Post-seed, Hann-projected resonant field panels cropped to monitor bounds
publish_dashboard.py Writes dashboard/live.json
dashboard/index.html Static UI
seed.json Materialized Design23 seed (verified FDTD Q ≈ 2.09e4)

Engine code is imported from design23_recentered_bfgs_v1.4.0/design23_recentered_optimizer/ (not forked).

The observable definition, publication gates, confidence wording, historical late-tail failure, convergence evidence, and remaining limitations are documented in docs/workflow/fdtd-verification.md.