{
  "case": "contact_mechanics / Hertz sphere on flat plane (MFEM/Tribol native contact)",
  "material": {
    "E1_Pa": 210000000000.0,
    "nu1": 0.3,
    "E2_Pa": 210000000000.0,
    "nu2": 0.3,
    "E_eff_Pa": 115384615384.61537
  },
  "geometry": {
    "R_m": 0.02,
    "box_xy_m": 0.2,
    "box_z_m": 0.1
  },
  "method": "Displacement-controlled cap (removes the frictionless rigid-body null space); F_meas is the solver-reported contact force (Lagrange multiplier of the gap constraint, mapped to nodal force via J^T*l), not a preset target. PRIMARY: peak contact pressure p0_fem vs. Hertz p0(F_meas), converged via mesh refinement study (see convergence.json / plots/mesh_convergence.png). SECONDARY: force-weighted RMS contact radius vs. Hertz a(F_meas). Indentation depth is not used: the cap is 1.7R from the pole, so prescribed cap displacement includes bulk sphere compression, not just Hertzian approach (confirmed directly, not assumed -- see run_validation.py docstring).",
  "mesh_convergence_runs": [
    {
      "label": "REFINE_SIZE = a_hertz_design/3, REFINE_RADIUS = 2.5*a_hertz_design",
      "npz_path": "/home/ss/projects/torso/cae/data/fem/32df4585-88b6-438f-b095-9404a9b0123c.npz",
      "refine_size_m": 2.8874636844696774e-05,
      "F_meas_N": 9.757915653230153,
      "a_hertz_m": 0.00010825138727910933,
      "elements_across_a": 3.75,
      "p0_hertz_Pa": 397586385.7390462,
      "p0_fem_Pa": 437049462.3288669,
      "p0_error_pct": 9.925660939437215,
      "a_fem_rms_m": 8.494118e-05,
      "a_error_pct": 21.53,
      "elapsed_s": 2393.5
    },
    {
      "label": "REFINE_SIZE = a_hertz_design/4, REFINE_RADIUS = 3*a_hertz_design",
      "npz_path": "/home/ss/projects/torso/cae/data/fem/3738a552-5e76-4dd9-a86b-3ca706efcb03.npz",
      "refine_size_m": 2.165597763352258e-05,
      "F_meas_N": 8.310971,
      "a_hertz_m": 0.0001026121,
      "elements_across_a": 4.74,
      "p0_hertz_Pa": 376874200.0,
      "p0_fem_Pa": 392950900.0,
      "p0_error_pct": 4.27,
      "a_fem_rms_m": 9.062435e-05,
      "a_error_pct": 11.68,
      "elapsed_s": 1751.1
    }
  ],
  "finest_mesh_result": {
    "label": "REFINE_SIZE = a_hertz_design/4, REFINE_RADIUS = 3*a_hertz_design",
    "npz_path": "/home/ss/projects/torso/cae/data/fem/3738a552-5e76-4dd9-a86b-3ca706efcb03.npz",
    "refine_size_m": 2.165597763352258e-05,
    "F_meas_N": 8.310971,
    "a_hertz_m": 0.0001026121,
    "elements_across_a": 4.74,
    "p0_hertz_Pa": 376874200.0,
    "p0_fem_Pa": 392950900.0,
    "p0_error_pct": 4.27,
    "a_fem_rms_m": 9.062435e-05,
    "a_error_pct": 11.68,
    "elapsed_s": 1751.1
  },
  "convergence_evidence": "Two refinement levels (3.75 -> 4.74 elements across the Hertz contact radius a): p0 error 9.93% -> 4.27% (halved), a error 21.53% -> 11.68% (halved). Both metrics trend monotonically toward zero with refinement, consistent with a genuine convergence deficit at coarse resolution rather than a solver defect. A third, finer level was not run (compute cost -- each level here is ~30-40 min on 2 cores; a further doubling of resolution was found in this session to blow up node count non-linearly due to gmsh's size-transition zone, not run to avoid another multi-hour job) -- this is a two-level trend, not a fully asymptotic convergence study.",
  "primary_pass_5pct": true,
  "secondary_pass_15pct": true,
  "pass": true
}