Change Log¶
1.1.7 - 2025-07-23¶
Fixed
- Error in PHF storage for - Path.
1.1.6 - 2025-07-08¶
Added
- Argument - use_angle_rotationto Tidy3D conversion functions from- Portand- FiberPort, to enamble- angle_rotationin the- ModeSpecthey 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_radiuscan be used to set preferred radius for any port specification.
- Interpolation method - "poleresidue"to- DataModelto use a pole-residue matrix fit for frequency interpolations.
- Argument - pre_export_functionto- write_layout(),- Component.write_gds, and- Component.write_oasto make temporary changes in components right before exporting.
- Rectangle.perimeter(),- Circle.perimeter(),- Polygon.perimeter(), and- Path.perimeter()for perimeter computation.
- Propertiesto all objects to hold arbitrary metadata.
- Argument - min_evalsto- Circleand- Pathsection methods to override the minimal number of points used in polygonal conversion based on- config.tolerance.
- Argument - max_evalsto- Pathsection 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.referenceto change the reference plane for sidewall angle dilations and erosions.
- MaskSpec.translationto allow masks to be translated during extrusion (mainly for mask alignment sensitivity tests).
- Support for SubpixelSpec to - Tidy3DModeland- EMEModel.
- Helper function - virtual_port_spec()to quickly create virtual port specifications.
Changed
- WaveguideModelnow accepts a- PortSpecor the string- "cross-section"for more flexible propagation index calculation.
- Updated minimal - config.gridsize 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 - Pathattributes.
- Path.interpolate()to query path positions by length.
- Path.updated_copy()to create copies with different widths and offsets.
- ExtrusionTableand- PortSpecTablevisualizers, used by default with- Technology.extrusion_specsand- Technology.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()and- Reference.query()to look for ports and terminals within the component dependency tree.
- Arguments - boundary_marginand- minimal_turn_angleto- Component.detect_ports()to fine-tune port detection
- grid_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(), and- parametric.route_manhattan()and- cpw_spec()utility function to create CPW port specifications.
- Class - TimeDomainModelfor time-stepping based on a- PoleResidueMatrix.
- live_viewer.LiveViewerfor live geometry and component visualization.
- Functions - PoleResidueMatrix.is_passive(),- PoleResidueMatrix.enforce_passivity(), and- PoleResidueMatrix.get_rms_error().
- Options - passive,- delays,- stable, and- feedthroughin- pole_residue_fit()to better control the fitting process.
- parametric.circular_spiral()as an alternative to existing rectangular spiral.
- Argument - full_lengthto- parametric.rectangular_spiral()and- parametric.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(), and- Path.s_bend()can use defaults for- radiusand- euler_fractionfrom- config.default_kwargs.
- Function - s_bend_length()can be used to calculate the ideal S bend length for specific radius and offset.
- Subscript operation to - Componentto retrieve ports and terminals.
- Component.disconnected_reference_ports()and- Component.add_reference_ports()to facilitate adding ports from references.
- Component.tree_view()to pretty-print component dependency trees.
- Parameter - on_boundaryto- Component.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_labelsto control display of labels from references.
- Json representation for planar structures. 
- Class - FiberPortfor 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_modesto port specifications, which allows for single TM mode ports.
- Attribute - MaskSpec.layerfor single-layer mask specifications.
- LayerTablevisualizer for technology layer specifications, used by default with- Technology.layers.
- Argument - verboseto- Tidy3DModel.start(),- EMEModel.start(),- WaveguideModel.start(), and- CircuitModel.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 functions- SMatrix.apply_time_delay()and- SMatrix.estimate_delays().
- Function - port_modes()to solve port modes using caches.
- Argument - parallel_jobsto start multiple Monte Carlo tasks in parallel in- monte_carlo.s_matrix().
Changed
- Parallel upload and download of Tidy3D tasks. 
- Default - run_timequality 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_kwargsand- Technology.parametric_kwargs.
Fixed
- Bug in - MaskSpeccomparison.
- 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 - _idfor 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.componentcan be set.
- Simplified - updatesargument in- CircuitModel.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()with- real=False.
Changed
- Sign convention for the frequency variable in - PoleResidueMatrix.
- In - pole_residue_fit(),- min_polesand- max_polesnow 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 a- verboseargument to control printed messages.
Changed
- Function - tidy3d_plot()will use the component’s- Tidy3DModelif it has one.
Fixed
- Function - Port.to_tidy3d_mode_solver()correctly sets the generated- group_index_step.
- Tidy3DModelsupports 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 - Tidy3DModeland- EMEModel.
1.0.0 - 2024-10-10¶
Initial release.