Skip to content

Changelog

This page summarizes user-visible changes.

The recommended starting point remains the uniform Cartesian Yee RF/FDTD lane. Non-default lanes such as non-uniform mesh are documented through their support and evidence envelopes, not presented as the default path.

  • Differentiable forward(...) objectives are now safe to wrap in an outer jax.jit: both jax.jit(loss) and jax.jit(jax.grad(loss)) over forward(eps_override=...) are regression-locked against the eager path. This fixes a tracer crash in material assembly without changing eager results.
  • optimize(...) gained default-off robustness knobs for difficult proxy losses: n_starts, best_iterate, step_clamp, and seed. The default single-start Adam path remains byte-identical.
  • add_lumped_rlc(...) elements now participate in the differentiable uniform forward(...) lane. Use forward(rlc_values_override={...}) when R/L/C values themselves are scalar design variables; this is still a lumped circuit element, not a Z0-referenced port.
  • Waveguide S-matrix extraction now emits a soft advisory for passive normalize=False results whose column power is above the documented single-run over-unity envelope but below the hard unreliability limit. The physics and hard pass/fail thresholds are unchanged.
  • RCS and inverse-design docs now pin recent footguns: RCS validation is monostatic-only unless additional evidence is supplied, and a finite-difference gradient check does not prove an empty observation window is physically meaningful.
  • A standalone real multi-device witness (scripts/diagnostics/distributed_witness/multigpu_witness.py) now compares single-device and sharded PEC/CPML/lumped-port runs on machines with two or more JAX devices; it is a distributed-runner identity check, not a new physics-validation envelope.
  • AD memory-planning docs now tag each artifact with an evidence class — static estimate, conservative budget-fit plan, or explainability breakdown — so a planning estimate is never read as a runtime profiler measurement, a peak-memory guarantee, or RF validation evidence. The compiled-executable check reports the JAX compiler’s memory estimate, not a runtime peak.
  • Differentiable-design guidance was tightened: it separates JAX-traced objectives and finite-difference gradient checks from the final port/resonance/far-field physics validation.
  • Non-uniform mesh guidance now frames graded-z meshes as a bounded workflow for thin layered structures, stating the unsupported combinations and the caller’s validation responsibilities up front.
  • Open-domain oblique RCS is available through compute_rcs(theta_inc != 0) for its documented uniform-grid, ez-polarized Method-B TFSF envelope; unsupported combinations fail explicitly.
  • The opt-in plane-wave design lane adds complex-Bloch TFSF in run(), uniform forward() support, differentiable mu_r_override, and compute_rcs_jax.
  • rfx.MeshShape imports voxelized STL, OBJ, and PLY geometry; STEP support is available with the cad extra. Mesh import is not differentiable.
  • rfx.interop can emit a validated design document and a runnable openEMS script for representable simulations.
  • run(until_decay=..., radiated_flux_box=...) can stop on radiated-energy flux, and MSL extraction now resolves automatic probe offsets against both documented clearances. Returned MSL S-matrices enforce passivity by default while retaining raw results in S_raw.
  • Maintenance-only release: a behavior-preserving rectangular-waveguide mode-solver refactor and shipped-documentation hygiene. There was no public API or user-visible behavior change.
  • Validation reporting is stricter: a promoted port-family result now requires magnitude evidence, a phase-consistency witness, an AD-vs-finite-difference check where gradients are part of the claim, and committed (reproducible) artifacts.
  • Port-family support wording is clearer: users should match each source or port family to its documented calculator and evidence envelope instead of treating any S-parameter helper as universal.
  • compute_msl_s_matrix now reports a positive characteristic impedance on both ports. This fixes reported metadata while leaving the S-parameter calculation invariant.
  • Non-uniform mesh accuracy coverage now includes an analytic gated cavity case whose resonance frequency depends on the graded axis.
  • Public guides and support pages were tightened around maintained workflows, validation boundaries, and device-count-adaptive test behavior.
  • Rectangular waveguide-port evidence now covers WR-band empty-guide, PEC-short, and dielectric-slab cases with analytic and external-reference comparisons.
  • preflight() and preflight_sparameters() now expose coded report objects for automation while preserving older list/string behavior.
  • Run/forward results, S-matrix calculators, sweeps, and optimizers now surface finite-data, passivity, setup, and NaN-gradient issues earlier.
  • compute_coaxial_line_reflection(...) is the current coaxial line-reflection path inside its documented transmission-line envelope.
  • compute_waveguide_s_matrix(checkpoint_segments=...) adds segmented checkpointing for uniform waveguide AD-heavy runs.
  • Finite-size flux monitors are regression-locked against the matching full-plane integrand window; the old finite-size instability caveat is superseded.
  • The directivity objective gained a log-ratio option for sign-correct gradients when design variables change total radiated power.
  • Current examples are routed through maintained paths: validation/crossval/05_patch_antenna.py, validation/crossval/11_waveguide_port_wr90.py, examples/tutorials/nonuniform_patch_demo.py, and examples/inverse_design/multilayer_ar_coating.py.
  • S-parameter documentation matches the calculator to the port family: lumped/wire, MSL, waveguide, or bounded coaxial line reflection.
  • Advanced the differentiable design loops and validation-boundary reporting.
  • Added feature-boundary wording so repository code outside the documented support scope is not presented as the default public path.
  • Improved port and observable APIs for RF workflows.
  • Expanded the public guide structure for examples, API surfaces, and validation/support boundaries.
  • Added RF examples and clearer routing for patch, waveguide, and microstrip workflows.

Earlier releases introduced the core JAX FDTD solver, material/geometry helpers, sources, probes, ports, far-field utilities, and inverse-design workflows. See the Git history and package releases for full implementation detail.