CALC-083
timings, node count, and the Rayleigh-distance caveat
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-0864. A calculation is required because that claim's stated value is arithmetic performed here. Independently confirmed by PyPO 1.2.1 (SRC-358). Constants re-derived by the registrar before landing: lambda = 0.122364269 m, alpha = 1.151292546, half-wavelength element count 2.098e8, Rayleigh distance 16,345 km at D = 1 km and 65,379 km at D = 2 km. All reproduce exactly as stated.
wall clock, single CPU core, numpy + scipy only
4001-point radial profile, 0 to 20 km 3.610 s
encircled-power integral to 5 km 11.534 s
TOTAL 15.144 s
result: peak 248.20 W/m2; encircled inside 5 km 94.76 pct
node count against element count, 2.45 GHz, 1 km aperture
half-wavelength elements pi * 500^2 / (lambda/2)^2 = 2.098e8
quadrature nodes used = 4.0e3
ratio = 5.2e4
Rayleigh distance 2D^2/lambda at 2.45 GHz
D = 1 km 16,300 km GEO slant range 3.58e7 m -> just OUTSIDE
D = 2 km 65,000 km GEO slant range 3.58e7 m -> still INSIDEScripts: emsim/sbsp-beam/po_beam.py, emsim/sbsp-beam/focused_results.py.
CALC-083 reproducible specification
An input nobody else can rebuild is grounds to doubt the result, not merely a documentation gap. My own CLM-0860 lattice is the argument for this section existing.
Physical case
| Aperture | circular, radius 500.0 m (1 km diameter), planar, normal along the beam axis |
| Illumination | 10 dB Gaussian amplitude taper, E(r) = exp(-alpha * (r/a)^2) with alpha = -ln(10^(-10/20)) = 1.151292546 |
| Taper convention | 10 dB is edge POWER below centre power, so edge AMPLITUDE is 10^(-10/20) = 0.316228. The alternative reading, edge amplitude 10^(-10/10), gives a different answer and is NOT used |
| Radiated power | 6.72e9 W, total from the aperture |
| Frequency | 2.45e9 Hz; lambda = c/f with c = 2.99792458e8, giving 0.122364269 m. NOT 0.1224 rounded |
| Range | 35,800,000 m, sub-satellite altitude, NOT a slant range |
| Phase condition | FOCUSED (retrodirective), i.e. the quadratic Fresnel phase is cancelled. In the script this is fresnel=False |
Numerical scheme
| Formulation | scalar Rayleigh-Sommerfeld far-field aperture integral reduced to a zero-order Hankel transform by circular symmetry: F(rho) = integral_0^a E(r) J0(k r rho / R) r dr | ||||
| Quadrature | Gauss-Legendre, n = 4000 nodes, mapped to r in [0, a] via numpy.polynomial.legendre.leggauss | ||||
| Normalisation | S(0) = P * A_eff / (lambda^2 R^2) with `A_eff = \ | integral E dA\ | ^2 / integral \ | E\ | ^2 dA`; pattern normalised to the IDEAL on-axis value so any Fresnel on-axis loss appears in the result |
| Bessel function | scipy.special.j0 | ||||
| Profile grid | 4001 points, numpy.linspace(0.0, 20000.0, 4001) metres | ||||
| Encircled integral | Gauss-Legendre, m = 6000 nodes over rho in [0, 5000] m, integrand S(rho) * rho, times 2*pi, divided by 6.72e9 |
Machine and software
| Machine | Windows 11, single CPU core - the code is not parallelised and uses no BLAS-threaded call in the timed path |
| Python | 3.14 |
| Libraries | numpy 2.3.5, scipy 1.16.3, pinned in emsim/.venv-po. No other dependency. |
| Script | emsim/sbsp-beam/po_beam.py, profile() and encircled_fraction() |
| Independent confirmation | PyPO 1.2.1, SRC-358, commit `e75c79a809db6e21a6a4a1f19a90761f18fdb938`, CPU double-precision path (libpypocpu.dll), run by a separate party |
Results to be reproduced
4001-point radial profile, 0 to 20 km 3.610 s
encircled-power integral to 5 km 11.534 s
TOTAL 15.144 s
peak on axis 248.20 W/m2
encircled inside 5 km radius 94.76 pct
PyPO (SRC-358), same case 247.60 W/m2 collimated / 248.20 focused, 94.56 pctTimings are indicative and machine-dependent; the PHYSICAL results are not. A verifier who reproduces 248.20 W/m2 and 94.76 per cent on any hardware has reproduced the claim. The 15.144 s is offered as evidence of tractability, not as a benchmark, and a reproduction within an order of magnitude on a single core supports the claim equally well.
What a verifier should attack
1. The focused-versus-collimated branch. These differ by 0.25 per cent at 2.45 GHz and by 1.15 per cent at 5.8 GHz, and an earlier comparison mistook one for the other and called a mismatch agreement. Confirm which branch is being run before comparing anything. 2. The taper convention. The alternative reading of "10 dB" gives 181.4 W/m2 rather than 248.20. 3. Whether n = 4000 is converged. Convergence was checked from 500 to 8000 nodes and the peak was identical to six decimal places, but that check was mine.
CALC-083: the reproduction criterion, stated explicitly
THE TIMING IS EVIDENCE OF TRACTABILITY, NOT A BENCHMARK. THE REPRODUCTION CRITERION IS THE PHYSICAL RESULT.
| Quantity | Is it the assertion? | Reproduction test |
|---|---|---|
| Peak 248.20 W/m2 | YES | Must reproduce, on any hardware |
| Encircled 94.76 pct inside 5 km | YES | Must reproduce, on any hardware |
| 15.144 s wall clock | NO | Indicative only; within an order of magnitude on a single core supports the tractability point equally well |
A timing is a property of the machine. The peak and the encircled fraction are properties of the physics. Holding a verifier on faster or slower hardware to a wall-clock number that was never the assertion would record a failure against the wrong quantity - a label defect dressed as rigour, and precisely what VF1 says to keep apart.
Cite this
energyaperture.com/calc/calc-083
CALC-083. The working above, not a source document.