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

Boundary Layer Separation

ASecurity

Use when you must predict boundary layer separation: grow the laminar layer with the Thwaites integral along the edge-velocity distribution of a two-dimensional body, flag the first station where the thwaites lambda parameter crosses minus 0.09 to give the laminar separation point, and apply the Stratford pressure-recovery criterion to the pressure-coefficient distribution to estimate the turbulent separation station and the separation margin below the 0.35 threshold. Produces the laminar sep...

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

Works with

claude codecli

Security Analysis

A100/100

Scanned 9/27/2026

Install to Claude Code

$npx -y skills add ashfordeOU/aero-agent-skills --skill boundary-layer-separation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Boundary Layer Separation?

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

Security grade badge for Boundary Layer Separation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ashfordeou-boundary-layer-separation/badge)](https://www.skillsdirectory.com/skills/ashfordeou-boundary-layer-separation)

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

Download with Pro
Files
SKILL.md
---
name: boundary-layer-separation
description: "Use when you must predict boundary layer separation: grow the laminar layer with the Thwaites integral along the edge-velocity distribution of a two-dimensional body, flag the first station where the thwaites lambda parameter crosses minus 0.09 to give the laminar separation point, and apply the Stratford pressure-recovery criterion to the pressure-coefficient distribution to estimate the turbulent separation station and the separation margin below the 0.35 threshold. Produces the laminar separation station or none, the turbulent separation station or none, and the margin that gates airfoil and inlet-duct design checks. Trigger: boundary-layer-separation, thwaites-lambda-criterion, stratford-separation-criterion, laminar separation point, turbulent separation station, separation margin, adverse pressure gradient, pressure recovery, edge-velocity distribution."
license: Apache-2.0
compliance: STANDARDS-REF
standards:
  - id: naca-tr-824
    reference-only: true
gated: false
domain: aerodynamics
pack: boundary-layer
compatibility: "agentskills.io SKILL.md; any SKILL.md host (Claude Code, Hermes, OpenClaw)"
metadata:
  domain: aerodynamics
  subdomain: boundary-layer
  tags: [boundary-layer-separation, thwaites-lambda-criterion, stratford-separation-criterion, laminar-separation-point, turbulent-separation-station, separation-margin, adverse-pressure-gradient]
  version: 0.1.0
  author: Aero Agent Skills
---

# Boundary Layer Separation (aerodynamics/boundary-layer/boundary-layer-separation)

Use when you must predict the boundary layer separation location on a
two-dimensional body from its edge-velocity or pressure distribution.
This leaf grows the laminar layer with the Thwaites integral relation
along the edge-velocity traverse and flags the first station where the
Thwaites lambda parameter crosses -0.09, the classical laminar
separation criterion, and evaluates the Stratford-style pressure
recovery criterion to estimate the turbulent separation station and the
margin below the 0.35 threshold. Pure Python, stdlib only. It pairs
with boundary-layer/boundary-layer-transition, whose Thwaites traverse
ends at the natural-transition onset estimated by the Michel rule
rather than running to separation, and with
boundary-layer/boundary-layer-theory for flat-plate thickness
and skin-friction context on the attached side of the flow.

## Domain quick reference

- Thwaites integral for the momentum thickness on the laminar side:
  theta^2 = 0.45 * nu / U^6 * integral_0^x U^5 dx, integrated by the
  trapezoid rule over the edge-velocity stations (THWAITES_C = 0.45).
  The traverse starts with theta = 0 at the first station with U > 0;
  a stagnation head with U = 0 is skipped, which removes the U^6
  singularity at the stagnation point.
- Thwaites pressure-gradient parameter: lambda = theta^2 / nu * dU/dx,
  with dU/dx by central differences (forward at the first station,
  backward at the last). Accelerating flow keeps lambda positive;
  a decelerating edge flow drives lambda negative.
- Laminar separation criterion: the first station with
  lambda <= THWAITES_LAMBDA_SEP = -0.09 is the laminar separation
  point. None if lambda stays above the criterion for the whole run.
- Stratford-style separation parameter on the pressure recovery:
  S = C_p * sqrt((x / C_p) * dC_p/dx), evaluated only where C_p > 0
  and dC_p/dx > 0 (the recovery side), with the pressure slope taken
  over the station interval ending at each station (one-sided
  difference, right-end attribution; this reproduces the verified
  worked-example anchor S = 0.3505 at station 8).
- Turbulent separation criterion: the first recovery station with
  S >= STRATFORD_SEP = 0.35 is the turbulent separation station.
  None if the recovery never reaches the threshold.
- Separation margin: 0.35 - max S on the recovery side before the
  crossing (headroom up to the separation point, positive while the
  flow keeps headroom). With no crossing the max is taken over the
  whole recovery; with no recovery stations at all the margin is the
  full 0.35.
- Units are SI throughout: x in m, U in m/s, nu in m2/s, C_p
  dimensionless, theta in m.
- NACA TR-824 frames the laminar boundary-layer correlation context;
  the relations above are standard engineering methodology,
  summary-only.

## Workflow

1. Build the edge-velocity traverse xs, us (m, m/s) along the body and
   fix the kinematic viscosity nu. A linearly decelerated run or a
   digitized airfoil velocity distribution both work as plain station
   lists.
2. Grow the laminar layer with thwaites_lambda(xs, us, nu) to get the
   lambda history, one value per station.
3. Locate the laminar separation point with
   laminar_separation_station(xs, us, nu), which returns (index, x) of
   the first station with lambda <= -0.09, or None for a fully attached
   laminar run. Read us at that index for the separation edge velocity.
4. On the pressure side, build the pressure-coefficient recovery
   traverse xs, cps and evaluate the recovery with
   stratford_parameter(xs, cps), which returns the S history with None
   off the recovery.
5. Locate the turbulent separation station with
   stratford_separation_station(xs, cps), which returns (index, x) of
   the first station with S >= 0.35, or None.
6. Quantify the headroom with separation_margin(xs, cps): positive
   margin means the recovery keeps margin below the 0.35 threshold up
   to the crossing point.
7. Report the laminar separation station or none, the turbulent
   separation station or none, and the margin, and gate the airfoil or
   inlet-duct design check on whichever separation signal is closer to
   the operating point.
8. Confirm the deterministic checks with the contract test
   scripts/test_boundary_layer_separation.py.

## Worked example

Edge velocity U(x) = 30 * (1 - x) m/s over x in [0, 1] m (linear
deceleration), nu = 1.5e-5 m2/s, 400001 stations (step 2.5e-6 m):

- Thwaites lambda traverse is monotone decreasing from 0 at the start;
  at x = 0.05 m the discrete lambda is -0.027028, matching the closed
  form -0.075 * (1 - t^6) / t^6 with t = 1 - x to five digits.
- Laminar separation at station index 49257, x = 0.12314 m (within 1
  percent of the classic 0.1231 m, about 12 percent chord), where the
  lambda values around the crossing go from -0.089998 to -0.090001.
- Edge velocity at the separation station: 26.306 m/s (within 1
  percent of 26.31 m/s).
- Accelerating flow U(x) = 30 * (1 + 0.2 * x) over 1 m: lambda stays
  non-negative and laminar_separation_station returns None.

Stratford recovery C_p(x) = 0.4 * x^2 over x in [0, 0.9] m at 10
stations (step 0.1 m):

- S climbs through 0.26710 at x = 0.7 m and crosses 0.35 at station
  index 8, x = 0.8 m, with S = 0.3505 at the crossing.
- separation_margin = 0.35 - 0.26710 = 0.08290, positive headroom up
  to the crossing point.
- Mild recovery C_p = 0.2 * x^2: no crossing (None), margin 0.12735.
- Steep recovery C_p = 0.6 * x^2: crossing at station index 7,
  x = 0.7 m, S = 0.4007.
- Falling C_p (favorable pressure, no recovery): no station, margin
  0.35.

## Verification

- Confirm thwaites_lambda on the linear deceleration is monotone
  decreasing with a negative tail, and matches the closed-form
  -0.075 * (1 - t^6) / t^6 at interior stations.
- Confirm laminar_separation_station returns (49257, 0.12314) on the
  worked grid, within 1 percent of 0.1231 m, with U = 26.31 m/s there,
  and None on the accelerating flow.
- Confirm stratford_separation_station returns (8, 0.8) with
  S = 0.3505 at the crossing for C_p = 0.4 * x^2, and that the margin
  before the crossing is positive.
- Confirm a no-crossing recovery returns None and a positive margin,
  and that every non-physical input raises ValueError: mismatched
  station and velocity or pressure lengths, nu <= 0, negative edge
  velocity, all-zero velocity, non-increasing stations, and empty
  lists.
- Run the contract test offline: python3
  scripts/test_boundary_layer_separation.py (35 tests, deterministic,
  about 1 second).

## Related leaves

- aerodynamics/boundary-layer/boundary-layer-theory: flat-plate
  thickness and skin-friction context for the attached side of the
  flow; zero-pressure-gradient flows never trigger these criteria.
- aerodynamics/boundary-layer/boundary-layer-transition: the sibling
  Thwaites traverse that stops at the natural-transition onset
  estimated by the Michel rule instead of running to the -0.09
  separation crossing.
- aerodynamics/cfd/cfd-turbulence-modeling: RANS turbulence-model
  selection, where separation prediction appears only as a modeling
  pitfall for wall functions.

## Pitfalls

- Continuing the Thwaites traverse past the crossing: once lambda drops
  below -0.09 the integral method has left its validity domain, the
  laminar layer has left the surface, and downstream lambda values are
  not a physical answer; stop at the first crossing.
- Reading the trailing U = 0 station as a finite lambda: an edge flow
  that decelerates to zero has separated long before, and the module
  reports lambda = -inf at such stations, so check the crossing before
  the end of the list.
- Treating negative or falling C_p as recovery: the Stratford
  parameter needs C_p > 0 with dC_p/dx > 0; favorable-pressure regions
  carry no S value and leave the margin at the full 0.35.
- Confusing the two separation signals: the laminar (Thwaites) and
  turbulent (Stratford) crossings are different physics, usually at
  different stations, and both belong in the report with their
  criterion named.
- Reading the margin after a crossing as negative headroom:
  separation_margin is the headroom up to the crossing point, positive
  by construction; on a steep recovery the separation station itself is
  the separation signal.
- Feeding a zero-pressure-gradient flat-plate case expecting a
  separation: dU/dx = 0 gives lambda = 0 and no Stratford recovery, so
  both criteria stay silent, which is correct for an attached flat
  plate at moderate incidence.

## Behavior contract (gate 3)

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

    python3 scripts/test_boundary_layer_separation.py

The test must pass with exit 0 and covers the worked-example anchors
(laminar separation at x = 0.1231 m within 1 percent with U = 26.31
m/s on the linear deceleration, no separation on the accelerating
flow), the closed-form Thwaites identity for the linear deceleration,
monotone-decreasing lambda with a negative tail, the Stratford
crossing at station index 8 with S = 0.3505 and a positive margin
before the crossing, no-crossing and favorable-pressure recoveries
returning None with positive margins, steep-recovery crossing, and
ValueError rejection of every non-physical input listed in the spec
(empty or length-mismatched lists, nu <= 0, negative velocity,
all-zero velocity, non-increasing stations).

## Contract test

Run the contract test from the leaf directory:

    cd skills/aerodynamics/boundary-layer/boundary-layer-separation
    python3 scripts/test_boundary_layer_separation.py

Stdlib unittest only, deterministic, offline, 35 test methods, exit 0
in about 1 second. The test file imports the sibling logic module
boundary_layer_separation_logic from its own scripts directory, so no
install or path configuration is needed.

## Compliance

- Standards referenced, not reproduced: NACA TR-824 (laminar
  boundary-layer correlations and pressure-gradient behavior) frames
  the family context; the Thwaites and Stratford relations above are
  standard engineering methodology, summary-only 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 →