Releases: flexcompute/tidy3d
Releases · flexcompute/tidy3d
v2.12.0.dev0
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
v2.11.2
What's Changed
Added
- Added documentation page explaining the three S-parameter definitions (
pseudo,power,symmetric_pseudo) inTerminalComponentModeler, including mathematical derivations, symmetry properties, and power calculations. TerminalComponentModelernow warns when itsfreqsexceeds the soft limit used by frequency-domain monitors.- Added local EME support for expressing a propagated S-matrix in user-supplied port modes.
Changed
- Added
Result.real_costto the design plugin so pre/post runs can report billed FlexCredit usage after execution. - Increased the maximum number of EME cells from 100 to 500.
Fixed
- Fixed mode solver to place PEC boundaries at the closest grid boundary outside the monitor plane, matching user expectations when using the plane bounds as PEC locations (common in RF workflows). Added
solver_field_boundsto ensure accurate field interpolation near the hard boundary. - Fixed
eps_model()across Tidy3D media classes to consistently accept scalar, list, and NumPy array frequency inputs, including custom and anisotropic media. - Fixed
ModeSimulation.from_mode_solver()to infer a wavelength from the mode-solver-associated simulation source when converting simulations that use auto grid without an explicitgrid_spec.wavelength. - Fixed TFSF source validation to reject setups whose in-domain region collapses to zero extent along both tangential directions, such as 1D simulations.
- Fixed CustomPoleResidue adjoint postprocessing to preserve the frequency axis for zero-gradient multi-frequency chunks.
- Stabilized Tidy3D model JSON float formatting across supported pydantic-core versions.
- Fixed EME S-matrix basis conversion for
EMEModeSweepresults that request different numbers of modes at different sweep points. - Fixed
TerminalComponentModelerto snapWavePortinternal absorbers and mode sources to the updated simulation grid (which includes the wavelength override and mesh overrides) rather than the original user-provided grid, preventing absorbers from landing off-grid in the final simulation. - Fixed inline PyVista plots in Jupyter on Python 3.13+ so they render interactively instead of failing or falling back to a static image.
Full Changelog: v2.11.1...v2.11.2
v2.11.1
What's Changed
- Added local EME propagation via
EMESimulation.propagate(mode_data)and a per-element staged pipeline (mode_simulations,stage_cell_modes,compute_cell_overlap,compute_interface_overlap,compute_cell_smatrix,compute_interface_smatrix,compute_smatrix). For iterative design with many sweeps on the same modal basis,compute_overlaps(mode_data)+propagate_from_overlaps(cell_overlaps, interface_overlaps)amortizes the overlap stage. Intermediate results (EMEStageCellOverlap,EMEStageInterfaceSMatrix, etc.) are serializable and reusable across parameter sweeps.EMEFreqSweepis not supported; useEMESimulation.freqsdirectly. The local path does not support anisotropic media in bent cells withbend_medium_frame="global"; usebend_medium_frame="co_rotating"or the remote backend in that case. by @caseyflex - Added
filter_funcsupport toMethodGridandMethodMonteCarloin the design plugin so invalid parameter combinations can now be skipped during parameter sweeps. by @marcorudolphflex - Added
plot_field_components()toModeSimulationDataandModeSolverfor plotting multiple mode field components in one call. by @marcorudolphflex - Added
FieldProjector.from_near_field_data()for projecting directly from custom or modifiedFieldData. by @marcorudolphflex - Improved near-field projection performance. by @marcorudolphflex
- Strip autograd tracers from
DataArrayplotting functions before plotting. by @groberts-flex - Keep original simulation data from being zeroed out during the adjoint pipeline. by @groberts-flex
- Updated adjoint shape integration to sample interface permittivity directly from anisotropic simulation permittivity data. by @groberts-flex
- Fixed
ValueErrorshape mismatch inSimulation.epsilon()when aCustomMediumusesScalarFieldDataArraywith a frequency dimension, by squeezing the leftoverfdimension after spatial interpolation ineps_diagonal_on_grid. by @daquinteroflex - Fixed wrapped
angle_thetahandling for glancing-incidence checks so values like-pi/2and5*pi/2are validated consistently inModeSpecand angled field sources. by @momchil-flex - Added frontend validation for TCAD refinement regions and lines so unsupported degenerate shapes are rejected before submission. by @momchil-flex
- Fixed plot function override for tidy3d data arrays. by @groberts-flex
Full Changelog: v2.11.0...v2.11.1
v2.11.0
What's Changed
- fix: regenerate lockfile by default on extras-integration (FXC-4769) by @daquinteroflex in #3202
- fix(config): make config directory detection race-safe by @yaugenst-flex in #3203
- chore: bump to v2.11.0.dev0 (FXC-5098) by @daquinteroflex in #3205
- FXC-5121: Add option to drop filtered modes by @momchil-flex in #3055
- chore(tidy3d): FXC-4767-pin-github-actions-and-handle-updates by @marcorudolphflex in #3142
- fix(tidy3d): FXC-4911-multi-frequency-adjoint-gradients-incorrect-for-custom-dispersive-media by @marcorudolphflex in #3179
- FXC-4643: update optionality and default values in ModeSortSpec by @momchil-flex in #3144
- feat(smatrix): change default structure_priority_mode to conductor for TerminalComponentModeler by @weiliangjin2021 in #3200
- feat: add fine grid size location tracking and visualization by @weiliangjin2021 in #3192
- FXC-4932 fix(rf): fix snapping behavior for 1D lumped elements by @dmarek-flex in #3185
- FXC-4967 fix(geometry): use relative tolerance in subdivide sliver filter by @dmarek-flex in #3190
- FXC-4570 feat(rf): Added
symmetric_pseudooption fors_param_defby @dmarek-flex in #3109 - FXC-3275 - Adding gaussian monitors by @momchil-flex in #2903
- feat(tidy3d): FXC-4520-add-autograd-support-for-sphere by @marcorudolphflex in #3082
- optimize memory usage in postprocess_adj by @groberts-flex in #3127
- feat: Unify handling of EME coefficients (FXC-4311) by @caseyflex in #3181
- feat: warning for upcoming backward compatibility breaking unstructured=True (FXC-5123) by @dbochkov-flexcompute in #3211
- chore: add GaussianDoping frontend validators by @damiano-flex in #3168
- fix: clean up changelog, log waist_distance warning once by @momchil-flex in #3219
- FXC-5243 isolate local cache tests by @marcorudolphflex in #3221
- feat(rf): FXC-1604 API for extending structures into pml by @George-Guryev-flxcmp in #3026
- fix(docs): point canonical to latest [FXC-5290] by @frederikschubertflex in #3222
- chore(deps): 🤖 Update
poetry.lockfor develop by @github-actions[bot] in #3231 - fix(tidy3d): FXC-5313 improve broadband frequency range warning message by @weiliangjin2021 in #3223
- feat(FXC-5402): Option to remove fragments before meshing in unstructured grids by @marc-flex in #3233
- FXC-3378 Pydantic v2 by @yaugenst-flex in #2433
- chore(deps): 🤖 Update
poetry.lockfor develop by @github-actions[bot] in #3243 - fix(adjoint): fixes for CustomMedium and FieldMonitor gradients by @groberts-flex in #3237
- feat(tidy3d): FXC-5401-default-to-local-caching-true-in-tidy-3-d-2-11 by @marcorudolphflex in #3239
- feat(FXC-5154) Warn gmsh min cylinder radii by @marc-flex in #3217
- fix(tidy3d): FXC-5400-misleading-re-run-warning-for-batch-run by @marcorudolphflex in #3228
- feat(tidy3d): FXC-5311-enable-cached-loading-from-batch-data by @marcorudolphflex in #3234
- reduce computation time for adaptive_vjp_spacing via caching for GeometryGroup by @groberts-flex in #3216
- fix(tidy3d): FXC-5311-minimize-http-calls-for-web-load by @marcorudolphflex in #3229
- fix(adjoint): update docstrings for DerivativeInfo fields by @groberts-flex in #3241
- fix(tidy3d): FXC-5400-fix-local-cache-race-conditions by @marcorudolphflex in #3227
- feat(tidy3d): FXC-5198-design-plugin-using-any-simulation-types by @marcorudolphflex in #3224
- FXC-5505: Enable CI test selection with pytest-testmon by @yaugenst-flex in #3254
- bug(FXC-5154): add function to compute min radius by @marc-flex in #3246
- fix(tidy3d): FXC-5472-libcst-not-properly-listed-in-pyproject-toml by @marcorudolphflex in #3248
- chore(ci): add core testmon telemetry and tune restore keys by @yaugenst-flex in #3261
- feat: warning about excessive refinement from gap meshing (FXC-3919) by @dbochkov-flexcompute in #3206
- chore: Improve local subpixel warnings and docstrings by @caseyflex in #3252
- fix(tidy3d): FXC-5538-fix-missing-copy-of-pydantic-extra-in-lazy-proxy by @marcorudolphflex in #3267
- feat(geometry): add GeometryArray for efficient repeated geometries by @weiliangjin2021 in #3215
- Add custom_vjp hook and custom run functions to allow overriding the internal vjp by @groberts-flex in #3015
- fix(tidy3d): SCRF-2777 validate AutoImpedanceSpec in ModeSolver pre-upload by @dmarek-flex in #3260
- fix(tidy3d): FXC-5400-disable-cache-racing-tests by @marcorudolphflex in #3262
- fix(tidy3d): handle VTK 9.6 missing cell-type arrays for tetrahedral import by @yaugenst-flex in #3269
- chore(tidy3d): FXC-5132-ignore-jira-branch-lint-for-dependabot by @marcorudolphflex in #3210
- FXC-5400 promote testmon cache artifacts by @yaugenst-flex in #3266
- fix: FXC-5462 terminal modeler serialization with custom grids by @yaugenst-flex in #3244
- chore(deps): bump the github-actions group across 1 directory with 10 updates by @dependabot[bot] in #3256
- FXC-5153: making trimesh and matplotlib lazy by @momchil-flex in #3213
- FXC-5539 fix local caching for component modelers by @marcorudolphflex in #3268
- Improve EME docstrings and change default num_points (FXC-4276) by @caseyflex in #3253
- FXC-0000: simplify testmon cache promotion path by @yaugenst-flex in #3273
- fix(adjoint): update EpsType typing in DerivativInfo by @groberts-flex in #3278
- refactor(tidy3d): FXC-5286-pydantic-v-2-refactor-validator-sprawl by @marcorudolphflex in #3265
- fix(ci): make promoted testmon caches restorable by test jobs by @yaugenst-flex in #3284
- fix order of execution test failure in test_viz for applying flex style by @groberts-flex in #3287
- fix(adjoint): optional argument for postprocess_adj for backend by @groberts-flex in #3277
- fix(ci): promote testmon cache with runner-compatible saves by @yaugenst-flex in #3286
- FXC-5469 fix(tidy3d): add discriminator to simulation type union fields by @dmarek-flex in #3275
- Fxc 5438 trim generated docstrings for pydantic v 2 models by @marcorudolphflex in #3240
- fix(FXC-9999): make testmon cache keys reflect tested commit by @yaugenst-flex in #3293
- fix(tidy3d): extras tests pydantic issues (FXC-5643) by @daquinteroflex in #3291
- fix(tidy3d): FXC-5644-prevent-jupyter-output-leakage-on-tidy-3-d-import by @marcorudolphflex in #3294
- chore: clean up warning messages by @momchil-flex in #3295
- FXC-1530: add total current normalization to UniformCurrentSource by @dmarek-flex in #3236
- FXC-4546: add baseband source time classes for transient simulations by @dmarek-flex in #3250
- fix(web): add clear Batch key validation after pydantic v2 by @yaugenst-flex in #3296
- fix(tidy3d): suppress error logs during speculative model instantiation in repr by @momchil-flex in #3297
- FXC-5441: speed up monitor postprocessing and improve capacitance accuracy by @momchil-flex in #3259
- chore: change fill_value default to "extrapolate" in UnstructuredGridDataset.interp() ...
v2.11.0.dev2
What's Changed
- fix: autorelease tag format by @daquinteroflex in #3342
- ci: simplify tidy3d client workflows by @daquinteroflex in #3347
- chore: 2.11.0.dev2 update submodules by @daquinteroflex in #3349
Full Changelog: v2.11.0.dev1...v2.11.0.dev2
v2.11.0.dev1
What's Changed
- chore: add CLAUDE.md symlink to AGENTS.md by @yaugenst-flex in #3314
- chore: fix formatting and clarity in charge docs by @damiano-flex in #3285
- chore: use per-property field checks in modes_info instead of blanket len==6 by @momchil-flex in #3317
- bump: 2.11.0.dev1 release (FXC-5048) by @daquinteroflex in #3320
- FXC-5803: Fix VTU planar slice detection for large-coordinate jitter by @momchil-flex in #3319
- refactor: FXC-5802 simplify get_dls logic in volumetric equivalent conversion by @dmarek-flex in #3323
- fix(mode-solver): avoid GaussianBeam validation failure in rotated mode copy by @momchil-flex in #3321
- chore: add changelog for field decay check update by @momchil-flex in #3290
- FXC-5773: detect Homebrew cask KLayout paths by @yaugenst-flex in #3310
- FXC-5873: prune dead internal symbols and restore validator execution by @yaugenst-flex in #3326
- fix(tidy3d): fix empty dict deserialization for NonLinearSpec by @marcorudolphflex in #3329
- fix(tidy3d): FXC-4854-fix-nbconvert-security-vulnerability by @marcorudolphflex in #3331
- fix: post-migration repo-specific updates FXC-5100 by @daquinteroflex in #3338
Full Changelog: v2.11.0.dev0...v2.11.0.dev1
v2.11.0.dev0
What's Changed
- fix: regenerate lockfile by default on extras-integration (FXC-4769) by @daquinteroflex in #3202
- fix(config): make config directory detection race-safe by @yaugenst-flex in #3203
- chore: bump to v2.11.0.dev0 (FXC-5098) by @daquinteroflex in #3205
- FXC-5121: Add option to drop filtered modes by @momchil-flex in #3055
- chore(tidy3d): FXC-4767-pin-github-actions-and-handle-updates by @marcorudolphflex in #3142
- fix(tidy3d): FXC-4911-multi-frequency-adjoint-gradients-incorrect-for-custom-dispersive-media by @marcorudolphflex in #3179
- FXC-4643: update optionality and default values in ModeSortSpec by @momchil-flex in #3144
- feat(smatrix): change default structure_priority_mode to conductor for TerminalComponentModeler by @weiliangjin2021 in #3200
- feat: add fine grid size location tracking and visualization by @weiliangjin2021 in #3192
- FXC-4932 fix(rf): fix snapping behavior for 1D lumped elements by @dmarek-flex in #3185
- FXC-4967 fix(geometry): use relative tolerance in subdivide sliver filter by @dmarek-flex in #3190
- FXC-4570 feat(rf): Added
symmetric_pseudooption fors_param_defby @dmarek-flex in #3109 - FXC-3275 - Adding gaussian monitors by @momchil-flex in #2903
- feat(tidy3d): FXC-4520-add-autograd-support-for-sphere by @marcorudolphflex in #3082
- optimize memory usage in postprocess_adj by @groberts-flex in #3127
- feat: Unify handling of EME coefficients (FXC-4311) by @caseyflex in #3181
- feat: warning for upcoming backward compatibility breaking unstructured=True (FXC-5123) by @dbochkov-flexcompute in #3211
- chore: add GaussianDoping frontend validators by @damiano-flex in #3168
- fix: clean up changelog, log waist_distance warning once by @momchil-flex in #3219
- FXC-5243 isolate local cache tests by @marcorudolphflex in #3221
- feat(rf): FXC-1604 API for extending structures into pml by @George-Guryev-flxcmp in #3026
- fix(docs): point canonical to latest [FXC-5290] by @frederikschubertflex in #3222
- chore(deps): 🤖 Update
poetry.lockfor develop by @github-actions[bot] in #3231 - fix(tidy3d): FXC-5313 improve broadband frequency range warning message by @weiliangjin2021 in #3223
- feat(FXC-5402): Option to remove fragments before meshing in unstructured grids by @marc-flex in #3233
- FXC-3378 Pydantic v2 by @yaugenst-flex in #2433
- chore(deps): 🤖 Update
poetry.lockfor develop by @github-actions[bot] in #3243 - fix(adjoint): fixes for CustomMedium and FieldMonitor gradients by @groberts-flex in #3237
- feat(tidy3d): FXC-5401-default-to-local-caching-true-in-tidy-3-d-2-11 by @marcorudolphflex in #3239
- feat(FXC-5154) Warn gmsh min cylinder radii by @marc-flex in #3217
- fix(tidy3d): FXC-5400-misleading-re-run-warning-for-batch-run by @marcorudolphflex in #3228
- feat(tidy3d): FXC-5311-enable-cached-loading-from-batch-data by @marcorudolphflex in #3234
- reduce computation time for adaptive_vjp_spacing via caching for GeometryGroup by @groberts-flex in #3216
- fix(tidy3d): FXC-5311-minimize-http-calls-for-web-load by @marcorudolphflex in #3229
- fix(adjoint): update docstrings for DerivativeInfo fields by @groberts-flex in #3241
- fix(tidy3d): FXC-5400-fix-local-cache-race-conditions by @marcorudolphflex in #3227
- feat(tidy3d): FXC-5198-design-plugin-using-any-simulation-types by @marcorudolphflex in #3224
- FXC-5505: Enable CI test selection with pytest-testmon by @yaugenst-flex in #3254
- bug(FXC-5154): add function to compute min radius by @marc-flex in #3246
- fix(tidy3d): FXC-5472-libcst-not-properly-listed-in-pyproject-toml by @marcorudolphflex in #3248
- chore(ci): add core testmon telemetry and tune restore keys by @yaugenst-flex in #3261
- feat: warning about excessive refinement from gap meshing (FXC-3919) by @dbochkov-flexcompute in #3206
- chore: Improve local subpixel warnings and docstrings by @caseyflex in #3252
- fix(tidy3d): FXC-5538-fix-missing-copy-of-pydantic-extra-in-lazy-proxy by @marcorudolphflex in #3267
- feat(geometry): add GeometryArray for efficient repeated geometries by @weiliangjin2021 in #3215
- Add custom_vjp hook and custom run functions to allow overriding the internal vjp by @groberts-flex in #3015
- fix(tidy3d): SCRF-2777 validate AutoImpedanceSpec in ModeSolver pre-upload by @dmarek-flex in #3260
- fix(tidy3d): FXC-5400-disable-cache-racing-tests by @marcorudolphflex in #3262
- fix(tidy3d): handle VTK 9.6 missing cell-type arrays for tetrahedral import by @yaugenst-flex in #3269
- chore(tidy3d): FXC-5132-ignore-jira-branch-lint-for-dependabot by @marcorudolphflex in #3210
- FXC-5400 promote testmon cache artifacts by @yaugenst-flex in #3266
- fix: FXC-5462 terminal modeler serialization with custom grids by @yaugenst-flex in #3244
- chore(deps): bump the github-actions group across 1 directory with 10 updates by @dependabot[bot] in #3256
- FXC-5153: making trimesh and matplotlib lazy by @momchil-flex in #3213
- FXC-5539 fix local caching for component modelers by @marcorudolphflex in #3268
- Improve EME docstrings and change default num_points (FXC-4276) by @caseyflex in #3253
- FXC-0000: simplify testmon cache promotion path by @yaugenst-flex in #3273
- fix(adjoint): update EpsType typing in DerivativInfo by @groberts-flex in #3278
- refactor(tidy3d): FXC-5286-pydantic-v-2-refactor-validator-sprawl by @marcorudolphflex in #3265
- fix(ci): make promoted testmon caches restorable by test jobs by @yaugenst-flex in #3284
- fix order of execution test failure in test_viz for applying flex style by @groberts-flex in #3287
- fix(adjoint): optional argument for postprocess_adj for backend by @groberts-flex in #3277
- fix(ci): promote testmon cache with runner-compatible saves by @yaugenst-flex in #3286
- FXC-5469 fix(tidy3d): add discriminator to simulation type union fields by @dmarek-flex in #3275
- Fxc 5438 trim generated docstrings for pydantic v 2 models by @marcorudolphflex in #3240
- fix(FXC-9999): make testmon cache keys reflect tested commit by @yaugenst-flex in #3293
- fix(tidy3d): extras tests pydantic issues (FXC-5643) by @daquinteroflex in #3291
- fix(tidy3d): FXC-5644-prevent-jupyter-output-leakage-on-tidy-3-d-import by @marcorudolphflex in #3294
- chore: clean up warning messages by @momchil-flex in #3295
- FXC-1530: add total current normalization to UniformCurrentSource by @dmarek-flex in #3236
- FXC-4546: add baseband source time classes for transient simulations by @dmarek-flex in #3250
- fix(web): add clear Batch key validation after pydantic v2 by @yaugenst-flex in #3296
- fix(tidy3d): suppress error logs during speculative model instantiation in repr by @momchil-flex in #3297
- FXC-5441: speed up monitor postprocessing and improve capacitance accuracy by @momchil-flex in #3259
- chore: change fill_value default to "extrapolate" in UnstructuredGridDataset.interp() by @momchil-flex in #3301
- feat(...
v2.10.2
What's Changed
- perf(tidy3d): FXC-3721 Speed up test suite by @marcorudolphflex in #2991
- fix(tidy3d): FXC-4878-fix-gradient-for-custom-pole-residue-eps by @marcorudolphflex in #3171
- fix: missing discreitization 'index' on /api/index.rst (FXC-4917) by @yuanshen-flexcompute in #3180
- chore: 2.10.2 bump version (FXC-4929) by @daquinteroflex in #3175
- FXC-4931: Add log_once to config by @momchil-flex in #3184
- FXC-4875: fix docstrings with missing Notes sections by @dmarek-flex in #3176
- Fix: pydantic model_fields warning by @momchil-flex in #3186
- shape gradient cleanup and consolidation by @groberts-flex in #3177
- fix: taking BatchDetail taskType from statistics api by @momchil-flex in #3188
- chore(deps): 🤖 Update
poetry.lockfor develop by @github-actions[bot] in #3189 - fix: improved queued state progression map (FXC-4918) by @daquinteroflex in #3187
- handle 0 local grid or normal component in shape gradient coordinate snapping by @groberts-flex in #3191
- fix(tidy3d): FXC-5005-web-estimate-cost-printing-duplicate-output by @marcorudolphflex in #3194
- chore(deps): 🤖 Update
poetry.lockfor develop by @github-actions[bot] in #3198 - Remove support for inconsistent interp_spec in EME (FXC-4152) by @caseyflex in #3193
- fix: _finalized_volumetric_structures should respect structure_priority_mode by @weiliangjin2021 in #3199
- fix: consistency between mode source and mode frame (FXC-4332) by @dbochkov-flexcompute in #3169
Full Changelog: v2.10.1...v2.10.2
v2.10.1
What's Changed
- chore(deps): 🤖 Update
poetry.lockfor develop by @github-actions[bot] in #3112 - patch: temporarily fix numpy support <2.4 (FXC-4644) by @daquinteroflex in #3116
- fix(rf): validate auto path integrals against all conductors and the mode plane bounds by @dmarek-flex in #3122
- feat(invdes): FXC-4605 added priority attribute to TopologyDesignRegion by @mahlau-flex in #3106
- fix: avoid scale-dependent zero gradient filtering by @yaugenst-flex in #3123
- feat: add to_mat_file to ModeSimulationData and HeatChargeSimulationData by @yaugenst-flex in #3125
- fix(tidy3d): FXC-4641-fix-gradients-in-custom-medium by @marcorudolphflex in #3113
- chore(tidy3d): FXC-4695 hotfix zizmor version update by @marcorudolphflex in #3129
- fix(tidy3d): FXC-4704-reduce-verbosity-when-loading-data-from-batch by @marcorudolphflex in #3131
- fix output of FilterAndProject parameterization to be between 0 and 1 by @groberts-flex in #3126
- fix(tidy3d): FXC-4644-tidy-3-d-client-add-support-for-num-py-2-4-0 by @marcorudolphflex in #3119
- feat(tidy3d): FXC-3296-autograd-support-for-anisotropic-medium-and-custom-anisotropic-medium by @marcorudolphflex in #3080
- FXC-4725: Fix flaky xdist failures in async web tests by @yaugenst-flex in #3134
- chore(tidy3d): FXC-4644 allow numpy 2.4 again by @marcorudolphflex in #3136
- fix(tidy3d): FXC-4742-avoid-any-non-temporary-hdf-5-writing-in-tests by @marcorudolphflex in #3137
- fix(tidy3d): FXC-4563-use-2-d-intersections-for-adjoint-monitor-sizes-in-2-d-simulations by @marcorudolphflex in #3096
- fix(smatrix): reorder WavePort validators by @yaugenst-flex in #3143
- feat(FXC-4519): Added check to warn of duplicated voltage values by @marc-flex in #3108
- chore: bump v2.10.1 patch version (FXC-4769) by @daquinteroflex in #3139
- feat(FXC-4425) Plot BCs in Heat/Charge simulations by @marc-flex in #3103
- fix(FXC-4341): Fix scene::plot_structures_porperty for doping by @marc-flex in #3115
- FXC-4775: Surface batch download failures when gzip extraction fails by @yaugenst-flex in #3147
- fix: Handling of zero values when using plot_fields with scale=dB by @dmarek-flex in #3130
- Fix bug in PolySlab's intersections_plane method by @dmarek-flex in #3128
- FXC-4786: Fix adjoint crash when no adjoint sources generated by @yaugenst-flex in #3148
- FXC-4774: Soft-fail commitlint on PRs by @yaugenst-flex in #3146
- fix: http_interceptor crash on non-dict JSON responses (FXC-4642) by @daquinteroflex in #3151
- chore(tidy3d): FXC-4773-add-upper-bounds-to-dep-constraints-and-align-update-automation by @marcorudolphflex in #3145
- chore: release v2.10.1 (FXC-4769) by @daquinteroflex in #3162
Full Changelog: v2.10.0...v2.10.1
v2.10.0
What's Changed
- Validate the number of grid points on modal plane by @weiliangjin2021 in #2700
- fix[adjoint]: fix diffraction data adjoint source creation by @groberts-flex in #2680
- adding to_file after uploading batch by @FilipeFcp in #2707
- update: dev version 2.10.0rc1 by @daquinteroflex in #2720
- only trigger symmetric adjoint simulation warning when grouping by more than 1 port by @groberts-flex in #2702
- RF development staging by @dmarek-flex in #2708
- Bug fix in CoaxialLumpedPort.to_source by @weiliangjin2021 in #2718
- KLayout DRC integration by @bzhangflex in #2586
- feat: add mil and inch units to plot_length_units by @yaugenst-flex in #2690
- set minimum discretization wavelength for cylinder and change adaptive spacing to scale with wavelength by @groberts-flex in #2706
- chore: pin trimesh>=4.6 by @yaugenst-flex in #2727
- autograd compatible s-matrix calculation by @tylerflex in #2572
- fix: validation of 'freqs' in component modelers by @dmarek-flex in #2723
- improve support for lossy transmission lines and complex reference impedances by @dmarek-flex in #2650
- DOCS: Add FreqRange to simulation.rst by @George-Guryev-flxcmp in #2704
- Polygon vertices cleanup and corner default distance threshold change by @weiliangjin2021 in #2725
- remove sources from adjoint postprocessing dummy simulation by @groberts-flex in #2731
- revert overly strict validation of 'freqs' by @dmarek-flex in #2732
- Fix for single frequency FieldMonitor by @FilipeFcp in #2697
- fix bug in TerminalComponentModeler.get_antenna_metrics_data by @dmarek-flex in #2733
- ABC boundary by @dbochkov-flexcompute in #2424
- add solver_version parameter to run_async and fix associated bug by @dmarek-flex in #2734
- data array autograd compatible method for endpoint extrapolation by @groberts-flex in #2735
- PEC gradient support for Box and PolySlab geometries by @groberts-flex in #2724
- Add taper support and refactor array-factor calculation by @George-Guryev-flxcmp in #2726
- feat[adjoint]: Add conductivity gradient for
CustomMediumby @yaugenst-flex in #2582 - [FXC-1504]: Adding support for current density monitor by @marc-flex in #2651
- feat: Add natural convection BC by @damiano-flex in #2696
- Adding two delegated attrs to MultiPhysicsMedium by @momchil-flex in #2752
- ABC broadband by @dbochkov-flexcompute in #2721
- Fix: Address discrepancy between
antenna_ampsandtaperordering by @George-Guryev-flxcmp in #2757 - feature: scene support plot3d by @majinge7846 in #2730
- Fixed overlap_sort to use the correct value of conjugated_dot_product by @dmarek-flex in #2737
- feat:
RF GUI <-> pythonclient interoperabilty by @daquinteroflex in #2738 - fix: rf-migration propagate batch kwargs by @daquinteroflex in #2777
- tests(klayout): mock which in check_installation tests; add positive case by @yaugenst-flex in #2783
- ci: stabilize schema verification, normalize schemas, and reduce noise by @yaugenst-flex in #2784
- Adding DistributedGeneration to Charge by @marc-flex in #2781
- API documentation narrative improvement by @yuanshen-flexcompute in #2786
- RF task-name updates by @daquinteroflex in #2787
- fix: Update rf smatrix logic flow by @daquinteroflex in #2790
- fix: pass path_dir correctly to batch run by @dmarek-flex in #2792
- feat(adjoint): full adjoint support for dispersive models by @yaugenst-flex in #2746
- adjoint: add exception for NaN data in adjoint pipeline by @groberts-flex in #2772
- add priority to Bach, Job, and run_async by @QingengWei in #2758
- Prevent small bandwidth sources from popping up in terminal component by @groberts-flex in #2780
- Fix collision between removing nearly parallel intersections and remo… by @dbochkov-flexcompute in #2789
- fix: Further corrections on RF webapi support by @daquinteroflex in #2778
- Making sure fp_eps is float64 by @momchil-flex in #2796
- Autograd support for component modelers by @groberts-flex in #2779
- Microwave and RF documentation page by @yuanshen-flexcompute in #2791
- chore(deps): 🤖 Daily update
poetry.lockby @github-actions[bot] in #2691 - rf: further touches pre-release by @daquinteroflex in #2799
- fix validation of run_only and element_mappings in the smatrix plugin by @dmarek-flex in #2803
- feat: initialize topology design regions from simulation geometry by @yaugenst-flex in #2795
- feat(adjoint): sidewall angle gradients by @yaugenst-flex in #2747
- refc: backwards-compatible componentmodeler run() and autograd-support by @yaugenst-flex in #2807
- Moving
get_geo_indstoGridby @momchil-flex in #2785 - Component equality check refactor by @momchil-flex in #2769
- fix: final 2.10.0rc1 changes by @daquinteroflex in #2806
- Fixing generation rate validator by @momchil-flex in #2809
- fix: Add real_cost to web.run CM console by @daquinteroflex in #2810
- docs: Update notebooks with rerun by @daquinteroflex in #2811
- Updates for fully anisotropic mode solver by @momchil-flex in #2728
- Move mesh size validator to
post_init_validatorby @marc-flex in #2821 - Warn/error if too many structures are of the same medium by @momchil-flex in #2812
- docs: add charge tolerance spec by @daquinteroflex in #2815
- Warn if different media have the same name by @momchil-flex in #2813
- fix pec frame lengths by @dbochkov-flexcompute in #2798
- add discriminators to multiphysics medium to avoid sporadic benign error messages by @dbochkov-flexcompute in #2824
- MediumMonitor to return both permittivity and permeability profiles by @weiliangjin2021 in #2817
- propagate verbose argument to start function in webapi by @groberts-flex in #2825
- docs(charge): Fix rendering and missing dataclasses by @damiano-flex in #2826
- Make task names optional by @marcorudolphflex in #2822
- Non-isothermal charge simulations by @marc-flex in #2425
- Add tidy3d-extras install option by @caseyflex in #2788
- Stricter validation for mode solver bend radius by @caseyflex in #2832
- normalize_index adjoint fix by @yaugenst-flex in #2834
- More efficient mesh refinement in LayerRefinementSpec for interior-disjoint structures by @weiliangjin2021 in #2828
- restrict area for merging geometries for gap meshing by @dbochkov-flexcompute in #2833
- Lazy loading of data by @marcorudolphflex in #2830
- remove: adjoint plugin by @daquinteroflex in #2816
- Deprecation messages for semiconductor by @marc-flex in #2829
- Fix doping by @marc-flex in #2844
- deprecate: python 3.9 and update to 2.10.0rc2 by @...