DcrPMMHinge3d custom P-M-M column hinge — element-mechanics defense
DCR-original P-M-M column hinge (plugin) — element mechanics vs published FEMA-356/ASCE-41 backbone + Fritsch-Carlson PCHIP
Technical features tested
- DcrPMMHinge3d — DCR self-authored OpenSees plugin (no third-party example exists)
- Isolated single-hinge rig (same strategy as the plugin’s own regression gates)
- Uniaxial FEMA-356/ASCE-41 4-branch backbone — exact per-branch algebra
- Elastic unload/reload secant
- Biaxial Bresler-type capacity-envelope projection (DCR’s own §5.9 algorithm)
- N-dependent capacity via independently re-implemented Fritsch-Carlson PCHIP
Problem description
DcrPMMHinge3d is a zero-length, 6-DOF P-M-M column hinge that DCR authored and compiled as an OpenSees runtime plugin — there is no CSI/NAFEMS published example to compare against (unlike SP1), and the element has no bare-static-load-case production path either (it only appears inside the Pushover/THA RC-column FEMA lumped-hinge n-method assembly, which drags in a full structure and an arc-length driver — exactly the global-response complexity that made SP1 hard). SH1 instead isolates the ELEMENT ITSELF: two coincident nodes, one hinge, driven directly by DisplacementControl / prescribed-displacement ramps — the same isolation strategy the plugin author’s own regression gates use (gate_p1.tcl/gate_p2.tcl) — and compares it against closed-form expectations re-derived from scratch in this benchmark, never by reading the plugin’s C++ source. Honesty split (devplan §12.5/§12.11 precedent): quantities A/B/D verify the element against a published physical model — the standard FEMA-356/ASCE-41 four-branch generalized backbone (elastic→hardening→post-capping softening→residual) and the Fritsch & Carlson (1980) monotone-cubic interpolation algorithm — independently re-coded, not copied. Quantities C (biaxial Bresler projection) instead verify the implementation against DCR’s own §5.9 design specification (independent per-direction backbones + closed-form radial capacity projection) — the interaction surface FORM is a published power-law/Bresler-type envelope, but this specific combination algorithm has no external authority to validate against, since no other software runs this code.
Geometry, properties & loading
Rig / elastic terms
- Axial Kax
- 1×10⁷ N/mm
- Rotational k0 (Krz=Kry)
- 1×10¹⁰ N·mm/rad
- Topology
- 2 coincident nodes, 1 hinge
- Drive
- DisplacementControl / sp
Uniaxial backbone (A/B/C)
- Mzu = Myu
- 1×10⁸ N·mm
- thetaP
- 0.02 rad
- thetaPC
- 0.04 rad
- Rc / Rr
- 1.25 / 0.20
Biaxial & N-PCHIP (C/D)
- Bresler exponent α
- 1.5
- Biaxial κ ratios
- 1:1 and 3:1
- PCHIP table
- 4 N-levels, Mzu(N)
- Engine
- Tcl (OpenSees.exe, plugin)
Reference solution
- Uniaxial backbone, cap boundary (kappa=thetaP)
Rc*Mu= 1.25×10⁸ N·mm - Elastic unload from mid-hardening (theta1->theta2, Delta_theta=-0.005 rad)
k0*(theta2-thetaP_committed), thetaP_committed=theta1-M1/k0= 6.25×10⁷ N·mm - Biaxial Bresler projection, symmetric ratio (kappaZ=kappaY=0.010)
beta*Mhz, beta=min(1,1/Phi), Phi=(|Mhz/Ccapz|^a+|Mhy/Ccapy|^a)^(1/a)= 7.0871×10⁷ N·mm - N-dependent cap via PCHIP, N=-1.5e6 N (interior query, table N=[-2e6,-1e6,0,1e6])
Rc*pchip(Mzu_table, N)= 9.125×10⁷ N·mm
No third-party published example exists for this DCR-original element (unlike SP1/CSI 1-026) — devplan §12.11 honesty split: (a) the uniaxial FEMA-356/ASCE-41 4-branch backbone (elastic/hardening/post-capping softening/residual) and (b) the Fritsch & Carlson (1980, SIAM J. Numer. Anal. 17(2):238-246) monotone-cubic capacity interpolation are PUBLISHED external models — re-derived from scratch in benchmarks/nonlinear/SH1_pmmHingeBackbone.ts, never by reading DcrPMMHinge3d.cpp. (c) The biaxial Bresler-type capacity-envelope projection (independent per-direction backbones + closed-form radial scale-back beta=min(1,1/Phi)) is DCR's own §5.9 design choice — the interaction SURFACE FORM (normalized power-law) is standard/published, but this specific combination algorithm has no external authority to validate against; quantities C_* verify the implementation is self-consistent with DCR's own stated specification, not that the specification itself reproduces a third-party benchmark.
Results comparison
| Response quantity | Probe | STRIX | Reference | Δ | Verdict |
|---|---|---|---|---|---|
| Uniaxial backbone, mid-hardening (kappa=0.5*thetaP) (N·mm) | A1.Mz | 1.125×10⁸ | 1.125×10⁸ | 0.00% | PASS |
| Uniaxial backbone, cap boundary (kappa=thetaP) (N·mm) | A2.Mz | 1.25×10⁸ | 1.25×10⁸ | 0.00% | PASS |
| Uniaxial backbone, mid-softening (kappa=thetaP+0.5*thetaPC) (N·mm) | A3.Mz | 7.25×10⁷ | 7.25×10⁷ | 0.00% | PASS |
| Uniaxial backbone, residual plateau (kappa=thetaP+thetaPC+0.02) (N·mm) | A4.Mz | 2×10⁷ | 2×10⁷ | 0.00% | PASS |
| Elastic unload from mid-hardening (theta1->theta2, Delta_theta=-0.005 rad) (N·mm) | B_post.Mz | 6.25×10⁷ | 6.25×10⁷ | 0.00% | PASS |
| Biaxial Bresler projection, symmetric ratio (kappaZ=kappaY=0.010) (N·mm) | C_symmetric.Mz | 7.0871×10⁷ | 7.0871×10⁷ | 0.00% | PASS |
| Biaxial Bresler projection, symmetric ratio — My (N·mm) | C_symmetric.My | 7.0871×10⁷ | 7.0871×10⁷ | 0.00% | PASS |
| Biaxial Bresler projection, asymmetric ratio (kappaZ=0.015, kappaY=0.005) (N·mm) | C_asymmetric.Mz | 7.4808×10⁷ | 7.4808×10⁷ | 0.00% | PASS |
| Biaxial Bresler projection, asymmetric ratio — My (N·mm) | C_asymmetric.My | 6.6933×10⁷ | 6.6933×10⁷ | 0.00% | PASS |
| N-dependent cap via PCHIP, N=-1.5e6 N (interior query, table N=[-2e6,-1e6,0,1e6]) (N·mm) | D_Nneg.Mz | 9.125×10⁷ | 9.125×10⁷ | 0.00% | PASS |
| N-dependent cap via PCHIP, N=0.5e6 N (N·mm) | D_Npos.Mz | 1.3391×10⁸ | 1.3391×10⁸ | 0.00% | PASS |
Per-family worst diff (no mesh sweep — single synthetic hinge)
| Test family | worst |diff| (%) | Δ |
|---|---|---|
| A — uniaxial FEMA backbone (4 branches) | 0 | 0.00% |
| B — elastic unload/reload | 0 | 0.00% |
| C — biaxial Bresler projection (2 ratios) | 0 | 0.00% |
| D — N-dependent PCHIP capacity (2 queries) | 0 | 0.00% |
SH1 drives a single, non-refinable zero-length element (a bare hinge has no mesh to converge) — each row instead summarizes the worst deviation across that family’s checkpoints. A (uniaxial backbone) exercises all four branches in one continuous monotonic push; B checks the elastic unload secant from a plastic state; C checks the biaxial Bresler projection at two load ratios; D checks the N-dependent capacity at two interior PCHIP query points on a 4-level table (the plugin author’s own gate_p2.tcl explicitly flags PCHIP as untested in Tcl — its 2-level table degenerates PCHIP to linear interpolation; SH1’s 4-level table has genuine curvature at both queries). All four families land at machine precision (worst diff on the order of 1e-10%), because the closed form is not an approximation of the production algorithm here — on a piecewise-linear-in-kappa backbone the plastic-multiplier root is unique, so the independently re-derived algebra IS the same root the production cutting-plane Newton solve converges to.
Conclusion
DcrPMMHinge3d reproduces the published FEMA-356/ASCE-41 backbone (all four branches, plus elastic unload/reload) and an independently re-implemented Fritsch-Carlson PCHIP capacity interpolation to machine precision. The biaxial Bresler-type capacity projection (DCR’s own §5.9 algorithm) is verified self-consistent with its design specification at two load ratios — this defends the implementation against transcription/algorithm bugs, though (per the honesty split above) no external authority validates the projection scheme itself, since DcrPMMHinge3d has no counterpart in any other software. Excluded from this benchmark’s scope: the Haselton/FEMA regression pipeline that derives the -pmm table from a real RC section (TclBuilder.ts buildDcrPmmTable) — a separate "is the table right" question from "does the element correctly integrate a given table" (this benchmark’s question) — and the consistent tangent (already covered by the plugin’s own internal FD cross-check, gate_p4_fdtangent.tcl).
References & analysis files
- FEMA 356 / ASCE 41-13 — generalized force-deformation backbone for deformation-controlled actions (4-branch: elastic→hardening→post-capping softening→residual plateau).
- Fritsch, F.N. & Carlson, R.E. (1980) — Monotone Piecewise Cubic Interpolation, SIAM Journal on Numerical Analysis 17(2):238–246 (PCHIP tangent formula, independently re-implemented in sh1PchipTangents/sh1PchipEval).
- Bresler, B. (1960) — reciprocal-load biaxial bending interaction (normalized power-law interaction surface form; the specific decoupled-backbone + radial-projection combination algorithm is DCR’s own §5.9 design, not from Bresler).
- opensees_plugins/DcrPMMHinge3d/ — DcrPMMHinge3d.cpp (element under test), gate_p1.tcl/gate_p2.tcl (plugin author’s own regression gates, isolation-rig pattern reused here), dcr_pmm_plugin_element_devplan.md.
- Engine
- v1.0.6 (tcl)
- Run date
- 2026-07-11
- Record
- records/SH1.json
- Evidence archive
- verif-evidence-eng1.0.2-win-x64.zip · SH1/
- sha256
- (pending publish)