Source: https://guthlabs.ai/docs/instruments/driven-oscillator-resonance-curve-calculator/implementation/

instrument implementation / implementation-contract

# Driven Oscillator / Resonance Curve Calculator implementation

A source-bound implementation contract for Driven Oscillator / Resonance Curve Calculator; deployment and executable qualification remain separate.

Status: **VERIFIED_WITH_ERRATA**Lifecycle: **implementation-contract**

## Binding contract

This record describes what an executable surface must bind and validate. It does not claim that a public calculator, package, or production route is deployed.

**Record owner**: Guth Instruments

**Lifecycle**: verified-with-binding-errata

**Evidence ID**: t6-077

**Effect**: Computation or source lookup only

## Input and validation requirements

The instrument specification permits m=0 as an input unless validation prevents it, but m=0 makes both F0/m and omega0=sqrt(k/m) undefined. The resonance branch also requires explicit handling at zeta=1/sqrt(2) and above, where the nonzero resonance-frequency formula otherwise produces an imaginary result.

## Required corrections

````
[
  {
    "vector": 4,
    "field": "peak_amplitude_m",
    "wrong": 0.126651479552922,
    "correct": 0.12728952630922,
    "cause": "amplitude evaluated at omega0 instead of at her own reported resonance frequency wr=w0*sqrt(1-2*zeta^2); dropped the sqrt(1-zeta^2) factor"
  }
]
````

## Inspectable interface fixture

The sample below is evidence for interface and validation tests, not a production implementation.

````
{
  "inputs": {
    "k_N_per_m": 100,
    "m_kg": 1,
    "c_Ns_per_m": 2,
    "F0_N": 1,
    "sampled_frequency": {
      "omega_rad_per_s": 0
    },
    "sweep": {
      "omega_min_rad_per_s": 0,
      "omega_max_rad_per_s": 20
    }
  },
  "expected_outputs": {
    "sampled_points": [
      {
        "omega_rad_per_s": 0,
        "amplitude_m": 0.01,
        "phase_rad": 0
      }
    ],
    "resonance_frequency_rad_per_s": 9.89949493661,
    "resonance_frequency_hz": 1.5755535327,
    "peak_amplitude_m": 0.05025189076296,
    "Q": 5
  },
  "working": "ω0=√(k/m)=√(100/1)=10 rad/s. ζ=c/(2√(km))=2/(2√(100·1))=2/20=0.1. At ω=0: denominator=√((10²−0²)²+(2·0.1·10·0)²)=√(10000)=100. A=(F0/m)/denominator=(1/1)/100=0.01 m. φ=atan2(0,100)=0 rad. ωres=10√(1−2·0.1²)=10√(0.98)=9.89949493661 rad/s. At the peak, denominator=2ζω0²√(1−ζ²)=2·0.1·10²·√(0.99)=19.8997487421, so Apeak=1/19.8997487421=0.050251890763 m. Q=1/(2ζ)=1/0.2=5."
}
````

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/driven-oscillator-resonance-curve-calculator/>)[02**Mechanism**](<https://guthlabs.ai/docs/instruments/driven-oscillator-resonance-curve-calculator/mechanism/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/driven-oscillator-resonance-curve-calculator/qualification/>)

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json`

- `evidence-tranche6/tranche6-results.json`

- `tranche errata record`
