Angular Momentum and the Moment of Inertia

Let me be clear—something isn’t working with my program.  However, I think the idea is solid. Also, by writing this I might be able to figure out my problem.

Two Forms of Angular Momentum

I’ll just just to the main point. I’m trying to make a connection between the two forms of angular momentum.  The first is the point-particle definition.  This says that the angular momentum of a point is defined as:

\vec{L} = \vec{r} \times \vec{p}

In this expression, L is the angular momentum, r is the position vector, and p is the linear momentum.

The other form of angular momentum is defined as:

\vec{L} = I\vec{\omega}

Here ω is the angular velocity vector for a rigid object and I is the moment of inertia tensor.

Ok, let’s get started.  I’ll begin with a simple case and move to more complicated stuff.

A free particle.

A particle has a mass m and moves with a constant velocity (no external forces).  What happens to the angular momentum?  Here is a python program for a free particle in which I also calculate the angular momentum.  This is just a picture – you need to go here to run it.

Trinket 2018-11-05 10-46-12.png

Here is a plot of the z-component of the angular momentum in this case.

Trinket 2018-11-05 10-48-10.png

Notice that it’s constant.  Oh, I assume you know about cross products—they are in vpython, so you don’t have to do it manually.

So, yes—angular momentum is conserved.  No big surprise there.  But what if you change the origin?  Is angular momentum still conserved?  Try it.

There is very little point looking at the moment of inertia.  I’ll do that next.

Single object constrained to circular motion.

I want to get an object moving in a circle—but I don’t want to make some crazy constraint.  This sounds like a job for THE SPRING.  Yes, I will model an object moving in circular motion by using a spring attached to the object and some stationary thingy.

Here is the code.  Here is what it looks like.

Nov-05-2018 11-19-46.gif

If you calculate the angular momentum (from the linear momentum), here is what you get.

Trinket 2018-11-05 11-21-20.png

It doesn’t look constant—but I think that’s just a rounding error.  Reminder: this is the angular momentum from \vec{L} = \vec{r} \times \vec{p}.  What if I use the moment of inertia and the angular velocity?  Do I get the same thing?

I can calculate the angular velocity as:

\vec{omega} = \frac{\vec{r} \times \vec{v}}{r^2}

For objects moving about a fixed axis, the moment of inertia is a scalar value that is calculated as:

I = \sum_i m_i r_i^2

Notice that if you put these two definitions together, you get (essentially):

I\vec{\omega} = \vec{r}\times \vec{p}

So it should work.

Two masses.

Using a stationary pivot point can cause some problems.  Since the pivot point is stationary, there must be some external forces on the system.  This means that calculating momentum and angular momentum can be difficult.

Here is the program.  Here is what it looks like.

Nov-05-2018 12-54-39.gif

Yes, these are two unequal masses but the center of mass is stationary.  Also, I will skip the graph, but angular momentum (the z-component) is constant.

Here is a different (but similar) version of the program in which I also calculate the moment of inertia version of the angular momentum.  Everything seems to work—until it doesn’t.

What happens if the center of mass of the system is not zero?  In this case, I need to redo the angular momentum calculation.  First, for the point model, it would be still be r cross p, but I can write it two ways:

\vec{L} = \vec{r}_1 \times \vec{p}_1 = \vec{r}_{com} \times \vec{p}_{com} + \vec{r}_{1r} \times \vec{p}_{1r} +\vec{r}_{2r} \times \vec{p}_{2r}

In this case, the 1r subscript means the position relative to the center of mass and the momentum relative to the center of mass.  The com subscript means center of mass.

For the moment of inertia method, I have:

\vec{L} = \vec{r}_{com} \times \vec{p}_{com} + I\vec{\omega}

But this is where I will stop. For some reason, I can’t get a constant angular momentum using the moment of inertia.  Here is the plot of the component of momentum for the case when the center of mass is moving.

GlowScript IDE 2018-11-05 15-08-36.png

