Skip to content

0.2.6 G12 lot 1 — controlled scaling evidence

This lot measures the existing linear_static finite-element route. It does not modify solver code, formulations, solver policies, or defaults. The machine-readable contract and measurements are:

  • contract: qualification/0_2_6/g12_lot1_contract.json
  • evidence: qualification/0_2_6/g12_lot1_evidence.json
  • runner: scripts/benchmark_g12_lot1.py

The harness was corrected before this replay: nnz now means the final global stiffness CSR count, while reduced_stiffness_nnz remains separately reported after constraint elimination. The numerical result and checksums were unchanged.

Reproducibility envelope

The run used Python 3.13.1, NumPy 2.2.6, SciPy 1.15.2 and psutil 7.2.2 on Windows 10, with 12 logical CPUs and 102,963,109,888 bytes of RAM. The configured route was SciPy, CG, Jacobi preconditioning, rtol=1e-10, maxiter=10000, and assembly chunks of 256. Each row has one warm-up and three measured repetitions. The evidence records per-repetition assembly, linear-solve and total time, nnz, RSS/tracemalloc measurements, residual, solution norm and a SHA-256 displacement checksum.

The evidence also stores mean, median and population standard deviation for each timing and memory metric; the table below shows the mean for compactness.

Measured rows

Family topology target / actual DOF elements nnz mean assembly (s) mean solve (s) mean total (s) max residual
TET4 connected structured block 1000 / 1029 1296 30399 2.350 0.014 4.057 1.11e-11
TET4 connected structured block 2000 / 2187 3072 68133 7.883 0.023 11.963 8.70e-12
TET4 connected structured block 3000 / 3000 4374 95172 13.174 0.030 18.638 1.11e-11
HEX8 connected structured block 1000 / 1029 216 60422 4.281 0.009 4.685 9.11e-12
HEX8 connected structured block 2000 / 2187 512 139245 12.291 0.016 13.178 6.41e-12
HEX8 connected structured block 3000 / 3000 729 195245 20.447 0.022 21.718 9.68e-12
TET10 independent valid-element fanout 100 / 120 4 3020 0.060 0.0026 0.310 0
TET10 independent valid-element fanout 1000 / 1020 17 26760 1.769 0.0027 2.527 3.81e-17
TET10 independent valid-element fanout 2000 / 2010 34 52856 6.233 0.0029 7.580 4.89e-17
HEX20 independent valid-element fanout 100 / 120 2 7200 0.396 0.0026 1.001 0
HEX20 independent valid-element fanout 1000 / 1020 17 61198 4.060 0.0028 6.048 0
HEX20 independent valid-element fanout 2000 / 2040 34 122398 9.530 0.0029 13.584 2.69e-17

All 12 rows completed three measured repetitions. The displacement checksum was identical across repetitions for every row; all statuses were PASS, all metrics were finite, and the largest recorded relative residual was 1.1133502710150395e-11.

Derived observations

The ordinary least-squares slopes over the three measured points are recorded in the JSON evidence. Assembly/total slopes are approximately:

  • TET4: 1.614 / 1.415
  • HEX8: 1.455 / 1.429
  • TET10: 1.631 / 1.095
  • HEX20: 1.081 / 0.872

The measured high-order-to-low-order total-time ratios are also recorded in the JSON. TET10 and HEX20 use independent valid elements with local fanout, so those ratios are implementation/resource indicators and must not be read as geometry-equivalent mesh refinement or as a universal performance claim.

Resource boundary and interpretation

A preliminary Lot-1 probe at the next low-order target (about 10k DOF) exceeded the 180-second limit while the in-process RSS sampler and tracemalloc were active during timing. The observation is retained as resource_limit_observation with classification HARNESS_ERROR; it is not a solver resource boundary. The corrected Lot-2 harness disables intrusive memory instrumentation during timing and completed 10,125 actual DOF in 24.332 s. Lot-1 rows remain unchanged, and targets above the controlled Lot-2 range are not extrapolated. This is not an HPC qualification or a claim that 300k DOF is supported on this host.

No external correlation is included in lot 1. No functional solver code was changed.