A fuse only lies parallel to the flow in a drawing. In flight it is pitched nose-up, and the cut the water crosses is a long thin aerofoil with roughly six times the chord of the fuse height. Its shape is the fuse's own cross-section outline, stretched along the chord. That makes the corner radii an aerofoil decision.
Keeps the outline you picked and looks only for the height and width that carry the same vertical stiffness and the same material at the least drag.
| Fuse | h × w | Chord | t/c | Blunt LE | Blunt TE | Drag | Stiffness | Area |
|---|
Flow enters at the left. The section sits in the middle. Its wake trails right.
This is a lattice Boltzmann solver. It does not solve the flow equations directly. It tracks how many notional particles move in each of nine directions on a grid, lets them collide, and lets the flow emerge from that. It handles messy separated wakes without falling over, which is exactly what a blunt fuse produces.
The oncoming flow is tilted briefly to knock the wake off centre. A symmetric body on a symmetric grid otherwise sits in the symmetric solution forever, even when that solution is unstable, so nothing would ever shed. Whether the oscillation grows or dies after that nudge is the measurement.
It settles the flow, measures the shedding period, records exactly one period and loops those frames. Nothing is solving while you watch, which is why it costs a few seconds up front and nothing after.
It runs about a thousand times below the real Reynolds number, so read it for whether the shape stays attached or sheds, never for a number. Plenty of shapes that hold steady here would shed in the water.
Put the fuse axis along x with the nose at x=0, lateral across
the fuse as y, vertical as z. With the fuse pitched nose-up by
α, the water runs along V(cosα, 0, sinα).
A streamwise plane contains that vector. For a tall narrow fuse the flow is essentially
two-dimensional in the planes cutting across the thin direction, the same way flow over a
mast is two-dimensional in horizontal planes. Those planes are
−x sinα + z cosα = d. With
u = x cosα + z sinα and v = y:
t(u)/2 = (w(x)/2) · Φ(ζ), where
ζ = 2z/h(x).
Φ is the fuse's cross-section outline: half-width as a fraction of the
maximum, against normalised height. Because ζ runs linearly from
−1 to +1 along the cut, the streamwise thickness distribution is that outline
stretched along the chord. A square-cornered fuse gives a rectangle. An elliptical fuse
gives an ellipse. For the water to see an aerofoil, the cross-section has to be that
aerofoil, stood on end.
Chord follows c ≈ h / sinα. At α = 0 the cut
becomes the plan section of chord L, so the model passes through the familiar
picture continuously.
The fuse angle relative to the water is θ − γ, which is also
the front wing's angle of attack. It follows from Cl = 2W/(ρSV²) with
a lift slope of 2π/(1 + 2/AR), clamped at a 13° stall.
Checked against compute_trim_angle in
foil-rl-pump/python-rl/foil_env/foil_physics.py in this repo, which solves the
full wing, stabiliser and mast balance: it gives 8.95° at 7.8 mph and 5.44°
at 10.1 mph for its own rig (3.5 and 4.5 m/s in the source). This reimplements
the wing term only and lands within 2.5%.
On top of trim, the pump swings the flight path by atan(A·ω/V).
80 mm of heave at 2 Hz and 10 mph is ±12.6°, most of which the
rider feathers out. What is left is the swing the fuse works through, and the crest of that
swing is the design angle.
Two things pull opposite ways across the speed range. Misalignment is worst at the slow end, where lift demand forces a high angle. Absolute drag is largest at the fast end, where dynamic pressure dominates. Shape matters most where misalignment is worst, so the slow end sets the section.
Two independent estimates run side by side, because neither alone deserves much trust.
Headline number. Every parallel cut is built and given a section drag coefficient
from flat-plate friction with a Hoerner strut form factor
1 + 2(t/c) + 60(t/c)⁴ on the real wetted perimeter, plus separate blunt
leading-edge and blunt base terms. Those integrate across the body.
ν = 1.05×10⁻⁶ m²/s,
ρ = 1025 kg/m³.
Section solve. The selected cut goes through a constant-strength source panel method, then Thwaites, Michel transition, Head's method and Squire–Young. Separation shows up here.
The weakest part. On a blunt fuse most of the drag comes from the two blunt-end terms, which are hand-set constants. A strip model also treats the flat top and bottom as bluff bases, when a long flat surface at 8° behaves more like a plate at incidence. Direction is solid. Magnitude is an upper bound.
Minimising drag alone drives the fuse to zero width, so two things are held at least as
good as what you have: vertical bending stiffness
Iyy = w·h³·I₂/8, which resists the tail's downforce,
and cross-sectional area A = w·h·I₀/2 as a weight proxy.
I₀ and I₂ are integrals of the outline, so they
capture shape as well as size.
The stiffness floor sets the thinnest width at any height,
w_min(h) = 8·Iyy*/(h³·I₂), and the area ceiling sets
the tallest height. Everything between is valid, so the search walks that range with your
outline held fixed. Height is capped at 55 mm for the mast and wing joints. Lateral
stiffness is reported but not constrained, and a tall thin blade gives it up quickly.
The current settings as a config block. Drop it into fuses/ as a
.json file and open a pull request, or paste one in to load it.
The bundled shapes are archetypes for exploring geometry, not measured brand geometry. If you have callipers and a real fuse, measured numbers beat my guesses.