v2.12.0.dev0
Pre-release
Pre-release
·
112 commits
to develop
since this release
What's Changed
Added
- Added
CornerFinderSpec.corner_rounding_collapse_extentsoLayerRefinementSpeccan recover sharp corners that pass the legacy angle threshold from small rounded or chamfered imported geometry. - Added
ImpedanceSpecto support complex-valuedLumpedPortimpedance. Theimpedancefield now accepts either a plain real number (e.g.50) or anImpedanceSpec(impedance=..., frequency=...)for complex-valued loads. A complex impedanceZ = R + jXis mapped to a series RL or RC load at the given measurement frequency, enabling reactive terminations in S-parameter simulations. Purely reactive loads (Re(Z) = 0) are not supported;Re(Z)must be strictly positive to ensure a stable FDTD pole. - Added a dedicated PyTorch wrapper plugin documentation page under
api/plugins/pytorch. - Added autograd support for
ClipOperationgeometry derivatives, including union, difference, intersection, and symmetric_difference. - Added the
tidy3d mcpcommand for running the Tidy3D MCP server from the active Tidy3D environment. - Added
Palik_NoLossmaterial-fitter refits for the low-loss Palik ranges of GaAs, Ge, SiO2, and cSi, andPalik_LowLossvariants for the previous Palik fits of GaAs, Ge, InP, SiO2, and cSi. - Added per-interface physical residual diagnostics for EME: incident-normalized squared tangential E/H field residuals, corresponding non-PML-aperture residuals, and the flux-weighted power conservation defect, stored on
EMESimulationData.diagnosticswhenEMESimulation.eme_diagnostics=True. - Added a
progresskeyword (defaultTrue) toEMESimulation.compute_overlaps,EMESimulation.propagate_from_overlaps, andEMESimulation.propagatethat shows a per-phaserichprogress bar on the logging console; passprogress=Falseto silence it. - Accelerated charge solver support for the Masetti mobility model.
DeviceCharacteristics.dc_convergence(newSteadyConvergenceData) flags per-bias Newton convergence and exposes the per-iteration residual trace, so callers can mask the I-V/C-V curves by the converged biases and inspect at which iteration each bias crossed the tolerance.- Added support for explicit payment type, priority, and vGPU allocation settings when submitting component modeler batch tasks.
Changed
WavePortandTerminalWavePortmesh refinement now interpretsnum_grid_cellsas the cell count along the largest transverse dimension (the smaller dimension is aspect-ratio-scaled), with the default raised from 5 to 12. Two grid-snapping points are also emitted at opposite corners of the port plane.- Changed the default autograd
minimum_spacing_fractionfrom 0.01 to 0.001; set it back to 0.01 in your config to keep previous spacing behavior. UniformUnstructuredGrid.min_edges_per_circumferenceandmin_edges_per_sidenow accept0, which skips the corresponding local mesh-size contribution. A deprecation warning is emitted when either field is left at its default: the default will change to0in the next release. Set the fields explicitly to preserve the current behavior.- Changed grid validation to raise a units error when
UniformGrid.dlor generatedAutoGrid/QuasiUniformGridcell sizes are below 1e-6 um. - Improved memory usage and runtime for autograd local far-field projections in the 3D paired approximate path used by Cartesian and k-space monitors with
far_field_approx=True. - Reduced peak memory usage when differentiating exact local field projections (
far_field_approx=False). - Increased default
ChargeToleranceSpec.max_itersfrom30to120; set it explicitly to keep the previous behavior. HeatChargeSimulation.use_accelerated_solver=False(selecting the CPU charge solver) is now validated at construction and raises aValidationErroronuse_accelerated_solverfor configurations the CPU solver cannot run: heat and conduction simulations (which always run on the GPU accelerated solver) and charge simulations using GPU-accelerated-only features such asMasettiMobilityor SSACat_voltagesbias-point selection. The flag now defaults toTrue(wasOptionaldefaulting toNone) and continues to use the GPU accelerated charge solver.
Fixed
- Suppressed the
Simulationstructure-at-boundary warning for structures touchingPeriodicorBlochBoundaryedges, while keeping the warning for other boundary types unless structure extrusion is enabled. - Improved auto-generated API documentation for classes with computed default values (e.g.
NedeljkovicSorefMashanovich), eliminating malformed Parameters sections and a long tail of other documentation build issues. - Raise a validation error when an automatically added PEC frame (around a mode source with
PECFrameor an internal absorber) overlaps the absorbing-boundary extrusion clipping region on any boundary withextrude_structures=True. To opt out on a side that legitimately needs the source / absorber to reach the boundary (e.g. a wave-port source that spans the lateral domain via symmetry), passextrude_structures=Falseto the boundary — either throughBoundary.pml/Boundary.stable_pml/Boundary.absorber(now exposed there) or by constructingBoundary(plus=td.PML(extrude_structures=False), minus=td.PML(extrude_structures=False))explicitly. TerminalComponentModeler.portsandModalComponentModeler.portsnow use a discriminated union on thetypefield, so validation errors for a port dict are attributed to the correct port class instead of being scattered across every union branch.- Fixed
PolySlabSetto preserve its internal ring order acrosssafe_update()and other vertex-space updates while still exporting area-sorted structures. - Fixed mode solver picking the wrong sqrt root for lossless evanescent modes; direction is now resolved from time-averaged power flow with a passivity fallback.
- Fixed device characteristic DataArrays to expose value units and voltage coordinate units when simulation data is loaded.
- Fixed
EMESimulation.plot_3d()to clip infinite structures to the simulation bounds. - EME interface matching now uses the full solved modal basis as test rows, except modes with numerically unusable self-overlap, so high mode counts no longer slowly degrade S-matrix accuracy. Only the propagation trial basis is capped by
EMEModeSweep.num_modesorEMEModeSpec.sort_spec.keep_modes; modes flagged increasing (Im(n_eff) < -EMEModeSpec.increasing_mode_tolerance) remain available as test rows. The default increasing-mode tolerance now ignores roundoff-level negative imaginary effective indices in lossless cases. The per-cellEMEModeSpec.num_modescap is raised from 100 to 1000 for convergence studies; practical mode counts remain limited by interface memory and dense interface/stacking runtime. - Fixed edge singularity correction for geometry groups and difference boolean operations in conformal meshing.
- Fixed RF/modeler diverged runs to report a clear task status error instead of trying to download missing aggregate data.
Removed
- Removed deprecated
Scene.plot_heat_conductivity(),Scene.plot_structures_heat_conductivity(), andScene.heat_conductivity_bounds(); useplot_heat_charge_property(property="heat_conductivity"),plot_structures_heat_charge_property(property="heat_conductivity"), andheat_charge_property_bounds(property="heat_conductivity"). - Removed deprecated
AbstractSimulation.plot_structures_heat_conductivity()andHeatChargeSimulation.plot_heat_conductivity(); usescene.plot_structures_heat_charge_property(property="heat_conductivity")andplot_property(property="heat_conductivity"). - Removed the deprecated legacy config API and legacy config migration paths.
- Removed
TopologyDesignRegion.params_uniform(),params_random,params_zeros,params_half,params_ones,AbstractOptimizer.initialize_result(params0), andAbstractOptimizer.run(..., params0=...). For direct parameter arrays, replace theTopologyDesignRegion.params_*helpers with NumPy arrays usingregion.params_shape, such asnp.full(region.params_shape, value),np.random.random(region.params_shape),np.zeros(region.params_shape),0.5 * np.ones(region.params_shape), ornp.ones(region.params_shape). For optimizer starting parameters previously passed asparams0, configure the design region before constructing or updating the enclosing design and optimizer; useCustomInitializationSpec(params=params0)to preserve an existing array, orRandomInitializationSpec(seed=...)for reproducible random starts. - Removed deprecated
SimulationData.plot_field(field_name="int"),SimulationData.plot_field(..., freq=...), andSimulationData.plot_field(..., time=...); usefield_name="E", val="abs^2",plot_field(..., f=...), andplot_field(..., t=...). - Removed deprecated
to_field_monitors()method on terminal-based scattering-matrix ports (e.g.LumpedPort,WavePort); useto_monitors()instead.
Planned Deprecation
Palik_Losslessis deprecated as a material-library variant name; material-library lookup now warns and returnsPalik_LowLoss, whilePalik_NoLossprovides zero-loss Palik fits where supported by low-loss source ranges.
Full Changelog: v2.11.2...v2.12.0.dev0