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

instrument mechanism / verified-with-binding-errata

# Oblique Shock Calculator mechanism

The inspectable method record for Oblique Shock Calculator, kept separate from implementation and qualification.

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

## Model scope

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.

- 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.

## Units and conventions

- 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.

## Inspectable vector

One of 4 source-bound review vectors:

````
{
  "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."
}
````

## Failure boundary

**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.

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/oblique-shock-calculator/>)[03**Implementation**](<https://guthlabs.ai/docs/instruments/oblique-shock-calculator/implementation/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/oblique-shock-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`

- `BOUNDARY_HAZARD_CATALOG.json`
