Skip to content

Phase C (#90): FD-verify the generated consistent tangent end-to-end - #103

Merged
petlenz merged 1 commit into
mainfrom
phase-c-fd-verify-generated-tangent
Jul 17, 2026
Merged

Phase C (#90): FD-verify the generated consistent tangent end-to-end#103
petlenz merged 1 commit into
mainfrom
phase-c-fd-verify-generated-tangent

Conversation

@petlenz

@petlenz petlenz commented Jul 17, 2026

Copy link
Copy Markdown
Member

What

Ticks the "point numsim-materials' numerical_diff_checker at a codegen-generated material" box of the verification spine (#90). Independently verifies the strain-coupled consistent tangent shipped in #101.

The prior tangent e2e (ResidualReturnMapConsistentTangentHasCouplingTerm) pins specific rank-4 components against a hand-derived closed form. This adds a check that finite-differences the whole dσ/dε through the real property graph: the checker perturbs the strain, re-solves the Newton (reverting the z history so each sample restarts from the same z_old), and compares every component against the emitted dstress_dstrain. Because the coupling is captured by the re-solve rather than by construction, this is a genuinely independent check — it would catch any component the closed-form assertions didn't enumerate.

Verification

  • max_rel_error = 5.4e-11 across 8 loading steps (smooth response ⇒ tight central-difference agreement); gate at < 1e-6 (5 orders of margin, not flaky).
  • Sabotage-verified: dropping the coupling correction in the emitter makes the FD check fail at rel = 0.71, and the checker's worst-component diagnostics point exactly at the coupling entries (C(0,0,1,1): analytical 0 vs numerical c·ε₀₀). A verification test that can't fail is worthless; this one fails on the exact defect it exists to catch.

Notes

…via numsim-materials numerical_diff_checker
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant