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 ordinary Result objects. 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.

Compare 0.4.0 to 0.5.1

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.

Compare 0.3.0 to 0.4.0

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 full Tensor3x3 anisotropy. 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.
  • LossyMetalMedium surface placement next to an external PML.

Compare 0.2.0 to 0.3.0

0.2.0 (2026-07-08)#

Previous public release. The changelog has no details for it.