design-acoustic-levitation
について
このスキルは、超音波定在波を用いて微小物体を圧力節に捕捉する音響浮遊システムを設計します。トランスデューサーの選定、波形形成、節の計算、多軸操作のためのフェーズドアレイ技術を網羅しています。化学、生物学、材料科学アプリケーションにおける非接触ハンドリングの設計にご活用ください。
クイックインストール
Claude Code
推奨npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/design-acoustic-levitationこのコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします
ドキュメント
Design Acoustic Levitation
Design + validate acoustic levitation. Determine radiation pressure → balance gravity, select transducer+reflector → standing wave, compute node positions + trapping strength, verify stability vs lateral/axial perturbations.
Use When
- Contactless sample holder → chem/bio
- Levitator demo → education
- Eval: can object levitate (size, density, freq)?
- Single-axis (transducer-reflector) vs phased array
- Calc node positions + trapping forces
- Extend single → multi-axis w/ phased arrays
In
- Required: Object props (mass, density, radius, compressibility if known)
- Required: Medium (air, water, inert gas) + density + speed of sound
- Optional: Transducer freq (default 40 kHz)
- Optional: Transducer power/voltage
- Optional: Manipulation cap (static vs dynamic)
Do
Step 1: Object props + acoustic contrast
Characterize → fundamental feasibility:
- Object params: m, density rho_p, radius a, bulk modulus K_p (kappa_p = 1/K_p). Rigid metal → K_p effectively inf.
- Medium params: rho_0, c_0, K_0 = rho_0 * c_0^2.
- Contrast factors (Gor'kov → node vs antinode):
- Monopole: f_1 = 1 - (K_0 / K_p) = 1 - (rho_0 * c_0^2) / (rho_p * c_p^2)
- Dipole: f_2 = 2 * (rho_p - rho_0) / (2 * rho_p + rho_0)
- Most solids in air: f_1 ~ 1, f_2 ~ 1 → trapped at pressure nodes (velocity antinodes).
- Size constraint: a << lambda = c_0 / f (Gor'kov requires a << lambda, typically a < lambda/4). Else ray acoustics or full num sim.
## Object and Medium Parameters
- **Object**: [material, mass, density, radius, bulk modulus]
- **Medium**: [gas/liquid, rho_0, c_0, K_0]
- **Contrast factors**: f_1 = [value], f_2 = [value]
- **Wavelength**: lambda = [value] at f = [frequency]
- **Size ratio**: a / lambda = [value] (must be << 1)
- **Trapping location**: [pressure node / pressure antinode]
→ Complete character. Object confirmed → pressure nodes. Size constraint OK.
If err: a / lambda > 0.25 → Gor'kov breaks. Use FEM acoustic sim or calibration. If f_1, f_2 opposite signs → intermediate position, map Gor'kov potential.
Step 2: Required radiation pressure
Field intensity → balance gravity:
- Radiation force (small sphere at node, 1D standing wave):
- F_ax = -(4 * pi / 3) * a^3 * [f_1 * (1 / (2 * rho_0 * c_0^2)) * d(p^2)/dz - (3 * f_2 * rho_0 / 4) * d(v^2)/dz]
- Plane standing wave p(z,t) = P_0 * cos(kz) * cos(omega*t) near node:
- F_ax = (pi * a^3 * P_0^2 * k) / (3 * rho_0 * c_0^2) * Phi * sin(2kz)
- Phi = f_1 + (3/2) * f_2, k = 2*pi/lambda.
- Force balance: Max force (sin(2kz) = 1, at lambda/8 from node) = gravity:
- F_ax_max = (pi * a^3 * P_0^2 * k) / (3 * rho_0 * c_0^2) * Phi = m * g = (4/3) * pi * a^3 * rho_p * g
- Solve: P_0 = sqrt(4 * rho_p * rho_0 * c_0^2 * g / (k * Phi))
- Intensity: I = P_0^2 / (2 * rho_0 * c_0). Compare transducer rating.
- SPL: L = 20 * log10(P_0 / 20e-6). Typical air levitation 150-165 dB SPL.
## Acoustic Requirements
- **Required pressure amplitude**: P_0 = [value] Pa
- **Required intensity**: I = [value] W/m^2
- **Sound pressure level**: L = [value] dB SPL
- **Safety note**: [hearing protection required if > 120 dB at audible frequencies]
→ P_0 min in Pa, W/m^2, dB SPL. Achievable w/ specified or commercial transducer.
If err: P_0 exceeds available → reduce mass/density, lighter material, denser medium (SF6). Multi transducers focused array.
Step 3: Transducer-reflector geometry
HW → stable standing wave:
- Transducer: Ultrasonic at f (28 kHz, 40 kHz, 60-80 kHz piezo). Higher f → smaller lambda, tighter trap, smaller max obj. Verify P_0 at operating distance.
- Reflector: Flat or concave opposite transducer. Acoustically hard (high impedance mismatch). Metal/glass in air. Concave → concentrates sound + increases P at axis.
- Cavity length: L = n * lambda/2 (n int). Creates n nodes spaced lambda/2.
- Node positions: z_j = (2j - 1) * lambda/4 from reflector, j = 1..n. Node nearest center = most stable.
- Resonance tuning: Fine-tune L w/ micrometer stage, monitor force or P w/ mic. Optimal → strongest standing wave.
## Geometry Design
- **Transducer**: [model, frequency, rated power or SPL]
- **Reflector**: [material, shape (flat/concave), dimensions]
- **Cavity length**: L = [n] x lambda/2 = [value] mm
- **Number of nodes**: [n]
- **Node positions from reflector**: z_1 = [value], z_2 = [value], ...
- **Selected trapping node**: z_[j] = [value]
→ Complete HW spec + node positions + selected trap node.
If err: No standing wave (L not precise n*lambda/2) → 0.1 mm increments. Temp shifts c_0 + lambda → re-tune. Beam diverges → horn/waveguide or reduce L.
Step 4: Trapping potential + restoring forces
Quantify strength + spatial extent:
- Gor'kov potential:
- U(r) = (4/3) * pi * a^3 * [(f_1 / (2 * rho_0 * c_0^2)) * <p^2> - (3 * f_2 * rho_0 / 4) * <v^2>]
- Object trapped at min of U(r) + mgz.
- Axial restoring:
- F_z ~ -k_z * delta_z, k_z = (2 * pi * a^3 * P_0^2 * k^2) / (3 * rho_0 * c_0^2) * Phi
- omega_z = sqrt(k_z / m).
- Lateral restoring (Gaussian beam waist w):
- k_r ~ k_z * (a / w)^2 (lateral weaker than axial)
- Lateral = limiting factor for stability.
- Trap depth: Max displacement before escape. Axial well: Delta_U = F_ax_max * lambda / (2 * pi). Express as × k_B*T if relevant.
## Trapping Analysis
- **Axial stiffness**: k_z = [value] N/m
- **Axial natural frequency**: omega_z / (2*pi) = [value] Hz
- **Lateral stiffness**: k_r = [value] N/m
- **Lateral natural frequency**: omega_r / (2*pi) = [value] Hz
- **Axial well depth**: Delta_U = [value] J = [value] x k_B*T
- **Stiffness ratio**: k_z / k_r = [value] (lateral is weaker)
→ Stiffness for both axes + freqs + well depth. Lateral confirmed positive.
If err: Lateral neg/negligible → drifts sideways. Wider transducer (bigger waist), add lateral transducers, phased array, concave reflector for converging wavefront.
Step 5: Stability vs perturbations
Reliable trap + hold:
- Gravity offset: delta_z = m * g / k_z. Must be << lambda/4. If ~lambda/4 → falls out.
- Air currents: F_drag = 6 * pi * eta * a * v_air (Stokes). Max tolerable: v_max = k_r / (6 * pi * eta).
- Acoustic streaming (Rayleigh, steady circulation): v_stream ~ P_0^2 / (4 * rho_0 * c_0^3 * eta) * lambda. Drag on object. Must be < lateral restoring.
- Thermal: Absorption heats medium → c_0 shifts → nodes drift. High-intensity (>160 dB SPL) → estimate temp rise + drift over time.
- Phased array ext (dynamic): Replace single pair w/ phased array. Adjusting phases → nodes move continuously, carry object. Phase resolution: delta_z ~ lambda / (2 * pi * N_phase_bits).
## Stability Verification
| Perturbation | Magnitude | Restoring Force | Margin | Stable? |
|-------------|-----------|----------------|--------|---------|
| Gravity offset | delta_z = [val] | k_z * delta_z | delta_z / (lambda/4) = [val] | [Yes/No] |
| Air currents | v_air = [val] m/s | F_lat = [val] N | F_lat / F_drag = [val] | [Yes/No] |
| Acoustic streaming | v_stream = [val] | F_lat = [val] N | F_lat / F_stream_drag = [val] | [Yes/No] |
| Thermal drift | Delta_T = [val] K | Re-tune interval | [time] | [Acceptable/No] |
→ All perturbations quantified + w/in margins. Gravity offset small frac of lambda/4. Air + streaming don't overwhelm lateral trap.
If err: Gravity offset too big → increase P_0 or higher freq. Air currents → draft shield. Streaming destabilizes → reduce amplitude, shallow concave reflector minimizes vortices.
Check
- a << lambda (Gor'kov applicable)
- Contrast factors + node/antinode identified
- P_0 calc + achievable w/ HW
- Cavity L = n * lambda/2 + nodes computed
- Axial + lateral stiffness both positive
- Gravity offset small frac of lambda/4
- Air + streaming w/in margins
- Safety for high-SPL docs
- Phased array: phase res + precision specified
Traps
- Violating small-particle: Gor'kov assumes a << lambda. Approaching lambda/4 → point-particle breaks, force diffs (mag + direction). Full-wave sim for large.
- Ignoring lateral: Most treatments focus axial, neglect lateral. Lateral instability = primary failure mode near size limit.
- Forget streaming: High-intensity → steady streaming drag vs radiation force. Not small — dominant destabilizer at high SPL.
- Temp sensitivity: c_0 in air → 0.6 m/s per °C. 10° swing → lambda shifts ~2% → nodes drift mm in typical cavity. Long runs need active comp or temp ctrl.
- Pressure vs velocity nodes: P nodes = v antinodes + vice versa. Solids w/ positive contrast → P nodes (P min, v max). Reversed → wrong position.
- Nonlinear at high amp: >155-160 dB SPL → harmonic gen, shock formation → reduces trapping vs linear theory.
→
evaluate-levitation-mechanism— compare acoustic vs magnetic, electrostatic, aerodynamicanalyze-magnetic-levitation— complement for comparederive-theoretical-result— radiation pressure from first principles
GitHub リポジトリ
関連スキル
executing-plans
デザインexecuting-plansスキルは、完全な実装計画があり、それを管理されたバッチでレビューチェックポイントを設けながら実行する場合に使用します。このスキルは計画を読み込んで批判的にレビューした後、小さなバッチ(デフォルトは3タスク)でタスクを実行し、各バッチの間に進捗状況を報告してアーキテクトのレビューを受けます。これにより、品質管理チェックポイントが組み込まれた体系的な実装が保証されます。
requesting-code-review
デザインこのスキルは、コードレビュアーサブエージェントを起動し、処理を進める前に要件に対してコード変更を分析します。タスク完了後、主要な機能の実装後、またはmainブランチへのマージ前などに使用すべきです。このレビューは、現在の実装と元の計画を比較することで、問題を早期に発見するのに役立ちます。
connect-mcp-server
デザインこのスキルは、開発者がHTTP、stdio、またはSSEトランスポートを使用してMCPサーバーをClaude Codeに接続するための包括的なガイドを提供します。GitHub、Notion、カスタムAPIなどの外部サービスを統合するためのインストール、設定、認証、セキュリティについて解説しています。MCP統合のセットアップ、外部ツールの設定、またはClaudeのModel Context Protocolを扱う際にご利用ください。
web-cli-teleport
デザインこのスキルは、タスク分析に基づいて開発者がClaude Code WebとCLIインターフェースの選択を支援し、これらの環境間でのシームレスなセッションテレポーテーションを可能にします。Web、CLI、モバイル環境を切り替える際のセッション状態とコンテキストを管理することで、ワークフローを最適化します。様々な段階で異なるツールを必要とする複雑なプロジェクトにご活用ください。
