Change Log¶
1.1.6 - 2025-07-08¶
Added
Argument
use_angle_rotation
to Tidy3D conversion functions fromPort
andFiberPort
, to enambleangle_rotation
in theModeSpec
they generate, if necessary.
Changed
Mode fields are only stored in Tidy3d simulation data when needed for mode remapping.
Fixed
Critical error in annotated types from parametric component library (unhashable types).
1.1.5 - 2025-06-24¶
Added
PortSpec.default_radius
can be used to set preferred radius for any port specification.Interpolation method
"poleresidue"
toDataModel
to use a pole-residue matrix fit for frequency interpolations.Argument
pre_export_function
towrite_layout()
,Component.write_gds
, andComponent.write_oas
to make temporary changes in components right before exporting.Rectangle.perimeter()
,Circle.perimeter()
,Polygon.perimeter()
, andPath.perimeter()
for perimeter computation.Properties
to all objects to hold arbitrary metadata.Argument
min_evals
toCircle
andPath
section methods to override the minimal number of points used in polygonal conversion based onconfig.tolerance
.Argument
max_evals
toPath
section methods to allow the construction of complex geometries that require more evaluations that the default.PortSpec.path_profiles_list()
to get path profiles always as a list.
Changed
Deprecation: All json methods have been deprecated for removal in the 1.2 release.
Fixed
Memory access bug in S matrix comparison.
Other minor memory leak fixes.
1.1.4 - 2025-05-03¶
Added
Component.slice_profile()
to create path profiles from existing waveguide geometries.ExtrusionSpec.reference
to change the reference plane for sidewall angle dilations and erosions.MaskSpec.translation
to allow masks to be translated during extrusion (mainly for mask alignment sensitivity tests).Support for SubpixelSpec to
Tidy3DModel
andEMEModel
.Helper function
virtual_port_spec()
to quickly create virtual port specifications.
Changed
WaveguideModel
now accepts aPortSpec
or the string"cross-section"
for more flexible propagation index calculation.Updated minimal
config.grid
size to avoid truncation errors when snapping ports.Updated default settings for electrical simulations (experimental feature).
Updated default values for electrical simulation grids and
cpw_spec()
.
Fixed
parametric.rectangular_spiral()
length incorrectly calculated in specific cases.Serialization of complex Tidy3D objects included in a
Tidy3DModel
.Improved error handling in a few python interfaces.
Segfault in
Path.bezier()
.
1.1.3 - 2025-04-11¶
Added
Support for angled ports in circuit simulations.
Several
Path
attributes.Path.interpolate()
to query path positions by length.Path.updated_copy()
to create copies with different widths and offsets.ExtrusionTable
andPortSpecTable
visualizers, used by default withTechnology.extrusion_specs
andTechnology.ports
.Better console and HTML representations for
Technology
.Support for ports in curved waveguides with
Port.bend_radius
.
Fixed
Backwards compatibility fix in phf files using specific parametric technologies.
1.1.2 - 2025-03-25¶
Fixed
Crash when no active model is present in phf file.
1.1.1 - 2025-03-24¶
Added
Terminal routes in
component_from_netlist()
accepts keyword arguments.Component.query()
andReference.query()
to look for ports and terminals within the component dependency tree.Arguments
boundary_margin
andminimal_turn_angle
toComponent.detect_ports()
to fine-tune port detectiongrid_layout()
to arrange components or other structures in a rectangular grid.pack_layout()
to pack components or other structures in a compact area.Support for specifying waypoints as 2D coordinates in
route_manhattan()
.
Changed
Analytical models include all-zero elements in S matrix output.
Fixed
Tidy3D simulation hanging when an error occurs during upload or download.
Axis label in
plot_s_matrix()
.Component.detect_ports()
properly detects and ignores co-linear vertices in polygons.Data arrays from numpy and xarray within Tidy3D objects breaking serialization.
1.1.0 - 2025-03-04¶
Added
Electrical interface support: electrical port specifications and terminals, terminal routing with
parametric.route_taper()
, andparametric.route_manhattan()
andcpw_spec()
utility function to create CPW port specifications.Class
TimeDomainModel
for time-stepping based on aPoleResidueMatrix
.live_viewer.LiveViewer
for live geometry and component visualization.Functions
PoleResidueMatrix.is_passive()
,PoleResidueMatrix.enforce_passivity()
, andPoleResidueMatrix.get_rms_error()
.Options
passive
,delays
,stable
, andfeedthrough
inpole_residue_fit()
to better control the fitting process.parametric.circular_spiral()
as an alternative to existing rectangular spiral.Argument
full_length
toparametric.rectangular_spiral()
andparametric.circular_spiral()
to preset the desired spiral length.FDTD cost estimation with
Tidy3DModel.estimate_cost()
.Defaults for parametric components and models can be set in
config.default_kwargs
.Path.arc()
,Path.turn()
, andPath.s_bend()
can use defaults forradius
andeuler_fraction
fromconfig.default_kwargs
.Function
s_bend_length()
can be used to calculate the ideal S bend length for specific radius and offset.Subscript operation to
Component
to retrieve ports and terminals.Component.disconnected_reference_ports()
andComponent.add_reference_ports()
to facilitate adding ports from references.Component.tree_view()
to pretty-print component dependency trees.Parameter
on_boundary
toComponent.detect_ports()
to limit search at the component boundaries.Function
heal()
to remove small features from structures.Added bulge option to automatically widen long straight waveguide sections.
config.svg_reference_labels
to control display of labels from references.Json representation for planar structures.
Class
FiberPort
for general waveguide ports.Port.can_connect_to()
verifies if 2 ports can be connected by a waveguide route.PortSpec.combined_with()
to combine path profiles from port specifications.PortSpec.added_solver_modes
to port specifications, which allows for single TM mode ports.Attribute
MaskSpec.layer
for single-layer mask specifications.LayerTable
visualizer for technology layer specifications, used by default withTechnology.layers
.Argument
verbose
toTidy3DModel.start()
,EMEModel.start()
,WaveguideModel.start()
, andCircuitModel.start()
.Accept simplified forms of port symmetries and added
Tidy3DModel.test_port_symmetries()
.abort_pending_tasks()
can be used to abort all running simulations at once.Function
SMatrix.estimate_phase()
for estimation of minimum-phase-shift data from given amplitude data, and functionsSMatrix.apply_time_delay()
andSMatrix.estimate_delays()
.Function
port_modes()
to solve port modes using caches.Argument
parallel_jobs
to start multiple Monte Carlo tasks in parallel inmonte_carlo.s_matrix()
.
Changed
Parallel upload and download of Tidy3D tasks.
Default
run_time
quality factor changed from 10 to 5 in order to decrease the default estimated cost of Tidy3D runs.Use default precision in mode solver.
Remove out-of bounds structures from simulations to avoid Tidy3D warnings.
Where available, default keyword arguments for parametric components and technologies are included in
Component.parametric_kwargs
andTechnology.parametric_kwargs
.
Fixed
Bug in
MaskSpec
comparison.Do not create complex geometry with more than 100 sub-geometries to avoid errors in Tidy3D.
Vernier scale stencil bug fix to generate proper geometry.
Support for numpy complex scalars in phf streams.
Better HTML escaping in SVG representations.
Improved Tidy3D object conversion to include spatial data arrays in runtime caches.
Port mode numbering for S matrices is consistent with and without setting
PortSpec.polarization
.Bug in error handling within paths.
1.0.5 - 2025-01-02¶
Added
Attribute
_id
for internal use.Configuration option
config.svg_label_scaling
.
Changed
More robust guarantees for gradients for path endpoints.
Paths are stored as polygons by default in GDSII and OASIS files.
Reference.component
can be set.Simplified
updates
argument inCircuitModel.start()
.
Fixed
Path alignment fixes for parametric couplers.
Minor docstring fixes.
1.0.4 - 2020-11-21¶
Added
Complex vector fitting for baseband signals via
pole_residue_fit()
withreal=False
.
Changed
Sign convention for the frequency variable in
PoleResidueMatrix
.In
pole_residue_fit()
,min_poles
andmax_poles
now count a single conjugate pair as two poles.S matrices store all-zeros instead of dropping them.
Routes can be specified by reference and port name to facilitate updating if the reference is transformed.
Fixed
Significant accuracy improvements in
pole_residue_fit()
.Component comparison takes ports into account.
1.0.3 - 2024-11-01¶
Fixed
Function
stencil.as_component()
takes a technology argument for the created component.Apply union to polygons before erosion, as indicated in the documentation.
1.0.2 - 2024-10-25¶
Added
Function
Tidy3DModel.test_port_symmetries()
gained averbose
argument to control printed messages.
Changed
Function
tidy3d_plot()
will use the component’sTidy3DModel
if it has one.
Fixed
Function
Port.to_tidy3d_mode_solver()
correctly sets the generatedgroup_index_step
.Tidy3DModel
supports 2D simulations when bounds are overridden.
1.0.1 - 2024-10-15¶
Changed
Suppress extrusion error message from Tidy3D when falling back to triangular mesh.
Fixed
Always export paths with round or beveled joins as polygons.
Forbid inheritance from PhotonForge classes (except
Model
) because the internal design does not support it.Error when parsing arguments in
Path.parametric()
.Runtime errors in
EMEModel
.Degenerate port modes are handled correctly when symmetry is used in
Tidy3DModel
andEMEModel
.
1.0.0 - 2024-10-10¶
Initial release.