Docs / v0.4 evidence

v0.4-dev evidence (S5-S11)

Every cited measurement on the v0.4 development track is reproduced below with its sprint, source file path, declared tolerance band, and verdict. Numbers come from the sprint closeouts in v0_4_dev/orchestrator/v0_4_s{5..11}_loop_summary.md and the evidence files under v0_4_dev/. The single canonical validation fact for the shipped product lives on the docs overview and the homepage validation section; this page does not restate those numbers.

Scope note. This page is v0.4-dev engineering evidence, not the product validation claim. Any on-load / operating-torque figure below is roadmap / v0.4-dev, NOT a validated capability. The validated torque claim is 2-D no-load cogging only, cross-checked against FEMM and GetDP — see /#validation for the canonical numbers.
Honest label discipline. The v0.4 validation matrix (v0_4_dev/validation_matrix/) refuses to emit a PUBLISHED_MEASURED_PASS verdict when the reference is analytical or textbook_formula. Any "PASS" against an analytical reference is reported as PASS only, never as PUBLISHED_MEASURED_PASS.

1. Sprint-by-sprint summary (S5-S11)

Source: v0_4_dev/orchestrator/v0_4_s{5..11}_loop_summary.md. All sprints additive on top of frozen v0.3.0.

Sprint Theme Workers Suite result Verdict
S5 2-D polish + cogging waveform 6 (W1-W6) 33 modules · 24 PASS / 9 PARTIAL / 0 FAIL · 246.87 s · exit 0 PASS
S6 Real CAD intake + multigrade + QA triage 4 39 modules · 29 PASS / 10 PARTIAL / 0 FAIL · exit 0 PASS
S7 Real-geometry FEM pipeline 4 43 modules · 32 PASS / 10 PARTIAL / 0 FAIL · exit 0 PASS
S8 First textbook-analytical benchmark PASS 3 4 cases PASS (Hanselman / Furlani / Griffiths / Timoshenko) PASS
S9 GPU port (cupy) 3 Structural PASS + honest NOT_IMPLEMENTED runtime (cupy absent on dev host) PARTIAL (dev host)
S10 Iron hysteresis loss 3 14 sub-tests PASS · 4 grades cited PASS
S11 Sliding mesh / rotor rotation 3 6 PASS + 3 PASS/PARTIAL + 1 ANALYTICAL_CPU_OK design doc PASS

Cumulative: 26 worker passes across S5-S11. v0.3.0 isolation verified every sprint: 72 source files in src/cufemlab/, 0 newer than 2026-05-24 freeze date.

2. Measurement table (every cited number)

Each row cites a specific value from a specific sprint, with the source evidence file. Tolerances are the ones declared in the sprint closeouts; "verdict" is the verdict recorded for that measurement.

