v2.12.0.dev3
Pre-release
Pre-release
What's Changed
Added
- Added
tidy3d.RadiationBCgray-body surface radiation boundary condition and an optionalemissivityfield ontidy3d.ConvectionBCfor combined convective-radiative heat exchange, supported in heat and conduction+heat simulations. - Added
SurfaceRecombinationBCfor modeling Shockley-Read-Hall surface recombination and fixed interface sheet charge on semiconductor boundaries and zone interfaces, supported by the accelerated charge solver. - Added
ThinLensProfile,ThinLensBeam, andThinLensOverlapMonitorfor constructing,
injecting, and decomposing vectorial focused beams from a thin-lens angular spectrum. - Added
tidy3d.web.diagnose_connection()and thetidy3d diagnose-connectionCLI for measuring Tidy3D API reachability, DNS/TCP/TLS connectivity, client SSL/proxy/CA configuration, and storage download throughput. LumpedResistor,LinearLumpedElement, andLumpedPortnow accept one-dimensional (line) geometries with two zero-size dimensions, in addition to planar geometries; a line element/port is realized as a single-grid-cell-wideMedium2Dsheet whose normal axis is chosen at meshing time to straddle any adjacent material interface.AnisotropicConductivityforSolidMedium.conductivity, specifying an anisotropic (tensor) thermal conductivity via principal valuesxx,yy,zzplus an optionalrotation. A scalarconductivityremains fully supported for isotropic materials.SolidMedium.from_si_unitsalso accepts anAnisotropicConductivity(its principals are converted from SI units).- Added
ElectromagneticFieldData.field_intensity()for computing intensity from selected electric field components using the existing colocated intensity semantics. VarshniEnergyBandGapandConstantEnergyBandGapnow expose aband_gap_energy(temperature)method returning the energy band gap (in eV) at the requested temperature(s).- Added
geometry_toleranceto unstructured grid specs, raising the distance below which coincident geometric entities are fused during heat/charge meshing (refinement lines remain subject to a built-in1e-6um minimum length).
Changed
- Gaussian-like overlap monitors now require their monitor plane to lie in a homogeneous, isotropic background medium.
- The
relax_courantoption is now orientation independent and benefits a wider range of simulations. - Consolidated the TCAD band-gap classes into a single module:
ConstantEnergyBandGapandVarshniEnergyBandGapnow live intidy3d.components.tcad.bandgap(previouslytidy3d.components.tcad.bandgap_energy, which has been removed) alongsideSlotboomBandGapNarrowing. The public import path (import tidy3d as td; td.ConstantEnergyBandGap) is unchanged; only code importing directly from the internalbandgap_energymodule path needs to update its import. - Finest grid region visualization in
Simulation.plot_grid()is now off by default; opt in by passing a nonzerofinest_grid_region_alpha.
Fixed
- Fixed autograd runs so unsupported traced source, medium, and geometry parameters are rejected during setup, before simulation submission.
- Fixed doping behavior at box boundaries in charge simulations, for all doping box types (
ConstantDoping,GaussianDoping,CustomDoping): doping near a box edge is no longer dropped, two boxes that abut along a plane no longer double the doping on that shared plane (the later box in the list takes the shared plane), and overlapping boxes (such as a background plus an implant) now add together correctly. Doping plots reflect the same combined doping the simulation uses. - Simulations now validate that the grid resolves each lumped element and port before upload: at least two cells are required along every axis transverse to the
voltage_axis. A too-coarse grid (for example a single cell across a transverse axis) previously failed during meshing with a cryptic "zero volume",IndexError, or divide-by-zero; it now raises a clear error pointing at the offending axis. This applies to both planar and one-dimensional (line) elements. - Fixed loading of solver-generated heat, charge, and mesh results so Tidy3D no longer emits misleading unused-point or missing-value warnings.
- Union fields on Tidy3D models are now validated against their
typediscriminator, so passing an object of the wrong type to a model field raises a clear error at construction instead of being silently accepted and failing later during serialization or a remote run. - Fixed local EME staged propagation rejecting
EMEModeSpec.interp_specmode data stored on the reduced interpolation frequency grid (reduce_data=True); such mode data is now accepted and its overlaps interpolated up to the requested frequencies. - Fixed remote autograd gradients to reuse compatible cached forward results when possible and automatically rerun the forward simulation when partial cached data is missing or no longer usable for the backward pass.
- Transient (
UnsteadyHeatAnalysis) heat simulations with only Neumann-type boundary conditions (e.g. allHeatFluxBC) are no longer incorrectly rejected; the all-Neumann check now applies only to steady-state simulations, where the solution is otherwise undefined up to a constant. - Corrected the fixed-angle far-field projection phase so oblique fixed-angle sources with an off-origin center produce the right projected pattern.
- Fixed
PolySlabadjoint derivatives to use winding-invariant sidewall sampling based on offset polygon slices. - Fixed the Bloch phase application for
DirectivityMonitorfar fields, which was previously dropped at domain-edge cells in simulations with Bloch boundaries. - Clarified the
Job.step()andBatch.step()error message when workflow results are already complete, including from the local cache, and restored upload-time cost estimate logs for multi-step workflow jobs. - Fixed seven default material models whose coefficients deviated from their reference data:
Al'Rakic1995'(real index was non-physical across the visible/NIR),CrandBe'Rakic1998BB',Au'Olmon2012evaporated'(no interband response in the visible),Ag'Rakic1998BB', andPtandTi'Werner2009'. Validity ranges are unchanged; results change wherever these variants are used, explicitly or via the material default. For infrared-only simulations, the previous fewer-pole (lower-cost) coefficients remain available as'Rakic1998BB_IR'(Cr,Be,Ag) and'Olmon2012evaporated_IR'(Au) variants, restricted to the infrared bands where they match the reference data. - Fixed a validation error caused by
LossyMetalMediummistakenly being added directly to the medium conversion of lumped elements. - Fixed inline PyVista notebook plots sometimes failing to start interactive views.
- Fixed heat/charge meshing of abutting structures with finely tessellated (e.g. curved) boundaries, which could leave degenerate zero-volume elements that failed the solver's mesh check.
- Fixed
Scene.plot_structures_eps()for unstructured custom-medium data with complex permittivities. - Fixed flat
BatchDataresult access for known skipped, failed, or incomplete batch tasks to raise a contextualDataErrorinstead of a rawKeyError.
Removed
- Removed the deprecated
conformalflag from heat-charge monitors (TemperatureMonitor,VolumeMeshMonitor, and theSteady*charge monitors). Monitor geometry no longer affects meshing: the simulation mesh is never forced to conform to a monitor. For value-producing monitors (temperature, potential, and the otherSteady*fields), planar and line monitors now return values interpolated from the computational grid, while volumetric monitors return the grid cells contained in the monitor region. Files saved with older versions load unchanged, as the flag is dropped automatically on load.
Full Changelog: v2.12.0.dev2...v2.12.0.dev3