Release notes
What changed in each Maxwell release, newest first, from the repository changelog.
This page summarizes each witwin-maxwell release, newest first. It follows CHANGELOG.md in the witwin-maxwell repository. Maxwell uses semantic versioning within the 0.x series, so a minor release can change behavior. To upgrade, see Installation.
0.5.1 (2026-09-08)#
Current release. Requires witwin>=0.4,<0.5.
Added
- Experimental batch execution with
Simulation.batch(...): many variants of one FDTD scene run in reusable, memory-limited CUDA slots and return ordinaryResultobjects. See Batch and multi-GPU runs. - Batch support for reusing compiled materials, choosing the batch size from free memory, private per-device memory budgets, several GPUs, two slots per GPU, and optional measured throughput tuning.
- Gradients through a batch for material densities, dielectric geometry and named source scales.
backward()still works after a slot is reused or the batch is closed. - Reproducible batch performance, memory and scaling audits.
Fixed
- FDTD time-step stability for materials, source timing, complex CPML and Mur boundary histories, and state consistency when CUDA graph capture resumes.
- Batch parameter caching, iterator ownership, result scene snapshots, selected electric spectra and memory use of retained adjoint state.
- Batch worker capacity distribution, and isolation of tuning random state and cross-device copies.
- The base dependency range is now
witwin>=0.4,<0.5, which matches the published base package. - Plotting, progress and notebook display dependencies are declared, so a clean install imports without errors.
Limitations
- Batch execution is experimental and supports fewer features than ordinary FDTD: point-dipole sources, point, plane and flux monitors, and no ports, wires, networks or circuits.
0.5.0 (not published)#
The 0.5.0 tag built CUDA wheels, but the installed package failed its import check because IPython was not declared as a dependency. Nothing was uploaded to PyPI. Use 0.5.1.
0.4.0 (2026-07-23)#
Added
- RF and engineering workflows: lumped and wave ports, S-parameter networks, Touchstone and circuit co-simulation, antennas and phased arrays, thin wires, electrostatics and capacitance, SAR and exposure, ESD, dielectric breakdown, gyromagnetic ferrites and generalized surface impedance.
- Multi-GPU forward and adjoint execution, including trainable CPML paths and deterministic aggregation of scene gradients across devices.
Changed
- Materials are now sampled at each Yee field component's own location. Geometry-resolved results are more accurate but differ from earlier versions.
- One CUDA binary per platform built on the PyTorch Stable ABI, for PyTorch 2.10 and newer (tested through 2.13) and CPython 3.10 to 3.14.
- Linux wheels target
manylinux_2_28. The Linux and Windows CUDA binaries include native code for SM 8.7.
Fixed
- Correctness gaps in CUDA graph capture, distributed checkpoints, conformal PEC, monitor staggering, near-to-far quadrature, mode selection and surface impedance.
0.3.0 (2026-07-13)#
Added
- Native CUDA adjoint for standard and CPML fields, complex Bloch fields, full electric anisotropy, conductivity and dispersion, Kerr nonlinearity, TFSF sources and several sources at once.
- Broadband and oblique
TFSF.slab(...)injection for gratings, including pulsed Bloch injection. - New materials:
Medium2D,Graphene,LossyMetalMedium,PerturbationMedium, custom spatial dispersion, Sellmeier and gain media, nonlinear susceptibility, two-photon absorption, space-time modulation, magnetic conductivity and dispersion, and fullTensor3x3anisotropy. These effects can be combined in one scene. - Broadband, lossy, anisotropic and bent-waveguide mode sources and ports.
- Near-to-far projection for curved surfaces and non-vacuum backgrounds, directivity, bistatic RCS, and more S-parameter and mode-overlap tools.
- Wider Tidy3D export: nonuniform grids, mixed boundaries and more geometry, material, source and monitor types.
- CUDA graph capture for standard, Bloch, dispersive, nonlinear and TFSF stepping.
- Support for Python 3.10 to 3.14 and PyTorch 2.10 to 2.12.
Changed
- The public API is organized around
Scene -> Simulation -> Result. FDTD is the full-featured solver; FDFD uses the same model but is a limited, experimental, CUDA-only single-frequency solver. - FDTD adjoint hot paths moved from Python to native CUDA. PyTorch autograd stays the public interface.
- Nonuniform grids, subpixel averaging, conformal PEC and source phase correction use the local grid spacing.
- PML cells are added outside
Domain.bounds. Validation and comparisons use the unchanged physical bounds. - Dual license, and release wheels with CUDA 12.8 fat binaries for Linux and Windows.
Fixed
- Plane-wave and TFSF amplitudes now match Tidy3D through physical power and field definitions.
- Bloch wavevectors convert correctly to Tidy3D's convention.
- Gaussian-pulse phase reference, source-spectrum normalization, flux integration over apertures, symmetry-face PML removal and point-dipole image scaling.
LossyMetalMediumsurface placement next to an external PML.
0.2.0 (2026-07-08)#
Previous public release. The changelog has no details for it.