# Quantity Measured Reference / tolerance Sprint · source Verdict
1 Nonlinear-BH full vs sector torque (bit-exact) rel diff 1.23e−9; 3.94× wall-time speedup at p=2 full-domain reference; declared cross-check tolerance < 1e−6 S5-W1 · pipeline_annular_torque/evidence_nonlinear_sector.md PASS
2 Cogging period for 4p/24-slot PMSM 0.000 % rel diff vs 2π / lcm(2p, n_slots) = 15° cogging-period theory (Hanselman 1994 ch.4); declared 0.5 % S5-W2 · pipeline_annular_torque/evidence_slotted_cogging.md PASS
3 Slotted-PMSM PM-only cogging torque (Arkkio) +2.183 Nm declared PM-cogging band 1e−6 … 10 Nm S5-W2 · pipeline_annular_torque/evidence_slotted_motor.md PASS
4 Slotted-PMSM PM-only cogging torque (Maxwell stress) +2.169 Nm; Arkkio/Maxwell agreement 99.373 % Arkkio vs Maxwell cross-check, declared tolerance 10 % S5-W2 · pipeline_annular_torque/evidence_slotted_motor.md PASS
5 Slotted-PMSM operating (on-load) torque (J = 2.5e6 A/m², phi = pi/2) — roadmap / v0.4-dev, NOT validated −11.41 Nm (Arkkio); −11.43 Nm (Maxwell); internal Arkkio-vs-Maxwell self-consistency 99.880 % — development sanity-check only, no cited external reference |T| ≥ 1e−3 Nm internal sanity band (not a validation tolerance) S5-W2 · pipeline_annular_torque/evidence_slotted_motor.md roadmap (not validated)
6 PM line-current amplitude vs Br/(μ0·Δθ·r) matched to 1.92e−16 (machine epsilon) analytical bound-current formula (Meeker FEMM 4.2 / Hanselman 4.6) S5-W3 · real_motor_geometry/evidence_material_adapter_v2.md PASS
7 PM-airgap ringing reduction (max element |B|) 24 T → 2.97 T (8.1× reduction); midairgap |B| 0.14 → 1.17 T (8.4×) realistic peak airgap acceptance band 0.4 - 1.5 T; artefact gate < 3 T S5-W3 · real_motor_geometry/evidence_material_adapter_v2.md PASS
8 Material library extension 10 new datasheet-cited grades (M270-35A, M330-50A, Hiperco50, SMC, N52, N42SH, SmCo 2:17, Y30, C11000, Al6061-T6) multi-grade-per-mesh test with 2 distinct iron μr values S5-W4 · real_motor_geometry/evidence_material_library_extended.md PASS
9 Regression-runner discovery + run 33 modules / 24 PASS / 9 PARTIAL / 0 FAIL; 246.87 s; exit 0 declared: 0 FAIL, suite-level PASS S5-W5 · v0_4_dev/scripts/run_v0_4_regression.py PASS
10 QA standalone audit (7-dim, ast-based) 4/7 audits PASS, 3 PARTIAL with 5 surfaced findings; 0 hard FAIL declared: 0 hard FAIL acceptable S5-W6 · v0_4_dev/scripts/v0_4_qa_audit.py PARTIAL (triage backlog)
11 Multigrade integration + cogging_v2 DC bias 18 % → 7.34 % (64× absolute reduction); distinct μr 7000 / 1000 declared: DC bias < 10 % S6-W2 · sprint summary v0_4_s6 PASS
12 OCC-free STL cross-section → polar mesh area error 2.03e−4; FEM residual 8.24e−14 declared area err < 1e−3; residual < 1e−10 S6-W1 · v0_4_dev/phase_u/ PASS
13 First real-CAD-proxy customer demo (deliverable check) — on-load torque values are roadmap / v0.4-dev, NOT validated signed report 7.5 KB; Biron,med 0.639 T; wall 0.142 s. On-load operating-torque figures from this dev demo are not a validated capability and are omitted here; the validated torque claim is 2-D no-load cogging only. demo deliverable: signed report ≥ 5 KB S6-W4 · v0_4_dev/real_cad_demo/demo_report.md (7.5 KB) PASS (deliverable only)
14 Full real-geometry pipeline (S7 promotion) — numerics check (residual, cogging period) cogging period 0.000 % error; FEM residual 4.7e−15. The on-load operating-torque output of this dev pipeline is roadmap / v0.4-dev, not validated, and is not claimed here. declared: residual < 1e−10; period < 0.5 % S7-W2 · v0_4_dev/real_cad_pipeline/evidence_full_pipeline.md PASS (numerics)
15 Customer demo notebook walkthrough (provenance + citation check) 13.5 KB, 9 sections, 7 citations. Any on-load operating-torque sweep shown in the dev notebook is roadmap / v0.4-dev, not a validated number, and is not claimed here. declared: full provenance + citations S7-W3 · v0_4_dev/customer_demo/PMSM_DEMO_WALKTHROUGH.md PASS (provenance)
16 Slotless PMSM Bg vs Hanselman analytical cufemlab 0.892 T vs Hanselman 0.975 T; 8.56 % rel diff analytical tolerance band 20 % S8-W1 · analytical benchmark suite (case 1) PASS
17 Helmholtz analytical case (S8 suite) error at machine epsilon analytical 1e−12 S8-W1 · analytical benchmark suite PASS
18 TEAM 30 schema + loader refuses skeleton; FILL guard; awaiting Davey 1992 paper acquisition declared: refuse measurement claim until real data loaded S8-W3 · v0_4_dev/team30_benchmark/ awaiting paper (B3)
19 CPU FEM scaling exponent (1k - 64k unknowns) complexity exponent 0.994 (near-linear for sparse direct) declared: exponent < 1.10 for sparse direct solver S9-W3 · v0_4_dev/gpu/SCALING_REPORT.md PASS
20 GPU FEM assembly + solve (cupy) NotYetImplementedError raised (cupy absent on dev host); no silent CPU fallback; CUDA event > 0 gate enforced in code declared: structural PASS, runtime honest NOT_IMPLEMENTED S9-W1 · v0_4_dev/a5_linear_fem/ PARTIAL (B1 dev host)
21 Steinmetz iron loss (M19 @ 50 Hz / 1.5 T) 21.4 kW/m³ (2.8 W/kg); Bα slope exact 1.780 industry datasheet range ≈ 2-3 W/kg S10-W1 · docs/module_reports/V10_STEINMETZ_LOSS.md PASS
22 Bertotti 3-term separation (50 Hz / 1.5 T) excess term < 0.2 % (ke = 0.05 for M19); fractions sum to 1.0 declared: fractions sum to 1 ± 1e−6; excess regime check S10-W2 · docs/module_reports/V10_BERTOTTI_LOSS.md PASS
23 Default PMSM total iron loss @ 50 Hz 10.38 W total (0.82 W/kg); per-region sum exact; f-doubling ratio 2.193 (hyst-dominated) industry small-PMSM range ≈ 5-25 W S10-W3 · docs/module_reports/V10_MOTOR_IRON_LOSS.md PASS
24 Rigid-rotor rotation primitive (S11) rotor area drift 1.90e−14; PM magnetisation rotation exact declared: area drift < 1e−10; PM rotation analytical S11-W1 · docs/module_reports/V11_ROTOR_ROTATION.md PASS
25 Continuous cogging sweep (rigid rotor) peak T = 2.466 Nm; degeneracy guard fires for ψ > 1 airgap angular cell (by design) small-ψ sweep valid; large-ψ deliberately refused S11-W2 · docs/module_reports/V11_CONTINUOUS_COGGING.md PARTIAL (small-ψ only)
26 True sliding-mesh (airgap re-triangulation) 3 approaches compared (mortar / retri / airgap_band); recommended retri for v0.5, mortar for v0.6+; cost estimates calibrated to S9 exponent 0.994 design document only S11-W3 · v0_4_dev/sliding_mesh/SLIDING_MESH_DESIGN.md deferred to v0.5+

