Release history


  • Solver speed improvement (gain depending on simulation + hardware details).

  • Bringing the speed of the non-angled mode solver back to pre-21.4.2 levels.


  • Improvements to subpixel averaging for dispersive materials.

  • Enabled web login using environment variables TIDY3D_USER and TIDY3D_PASS.


  • Bugfix when running simulation with zero run_time.

  • More internal logging.

  • Fixed unstable 'Li1993_293K' variant of cSi in the material library.

  • Bugfix when downloading data on Windows.

  • Bugfix in material fitting tool when target tolerance is not reached.


  • New Gaussian beam source and example usage.

  • Modal sources and monitors in bent and in angled waveguides with tutorial.

  • Nyquist-limit sampling in frequency-domain monitors (much faster without loss of accuracy).

  • Support for Drude model of material dispersion.

  • Small bugfixes to some of the other dispersion models.

  • PEC boundaries applied by default at the truncation of any boundary with PML, avoiding potential issues with using periodic boundaries under the PML instead.

  • Source normalization no longer adding a spurious frequency-dependent phase to the fields.

  • Fixed bug in unpacking monitor fields with symmetries and interpolate=False.

  • Lots of streamlining on the backend side.


  • Further small fixes.

    • Bug with zero-size monitor plotting.

    • Bug with empty simulation run introduced in 21.4.0.


  • A few small fixes.

  • A few more bugfixes:

  • Nonlinear constraint in dispersive material fitting tool.

  • Potential issue when a monitor stores neither 'E' nor 'H'.

  • Some backwards compatibility issues introduced in

  • Frequency monitors can now optionally store the complex permittivity at the same locations where the E-fields are recorded, at the monitor frequencies.

  • Frequency monitors now also have an 'interpolate' keyword, which defaults to 'True' and reproduces the behavior of previous versions. If set to 'False', however, the raw fields evaluated at their corresponding Yee grid locations are returned, instead of the fields interpolated to the Yee cell centers. This also affects the returned permittivity, if requested.

  • Reorganized internal source time dependence handling, enabling more complicated functionality in the future, like custom source time.

  • Total field in the simulation now sampled at the time step of the peak of the source time dependence, for better estimation of the shutoff factor.

  • A number of bug fixes, especially in the new plotting introduced in

  • Reorganized plotting:

  • Speeding up structure visualizations.

  • Structures now shown based on primitive definitions rather than grid discretization. This then shows the physical structures but not what the simulation “sees”. Will add an option to display the grid lines in next version.

  • Bumped down matplotlib version requirement to 3.2 and python version requirement to 3.6.

  • Improved handling of PEC interfaces.

  • Reorganized and extended internal logging.

  • Added tidy3d.__version__.

  • A number of fixes to the example notebooks and the colab integration.

  • Bumping back python version requirement from 3.8 to 3.7.

  • Hotfix to an internal bug in some simulation runs.

  • New dispersion fitting tool for material data and accompanying tutorial.

  • (beta) Non-uniform Cartesian meshing now supported. The grid coordinates are provided by hand to Simulation. Next step is implementing auto-meshing.

  • DispersionModel objects can now be directly used as materials.

  • Fixed bug to Cylinder subpixel averaging.

  • Small bugs fixes/added checks for some edge cases.

  • Rehash of symmetries and support for mode sources and monitors with symmetries.

  • Anisotropic materials (diagonal epsilon tensor).

  • Rehashed error handling to output more runtime errors to tidy3d.log.

  • Job and Batch classes for better simulation handling (eventually to fully replace webapi functions).

  • A large number of small improvements and bug fixes.