Source: https://guthlabs.ai/docs/instruments/oblique-shock-calculator/

instrument / verified-with-binding-errata

# Oblique Shock Calculator

The current ledger marks this instrument verified with errata that must be applied at binding time.

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

## Inspectable records

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

## Ledger state

The current ledger marks this instrument verified with errata that must be applied at binding time.

**Area**: Thermodynamics, Fluids & Aero

**Tranche**: tranche-6

**Evidence ID**: t6-075

**Ledger rows**: 1

No ledger note is attached.

## Review findings

Verdict is NEEDS_REVIEW because the core theta-beta-M relation is standard, but angle units and Newton convergence settings are unspecified, and the downstream-Mach reconstruction and physical-domain checks are not fully stated. The four vectors use direct beta input, so Newton iterations are intentionally not invoked; theta-mode tests must document the exact Newton method, initial guesses, tolerance, and maximum iterations before release.

### Formula and scope findings

- The stated θ-β-M relation is standard and correct, provided all angles use one explicitly declared unit.

- Applying normal-shock relations to Mn1=M1 sin(beta) is correct, but the downstream Mach number must additionally be reconstructed as M2=Mn2/sin(beta-theta); this required step is not explicit in the formula description.

- The specification does not state the admissible attached-shock constraints: M1>1, gamma>1, beta in the interval from asin(1/M1) through 90 degrees, and M1^2 sin^2(beta)>1 for a finite shock.

- For theta input, the solver must identify both weak and strong roots and reject theta values above the maximum attached-shock deflection; this is not specified algorithmically.

### Unit assumptions

- M1 is dimensionless.

- gamma is dimensionless and normally greater than 1.

- All trigonometric functions use either radians or degrees consistently; the specification does not declare which. The vectors explicitly declare their angle units.

- Pressure and temperature ratios are dimensionless.

- The supplied beta-mode vectors bypass Newton iteration. For theta-mode operation, a convergence tolerance and maximum iteration count are still required.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

The formula produces an undefined result when its denominator is forced to zero, and the specification does not state how negative deflection angles should be interpreted. The calculator should reject nonphysical gamma=0 and signed expansion inputs rather than silently returning shock results.

## Errata and corrections

### Tranche errata

**M2** · vector 1

sqrt(3)=1.732

2

own working concludes M2=Mn2/sin(beta-theta)=1/sin30=2 (degenerate Mach wave, M unchanged) then field ships sqrt(3)

**M2** · vector 2

1.45605

1.456324

micro 5th-digit slip

**theta / M2** · vector 3

atan(75/382)=11.09 deg / 382.0

atan(25*sqrt(3)/191)=12.77 deg / 2.3673

working equates 25*sqrt(3)/191 with 75/382, i.e. sqrt(3)=1.5; M2 field ships the denominator 382 — nonsense value

**M2** · vector 4

4.14728827

1.036822

M2 through a beta=60deg shock at M1=2 cannot exceed M1

## Inspectable example

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

````
{
  "inputs": {
    "mode": "beta",
    "M1": 2,
    "beta": 30,
    "gamma": 1.4,
    "angle_unit": "degrees",
    "branch": "weak"
  },
  "expected_outputs": {
    "theta": 0,
    "beta": 30,
    "M2": "sqrt(3) = 1.73205080757",
    "P2_over_P1": 1,
    "T2_over_T1": 1
  },
  "working": "Mn1=M1 sin(beta)=2 sin(30°)=2(1/2)=1. Mn1^2=1. tan(theta)=2 cot(30°)(1-1)/[4(1.4+cos(60°))+2]=0, so theta=0°. Normal-shock pressure ratio=1+[2 gamma/(gamma+1)](Mn1^2-1)=1+[2(1.4)/2.4](0)=1. Density ratio=[(gamma+1)Mn1^2]/[(gamma-1)Mn1^2+2]=2.4/(0.4+2)=1. Temperature ratio=(P2/P1)/(rho2/rho1)=1/1=1. Mn2^2=[1+0.2(1)]/[1.4(1)-0.2]=1.2/1.2=1, so Mn2=1. M2=Mn2/sin(beta-theta)=1/sin(30°)=2. This is the Mach-wave boundary, not a finite-strength shock; equivalently the weak oblique-shock limit gives M2=M1=2. For the same theta=0°, the strong branch is beta=90° with M2=sqrt(1/3)=0.57735026919."
}
````

## 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_WITH_ERRATA`

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

- `BOUNDARY_HAZARD_CATALOG.json`