3. Regression-runner status

Single command from repo root reproduces every v0.4 test (see v0_4_dev/scripts/run_v0_4_regression.py):

shell
cd "d:/Projects/Eba/Simulation Software"
python -X utf8 -m v0_4_dev.scripts.run_v0_4_regression
SprintModulesPASSPARTIALFAILWall (s)Exit
S5 baseline332490246.870
S639291000
S743321000

All sprint runs exit 0. PARTIAL counts are honest physics documentation (e.g. DC-bias staircase artefact, operating/cogging ratio for 4p/24-slot geometry — both surfaced, neither hidden).

4. Provenance hashes for headline results

SHA-256 hashes recorded inside result_*.json envelopes. Bit-identical re-runs reproduce the hash.

ResultSHA-256 (truncated)Sprint
Real-CAD-proxy demo (S6-W4) sha256:70f4be93ab22ee54c24f497feda58a402d920eb32830643b157cf96c282be38d S6
Slotted-motor PM-only (S5-W2, pm_only setup) sha256:2c9f216dd8ac74fb3caf3800c7ec6a5422e8a84eb0615f8005a5134b1f955071 S5
Regression-runner envelope deterministic per-run; see v0_4_dev/scripts/regression_report.json S5+
Nonlinear-sector pipeline deterministic; stages.*.provenance per stage S5-W1

5. What v0.4-dev does not claim

The authoritative product scope boundary is docs/limitations.html. None of the items below are claimed as PASS in any sprint closeout:

Every limitation in docs/limitations.html remains in force. For the canonical validated result, see /#validation.

6. Source files (read-only)