Use when you must size a winglet as a wingtip device for induced-drag reduction on a fixed-wing aircraft: compute the effective span extension and the effective aspect ratio from the winglet height fraction and the cant angle, estimate the improved span efficiency, the induced-drag factor and the induced-drag coefficient at a reference lift coefficient, the percent drag reduction, and the root bending moment penalty at the wing root, then size the winglet height by bisection to hit a target d...
Installs into .claude/skills of the current project.
Are you the author of Winglet Design?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/ashfordeou-winglet-design)
---
name: winglet-design
description: "Use when you must size a winglet as a wingtip device for induced-drag reduction on a fixed-wing aircraft: compute the effective span extension and the effective aspect ratio from the winglet height fraction and the cant angle, estimate the improved span efficiency, the induced-drag factor and the induced-drag coefficient at a reference lift coefficient, the percent drag reduction, and the root bending moment penalty at the wing root, then size the winglet height by bisection to hit a target drag reduction. Produces the winglet height, the effective aspect ratio, the drag reduction and the bending penalty that gate the wingtip device trade. Trigger: winglet design, wingtip device, induced drag reduction, effective aspect ratio, span efficiency, cant angle, winglet height, root bending moment penalty."
license: Apache-2.0
compliance: STANDARDS-REF
standards:
- id: naca-tr-824
reference-only: true
- id: far-25
reference-only: true
gated: false
domain: aerodynamics
pack: wing-design
compatibility: "agentskills.io SKILL.md; any SKILL.md host (Claude Code, Hermes, OpenClaw)"
metadata:
domain: aerodynamics
subdomain: wing-design
tags: [winglet-design, wingtip-device, induced-drag-reduction, effective-aspect-ratio, span-efficiency, cant-angle, winglet-height, root-bending-moment-penalty]
version: 0.1.0
author: AeroSkills
---
# Winglet Design (aerodynamics/wing-design/winglet-design)
Use when the task is the wingtip device trade for induced-drag reduction:
sizing the winglet height and cant from the reference wing geometry and
a target drag reduction, and weighing the drag gain against the root
bending moment penalty. This leaf implements the effective-span
extension model in pure Python, stdlib only. It pairs with
aerodynamics/wing-design/wing-planform-design for the reference
planform, and with vehicle-design/sizing/wing-planform-sizing and the
drag-polar leaves for the system context. The improved span efficiency
and bending penalty models are documented conceptual approximations for
a preliminary trade; a real winglet design needs a VLM/CFD pass and a
structural FEM pass.
## Domain quick reference
- Effective span extension: extension = K_HEIGHT * height_frac, with
K_HEIGHT = 0.8 the documented fraction of the winglet height that acts
as span extension. height_frac is the winglet height over the local
semi-span.
- Cant weighting: cant_factor = cos(cant_deg). A vertical winglet
(cant 0) keeps the full effect; a flat tip (cant 90) loses it.
- Extended span and effective aspect ratio: b_eff = b * (1 + 2 *
cant_factor * K_HEIGHT * height_frac) adds both tips, and
AR_eff = b_eff^2 / area.
- Improved span efficiency: e_eff = 1 - (1 - e_base) / (AR_eff / AR)
with AR = span^2 / area. Documented approximation: the drag factor
k = 1 / (pi * e * AR) shrinks with the effective-AR gain.
- Induced drag: k = 1 / (pi * e * AR) and cd_i = cl^2 * k at the
reference lift coefficient.
- Drag reduction: reduction_pct = 100 * (1 - cd_i_wl / cd_i_base).
- Root bending penalty: penalty_pct = cant_factor * K_HEIGHT *
height_frac * 100 * (1 + 0.5 * height_frac). Approximate scaling, the
winglet load acts near the tip so the added root moment grows roughly
with the height fraction.
- Sizing: size_winglet bisects height_frac in [0.01, 0.5] to a 0.1 pct
reduction tolerance and returns the physical height
height_m = height_frac * span / 2 (semi-span local reference).
- Units are SI: m, m^2, degrees.
## Workflow
1. Take the reference wing geometry from the planform design: span,
area, base span efficiency e_base, and the lift coefficient cl_ref
for the drag check.
2. Read off the winglet height fraction and cant, or the target
reduction percent when sizing.
3. Compute the span extension with effective_span_extension and the
cant weighting with cant_factor.
4. Get the effective aspect ratio with ar_eff and the improved span
efficiency with e_winglet.
5. Get the induced-drag factors with induced_drag_factor, then the
drag coefficients with cd_i, and the gain with
drag_reduction_pct.
6. Check the structural side with root_bending_penalty_pct.
7. To size the device, run size_winglet with the target reduction and
inspect the returned height fraction, height, ar_eff, e_eff, cd_i,
reduction_pct and bending_penalty_pct.
8. Confirm the deterministic checks with the contract test
scripts/test_winglet_design.py.
## Worked example
Wing: span 30 m, area 100 m^2 (AR 9), e_base 0.80, cl_ref 0.5. Direct
case height_frac 0.12, cant 0 deg, taper 0.35.
- Extension: 0.8 * 0.12 = 0.096; cant factor 1.0.
- Extended span: 30 * (1 + 2 * 1.0 * 0.096) = 35.76 m; AR_eff =
35.76^2 / 100 = 12.788.
- Span efficiency: e_eff = 1 - 0.2 / (12.788 / 9) = 0.85924.
- Drag factors: k_base = 1 / (pi * 0.8 * 9) = 0.044210; k_wl = 1 / (pi *
0.85924 * 12.788) = 0.028969.
- Drag coefficients: cd_i base = 0.25 * 0.044210 = 0.011052; cd_i wl =
0.25 * 0.028969 = 0.007242.
- Reduction: 100 * (1 - 0.007242 / 0.011052) = 34.47 pct.
- Bending penalty: 1.0 * 0.8 * 0.12 * 100 * (1 + 0.06) = 10.18 pct.
- Sizing case: size_winglet(30, 100, 0.8, 25, 0.5) returns height_frac
0.0784, height_m 1.176 m, ar_eff 11.40, e_eff 0.8421, reduction_pct
25.00 within the 0.1 pct tolerance, bending_penalty_pct 6.52.
## Verification
- Confirm ar_eff(30, 100, 0.12, 0.0) returns 12.788 within 0.01.
- Confirm e_winglet(0.8, 0.12, 0.0) returns 0.85924 within 1e-4.
- Confirm induced_drag_factor(0.8, 9.0) returns 0.044210 within 1e-6
and the winglet factor matches 1 / (pi * e_eff * AR_eff).
- Confirm cd_i base 0.011052 and the drag reduction 34.47 pct against
the worked example band (34.43 within 0.05).
- Confirm root_bending_penalty_pct(0.12, 0.0) returns 10.18 within
0.05 and drops to zero for a flat tip at 90 deg cant.
- Confirm size_winglet with target 25 pct returns a height fraction in
[0.05, 0.12] and a reduction within 0.1 pct of the target.
- Confirm every non-positive span, area, lift coefficient, span
efficiency outside (0, 1], height fraction outside [0, 0.6], cant
outside [-90, 90] degrees, taper outside (0, 1] and target reduction
outside (0, 100) raises ValueError.
- Run the contract test offline: python3
scripts/test_winglet_design.py (31 tests, deterministic).
## Related leaves
- aerodynamics/wing-design/wing-planform-design: the reference planform
geometry and spanwise loading the winglet sizing starts from.
- vehicle-design/sizing/wing-planform-sizing: vehicle-level wing area
sizing context.
- aerodynamics/drag-polars/drag-polar and
aerodynamics/drag-polars/parasite-drag: the full polar the induced
term feeds into.
- aerodynamics/cfd/vortex-lattice-method: the higher-fidelity follow-on
for the spanwise loading with the winglet fitted.
- structures/fem/calculix-linear: the structural follow-on for the root
bending check.
## Pitfalls
- Sizing the winglet against the cruise drag polar without a reference
lift coefficient: cd_i scales as cl^2, so the 34.47 pct reduction in
the worked example is only valid at cl_ref = 0.5 - report the
reduction with the lift coefficient it was computed at.
- Counting the full winglet height as span: only K_HEIGHT = 0.8 of the
height acts as span extension, and only the cant-weighted part
(cant_factor = cos(cant_deg)) contributes, so a canted or flat tip
gains less effective span than its physical height suggests.
- Trading drag reduction without the bending check: the winglet that
cuts induced drag 34.47 pct also adds 10.18 pct root bending moment
in the worked example - the tip-device trade must weigh
root_bending_penalty_pct against the drag gain.
- Treating the approximate models as a final design: the e_eff
improvement and bending-penalty relations are documented conceptual
approximations for a preliminary trade; a real winglet needs the VLM
or CFD pass and the structural FEM pass named in the related leaves.
- Feeding non-physical geometry: span, area and lift coefficient must be
positive, span efficiency in (0, 1], height fraction in [0, 0.6],
cant in [-90, 90] deg, taper in (0, 1] and target reduction in
(0, 100) - everything else raises ValueError.
- Confusing the sizing reference: size_winglet bisects the height
fraction on the local semi-span reference and returns the physical
height as height_frac * span / 2, so the returned height_m belongs to
the semi-span local definition, not the full span.
## Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 scripts/test_winglet_design.py
The test covers the worked example contract (AR_eff 12.788, e_eff
0.85924, k_base 0.044210, drag reduction 34.47 pct, bending penalty
10.18 pct), the cant weighting bounds, the effective-aspect-ratio
identity, the sizing bisection contract and its monotonicity, the
height from the semi-span reference, and ValueError rejection of every
non-physical input.
## Compliance
- Standards referenced, not reproduced: NACA TR-824 is the classic
induced-drag and airfoil-data basis and FAR 25 the structural and
airworthiness context; both are cited by name only with the model
relations stated as standard engineering methodology, summary-only
per standards-map.yaml.
- The e_eff improvement and bending-penalty models are documented
conceptual approximations for a preliminary trade.
- compliance: STANDARDS-REF, gated: false.