{
  "version": "rotor-dynamics-v1.0",
  "generatedAt": "2026-10-23T05:21:19.374Z",
  "scope": "Equation verification for a synthetic linear isotropic rotor; not experimental validation.",
  "passed": 13,
  "checks": [
    {
      "name": "Zero residual unbalance remains at equilibrium",
      "status": "pass",
      "maximumDisplacementM": 9.570929658201324e-20
    },
    {
      "name": "Natural frequency and resonant amplitude match independent formulas",
      "status": "pass",
      "criticalRPM": 905.9258178807665,
      "amplitudeM": 0.0005,
      "phaseDeg": 90
    },
    {
      "name": "High-speed unbalance response tends to eccentricity",
      "status": "pass",
      "amplitudeOverEccentricity": 1.0000009200007693
    },
    {
      "name": "Constant-speed integration matches known synchronous trajectory",
      "status": "pass",
      "relativeMaximumTrajectoryError": 8.821810230602661e-8
    },
    {
      "name": "Variable-speed forcing includes centrifugal and tangential terms",
      "status": "pass",
      "relativeSecondDerivativeError": 2.0791797228852748e-8
    },
    {
      "name": "RK4 refinement across rapid low-damping resonance crossing",
      "status": "pass",
      "dtSeconds": 0.0001530612244897959,
      "relativePeakDifference": 2.7367051633602957e-7,
      "finalPositionErrorRatio": 17.002891075085575
    },
    {
      "name": "Lateral mechanical energy closes for selected sweep cases",
      "status": "pass",
      "cases": 5,
      "maximumRelativeEnergyResidual": 7.012864133508691e-8
    },
    {
      "name": "Critical-speed event actually crosses the natural frequency",
      "status": "pass",
      "crossingTimeSeconds": 4.017558091675227,
      "speedDifferenceRPM": 8.279857866000384e-8
    },
    {
      "name": "Slow and fast sweeps differ under the same final speed",
      "status": "pass",
      "fastPeakMicrometres": 734.9983928581056,
      "slowPeakMicrometres": 1224.1324748719994
    },
    {
      "name": "Correction scales linear response and preserves phase conventions",
      "status": "pass",
      "correctedPeakRatio": 0.10000000000000014
    },
    {
      "name": "Input validation rejects unsupported values",
      "status": "pass",
      "rejectedCases": 6
    },
    {
      "name": "Initial work and dissipation counters do not change energy closure",
      "status": "pass",
      "relativeEnergyResidual": 4.808656986184945e-9,
      "initialEnergyResidual": 0
    },
    {
      "name": "Peak includes the initial displacement and its actual spin speed",
      "status": "pass",
      "peakDisplacementM": 0.001,
      "peakTimeSeconds": 0,
      "peakSpeedRPM": 1800
    }
  ]
}
