/ proof-of-concept / bead-percussion
Sign in
proof-of-concept / bead-percussion
bead-percussion / matlab / examples / cascade.m
37 lines · 1.2 KBBlameHistoryRaw
1% A loose, lightly damped net, struck hard: energy cascades from the struck
2% low modes to high ones over tens of milliseconds.
3%
4% Compared with drum.m, the springs are stretched only 0.5% at rest, so the
5% stretching caused by the motion itself is large relative to the rest
6% tension, and the dashpots are 3x weaker, so high modes keep their energy
7% long enough to pass it on. Turn on "small-strike reference" to hear and
8% measure the difference from the same strike at small amplitude.
10R = 0.15;
11a = 0.01;
12sigma = 0.25;
13T = 2000;
14strain = 0.005;
16[pos, tri, rim] = bp_hexdisk(R, a);
17E = bp_edges(tri);
18f0 = T * a / sqrt(3);
19k = f0 / (strain * a);
21sys.pos = pos;
22sys.mass = sigma * (sqrt(3)/2) * a^2;
23sys.pinned = rim;
24sys.springs = bp_springs(pos, E, k, f0);
25sys.dashpots = [E, 3e-5 * ones(size(E, 1), 1)];
26sys.friction = 1e-4;
28hit.t = 0;
29hit.beads = bp_near(pos, [0.05 0 0], 0.03);
30hit.force = [0 0 -12]; % peak force per bead (N); try 1 to 50
31hit.duration = 1e-3;
32sys.hits = hit;
34sys.listen = struct('beads', bp_near(pos, [-0.04 0.03 0], 0), 'dir', [0 0 1]);
35sys.duration = 1.5;
37fprintf('%d beads, %d springs, %d struck\n', size(pos, 1), size(E, 1), numel(hit.beads));
↑↓ move↵openescclose