Reflection-symmetry reduction for the 780 nm campaign
Decision
The centered-emitter 2.5D discovery solver now uses the exact field sector that is even under x, y, and z reflection. This is accepted for the next reduced atom-coupling campaign. The full-vector staggered-Yee validator still uses its full field domain; a half-domain Yee implementation remains a separate, high-priority discretization change.
What is reduced
For the enforced reflection-symmetric density and centered scalar source, the Fourier x/y coefficients and vertical FEM nodes form an invariant even sector. Orthonormal reflection projectors are applied to the stiffness, dielectric mass, outgoing DtN self-energy, source, and both adjoint paths. Fields are lifted back to the full physical grid before localization, overlap, and topology-gradient calculations.
The current 10 x 4 x 9 Fourier/FEM launch profile changes from 1,701 to 275 linear unknowns, a 6.18545x reduction. The factor approaches eight as the three retained orders grow.
Equivalence and derivative gates
The fixed smoke validation passes all existing analytic and gradient checks plus the new parity/full equivalence checks:
| Check | Result |
|---|---|
| full/reduced atom-response relative error | 2.0922e-15 |
| full/reduced atom-gradient relative error | 2.0497e-15 |
| lifted real-space field correlation | 1.000000000000 |
| parity-basis DtN derivative error | 3.4785e-10 |
| parity-basis complete nonlinear-Q gradient error | 2.6956e-5 |
| repository unit tests | 57 / 57 pass |
On the small 1,701-unknown launch benchmark with one numerical thread, one centered-atom primal plus reused-factor Hermitian adjoint changed from 1.47 to 0.81 seconds. Peak RSS changed from 160,560 to 99,820 KiB. Fixed interpreter, assembly, and topology costs dominate this small case, so wall time and RSS do not yet scale like the 6.185x algebraic reduction.
Why the 3D validator is not switched yet
The vector solver stores electric components on staggered Yee sublattices and uses one-sided boundary closures. A scalar-style array reflection is therefore not a commuting symmetry of its discrete matrix. Trial projection of that matrix changes the driven resonance rather than merely block-diagonalizing the same solve. Enabling it would violate the mode-identity and cross-basis rules.
The correct next implementation is a parity-compatible half-domain Yee operator with component-specific electric/magnetic boundary parity. It must be treated as a new basis: transfer density only, reacquire the source-coupled mode, compare complex vector fields on a common physical sampling grid, and repeat the atom-gradient, pole, and grid/domain gates before using it for a claim.
Reproduction
OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 \
python validate_25d.py --quick \
--output outputs_scaleup_780/parity_25d_validation
python optimize_atom_25d.py \
--config configs/atom_780_25d_parity_scaleup.json \
--output outputs_atom_780_25d \
--steps 1 --gradient-check smoke
The second command is the next optimization command only after the five full-vector launch gates pass. Q remains a separately reacquired diagnostic; the retained objective is the centered-emitter response at exactly 780 nm.