Releases: xJoepec/adamantium-beta
Release list
Adamantium 0.3.0b1
First public release. Beta research software and a scalar 2D approximation, not foundry
sign-off.
Measurement
T is now P_port / P_inc against a cached reference solve of each device's launch
structure. The same-solve input flux only sets R = 1 − P_in / P_inc.
The previous P_out / P_in ratio rewarded back-reflection, because reflection shrinks the
denominator: the score improved as the device got worse, and gradient descent found it.
Rescoring the 90° bend honestly moved its worst corner from −3.5 dB to −1.16 dB.
Robust optimization
The loss minimizes a softmax-weighted (k=16) worst case over the corners the verifier later
scores: three projection fields (eroded, nominal, dilated) at three wavelengths (band edges
and center). The η shift reproduces the verifier's ceil(bias/dx) one-cell etch morphology
exactly, so the optimizer hardens against the structure that will actually exist.
On Apple silicon the nine corner problems solve as one batched Metal dispatch with
per-corner ω, PML and w². The JAX path solves the same cases in sequence.
Performance
Solver tolerance tightens in three tiers as β hardens: 1e-3/12 chunks below β 8,
5e-4/16 through β 12, then 2e-4/24. On the 16-step bend that cut design, verification
and cross-check from 53 s to 41 s with an identical verified result. The as-drawn baseline
solve is cached per fixed-structure key.
Two accelerations were measured and rejected. A 5/8-resolution warm start improved the
nominal number and cost 0.6 to 0.9 dB of verified worst corner. Warm-starting the adjoint
saved no wall clock and cost 0.2 dB. Below roughly 6 points per material wavelength the
Helmholtz operator turns indefinite enough that Jacobi-BiCGSTAB stalls near residual 0.4,
so a half-resolution stage will not solve to tolerance at all.
Fixed
- Step 0 reported
loss 0.0before any objective had been evaluated, planting a false
point at the head of every objective trace, monitor file and sparkline. It now reports no
objective; the browser already handled a null loss. - The
.itermonitor misaligned its loss column for absent values and left trailing
whitespace on every row. tests/test_verify.pyimportedadamantium.mlx_fdfdunconditionally, so the suite could
not run wheremlxis unavailable. CI caught it on Linux at 76/77.
Interface
The browser keeps the two-view workbench by default: material mask, |Ez|, throughput,
ports, objective trace, solver state. Strict verification stays collapsed and opt-in.
lab + opens the LAVA-inspired instrument (Inspect, Monitor, Runs, Campaign) without
changing that default surface. The aesthetic is locked by docs/VISUAL_CONTRACT.md.
Reproducibility
A run writes a spec manifest, NumPy mask and fields, a restart, probe CSVs, a live .iter
monitor, evidence.json and VTK. Verification adds the worst-case spectrum, an independent
JAX cross-check and a goal-weighted Trust Field. adamantium sweep runs Cartesian
parameter studies under the same contract.
tests/test_oracles.py anchors the physics to closed-form identities: flux conservation in
a straight guide, T → 1 and R → 0 when a device is its own reference, exact nesting of
the eroded, nominal and dilated fields, and the η shift against etch morphology.
Known limits
- Default filter radius is 2.2 px. 1.4 px could not survive the verifier's one-cell erosion.
- The Metal path requires Apple silicon.
ADAMANTIUM_BACKEND=jaxis the portable path. - Web assets install through
[tool.setuptools.data-files], which setuptools has
deprecated. It works, andfind_web_rootalso resolves a source checkout, but the layout
has to move before setuptools drops the feature.