{
  "case": "geometric_nonlinear_dynamics / swinging plate pendulum vs. independent rigid compound-pendulum ODE (SUBSTITUTE for Simo & Vu-Quoc 1986 whipping cantilever -- see module docstring for why)",
  "substitution_reason": "Simo & Vu-Quoc (1986) 'flexible whipping cantilever' reference data exists only in the paper's figures (a different, unrelated SVQ benchmark -- the 45-degree bent cantilever STATIC case -- is the one with tabulated numbers commonly cited online); digitizing figure curves for a geometrically-exact beam-element result and mapping onto TorsoCAE's 3D solid discretization would not give a trustworthy comparison. Substituted with a swinging plate pendulum (same geometry/RBE2 setup as the team's own known-good reference journal, journals/plate_pendulum_rbe2_geomnl_dyn1.py), validated via trajectory comparison against an independent rigid-body ODE -- same substitution pattern already used and accepted for flexible_multibody_dynamics/case_02.",
  "geometry": {
    "plate_m": [
      1.0,
      0.2,
      0.02
    ],
    "hole_r_m": 0.04,
    "hole_center_xy": [
      0.08,
      0.0
    ]
  },
  "material": {
    "E_Pa": 210000000000.0,
    "nu": 0.3,
    "rho_kg_m3": 7800.0
  },
  "mass_properties": {
    "mass_kg": 30.41585847366399,
    "I_pivot_kg_m2": 8.217974791583915,
    "d_pivot_com_m": 0.43082788576710035,
    "x_cm": 0.5108278857671004,
    "y_cm": 0.0
  },
  "solver": {
    "time_scheme": "newmark",
    "dt_s": 0.005,
    "num_steps": 300,
    "backend": "dolfinx"
  },
  "method": "Root/tip markers (x=0 and x=1 face centroids) tracked over time from the SCVZ result-frame history; rotation angle recovered via atan2 of their relative vector (any two rigid-body material points suffice -- the pivot itself, tag 7, need not be one of the markers). Compared against an independent nonlinear rigid compound-pendulum ODE (scipy solve_ivp DOP853, rtol=1e-12) using the plate's own mass/I_pivot/pivot-to-COM distance, computed directly from its geometry (not fit), released from the same rest-horizontal initial condition.",
  "rms_angle_error_by_window": [
    {
      "window_s": 0.5,
      "rms_angle_deg": 0.5144203763750212
    },
    {
      "window_s": 1.0,
      "rms_angle_deg": 0.47011308611580505
    },
    {
      "window_s": 1.5,
      "rms_angle_deg": 0.4585035161270779
    }
  ],
  "primary_window_s": 1.0,
  "rms_angle_error_deg": 0.47011308611580505,
  "final_error_pct": 0.47011308611580505,
  "pass": true,
  "elapsed_s": 70.67221236228943
}