I greatly enjoyed this recent video from StandUpMaths:

The set up is a hoop with a mass attached at one point. It’s rough so it rolls without slipping. It’s released with some angular momentum with the extra mass starting at the top. The question is whether the hoop loses contact with the ground as it rolls around. The original analysis from decades ago focused on a mass-less hoop and suggested that the hoop has to hop when the mass has rolled around just 90 degrees.

I wanted to see what it would take to model this. What I thought would be useful would be to use a Lagrange Multiplier technique so that I could easily check the normal force on the ground, watching to see if it ever goes to zero, as that’s when it would hop. If the normal force goes negative, that means the ground is pulling the hoop down. And the ground doesn’t usually do that.

## Math/physics setup

When you use Lagrange Multipliers, you tend to have more degrees of freedom in the problem. In fact you have the normal number of degrees of freedom (one in this case: $latex \theta) plus however many constraints you model with Lagrange Multipliers. I want to model both the normal force and the rolling-without-slipping force. For the normal force, my constraint is:

where r is the radius of the hoop and y is the y-component of the center of the hoop.

For the rolling-without-slipping constraint I use:

where x is the x-component of the center of the hoop and is the rotation angle. When the mass is at the top.

The kinetic energy is given by:

Where we treat the center of mass of the hoop as one free particle and the mass as another. Note, however, that we stipulate that the location of the mass is tied to the location of the center:

Then we just do the usual Euler Lagrange tricks and we’re off and running.

```
m=1;
mhoop=0;
r=1;
g=9.8;
omega=0.1;
xm[t_]:=x[t]+r Sin[th[t]];
ym[t_]:=y[t]+r Cos[th[t]];
KE=1/2 m (xm'[t]^2+ym'[t]^2)+1/2 mhoop (x'[t]^2+y'[t]^2)+1/2 (mhoop r^2) th'[t]^2;
PE=m g ym[t]+mhoop g y[t];
rollingConstraint=x[t]-r th[t];
normalConstraint=y[t]-r;
L=KE-PE;
el[a_]:=D[L,a[t]]-D[L,a'[t],t]+lmRolling[t] D[rollingConstraint,a[t]]+lmNormal[t] D[normalConstraint,a[t]]==0;
sol=First[NDSolve[{el/@{x,y,th},
x[0]==0,
y[0]==r,
th[0]==0,
x'[0]==r omega,
y'[0]==0,
th'[0]==omega,
D[rollingConstraint,t,t]==0,
D[normalConstraint,t,t]==0,
WhenEvent[lmNormal[t]==0,"StopIntegration"]},{x,y,th,lmNormal,lmRolling},{t,0,10}]];
tmax=sol[[1,2,1,1,2]]
```

The “WhenEvent” trick stops the integration right at the point of when the hoop would hop. I don’t always use that, you’ll see, in my animations below.

## Results

Here’s a plot of the normal force for the case of a truly massless hoop:

You see that it starts at 9.8 because the mass is 1kg and the ground is really just holding the hoop+mass up (remember that the hoop is massless). It’s not actually exactly 9.8, though, since right at the beginning there’s a non-zero angular speed, , and so the some of the gravity force needs to be dedicated to centripetal acceleration.

Here’s an animation that stops right at the point of hopping:

Now lets give the hoop just a little bit of mass: 0.01kg (so 100x less than the attached mass). Here’s a normal force plot showing that I allowed the simulation to go past the hopping point. Note that I don’t let it hop. Rather, I allow the normal force to go negative.

Here’s an animation of that setup:

Finally let’s consider a situation where the mass of the hoop equals the mass of the attached point. Here’s a normal force plot:

Note that it never goes to zero. Here’s an animation:

Cool, huh?

## Your thoughts?

I’d love to hear what you think. Here are some starters for you:

- This is cool! What I liked the most was . . .
- This is dumb! What you totally got wrong was . . .
- Wait, I thought you saw this on a math(s) youtube channel. This seems like physics.
- I don’t think that mass is undergoing circular motion, so saying that some of the gravity is providing a centripetal force doesn’t seem right.
- I suppose you’re not going to bother posting your code, are you?
- I can’t believe you insist on using a super expensive software package like Mathematica . . . wait, what did you say 3 posts ago?
- That youtube video talks about looking at when the hoop starts to slip. Couldn’t you do that by looking at your rolling Lagrange Multiplier and seeing if it gets larger than the expected friction?

I am going to have to blog this week. You are setting a great example with your daily blogging!