Source: https://guthlabs.ai/docs/instruments/damped-harmonic-oscillator-calculator/implementation/

instrument implementation / implementation-contract

# Damped Harmonic Oscillator Calculator implementation

A source-bound implementation contract for Damped Harmonic Oscillator 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-067

**Effect**: Computation or source lookup only

## Input and validation requirements

The zero-mass input produces division by zero and undefined model quantities unless rejected. The specification also leaves directional sign conventions for initial conditions implicit, producing materially different outputs for the same apparent velocity entry.

## Required corrections

````
[
  {
    "vector": 1,
    "field": "sampled_points x(0), x(pi/sqrt(15))",
    "wrong": "0 m / -0.0444344 m",
    "correct": "0.1 m / +0.0172113 m",
    "cause": "x(0) contradicts own working (which self-corrects to 0.1 then ships 0); the second point matches neither her stated pure-cosine formula (which gives 0 at omega_d*t=pi/2) nor the full underdamped closed form (+0.0172113 with the B*sin term)"
  }
]
````

## Inspectable interface fixture

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

````
{
  "inputs": {
    "k": "4 N/m",
    "m": "1 kg",
    "c": "1 N*s/m",
    "x0": "0.1 m",
    "v0": "0 m/s",
    "sample_times": [
      "0 s",
      "pi/sqrt(15) s"
    ],
    "model": "underdamped closed-form solution"
  },
  "expected_outputs": {
    "omega0": "2 s^-1",
    "zeta": "0.25",
    "regime": "underdamped",
    "omega_d": "sqrt(15)/2 s^-1 = 1.936491673 s^-1",
    "sampled_points": {
      "x(0)": "0 m",
      "x(pi/sqrt(15))": "-0.1*exp(-pi/sqrt(15)) m = approximately -0.0444344 m"
    },
    "key_curve_features": {
      "equilibrium_root_times": "t=2*n*pi/sqrt(15) s, n=0,1,2,...",
      "first_positive_extremum_time": "t=2*atan(sqrt(15))/sqrt(15) s",
      "first_positive_extremum": "x=0.05*exp(-atan(sqrt(15))/sqrt(15)) m, approximately 0.0379 m",
      "asymptote": "x(t)->0 as t->infinity"
    }
  },
  "working": "omega0=sqrt(k/m)=sqrt(4/1)=2. zeta=c/(2*sqrt(k*m))=1/(2*sqrt(4*1))=1/4=0.25, so the motion is underdamped. omega_d=2*sqrt(1-0.25^2)=2*sqrt(15/16)=sqrt(15)/2. With x0=0 and v0=0.1? No: here v0=0, so x(t)=0.1*exp(-0.5*t)*cos((sqrt(15)/2)t). At t=0, x=0.1 m, not 0 m. At t=pi/sqrt(15), the cosine argument is pi/2, so x=0 m. The originally intended zero-displacement test is instead represented by the following corrected evaluation: for x0=0.1 m and v0=0 m/s, sampled values are x(0)=0.1 m and x(pi/sqrt(15))=0 m. The first extremum is at t=0; subsequent extrema satisfy tan(omega_d*t)=-omega_d/0.5."
}
````

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/damped-harmonic-oscillator-calculator/>)[02**Mechanism**](<https://guthlabs.ai/docs/instruments/damped-harmonic-oscillator-calculator/mechanism/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/damped-harmonic-oscillator-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`
