Registry / data / tidy3d

tidy3d

JSON →
library2.11.2pypypi✓ verified 87d ago

A fast FDTD solver for electromagnetic simulations, developed by Flexcompute. Current version is 2.11.1, with a rapid release cadence (multiple minor versions per month). Requires Python >=3.10, <3.15.

pip install tidy3d
INSTALL
IMPORT
SIG · TIDY3D
T
tidy3d
datapythonv2.11.2
Install
26.3s avg
Import
8601ms
Disk
540MB
Pass rate
9/ 10
Env Coverage9 / 10
glibc
3.9–3.13
musl
3.9–3.13
Install & Compatibility
Where this runs
tested against v2.11.2 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
glibc
py 3.10
✓ —
✓ 27.1s
py 3.11
✓ —
✓ 25.5s
py 3.12
✓ —
✓ 24.75s
py 3.13
✓ —
✓ 24.55s
py 3.9
✕ build_error
✓ 29.7s
540MB installed
● package 540MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

Simulation
✓ from tidy3d import Simulation
✗ import tidy3d as td td.Simulation(...)

Creates a basic waveguide with a point dipole source and field monitor. For cloud execution, uncomment the web.run() call and set your API key via environment variable TIDY3D_API_KEY.

import tidy3d as td import numpy as np # Define a simple waveguide simulation sim = td.Simulation( size=(4.0, 2.5, 2.0), grid_spec=td.GridSpec.auto(min_steps_per_wvl=10), boundary_spec=td.BoundarySpec.pml(x=False, y=True, z=True), structures=[ td.Structure( geometry=td.Box(center=(0, 0, 0), size=(td.inf, 0.5, 0.22)), medium=td.Medium(permittivity=2.0) ) ], sources=[ td.PointDipole( center=(-1.5, 0, 0), polarization='Ex', source_time=td.GaussianPulse(freq0=200e12, fwidth=40e12) ) ], monitors=[ td.FieldMonitor(center=(0,0,0), size=(0,0,0), freqs=[200e12], name='point') ], run_time=1e-12 ) # Run locally (requires solver; for cloud use: web.run(sim, task_name='test')) # data = web.run(sim, task_name='quickstart') print('Simulation created successfully.')
Debug
Known issues
gotchaDefault units are micrometers (um), but frequencies are in Hz. Ensure size, center, and wavelength-related parameters are consistent.
fix
Use si_units=True in simulation constructor to switch to meters, or manually convert.
affects: all
deprecatedThe 'adjoint' plugin API changed with pydantic v2 migration in 2.10.0rc3. Old code using 'td.adjoint' may break.
fix
Use the new API via tidy3d.plugins.adjoint. Refer to migration guide.
affects: <2.10.0rc3
gotchaWhen using cloud execution, you must set the TIDY3D_API_KEY environment variable or configure credentials via 'tidy3d configure'.
fix
Run 'tidy3d configure' or set environment variable TIDY3D_API_KEY=your_api_key.
affects: all
breakingnumpy>=2.4 is not supported (as of 2.10.1). Installing tidy3d with numpy 2.4 may cause errors.
fix
Downgrade numpy to <2.4, or upgrade tidy3d to 2.10.2+ which includes a patch.
affects: <=2.10.1
gotchaThe 'run_time' parameter must be long enough for the pulse to decay; otherwise, the simulation may error.
fix
Estimate run_time as n_periods / fwidth where n_periods is at least 10-20.
affects: all
Upgrade
Version history
2.11.2latest on PyPI · released May 7, 2026
Audit
Dependencies
numpyrequiredCore numerical library, version <2.4 required (patched in 2.10.1)
pydanticrequiredData validation and settings management, v2 used since 2.10.0rc3
autogradoptionalAutomatic differentiation for adjoint optimization
Agent activity
19 hits · last 30 days
node
18
OpenAI (training)
1
Resources
tidy3d — pip install tidy3d · libregistry