gds_fdtd.solvers.base

gds_fdtd simulation toolbox.

The Phase-3 solver contract. Every engine adapter implements:

validate() -> list[str]        # human-readable problems; [] = ok
build()    -> SetupArtifacts   # native scene, OFFLINE, serializable
estimate() -> ResourceEstimate # cells/memory/cost hints, offline
run()      -> SMatrix          # the ONLY method allowed to spend
                               # money / licenses / GPU time

Constructors MUST be cheap and pure: no disk writes, no network, no license checks — the remote-compute invariant: a JobSpec must be buildable anywhere. The Tidy3D adapter’s scene-building engine base lives in the internal solvers._tidy3d_base module.

Functions

available_solvers()

Registered solver names -> availability ('ok' or the import problem).

get_solver(name)

Fetch a registered solver class by name (registry + entry points).

register_solver(cls)

Class decorator: register an adapter under its name.

Classes

ResourceEstimate([grid_cells, memory_gb, ...])

Offline resource estimate; fields are hints, None = unknown.

SetupArtifacts(native, files, ...)

Everything build() produced: native scene + any files written.

Solver(component, technology[, spec, workdir])

Abstract engine adapter.

SolverCapabilities(*, tier, execution, ...)

What an engine adapter can and cannot do (declared, not probed).