Source: https://guthlabs.ai/docs/instruments/projectile-with-air-drag-numeric/

instrument / verified-clean

# Projectile with Air Drag (numeric)

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/projectile-with-air-drag-numeric/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/projectile-with-air-drag-numeric/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/projectile-with-air-drag-numeric/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/projectile-with-air-drag-numeric/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Physics — Kinematics/Projectiles/Orbits, Forces/Energy/Momentum, Rotational Dynamics, Gravitation, Oscillations/Waves, Optics, E&M Fields, Relativity, Quantum, Statistical Thermo

**Tranche**: tranche-6

**Evidence ID**: t6-017

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The force law is standard for a simplified constant-density quadratic-drag model, but the specification is not fully deterministic or complete enough for an unconditional PASS. Add g, initial height, coordinate convention, angle units, fixed/adaptive timestep policy, RK4 state-update details, convergence/error tolerance, ground-event handling, and the exact vacuum baseline. The four vectors deliberately include zero-drag, vertical-boundary, and exact-terminal-speed cases; the terminal-speed vectors also provide closed-form checks because every RK4 stage has zero acceleration.

### Formula and scope findings

- The quadratic-drag equation is standard only when v is velocity relative to still air; with wind, it must use v_relative = v - v_wind.

- The specification does not define gravitational acceleration g as an input or fixed constant. The test vectors assume g = 9.80665 m/s² unless explicitly stated otherwise; using g = 10 m/s² changes every result.

- Terminal descent speed is only sqrt(2mg/(rho Cd A)) for steady vertical descent with constant density and constant Cd; this condition should be stated.

- Range reduction versus vacuum is undefined unless the vacuum comparison uses the same g, initial height, launch state, and ground-intersection convention.

- A trajectory integrator needs an initial height and a stopping/event rule, such as the first downward crossing of y = 0. Neither is specified.

- The phrase 'throttle timestep on-device' conflicts with deterministic RK4 verification unless the actual timestep and any adaptive-step policy are exposed.

### Unit assumptions

- SI units: v0 in m/s, angle in degrees, mass in kg, area in m², air density in kg/m³, dt in s, position in m, acceleration in m/s².

- The vector equation uses upward-positive coordinates, so gravity is (0,-g).

- Cd is dimensionless and constant; rho_air is constant during each simulation.

- Unless a vector states otherwise, g = 9.80665 m/s². Vectors explicitly using g = 10 m/s² are deliberate deterministic checks.

- Angles are assumed to be degrees; this must be made explicit in the implementation.

- RK4 means classical explicit fourth-order Runge-Kutta applied simultaneously to x' = vx, y' = vy, vx' = -(rho Cd A/(2m))|v|vx, and vy' = -g -(rho Cd A/(2m))|v|vy, with fixed dt.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

The zero-mass input makes the acceleration coefficient divide by zero and must be rejected. The zero-timestep boundary also exposes a possible validation issue, while the zero-speed range-reduction ratio is undefined as 0/0.

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "inputs": {
    "v0": 20,
    "angle_deg": 30,
    "mass_kg": 1,
    "Cd": 0,
    "area_m2": 1,
    "rho_air_kg_m3": 1.225,
    "g_m_s2": 9.81,
    "initial_height_m": 0,
    "dt_s": 0.1,
    "sample_times_s": [
      0,
      1,
      2
    ],
    "ground_rule": "first downward y=0 crossing"
  },
  "expected_outputs": {
    "trajectory_samples": [
      {
        "t_s": 0,
        "x_m": 0,
        "y_m": 0,
        "vx_m_s": 17.3205081,
        "vy_m_s": 10
      },
      {
        "t_s": 1,
        "x_m": 17.3205081,
        "y_m": 5.095,
        "vx_m_s": 17.3205081,
        "vy_m_s": 0.19
      },
      {
        "t_s": 2,
        "x_m": 34.6410162,
        "y_m": 0.38,
        "vx_m_s": 17.3205081,
        "vy_m_s": -9.62
      }
    ],
    "vacuum_flight_time_s": 2.03873598,
    "vacuum_range_m": 35.3119431,
    "range_reduction_m": 0,
    "range_reduction_fraction": 0,
    "terminal_descent_speed_m_s": null
  },
  "working": "Cd=0 gives k=rho*Cd*A/(2m)=0, so ax=0 and ay=-9.81. Initial components: vx=20 cos(30°)=17.3205081; vy=20 sin(30°)=10. Exact constant-acceleration solution, also reproduced exactly by RK4. First RK4 step, h=0.1: vx remains 17.3205081; vy changes from 10 to 10-9.81(0.1)=9.019; x changes by 17.3205081(0.1)=1.73205081; y changes by 10(0.1)-0.5(9.81)(0.1²)=0.95095. Second step: vy=9.019-0.981=8.038; x=3.46410162; y=0.95095+[9.019(0.1)-4.905(0.1²)]=1.85295. At t=1: x=17.3205081; y=10(1)-4.905(1²)=5.095; vy=10-9.81=0.19. At t=2: x=17.3205081(2)=34.6410162; y=20-4.905(4)=0.38; vy=10-19.62=-9.62. Vacuum ground time solves 0=10t-4.905t², so t=20/9.81=2.03873598. Range=17.3205081*2.03873598=35.3119431. Since drag is zero, reduction=35.3119431-35.3119431=0."
}
````

## Related workflows

No source-defined multi-instrument workflow membership is recorded.

## Sources and evidence

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

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

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

- `BOUNDARY_HAZARD_CATALOG.json`
