CALC-087
conformal-aperture convergence, the arithmetic behind CLM-0863
What this is
This is the project's own arithmetic, published in full so it can be checked rather than taken on trust. It is not a source. Every input it uses is cited to a record, and the conclusion it reaches only carries as far as those inputs do.
Supports CLM-0863. Independently verified from a cold start by a verifier that shared no code with the producer (VER-1090).
Qualifications live in CLM-0863; this record is the arithmetic only.
1. Geometry
| Frequency | 2.45 GHz, c = 2.99792458e8 |
| Wavelength | lambda = c/f = 0.122364268571 m. Not 0.1224 rounded |
| Aperture | circular, radius A = 500.0 m, diameter 1 km |
| Electrical size | diameter 8,172.3203 lambda; radius 4,086.1602 lambda |
| Surface | bowed disc, z = SAG * (1 - (r/A)^2), sag at centre, zero at rim |
| Baseline sag | 10 lambda = 1.223643 m, against lambda/16 = 0.007648 m, i.e. 160x beyond the flatness criterion, so a 2-D FFT of the projected aperture is invalid |
| Illumination | 10 dB Gaussian, exp(-alpha (r/A)^2), alpha = -ln(10^(-10/20)) = 1.151292546 |
| Taper convention | 10 dB is edge POWER below centre, edge amplitude 0.316228. The other reading gives a materially different answer and is not used |
2. Method
Far field of a 3-D source distribution, E(khat) = sum_n w_n exp(-i k khat . r_n), evaluated as a
type-3 non-uniform FFT in three dimensions. No planarity is assumed anywhere; that is the point.
Quadrature: Gauss-Legendre in radius, uniform in azimuth. Weight per point is
(radial GL weight) * r * (2 pi / n_t). Both the scheme and the point count must be quoted
together - see section 6, which is why.
Sign convention. isign=+1 with NEGATED direction cosines. The opposite pairing returns the
exact complex conjugate for this axisymmetric aperture on a diameter cut, so every
magnitude-based test passes and only a phase test detects it.
Library choice is part of the method, not a preference. Use `scipy.special.roots_legendre`,
not numpy.polynomial.legendre.leggauss. The two produce numerically identical nodes and weights,
verified to 1e-15 at n = 200. scipy's is textbook O(n^2) - 0.021 / 0.081 / 0.328 / 1.238 / 4.908 s
at n_r = 1,000 / 2,000 / 4,000 / 8,000 / 16,000, ratios 3.9, 4.0, 3.8, 4.0 per doubling. numpy's is
worse than O(n^2), ratios growing 2.9x to 6.2x per doubling over the same range, and somewhere
between n_r = 32,000 and 256,000 a single call reached 11+ GB and had not returned after 6+ minutes.
A reader who uses numpy's routine will conclude this calculation is intractable on their machine.
The exact n at which it fails is a recorded null: it was killed to protect a shared machine and not
retried.
Environment. FINUFFT 2.5.1 pinned, wheel py3-none-win_amd64 and therefore Python-version
agnostic; eps=1e-9. Convergence is a property of the sampling, not the tolerance: eps of 1e-6,
1e-9 and 1e-12 agree to six significant figures at both a shallow and a deep case.
3. The N family, and why converged N resolves only to 4x
n_t = 2 * n_r, N = 2 * n_r^2, n_r = 40 * 2^m
m n_r n_t N ratio to previous
0 40 80 3,200 -
1 80 160 12,800 4.000x
2 160 320 51,200 4.000x
3 320 640 204,800 4.000x
4 640 1,280 819,200 4.000x
5 1,280 2,560 3,276,800 4.000x
6 2,560 5,120 13,107,200 4.000x
7 5,120 10,240 52,428,800 4.000x
8 10,240 20,480 209,715,200 4.000xEvery step is exactly 4.000x, so a converged N read off this ladder is resolved to a factor of 4 and no finer. Two rungs is 16x. An apparent "exactly 16.000x" is two rungs, not a measured exponent.
The two deepest probes deliberately left the ladder. N = 81,920,000 implies n_r = 6,400 and
N = 128,000,000 implies n_r = 8,000; neither 6,400 nor 8,000 is 40 * 2^m, both sitting between
rungs 7 and 8. Inferred from the stated N under `N = 2*n_r^2` with `n_t = 2*n_r`, not stated
directly by the run.
4. Convergence, sag = 10 lambda
Angular search width: 0 to 10 degrees on a 500,001-point grid. Stating this is not optional. The converged off-axis maximum sits at 0.00854 degrees, and a 401-point grid under-resolves the maximum by 4 to 16 per cent over wide windows. Omitting the search width is the defect that produced the original pre-convergence figure; a narrow 0-to-0.06-degree window shows 0.00 per cent change between N = 3,200 and N = 51,200 while the correct wide search shows -90.80 per cent.
| N | n_r, n_t | Peak |E|^2 | Max off-axis |E|^2 |
|---|---|---|---|
| 3,200 | 40, 80 | 7.302930e+07 | 2.153817e+09 (at 7.92 deg, pre-convergence aliasing) |
| 51,200 | 160, 320 | 7.302930e+07 | 1.981171e+08 (at 0.00854 deg) |
| 819,200 | 640, 1280 | 7.302930e+07 | 1.981171e+08 |
| 13,107,200 | 2560, 5120 | 7.302930e+07 | 1.981171e+08 |
Peak reproduces to seven significant figures at every N across two independent implementations; converged off-axis maximum agrees to 0.1 per cent (1.981171e+08 against 1.979203e+08).
Pre-convergence values are split-sensitive and are not a reproduction target. Five splits at N = 3,200 gave maxima from 1.48e9 to 2.15e9, at angles from 1.5 to 7.9 degrees.
5. The 4,098x factor, derived
half-wavelength lattice count = pi * A^2 / (lambda/2)^2
= pi * 500^2 / (0.061182134286)^2
= 785398.163397 / 3.743254e-03
= 2.098170e+08
factor = 2.098170e+08 / 51,200 = 4,098.0The numerator is a property of the geometry; the denominator is a property of the quadrature scheme. The factor is therefore a property of both, and quoting it without section 2's scheme and section 4's search width states less than it appears to.
Result: converged at N = 51,200 Gauss-Legendre points, an off-axis maximum of 1.981171e+08 at
0.00854 degrees, and 4,098 times fewer points than a half-wavelength lattice over the same
aperture. These are the three quantities CLM-0863's limits states, and none of them survives
being quoted without the scheme and the search width that produced it.
6. Gauss-Legendre against a uniform midpoint rule - why the point count needs its scheme
Same geometry, same uniform azimuth, same N, sag = 10 lambda; only the radial rule differs.
| N | GL off-axis max | Midpoint off-axis max | Midpoint error vs converged |
|---|---|---|---|
| 51,200 | 1.981171e+08 | 1.992931e+08 | 0.59 pct |
| 819,200 | 1.981171e+08 | 1.981892e+08 | 0.036 pct |
| 13,107,200 | 1.981171e+08 | 1.981216e+08 | 0.0023 pct |
| 52,428,800 | 1.981171e+08 | 1.981182e+08 | 0.00056 pct |
Both rules converge to the same physical value. GL is exact to six significant figures at 51,200; midpoint at 52,428,800 - exactly 1,024x more points - is still 0.00056 per cent off and has not caught up. This is what makes the point count meaningful only alongside its scheme.
7. Sag sweep
Angular search width: 0 to 2 degrees on a 200,001-point grid, convergence criterion relative change below 1e-6 against the previous rung.
| Sag | In metres | Converged N, pass 1 | Converged N, pass 2 | Converged off-axis |E|^2 |
|---|---|---|---|---|
| 10 lambda | 1.223643 | 819,200 | 204,800 | 1.981171e+08 |
| 100 lambda | 12.236427 | 13,107,200 | 3,276,800 | 1.985811e+06 |
| 1,000 lambda | 122.364269 | 52,428,800 | 52,428,800 | 1.985857e+04 |
| 10,000 lambda | 1,223.642686 | not converged within 52,428,800 | not converged within 81,920,000 | - |
The two passes differ by ONE RUNG on the two shallower sags and agree exactly on the third. One rung is the minimum this ladder can express, so these are agreeing results.
Boresight value collapses about two orders of magnitude per decade of sag: 7.303e+07, 7.305e+05, 7.305e+03. Recorded as measured; no claim is made on it, as it was not the question asked.
8. Reproduction criterion
The converged values and the convergence rungs, on any hardware, with the quadrature scheme, the radial-node library and the angular search width all stated. Timings are evidence of tractability, not benchmarks. Reject any reconstruction that quotes a converged N without its scheme, or an off-axis maximum without its search width - the first is meaningless to a factor of 1,024 and the second to a factor of 10.
Cite this
energyaperture.com/calc/calc-087
CALC-087. The working above, not a source document.