Message Boards Message Boards


[GIF] Drumbeat (Vibration mode of a circular drum)

Posted 4 years ago
3 Replies
12 Total Likes

Vibration mode of a circular drum


Inspired by a comment made by @J. M. on Square Up, this is an animation showing the (1,2) vibrational mode of a circular drum. I've added a (quite possible completely unphysical) exponential decay term, just because.

As you can see on the Wikipedia page, the $(m,n)$ vibrational mode of a circular membrane is given, as a function whose input is the position and whose output is the (vertical) displacement from the rest state, by

$ u_{mn} (r,\theta,t) = (A \cos c \lambda_{mn} t + B \sin c \lambda_{mn} t) J_m(\lambda_{mn} r) (C \cos m\theta + D \sin m \theta)$,

where $\lambda_{mn}$ is the $n$th root of the Bessel function $J_m$, $c$ is a constant giving the speed of wave propogation, and $A$, $B$, $C$, and $D$ are constants.

This is of course easy enough to define, especially since Mathematica has a handy BesselJZero function:

BesselZeros = N@Table[BesselJZero[m, n], {m, 0, 5}, {n, 1, 5}];
?[m_, n_] := BesselZeros[[m + 1, n]];
u[m_, n_, r_, ?_, t_, c_, A_, B_, C_, D_] :=
  (A Cos[c ?[m, n] t] + B Sin[c ?[m, n] t]) 
    BesselJ[m, ?[m, n] r] (C Cos[m ?] + D Sin[m ?]); 

So then I just took an (automatically generated) triangulation of the disk and evaluated the above function u (with various more or less arbitrary choices of parameters) on the vertices. Here's the code:

 {m = 1,
  n = 2,
  k = 3,
  c = 5,
  cols, mesh, planarverts, drumverts, lines, cl},
 cols = RGBColor /@ {"#08D9D6", "#FF2E63", "#252A34"};
 mesh = DiscretizeRegion[Disk[], MaxCellMeasure -> .009];
 planarverts = MeshCoordinates[mesh];
 lines = MeshCells[mesh, 1];
  drumverts = Append[#, 1.5 E^(-k t) u[m, n, Norm[#], ArcTan[#[[1]], #[[2]]], t, c, 1/2, 0, 1/2, 0]] & /@ planarverts;
  cl = Blend[cols[[;; 2]], Abs[#[[3]]]/.2] & /@ drumverts;
    {Thickness[.004], Append[#, VertexColors -> Automatic] & /@ lines},
    VertexColors -> cl
   PlotRange -> 1, Boxed -> False, Axes -> None, 
   ImageSize -> {540, 405}, ViewAngle -> ?/10, 
   ViewCenter -> {1/2, 1/2, .46}, Background -> cols[[-1]]
  {t, 0., 2 ?/?[m, n]}]
3 Replies
Posted 4 years ago

I'm glad you used the idea. :) Normally I'd use a polar mesh to depict this, but I think the triangulated circle looks great here. Makes it look like a funky trampoline.


Yes, I definitely started with a polar mesh, but it wasn't quite working for me, so I went for something a little more asymmetrical.

enter image description here - another post of yours has been selected for the Staff Picks group, congratulations !

We are happy to see you at the top of the "Featured Contributor" board. Thank you for your wonderful contributions, and please keep them coming!

Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract