gds_fdtd.solvers.beamz

gds_fdtd simulation toolbox.

BeamzSolver: the beamz (>= 0.4.3, < 0.5) adapter on the Phase-3 Solver contract. beamz is an open-source JAX FDTD engine (Apache-2.0, pip-installable, CPU or GPU) — the first zero-cost engine in the registry.

Design decisions (rule 8 — everything below verified against beamz 0.4.3 and its own compact-model reference example, which is the UBC SiEPIC crossing):

  • geometry rides beamz’s gdsf.prepare_component pipeline (extrusion, port extension, padding) rather than re-deriving its delicate port-plane/PML tuning. It is fed the source gdsfactory component when one is present, or else a shim over the polygons gds_fdtd already extruded from ANY source (KLayout/SiEPIC, raw GDS) — so beamz is solver-agnostic like the other adapters, not limited to gdsfactory-object inputs.

  • refractive indices resolve from, in order: explicit n_core=/n_clad= kwargs → the technology material’s rii reference (refractiveindex.info, evaluated at the center wavelength) → tidy3d_db.nk.

  • multi-layer stacks supported: every tech device layer present in the component becomes an extruded core at its own z (e.g. the Si→SiN escalator — a Si core at z 0–0.22 and a SiN core at z 0.3–0.7 — cross-validated against recorded tidy3d/Lumerical within ~0.1 dB on the through path). Each port’s mode plane sits on its own core. Still TE / mode 1 per port; TM and higher modes are future work.

  • units: beamz is SI (meters, seconds); gds_fdtd is um — converted here.

  • run() executes one FDTD run per excited port (full S-matrix = N runs), with adaptive decay stopping; extraction via get_S_matrix_modal_dft.

Functions

probe_beamz()

Classes

BeamzSolver(*args[, gf_component, n_core, ...])

beamz JAX FDTD adapter (tier: full-service, execution: local, free).