I feel like I am making some silly mistake.  So, here are some notes and comments.

  • Maybe I am calculating the relative velocity incorrectly.
  • Maybe it has something to do with my definition of the angular velocity.
  • Note that the two masses can have slightly different angular velocities since this isn’t actually a rigid object—it’s just mostly rigid (stiff spring).
  • I feel like I have so many different programs, that I’m losing track of what works (that’s why I wrote this blog post).
  • What’s the next step?  Well, after getting this calculation to work—I have big plans.  The ultimate goal is to have a 4 mass rotator (4 masses connected by springs) and calculate the moment of inertia and the angular momentum.  I would be very happy if I could show that the angular velocity vector doesn’t have to be in the same direction as the angular momentum vector. That would be cool.

 

Working notes for my bouncing ball running model

I’ll be honest.  I had some problems getting my bouncing ball running model working.  Oh, here is the model.

https://www.wired.com/story/how-is-a-runner-like-a-bouncing-ball/

Basically, this models the speed of a running human by assuming they are bouncing ball.  When the human impacts the ground, there is some maximum impact force and an impact time.  The impact time decreases with horizontal velocity such that eventually, all the force is used in the vertical direction to keep the human off the ground long enough to switch feet in the air.  The end.

As I was making this model, I took some notes because I couldn’t get it to work.  Here are my notes.  Hopefully you can use this to see how to troubleshoot a program.

Running model notes

I think I mostly have it working:

http://www.glowscript.org/#/user/rhettallain/folder/blog_posts/program/runningbouncemodel/edit

Here is basically how it works.  Two big ideas:

  • Humans can push off the ground with some maximum force.  This force does two things – gets them off the ground and in the air so legs can move and pushes them forward
  • The contact time with the ground is small and gets smaller as horizontal speed increases
  • This means as the human speeds up, the ground force eventually gets to where it can only push up and not forward

Here is what it looks like so far

Here is a graph of speed vs. time

  • This model reaches a max speed of about 3.5 m/s in just a couple of strides – that doesn’t seem right
  • I think my Fv calc is wrong – it gives back the same speed not the needed vertical speed to get the stride time
  • Need to recalcualte Fv based on pfinal
  • If you want to be in the air for ts seconds, then your initial vertical velocity must be -g=dv/dt.  dv=g*dt dv = 2vstart. start=(½)gdt
  • Now to calculate the force. I know tc (contact time) so F = dp/dt = m*(vy2-vy1)/tc – this is the total force = Fv-mg so Fv = that stuff +mg

Something isn’t right.  Here is a plot of position vs. time

It’s getting higher and higher (and going lower – weird)

  • I’m getting stride (in air) times of 0.09 to 0.13 – that’s wrong

 

Ok – I think I know the problem.  I need to set the force push time loop and forget about while human.pos.y<R – I think that’s my problem

 

How about this

  1. Once human hits the ground – calculate Fv, Fx, and tc set tcount = 0
  2. While tcount < tc – set human.pos.y = ground. And set the forces
  3. When tcount = tc, turn off the forces and stop holding the person

 

It appears there is something wrong with my Fx.

  • Fx is some value for the first push – but after that it goes to zero and the Fv is maxed out.
  • Werid
  • There is a problem with both Fv and Fx

 

The problem is the time of impact – it gets too small such that the required force is HUGE

  • How about a min time – and it can’t go lower?

 

Fmax = m*2v/t

t=m*2*v/Fmax

 

I think the problem is that during the contact time, the horizontal force is too much so that the human ends up going faster than the theoretical speed.

 

I can use the time and force and velocity to estimate the average velocity and then recalculate the time

This is the paper

https://www.physiology.org/doi/pdf/10.1152/japplphysiol.00947.2009

It has this plot.

This shows a decrease in contact time with speed

Here is what I get for a fit

This gives a contact time function of

Although this “blows up” at v= 0.  Maybe I should say tc = 0.3612 for v < 2 and this expression for v>=2

End of notes – it finally worked.