This project implements the frozen benchmark-only concentric-sphere model for P0 electrostatic, weighting-field, and Shockley–Ramo verification. It is a mathematical reference case for later cross-software verification; it is not a PTW 32002 geometry model.
Included:
- closed-form potential and radial electric field in a concentric spherical shell;
- inner-electrode weighting potential and weighting field;
- signed Shockley–Ramo current and endpoint induced charge;
- independent finite-difference, Gauss-law, capacitance, similarity, polarity, and trajectory checks;
- deterministic CSV, YAML, Markdown, and SHA-256 evidence artifacts.
Excluded:
- actual 32002 internal geometry or materials;
- COMSOL, Geant4, Garfield++, electronics, calibration, absolute air-kerma rate, or AI/ML;
- physical measurement uncertainty claims.
The numerical tolerances in this project are implementation-verification tolerances only. They are not measurement uncertainties.
The main case uses a = 0.01 m, b = 0.1 m, Va = 1 V, and Vb = 0 V. Outward radius and radial velocity are positive. The field definitions and signal convention are
E_r = -d(phi)/dr
Ew_r = -d(phi_w)/dr
i = q * v_r * Ew_r
Q_ind = q * [phi_w(r_start) - phi_w(r_end)]
q is signed: an electron has q < 0, while a positive ion has q > 0. The physical field depends on the applied conductor potentials. The weighting field is an auxiliary unit-boundary solution for the readout electrode and does not contain the physical bias voltage.
All internal calculations use SI units. Boundary evaluations at r = a and r = b are allowed; values outside the closed interval raise ValueError.
| Function | Inputs | Output |
|---|---|---|
potential(r, a, b, Va, Vb) |
r, a, b in m; Va, Vb in V |
physical potential in V |
electric_field_radial(r, a, b, Va, Vb) |
r, a, b in m; Va, Vb in V |
outward radial field in V/m |
weighting_potential(r, a, b) |
r, a, b in m |
dimensionless |
weighting_field_radial(r, a, b) |
r, a, b in m |
outward radial weighting field in 1/m |
induced_current(q, v_r, r, a, b) |
q in C; v_r in m/s; radii in m |
current in A |
induced_charge(q, r_start, r_end, a, b) |
q in C; radii in m |
induced charge in C |
data/p0_benchmark.csv contains 201 points in the closed interval [a, b].
| Column | Unit | Definition |
|---|---|---|
r_m |
m | radial coordinate |
r_over_a |
dimensionless | r/a |
r_over_b |
dimensionless | r/b |
phi_V |
V | physical potential |
phi_over_deltaV |
dimensionless | (phi - Vb)/(Va - Vb) |
E_r_V_per_m |
V/m | physical outward radial field |
E_r_times_b_over_deltaV |
dimensionless | E_r b/(Va - Vb) |
phi_w |
dimensionless | inner-electrode weighting potential |
Ew_per_m |
1/m | outward radial weighting field |
Ew_times_b |
dimensionless | Ew b |
r2_E |
V m | r^2 E_r |
r2_Ew |
m | r^2 Ew |
gauss_flux |
V m | 4 pi r^2 E_r; multiply by vacuum permittivity to obtain enclosed charge in C |
From this directory, using the verified environment:
& 'C:\ProgramData\anaconda3\python.exe' -W error -m pytest -q
& 'C:\ProgramData\anaconda3\python.exe' scripts\generate_benchmark.pyThe generator recomputes all ten hard verification chains. It returns a nonzero process status if any chain fails. The source implementation is in src/concentric_sphere.py; evidence generation is in scripts/generate_benchmark.py; automated tests are in tests/.
data/p0_benchmark.csvmanifests/P0_parameter_manifest.yamlreports/P0_Verification_Report.mdmanifests/P0_SHA256SUMS.txt
The checksum manifest excludes itself, Git internals, Python bytecode, and test caches. The parameter manifest records the frozen implementation-plan hash and the committed source HEAD used for generation. If no commit or repository exists, it records the reason explicitly.