REMI Lab
OPEN KNOWLEDGE / TOOLS

Changelog

이 페이지의 내용

This page summarizes user-visible changes.

Current public status

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.

Unreleased

  • A face-touching dispersive material no longer gets an absorber surround carrying its static permittivity without its dispersion poles — a material no declared model has. The dispersive_pole_at_absorber_face preflight advisory now fires for every pole family touching an absorbing face and states what the pad actually contains.
  • Realized geometry at node-aligned faces no longer depends on JAX_ENABLE_X64 or the solver lane: one exact float64 node formula is shared by the uniform lane, the non-uniform lane, and the viewer, and a one-cell sheet realizes on one and the same plane in both lanes.
  • A dz_profile-only simulation now dispatches to the non-uniform waveguide S-matrix lane instead of silently solving on the uniform grid built from the scalar dx. The unsupported default normalize=False fails loudly there, naming dz_profile. dz-graded accuracy remains unvalidated; the non-uniform lane reports the same ring-down settling witness as the uniform lane.

v1.7.0 — September 1, 2026

  • Long solves can report step count, elapsed time, rate, and ETA with report_every=N on supported uniform and single-device non-uniform runs. Reporting is off by default and the reported and unreported results are byte-identity locked.
  • Simulation.fidelity_report() audits declared geometry against the cells and material realization the solver will use, before a run. It reports rasterization and realization only; it does not predict RF error.
  • add_msl_port(direction=...) supports "+x", "-x", "+y", and "-y" for the Laplace/quasi-TEM path. The eigenmode path remains x-only and outside the public support envelope.
  • add_thin_conductor(..., surface_impedance_f0=...) accepts patterned shapes that rasterize to exactly one cell layer and at least one cell, including CAD-backed MeshShape objects. Unsupported sheet realizations and execution lanes fail explicitly.
  • The uniform single-device solver offers precision="float64" when JAX x64 is enabled. precision="mixed" works with CPML, but its float16 field storage raises the absorber residual floor and is not a substitute for float32 in low-reflection or S-parameter work.
  • compute_far_field_jax(..., max_phase_bytes=...) bounds the NTFF phase-array allocation by splitting the theta grid. The split is exact and avoids materializing the full direction-by-surface array at once.
  • S-parameter settling warnings use the same -40 dB rule in compute_msl_s_matrix, compute_waveguide_s_matrix, compute_mixed_s_matrix, compute_coaxial_two_port, and compute_coax_msl_transition.
  • Multi-band graded-z meshes now preserve declared blocks through smoothing, with a measured z-axis adjacent-cell ratio cap of 1.4 and explicit preflight advisories outside the validated envelope.
  • New rasterized-slice and stack-profile views show the cells and material layers the solver actually builds.
  • Wire-port decomposition, MSL probe extraction, CPML material padding, graded-mesh NTFF integration, mesh import containment, and preflight diagnostics received correctness fixes without widening their documented validation envelopes.
  • MSL internal DFT planes now store only the extractor’s required crop, reducing accumulator cells without changing the extracted matrix.
  • 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.

v1.6.7 — July 2026

  • 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.

v1.6.6 — June 2026

  • 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.

v1.6.5 — June 2026

  • 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.

v1.6.4 — June 2026

  • 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.

Documentation direction

  • 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.

v1.6 line

  • 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.

v1.5 line

  • 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

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.

Back to top ↑