Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Shock Tube

ASecurity

Use when you must determine the four-region state of a shock-tube run from the driver-to-driven diaphragm pressure ratio and driver sound-speed ratio: recover the incident-shock Mach number by deterministic bisection of the implicit diaphragm-match equation, then the post-shock pressure, temperature and density ratios with the region-2 absolute state, the contact-surface velocity shared by shocked driven gas and expanded driver gas with the region-2 and region-3 flow Mach numbers, the driver ...

2 stars
0 votes
0 copies
0 views
Added 9/27/2026
ai-agentspython

Works with

claude code

Security Analysis

A100/100

Scanned 9/27/2026

Install to Claude Code

$npx -y skills add ashfordeOU/aero-agent-skills --skill shock-tube --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Shock Tube?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Shock Tube
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ashfordeou-shock-tube/badge)](https://www.skillsdirectory.com/skills/ashfordeou-shock-tube)

More formats (shields.io, HTML) on the badges page.

Download with Pro
Files
SKILL.md
---
name: shock-tube
description: "Use when you must determine the four-region state of a shock-tube run from the driver-to-driven diaphragm pressure ratio and driver sound-speed ratio: recover the incident-shock Mach number by deterministic bisection of the implicit diaphragm-match equation, then the post-shock pressure, temperature and density ratios with the region-2 absolute state, the contact-surface velocity shared by shocked driven gas and expanded driver gas with the region-2 and region-3 flow Mach numbers, the driver expansion wave ratios with the region-3 absolute state, and the fan head and tail wave speeds. Produces the incident-shock Mach number, the four-region state table and the contact checks that gate shock-tube facility design, driver-gas selection and gas-dynamics coursework. Trigger: shock tube, shock-tube run, diaphragm pressure ratio, contact surface, driver gas, driven gas, incident shock, driver sound-speed ratio, post-shock state, fan head wave, fan tail wave, four-region state table."
license: Apache-2.0
compliance: STANDARDS-REF
standards:
- id: naca-tr-824
  reference-only: true
gated: false
domain: aerodynamics
pack: high-speed
compatibility: agentskills.io SKILL.md; any SKILL.md host (Claude Code, Hermes, OpenClaw)
metadata:
  domain: aerodynamics
  subdomain: high-speed
  tags:
  - shock-tube
  - diaphragm-pressure-ratio
  - incident-shock-mach-number
  - contact-surface-velocity
  version: 0.1.0
  author: AeroSkills
---

# Shock-Tube Wave System (aerodynamics/high-speed/shock-tube)

Use when the task is the classical one-dimensional shock-tube problem:
a high-pressure driver gas (region 4) separated by a diaphragm from a
low-pressure driven gas (region 1), both initially at rest, with the
diaphragm burst releasing an incident shock into the driven gas, a
contact surface between the two gases, and a centered expansion wave
running back into the driver gas. This leaf recovers the incident-shock
Mach number from the diaphragm pressure state alone, then resolves the
four-region state. It pairs with normal-shock for the stationary-shock
ratio context at a given upstream Mach number and with prandtl-meyer
for the steady turning-fan context; the moving-shock, contact-surface
and unsteady-wave content here has no other home in the high-speed
pack. Pure stdlib, deterministic, offline.

## Domain quick reference

- Incident shock into gas at rest at shock Mach Ms: p2/p1 = 1 + 2
  gamma1 (Ms^2 - 1) / (gamma1 + 1), rho2/rho1 = (gamma1 + 1) Ms^2 /
  (2 + (gamma1 - 1) Ms^2), T2/T1 = (p2/p1) / (rho2/rho1); the shock
  speed is Ws = Ms a1 with a1 = sqrt(gamma1 R t1).
- Induced flow behind the shock (contact-surface velocity): u2 =
  2 a1 (Ms - 1/Ms) / (gamma1 + 1). The shock-frame downstream Mach
  number Mn2 = sqrt((1 + (gamma1 - 1) Ms^2 / 2) / (gamma1 Ms^2 -
  (gamma1 - 1) / 2)) stays below one; u2 = Ms a1 - Mn2 a2 links the
  frames.
- Unsteady centered expansion into the driver gas: p3/p4 = (1 -
  (gamma4 - 1) u3 / (2 a4)) ** (2 gamma4 / (gamma4 - 1)), T3/T4 =
  (1 - (gamma4 - 1) u3 / (2 a4))^2, rho3/rho4 = (p3/p4) / (T3/T4).
- Implicit shock-tube equation (the diaphragm match p2 = p3): the
  normal-shock ratio p2/p1 at Ms equals p4/p1 times the expansion
  ratio at the shared contact velocity, with u2/a4 = 2 (Ms - 1/Ms) /
  ((gamma1 + 1) a4/a1). The residual is strictly increasing in Ms, so
  the root is unique.
- Expansion bracket ceiling: the driver expansion stays physical only
  while (Ms - 1/Ms) < C = (gamma1 + 1) (a4/a1) / (gamma4 - 1), which
  caps Ms at Ms_lim = (C + sqrt(C^2 + 4)) / 2 (6.162277660 for
  air/air at a4/a1 = 1).
- Both fan boundaries are Mach waves: the head runs leftward at speed
  a4 into the quiescent driver gas and the tail runs at u3 - a3 in
  the lab frame, right-positive.
- Absolute driver state: same specific gas constant R for both gases
  (documented assumption), so T4 = t1 (a4/a1)^2 gamma1 / gamma4.
- Module constants: GAMMA_AIR = 1.4, R_AIR = 287.0 J/(kg K),
  BISECT_TOL = 1e-12, MAX_ITER = 200. Units are SI (Pa, K, kg/m3,
  m/s); ratios are unitless.
- NACA-TR-824 frames the compressible-flow relations; the equations
  above are standard engineering methodology, summary-only.

## Workflow

1. Fix the diaphragm state: driver-to-driven pressure ratio p4_p1,
   driver sound-speed ratio a4_a1, specific heat ratios gamma1 and
   gamma4, and the driven-gas absolute state p1, t1, r_gas;
   shock_tube_state validates every input and rejects non-physical
   values with ValueError.
2. Recover the incident-shock Mach number Ms with incident_shock_mach,
   the deterministic bisection of the shock_tube_residual
   diaphragm-match equation on the bracket below the ceiling Ms_lim.
3. Build the post-shock driven-gas state: normal_shock_ratios at Ms
   returns p2_p1, rho2_rho1, T2_T1, and multiplying by the region-1
   absolute state gives p2, T2, rho2, a2 and the shock speed Ws =
   Ms a1.
4. Compute the contact-surface velocity u2 = u3 with
   induced_velocity from Ms and a1, then the region-2 lab-frame flow
   Mach number M2_lab = u2 / a2 (just subsonic for a moderate run).
5. Expand the driver gas: expansion_pressure_ratio at u3 / a4 gives
   p3_p4, T3_T4 = bracket squared, rho3_rho4, and the region-3
   absolute state with a3 and M3_lab = u3 / a3 (supersonic in the lab
   frame for a moderate run).
6. Read the fan wave speeds from shock_tube_state: fan_head_speed = a4
   into the quiescent driver gas and fan_tail_speed = u3 - a3, and
   assemble the full four-region state table.
7. Close the contact: check the residual at Ms, p3 - p2 and u3 - u2,
   plus the closed-form identities (ideal gas p = rho R T, the
   shock-frame Mn2 recovery of u2, and p3_p4 times p4_p1 equals
   p2_p1).
8. Confirm determinism (bit-identical reruns) and ValueError rejection
   of every non-physical input: p4_p1 <= 1, a4_a1 <= 0, gamma <= 1,
   p1/t1/r_gas <= 0, and expansion velocities at or beyond the
   full-expansion limit.
9. Run the contract test offline: python3
   scripts/test_shock_tube.py.

## Worked example

Air driver and driven gas, gamma1 = gamma4 = 1.4, R = 287.0, a4/a1 = 1
(T4 = T1), p1 = 101325 Pa, T1 = 288.15 K, p4/p1 = 40:

- Ms = 2.057576505, shock speed Ws = Ms a1 = 700.1164 m/s; sound
  speeds a1 = a4 = 340.2626 m/s.
- Post-shock ratios: p2/p1 = 4.772557918, T2/T1 = 1.734842373,
  rho2/rho1 = 2.751003776. Region 2: p2 = 483579.43 Pa, T2 = 499.89
  K, rho2 = 3.370600480 kg/m3, a2 = 448.1716 m/s.
- Contact velocity: u2 = u3 = 445.6215 m/s, identical to the closed
  form 2 a1 (Ms - 1/Ms) / (gamma1 + 1); M2_lab = 0.994310161 with
  Mn2 = 0.567851523; M3_lab = 1.774406595 (shocked driven stream just
  subsonic, expanded driver stream supersonic, meeting at the contact
  surface).
- Driver expansion ratios: p3/p4 = 0.119313948, T3/T4 = 0.544750315,
  rho3/rho4 = 0.219025019. Region 3: p3 = 483579.43 Pa (p3 - p2 =
  -6.04e-8 Pa at the bisected root), T3 = 156.97 K, rho3 =
  10.734203118 kg/m3, a3 = 251.1383 m/s.
- Fan boundaries: head speed 340.2626 m/s leftward into the quiescent
  driver gas (a Mach wave, M_head = 1.0 relative to region 4); tail
  speed u3 - a3 = 194.4832 m/s rightward in the lab frame. Region 4:
  p4 = 4053000.00 Pa, T4 = 288.15 K, rho4 = 49.009027310 kg/m3.
- Four-region state table (p Pa, T K, rho kg/m3, u m/s): region 1:
  101325.00, 288.15, 1.225225683, u = 0; region 2: 483579.43, 499.89,
  3.370600480, u = 445.6215, M = 0.994310161; region 3: 483579.43,
  156.97, 10.734203118, u = 445.6215, M = 1.774406595; region 4:
  4053000.00, 288.15, 49.009027310, u = 0.
- Contact checks from the state dict: p3 - p2 = -6.041955e-08 Pa,
  u3 - u2 = 0.000000e+00 m/s, pressure-match residual at Ms =
  5.959677e-13.
- Driver-strength family (air/air, a4/a1 = 1): p4/p1 = 1.2 gives
  Ms = 1.039831292, u2 = 22.1559 m/s, T2 = 295.71 K; 2.0 gives
  1.159478862, 84.2214 m/s, 317.70 K; 5.0 gives 1.402408030,
  195.4664 m/s, 361.99 K; 10.0 gives 1.607525211, 279.4268 m/s,
  401.44 K; 100.0 gives 2.371054059, 552.7285 m/s, 580.01 K; 1000.0
  gives 3.150486214, 803.3246 m/s, 824.23 K. Ms and u2 grow
  monotonically with the driver overpressure, always below the
  air/air ceiling Ms_lim = 6.162277660.
- General-gamma case, helium driver (gamma4 = 5/3) at p4/p1 = 40,
  a4/a1 = 2.4 over air: Ms = 2.698174185, p2/p1 = 8.326834585, T2/T1
  = 2.340950220, u2 = 659.9828 m/s, p3/p4 = 0.208170865, T3 = 744.20
  K. The light fast driver nearly doubles the contact velocity of the
  air/air case at the same pressure ratio.

## Verification

- Confirm incident_shock_mach(40.0, 1.0) returns Ms 2.057576505 with
  the residual shock_tube_residual at that root below 1e-10, and that
  the driver-strength and helium-driver anchors above all reproduce
  within the tolerances listed in the contract test.
- Confirm the contact-surface match at the root: p3 - p2 below 1e-6
  Pa and u3 - u2 exactly 0.0 in the state dict, with p3_p4 * p4_p1
  equal to p2_p1 within 1e-9.
- Confirm the identities: p2 / (rho2 R T2) = 1.0 (ideal gas), u2
  recovered from 2 a1 (Ms - 1/Ms) / (gamma1 + 1) and from the
  shock-frame Ms a1 - Mn2 a2, and p2_p1 from the closed form.
- Confirm ValueError rejection of non-physical inputs: p4_p1 <= 1, a4
  /a1 <= 0, gamma <= 1, p1/t1/r_gas <= 0, shock_mach <= 1, and
  expansion velocities at or beyond 2 / (gamma4 - 1).
- Confirm determinism: rerunning incident_shock_mach on the same input
  returns identical bits; no RNG, pure stdlib math only.
- Run the contract test offline: python3
  scripts/test_shock_tube.py (31 tests, deterministic).

## Related leaves

- aerodynamics/high-speed/normal-shock: stationary-shock ratios given
  the upstream Mach number only; it never determines the shock Mach
  number from a diaphragm pressure state and has no driver gas or
  moving-shock content.
- aerodynamics/high-speed/oblique-shock: steady single-turn waves with
  the theta-beta-M solve; its implicit-solve precedent is the pattern
  this leaf follows for the diaphragm-match bisection.
- aerodynamics/high-speed/prandtl-meyer: steady turning fans; the
  unsteady driver expansion wave here is the moving counterpart.
- aerodynamics/high-speed/isentropic-flow-relations: steady area-Mach
  and choked-flow inversions, no unsteady diaphragm wave motion.
- aerodynamics/high-speed/regular-shock-reflection: wall interactions
  after the incident shock reflects, beyond this leaf's single-transit
  scope.

## Pitfalls

- Solving the stationary-shock problem instead of the shock-tube
  problem: this leaf's post-shock ratios are evaluated at the
  incident-shock Mach number recovered from the diaphragm pressure
  state, not at a Mach number you supply; feed a given upstream Mach
  number to normal-shock instead.
- Forgetting the driver gas: the expansion side depends on gamma4 and
  a4/a1, so an air/air answer is wrong for a helium driver at the
  same p4/p1; the worked example shows u2 rising from 445.62 to
  659.98 m/s when the light fast driver replaces air.
- Treating region-2 flow as always subsonic in the lab frame: M2_lab
  = u2/a2 approaches one at p4/p1 = 40 and exceeds it for stronger
  runs; the invariant is the shock-frame Mn2 below one, checked via
  u2 = Ms a1 - Mn2 a2.
- Reading the fan head as the fastest wave in the lab frame: the head
  (speed a4 leftward) and tail (u3 - a3 rightward) are both Mach
  waves relative to the gas they move through; a strong driver sweeps
  the tail downstream, so the two boundaries travel in opposite
  directions in the lab frame.
- Extrapolating past the full-expansion limit: (Ms - 1/Ms) must stay
  below C = (gamma1 + 1) (a4/a1) / (gamma4 - 1); beyond it the
  driver expansion is unphysical and the solver raises ValueError.
- Modeling wall reflections: the classical single-transit solution
  stops at the first arrival of the incident shock and expansion wave
  at the end walls; regular-shock-reflection covers the interactions
  that follow.

## Behavior contract (gate 3)

Run the deterministic contract test (stdlib unittest, offline):

    python3 scripts/test_shock_tube.py

The 31 tests cover the air/air worked example at p4/p1 = 40 (Ms,
post-shock ratios and region-2 absolute state, contact-surface
velocity, driver expansion ratios and region-3 absolute state, fan
head and tail speeds, four-region state table keys), the contact
close-out identities (residual below 1e-10, p3 - p2 below 1e-6 Pa,
u3 - u2 exactly 0, p3_p4 * p4_p1 equal to p2_p1, ideal gas, shock-
frame Mn2 recovery), the driver-strength family anchors from p4/p1 =
1.2 to 1000 with monotonic Ms and u2 below the Ms_lim ceiling, the
helium-driver general-gamma case, ValueError rejection of every
non-physical input, and bit-identical determinism reruns. All numeric
asserts are order-safe (assertAlmostEqual with delta or math.isclose).

## Compliance

- Standards referenced, not reproduced: NACA-TR-824 frames the
  normal-shock and compressible-flow relations; only names and summary
  equations appear above, per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.

Attribution

ashfordeOUashfordeOU
View sourceMore from ashfordeOU →
SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

Related Skills

Caveman

Ultra-compressed communication mode that cuts output tokens while keeping technical accuracy. Levels: lite, full, ultra and the wenyan variants. Use for /caveman, "caveman mode", "talk like caveman", "be brief" or "less tokens".

1074701 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

694821 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3351 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

691 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →