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

Unsteady Laminar Stokes Layers

ASecurity

Use when you must compute the exact unsteady laminar Stokes layer of an infinite plate in a quiescent fluid, either impulsively started or oscillating in its own plane: for the stokes-first-problem Rayleigh layer of a plate started at speed U, evaluate the similarity profile u/U = erfc(y/(2*sqrt(nu*t))), the layer edge at 3.64*sqrt(nu*t) where u/U = 0.01, the wall shear decaying as 1/sqrt(t) from rho*U*sqrt(nu/(pi*t)), and the displacement thickness; for the stokes-second-problem oscillating-...

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 unsteady-laminar-stokes-layers --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Unsteady Laminar Stokes Layers?

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

Security grade badge for Unsteady Laminar Stokes Layers
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ashfordeou-unsteady-laminar-stokes-layers/badge)](https://www.skillsdirectory.com/skills/ashfordeou-unsteady-laminar-stokes-layers)

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

Download with Pro
Files
SKILL.md
---
name: unsteady-laminar-stokes-layers
description: "Use when you must compute the exact unsteady laminar Stokes layer of an infinite plate in a quiescent fluid, either impulsively started or oscillating in its own plane: for the stokes-first-problem Rayleigh layer of a plate started at speed U, evaluate the similarity profile u/U = erfc(y/(2*sqrt(nu*t))), the layer edge at 3.64*sqrt(nu*t) where u/U = 0.01, the wall shear decaying as 1/sqrt(t) from rho*U*sqrt(nu/(pi*t)), and the displacement thickness; for the stokes-second-problem oscillating-plate-layer at omega, evaluate the exponential-cosine velocity field, the penetration depth sqrt(2*nu/omega) with exp(-1) amplitude and 1-rad lag, and the wall shear amplitude rho*U*sqrt(nu*omega) leading the plate velocity by 45 degrees. Produces the closed-form velocity profiles, thicknesses and wall-shear histories in SI units for unsteady shear-layer and viscous time-scale checks. Trigger: unsteady-laminar-stokes-layers, stokes-first-problem, oscillating-plate-layer, rayleigh-layer."
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: [unsteady-laminar-stokes-layers, stokes-first-problem, oscillating-plate-layer, rayleigh-layer, stokes-second-problem, penetration-depth]
  version: 0.1.0
  author: AeroSkills
---

# Unsteady Laminar Stokes Layers (aerodynamics/boundary-layer/unsteady-laminar-stokes-layers)

Use when you must compute the exact unsteady laminar Stokes layer of
an infinite flat plate in a quiescent half-space: the closed-form
solutions of the one-dimensional vorticity diffusion equation
u_t = nu * u_yy for a plate impulsively started at t = 0 (Stokes first
problem, the Rayleigh layer) and for a plate oscillating in its own
plane (Stokes second problem). The time-dependent layer is the
unsteady member of the exact-viscous family whose steady members are
already in the tree: the Blasius flat-plate boundary layer
(boundary-layer-theory) and the shear-driven Couette gap
(compressible-couette-flow). The aeroelasticity leaves cover only
inviscid indicial airfoil response, so no existing leaf owns
time-dependent laminar shear layers over a plate. Fully closed form,
pure stdlib, no iteration. It does not do steady boundary layers,
regime classification, Couette gap flow or inviscid oscillating-airfoil
aerodynamics; incompressible constant-property laminar flow only, with
uniform nu.

## Domain quick reference

- Diffusion balance: u_t = nu * u_yy over the half-space y >= 0 above
  a plate at y = 0 in fluid at rest. Module constants: NU_AIR =
  1.46e-5 m2/s, RHO_AIR = 1.225 kg/m3, DELTA99_COEF = 3.6428
  (2 * 1.8214, where erfc(1.8214) = 0.01). Dynamic viscosity is always
  derived mu = rho * nu, never an input.
- Stokes first problem (impulsive start, Rayleigh layer): the plate
  starts at speed U at t = 0 and the layer diffuses outward
  self-similarly with u/U = erfc(eta), similarity variable
  eta = y / (2 * sqrt(nu * t)); u(0, t) = U exactly for all t > 0
  (no slip) and the profile shape is identical at every time.
- Layer edge: delta = 3.6428 * sqrt(nu * t), where u/U = erfc(1.8214)
  = 0.0099994, the 99-percent-deficit point; delta grows as sqrt(t),
  delta(t2)/delta(t1) = sqrt(t2/t1), without bound.
- First-problem wall shear: du/dy|0 = -U / sqrt(pi * nu * t), so
  tau_w = mu * |du/dy|0 = rho * U * sqrt(nu / (pi * t)), decaying as
  1/sqrt(t); tau_w * sqrt(t) = rho * U * sqrt(nu / pi) exactly
  constant.
- Displacement thickness: delta* = integral_0^inf (1 - u/U) dy =
  2 * sqrt(nu * t / pi) (the half-space erfc integral is 1/sqrt(pi));
  the momentum balance rho * U * d(delta*)/dt = tau_w holds
  identically.
- Stokes second problem (oscillating plate): the plate moves as
  U * cos(omega * t) and the steady-periodic solution is u = U *
  exp(-y/delta) * cos(omega * t - y/delta) with wavenumber k =
  sqrt(omega / (2 * nu)) = 1/delta, penetration depth
  delta = sqrt(2 * nu / omega), the real part of U * exp(i * omega * t
  - (1 + i) * k * y). At depth y the amplitude is U * exp(-y/delta)
  and the signal lags the wall by y/delta radians; at y = delta the
  amplitude is exp(-1) * U = 0.3679 * U and the lag is exactly 1 rad
  (57.30 deg).
- Second-problem wall shear: du/dy|0 = k * U * (sin(omega * t) -
  cos(omega * t)), so with the resistance-on-plate convention
  tau_w = -mu * du/dy|0 (positive resisting +x plate motion)
  tau_w(t) = tau_amp * cos(omega * t + pi / 4) with
  tau_amp = rho * U * sqrt(nu * omega) = mu * U * sqrt(omega / nu);
  the shear leads the plate velocity by 45 degrees (one-eighth period,
  T/8 = pi / (2 * omega)) and passes through zero at omega * t = pi/4.
- SI units throughout: m/s, m, Pa, rad/s, s.

## Workflow

1. Fix the flow state: uniform kinematic viscosity nu, density rho
   and plate speed U; decide between the stokes-first-problem
   impulsive start (Rayleigh layer) and the stokes-second-problem
   plate oscillation at frequency omega. Dynamic viscosity is always
   mu = rho * nu.
2. First problem, similarity profile traverse: evaluate the erfc
   Rayleigh-layer profile with stokes_first_velocity(U, nu, y, t) =
   U * erfc(y / (2 * sqrt(nu * t))) at the stations y and times t of
   interest; u(0, t) = U at the wall and u/U collapses onto one erfc
   curve in eta at every time.
3. First problem, layer-edge traverse: locate the edge of the
   Rayleigh layer with rayleigh_layer_thickness(nu, t) =
   3.6428 * sqrt(nu * t), the 99-percent-deficit point where
   u/U = 0.01, and scale it across times with the sqrt(t) growth law.
4. First problem, shear-decay traverse: evaluate the wall shear
   history with stokes_first_wall_shear(rho, U, nu, t) =
   rho * U * sqrt(nu / (pi * t)); check the 1/sqrt(t) decay with the
   tau_w * sqrt(t) invariant.
5. First problem, displacement-thickness traverse: compute the
   displacement thickness with stokes_first_displacement_thickness(nu,
   t) = 2 * sqrt(nu * t / pi) and confirm the momentum balance of the
   growing layer, rho * U * d(delta*)/dt = tau_w, by finite
   difference.
6. Second problem, penetration-depth traverse: evaluate the Stokes
   layer thickness with stokes_penetration_depth(nu, omega) =
   sqrt(2 * nu / omega), the depth of the exp(-1) amplitude point.
7. Second problem, oscillating-field traverse: evaluate the
   exponential-cosine velocity field with stokes_second_velocity(U,
   nu, omega, y, t) at the depths and phases of interest; the local
   amplitude is U * exp(-y/delta) and the phase lag is y/delta
   radians, so the field peaks at each depth one radian of omega * t
   after the wall does.
8. Second problem, shear-phase traverse: compute the wall shear
   amplitude with stokes_second_shear_amplitude(rho, U, nu, omega) =
   rho * U * sqrt(nu * omega) and its time history with
   stokes_second_wall_shear(rho, U, nu, omega, t) =
   tau_amp * cos(omega * t + pi / 4); the shear leads the plate
   velocity by 45 degrees and crosses zero at omega * t = pi/4,
   exactly T/8 after the wall velocity peak.
9. Input-rejection and determinism traverse: confirm every
   non-physical input (nu <= 0, t <= 0, y < 0, rho <= 0, omega <= 0)
   raises ValueError, then run the contract test
   scripts/test_unsteady_laminar_stokes_layers.py.

## Worked example

Air at standard conditions, nu = 1.46e-5 m2/s, rho = 1.225 kg/m3,
plate speed U = 30 m/s (real outputs of the module functions).

Stokes first problem, plate started at t = 0:

- Similarity profile u/U = erfc(eta) at t = 0.001 s (eta = 1 at y =
  0.2417 mm): u/U = 0.723674 at eta = 0.25, 0.479500 at eta = 0.5,
  0.157299 at eta = 1.0, 0.033895 at eta = 1.5, 0.0099994 at
  eta = 1.8214, 0.004678 at eta = 2.0; monotone from 1.000000 at the
  wall toward 0 in the far field.
- Layer edge delta = 3.6428 * sqrt(nu * t): 0.4402 mm at t = 0.001 s,
  1.392 mm at 0.01 s, 4.402 mm at 0.1 s, 13.92 mm at 1 s, 44.02 mm at
  10 s, one hundred times thicker after four decades of time, with
  u/U = 0.0099994 at the edge at every time (self-similar collapse).
- Wall shear decay tau_w = rho * U * sqrt(nu / (pi * t)): 2.505295 Pa
  at 0.001 s, 0.792244 Pa at 0.01 s, 0.250529 Pa at 0.1 s,
  0.079224 Pa at 1 s, 0.025053 Pa at 10 s; tau_w(10 s) / tau_w(0.001 s)
  = 0.01 and tau_w * sqrt(t) = 0.0792244 Pa sqrt(s) constant.
- Front arrival at y = 1 mm: 0.000000 m/s after 1 ms, 1.926887 m/s
  after 10 ms, 16.752282 m/s after 100 ms, 25.595499 m/s after 1 s.
- Displacement thickness delta* = 2 * sqrt(nu * t / pi): 0.136343 mm
  at 1 ms, 13.6343 mm at 10 s; delta*/delta = 0.3098 always.
- Momentum balance: rho * U * d(delta*)/dt over t = 1.0 to 1.02 s
  reproduces tau_w(1.01 s) with relative error 1.2e-5.

Stokes second problem, plate oscillating at omega = 50 rad/s (period
T = 0.12566 s):

- Penetration depth delta = sqrt(2 * nu / omega) = 7.6419893e-4 m
  (0.7642 mm).
- Amplitude profile U * exp(-y/delta) with phase lag y/delta:
  y/delta = 0: 30.0000 m/s, 0.00 deg; 0.5: 18.1959 m/s, 28.65 deg;
  1.0: 11.0364 m/s, 57.30 deg (exp(-1) * U, lag exactly 1 rad);
  2.0: 4.0601 m/s, 114.59 deg; 3.0: 1.4936 m/s, 171.89 deg.
- Velocity at y = delta over a cycle: 5.9630 m/s at t = 0, 9.6853 m/s
  at t = 0.01 s, 11.0364 m/s at t = 0.02 s (the peak, one radian after
  the wall peak), 9.6853 m/s at t = 0.03 s, 0.7807 m/s at t = 0.05 s.
- Wall shear amplitude tau_amp = rho * U * sqrt(nu * omega) =
  0.992930 Pa, identical to mu * U * sqrt(omega / nu) (relative
  difference below 1e-12). Time history tau_w = tau_amp *
  cos(omega * t + pi / 4): 0.702108 Pa (0.707107 of the amplitude,
  cos 45 deg) at t = 0, 0.000000 Pa at t = 0.015708 s (omega * t = 45
  deg), -0.992930 Pa at t = 0.047124 s (135 deg), -0.702108 Pa at
  t = 0.062832 s (180 deg).
- Phase read-off: T/8 = 0.015708 s = pi / (4 * omega), and the shear
  zero crossing sits exactly one-eighth period after the wall velocity
  peak at t = 0: the shear waveform leads the plate velocity by 45
  degrees.

Read-off: a plate start in air at 30 m/s carries 2.5 Pa of wall shear
for the first millisecond but only 0.025 Pa after 10 s while the
affected layer grows from 0.44 mm to 44 mm; a 50 rad/s (about 8 Hz)
oscillation at the same speed confines the motion to a 0.76 mm Stokes
layer with shear swinging between plus and minus 0.99 Pa, peaking
one-eighth period before the plate reaches peak speed.

## Verification

- Confirm stokes_first_velocity(30.0, 1.46e-5, 0.0, 0.001) returns
  30.0 exactly (erfc(0) = 1) and u/U at eta = 1 (y = 2 * sqrt(nu * t))
  is 0.1572992071 within 1e-6.
- Confirm rayleigh_layer_thickness(1.46e-5, 0.001) returns
  4.40161e-4 m within 1e-6, u/U = 0.01 within 1e-3 at the edge, and
  delta(10 s) / delta(0.001 s) = 100 = sqrt(10 / 0.001).
- Confirm stokes_first_wall_shear(1.225, 30.0, 1.46e-5, 0.001)
  returns 2.505295 Pa within 1e-3 (between 2.0 and 3.0 Pa), the decay
  ratio tau_w(10 s) / tau_w(0.001 s) is 0.01, and
  tau_w * sqrt(t) = 0.0792244 Pa sqrt(s) is constant.
- Confirm the momentum balance: rho * U * (delta*(1.02) -
  delta*(1.0)) / 0.02 reproduces tau_w(1.01 s) within 1e-3 relative
  (anchor error 1.2e-5), and delta*/delta = 0.3098 within 1e-3.
- Confirm stokes_penetration_depth(1.46e-5, 50.0) returns
  7.64199e-4 m within 1e-8, u(0, t) = U * cos(omega * t), the signal
  at y = delta peaks at t = 1/omega at exp(-1) * U = 11.0364 m/s, and
  the amplitude at y = 3 * delta is 1.4936 m/s.
- Confirm stokes_second_shear_amplitude(1.225, 30.0, 1.46e-5, 50.0)
  returns 0.992930 Pa within 1e-4 (between 0.9 and 1.1 Pa) and equals
  mu * U * sqrt(omega / nu) within 1e-12 relative; tau_w(0) / tau_amp
  = cos(pi / 4) = 0.707107, tau_w vanishes at t = pi / (4 * omega)
  (residual 6.08e-17 Pa), and tau_w = -tau_amp at t = 3 * pi / (4 *
  omega).
- Confirm every non-positive nu, rho, omega and t and every negative y
  raises ValueError, and that repeated calls are bit-identical
  (deterministic, stdlib math only).
- Run the contract test offline: python3
  scripts/test_unsteady_laminar_stokes_layers.py (32 tests,
  deterministic).

## Related leaves

- aerodynamics/boundary-layer/boundary-layer-theory: the steady
  Blasius flat-plate member of the exact-viscous family; the Rayleigh
  layer is its unsteady counterpart driven by the plate momentum
  rather than the free stream.
- aerodynamics/boundary-layer/boundary-layer-transition,
  aerodynamics/boundary-layer/boundary-layer-separation,
  aerodynamics/boundary-layer/stagnation-flow-boundary-layer,
  aerodynamics/boundary-layer/rough-wall-skin-friction: the rest of
  the boundary-layer pack, all steady-state content.
- aerodynamics/high-speed/compressible-couette-flow: the steady
  shear-driven gap between two plates with a linear velocity profile,
  the other exact solution of the viscous diffusion balance; this leaf
  covers the unsteady half-space layer driven by one moving surface.
- aerodynamics/aeroelasticity/aeroelastic-gust-response and
  aerodynamics/aeroelasticity/flutter-speed-prediction: the inviscid
  unsteady-airfoil leaves (indicial response and oscillating-airfoil
  loads), which share time-dependence but no viscous-layer physics.
- aerodynamics/high-speed/shock-tube: the compressible unsteady
  expansion wave, a wave process rather than a viscous Stokes layer.

## Pitfalls

- Expecting the layer to reach a steady state: the Rayleigh layer of
  the impulsively started plate keeps growing as sqrt(nu * t) forever
  (0.44 mm after 1 ms, 44 mm after 10 s), and its wall shear keeps
  decaying as 1/sqrt(t); there is no equilibrium thickness in the
  first problem.
- Confusing the two layer edges: the first-problem 99-percent edge is
  3.6428 * sqrt(nu * t) and grows in time, while the second-problem
  penetration depth sqrt(2 * nu / omega) is fixed by the frequency; at
  the second-problem depth the amplitude is exp(-1) * U = 0.3679 * U,
  not 0.01 * U.
- Reading the shear phase sign backwards: with the resistance
  convention tau_w = -mu * du/dy|0 (positive resisting +x plate
  motion) the oscillating-plate wall shear tau_amp *
  cos(omega * t + pi / 4) LEADS the plate velocity by 45 degrees and
  passes through zero at omega * t = pi/4, one-eighth period AFTER the
  plate reaches peak speed; a shear that lagged the wall motion would
  put the zero crossing elsewhere in the cycle.
- Using a steady skin-friction correlation for an impulsive start: the
  first-problem wall shear rho * U * sqrt(nu / (pi * t)) is singular
  at t = 0 and decays as 1/sqrt(t); a steady correlation has no time
  argument and cannot represent the transient.
- Treating the second problem as a start-up: stokes_second_velocity
  and stokes_second_wall_shear describe the steady-periodic state and
  accept any real t, including negative t; the initial transient after
  the oscillation is switched on is not part of this closed form.
- Passing rho where nu belongs: dynamic viscosity is always derived
  mu = rho * nu; the shear functions take (rho, U, nu, ...) and the
  velocity functions take (U, nu, ...), so swapping rho into a
  velocity call silently mis-scales the profile.

## Behavior contract (gate 3)

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

    python3 scripts/test_unsteady_laminar_stokes_layers.py

The 32-test contract covers the worked example of the impulsively
started plate (erfc similarity profile against math.erfc, eta = 1
anchor, far-field decay, front arrival at a fixed station), the
Rayleigh layer edge (anchor thickness, u/U = 0.01 at the edge, sqrt(t)
growth ratio), the wall shear decay (anchor value and magnitude bound,
decade ratio 0.01, tau_w * sqrt(t) invariant), the displacement
thickness and its 0.3098 ratio with the momentum balance identity, the
oscillating-plate layer (penetration depth anchor, no-slip cosine,
phase-zero local amplitude, cycle samples at y = delta, amplitude
profile decay), the wall shear amplitude and phase (anchor value and
magnitude bound, mu identity, 45 degree phase lead, zero crossing at
omega * t = pi/4, negative peak, one-eighth-period read-off), and
ValueError rejection of every non-physical input class with the
determinism and stdlib-only checks. It passes under both
/usr/bin/python3 and the pyenv 3.13.12 hook interpreter.

## Compliance

- Standards referenced, not reproduced: NACA-TR-824 is the sibling
  precedent for the viscous-layer family (standards-map.yaml); the
  classical treatment of unsteady laminar boundary layers follows
  Schlichting, whose material is cited through the report. The
  relations above are standard engineering methodology, summary-only.
- 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 →