gds_fdtd¶
EDA- and solver-agnostic 3D FDTD simulation framework for photonic layouts: GDS in, S-parameters, fields, and compact models out - tidy3d, Lumerical, or beamz behind one API.
gds_fdtd takes one component, one technology file, and one
SimulationSpec, and runs the identical job on any engine: tidy3d (cloud), Ansys Lumerical (local), or
beamz (free, JAX), behind a single
get_solver(name) contract. The three engines agree within 0.052 dB on an
identical job (tidy3d and Lumerical within 0.0033 dB).
from gds_fdtd.technology import Technology
from gds_fdtd.layout.gdsfactory import from_gdsfactory
from gds_fdtd.solvers import get_solver
from gds_fdtd.spec import SimulationSpec
import gdsfactory as gf
tech = Technology.from_yaml("tech.yaml")
gf.gpdk.PDK.activate()
component = from_gdsfactory(gf.components.mmi1x2(), tech) # any frontend
solver = get_solver("beamz")(component, tech, SimulationSpec()) # any engine
smatrix = solver.run() # the only call that spends money / a license / GPU
smatrix.to_touchstone("mmi.s3p")
The same y-branch, three engines: all land within a few hundredths of a dB of each other and the −3 dB ideal. Reproduced in 07 · Choosing an engine — three solvers, one job.¶
Start here¶
Twelve executed notebooks, from a ten-line quickstart to polarization splitters. Every plot is real solver output.
Every public module, class, and function, grouped by topic.
GDS to S-parameters in four steps, on any engine.
The layer stack and the three optical-constant sources (engine model, refractiveindex.info, or a constant).
gdsfactory, SiEPIC/KLayout, raw GDS, PreFab, and how to add your own.
Any FDTD engine becomes a gds_fdtd solver in four methods.
What you can do with it¶
Run the same job on tidy3d, Lumerical, or beamz via
get_solver(name), and cross-validate them against each other.Load layouts from gdsfactory, SiEPIC/KLayout, or raw GDS with auto-detected ports.
Configure the layer stack and materials in one YAML, including dispersive refractiveindex.info models that feed every engine.
Solve TE and TM modes in one simulation.
Extract, check (reciprocity / passivity), plot, and export S-parameters to Touchstone, INTERCONNECT
.dat, HDF5, or npz.Preview cost offline and only spend on
run(); ship jobs to remote/batch compute with enforced budgets.