Energy Aperture

CALC-087

conformal-aperture convergence, the arithmetic behind CLM-0863

Calculation · Cited by 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

Frequency2.45 GHz, c = 2.99792458e8
Wavelengthlambda = c/f = 0.122364268571 m. Not 0.1224 rounded
Aperturecircular, radius A = 500.0 m, diameter 1 km
Electrical sizediameter 8,172.3203 lambda; radius 4,086.1602 lambda
Surfacebowed disc, z = SAG * (1 - (r/A)^2), sag at centre, zero at rim
Baseline sag10 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
Illumination10 dB Gaussian, exp(-alpha (r/A)^2), alpha = -ln(10^(-10/20)) = 1.151292546
Taper convention10 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.000x

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

Nn_r, n_tPeak |E|^2Max off-axis |E|^2
3,20040, 807.302930e+072.153817e+09 (at 7.92 deg, pre-convergence aliasing)
51,200160, 3207.302930e+071.981171e+08 (at 0.00854 deg)
819,200640, 12807.302930e+071.981171e+08
13,107,2002560, 51207.302930e+071.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.0

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

NGL off-axis maxMidpoint off-axis maxMidpoint error vs converged
51,2001.981171e+081.992931e+080.59 pct
819,2001.981171e+081.981892e+080.036 pct
13,107,2001.981171e+081.981216e+080.0023 pct
52,428,8001.981171e+081.981182e+080.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.

SagIn metresConverged N, pass 1Converged N, pass 2Converged off-axis |E|^2
10 lambda1.223643819,200204,8001.981171e+08
100 lambda12.23642713,107,2003,276,8001.985811e+06
1,000 lambda122.36426952,428,80052,428,8001.985857e+04
10,000 lambda1,223.642686not converged within 52,428,800not 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.