Fictitious Forces in the Rotating Frame

boogabooga

Bug Crusher
Joined
Apr 16, 2011
Messages
3,010
Reaction score
16
Points
63
I’m building a spreadsheet simulation of a multi-stage rocket launch from surface to orbit accounting for variable thrust, drag, gravity, mass loss, the rotation of the earth, etc. My goal is to create a simulation that can be used to prototype pitch and thrust profiles that can be used for example to write multistage guidance files, LaunchMFD vehicle-specific pitch profiles, to help find minPitch for Velcro Rockets, to write LUA launch scripts, or to help developers build their own autopilots. I hope to remove some of the “guess-and-check” time that goes into experimenting within Orbiter.
The pitch is relative to the surface, as I understand most Orbiter pitch programs to be- I think that this is called “local horizontal.” So, I’m integrating the forces on the vehicle and keeping track of the state of the rocket- altitude, horizontal velocity, and vertical velocity, as a function of time. Obviously, the problem that arises is that the earth is actually round. The type of analysis that I am doing lends itself to analysis in a frame of reference that rotates at the same rate as the rocket. I’m trying to do this:



So I’m using the horizontal velocity as the tangential velocity, with which I can calculate the rotational velocity (omega) of the frame. To calculate state in the rotating frame, I’m trying to add the so-called “fictitious forces,” centrifugal, Coriolis, and Euler. [ame="http://en.wikipedia.org/wiki/Rotating_reference_frame"]Rotating reference frame - Wikipedia, the free encyclopedia[/ame] Now, I would have thought that the analysis of a rocket launch in the rocket’s frame of reference would be an intuitive analysis, and I expected there to be examples on the internet. I was wrong. I have only found examples of rotating frames using solid circular disks or spheres (such as Earth). Most of what I found regarding spaceflight was for perfectly circular orbits, which isn’t too much of a problem, or chastising arguments that the “fictitious” forces “do not exist” and I should be considering the real centripetal force only in an inertial reference frame. O.K. I am not interested in switching frames of references, or converting my state into orbital elements, or anything like that. I am interested in correctly accounting for the “fictitious” forces that exist in my rotating reference frame. These are the forces as I understand them:



The centrifugal force is easy enough. I use the current horizontal (tangential) velocity squared divided the current radius. The acceleration multiplied by the time-step is applied to the vertical (radial) velocity. I’m fairly convinced that this part is correct.

However, when free from external forces, the tangential velocity does not change. This is where the Coriolis force comes in. Since my frame of reference rotates with the spacecraft, the only velocity in the rotating frame is vertical (I think). (What I call the tangential velocity is really just determining the angular velocity of the frame). So, I multiply -2 times the current angular velocity (rad/sec) times the current vertical (i.e. radial) velocity. (The angle between the rotation axis and the radial direction is 90 deg, so sin(90) = 1 in the vector cross product). The acceleration multiplied by the time-step is applied to the tangential velocity, since this is the mutually perpendicular to the rotation axis and the radial.

Coriolis + centrifugal effects produce a very “orbit-like” result: the path has a clear apoapis and a periapsis, it decelerates when vertical velocity is positive and vice versa, etc. But, the “orbit” is not quite correct.

What I think is happening is that the Coriolis force is acting in the tangential direction, so it is slowing/speeding the rotation of the reference frame. This is where the Euler force should come in (I think). I’ve tried first order and second order backward differencing schemes to calculate the instantaneous change in angular velocity with time. I multiply this by the current radius, since (I think) that this is the displacement vector in the rotating frame. Again the radial direction is 90 deg to the rotation axis so sin(90) = 1 in the cross product. When the resulting Euler acceleration is applied to the tangential direction, the results are terrible. The “orbit” seems to be unbounded. I’m not sure if my problem is conceptual, numerical, or some other error. Perhaps the feedback of the Euler force influencing the future Euler force is a problem? Or perhaps I'm not applying the Coriolis force correctly since I am actually accelerating in the radial direction and not moving at a constant velocity. Has anyone worked with such a thing, or no where I can find a worked example?
Thanks.
 
Disclaimer: I prefer to work in inertial frames.

That said I like a challenge.

A couple thing stands out. One is where you measure your tangential velocity, that's not quite clear to me.

The other is this:

However, when free from external forces, the tangential velocity does not change. This is where the Coriolis force comes in. Since my frame of reference rotates with the spacecraft, the only velocity in the rotating frame is vertical (I think). (What I call the tangential velocity is really just determining the angular velocity of the frame). So, I multiply -2 times the current angular velocity (rad/sec) times the current vertical (i.e. radial) velocity. (The angle between the rotation axis and the radial direction is 90 deg, so sin(90) = 1 in the vector cross product). The acceleration multiplied by the time-step is applied to the tangential velocity, since this is the mutually perpendicular to the rotation axis and the radial.

So ok, I asked about the tangential velocity already because something seems weird/inconsistent in how you handle it.

But the other thing is that Coriolis force should be such that tangential velocity in the rotating frame you describe to be tracking the ship is constantly 0.

So here's something that seems a problem to me. You have one frame (the rotating one) in which your tangential velocity is constantly 0.

You also have another frame (inertial?) in which the Coriolis force does not exist (if frame inertial) to affect tangential velocity.

---------- Post added at 12:08 PM ---------- Previous post was at 11:18 AM ----------

After some internal deliberation, here's another way to put the questions above, maybe this will help.

Your "Coriolis force" does not exist in your rotating frame as a force. Hear me out.

Your frame is such that the ship always has 0 tangential velocity. Coriolis force will not change that. What -does- change is your frame's rate of rotation. Basically, you don't have a Coriolis force in your frame. You have a "Coriolis torque".

And so you should not apply Coriolis acceleration to your horizontal velocity (again, what you do here seems to make no sense. Apply a force computed in one frame to a velocity from another?).

Rather, you apply an angular acceleration to your rotating frame. Observation: angular acceleration will depend on the radius between your rocket and your frame's origin. This seems missing from your description.
 
O.K. Imagine that a rocket is launched from a flat earth. The rocket itself accumulates vertical and horizontal velocity based on integration of thrust, gravity, drag, etc. Except that that the earth is round. So, I take the horizontal velocity from the stationary frame as a "tangential" velocity, which I use ONLY to calculate the angular velocity (omega) of the rotating frame. Indeed, the tangential velocity is 0 in the rotating frame, and the rate of rotation of the frame is variable. But as I mentioned, the Euler force accounts for the variable rotation rate (the "Coriolis torque"). The Coriolis force is ALSO present because it acts perpendicular to the Vertical aka Radial Velocity.

Imagine a rocket at periapsis in an elliptical orbit, in the rocket's frame. The centrifugal force is greater than gravity, so the radial velocity increases. This induces a Coriolis force that acts perpendicular to the radius to slow down the rotation of the frame. But the very act of slowing down the frame induces an Euler force that partially counteracts the Coriolis force. :hmm:

I actually did get this to work reasonably well by exactly halving my Euler force. So I missed a factor of two or a Sin30 or something, not sure. But I think I have it compensated for. Reducing the time step also helped, as did calculating the derivative in the Euler force by second-order rearward difference instead of first order. I can predict the apoapsis and periapsis to within about +-3 km using a rotating frame analysis.
 
Hm. I don't think you understood what I was saying. And "halving" the Euler force just sounds like a quick hack, which I expect will fail for at least some trajectories.

So I'll ask again. What do you apply your Coriolis force to?
 
The Coriolis force acts on the rocket, and in the tangential direction. The horizontal velocity of the ship and the angular velocity of the frame really just describe the same thing. As the rotation slows/speeds up, the Euler force responds.

And the "hack" seems to be able to predict apoapsis height and periapsis height of every elliptical orbit that I test it with, as well as the period to within 1 second, based on conversion of the state to orbital elements. It also seems to predict an escape trajectory.
 
If it actually works, then all's well. I have my doubts about what you describe here, but that's probably because of it not being clear enough for me.

For example, your Coriolis force acting on the rocket horizontal velocity. Horizontal velocity in which frame?
 
There is a horizontal velocity in the stationary frame.

I calculate omega of the rotating frame by instantaneous "horizontal" velocity / instantaneous radius.

A Coriolis force is needed because of radial velocity components. This MUST act perpendicular to both the rotation axis and the radial direction. That is the tangential or "horizontal" direction. So I apply the force to the rocket in the "horizontal" direction on the "horizontal" velocity, which speeds/slows the rotational frame by V/r, then the Euler force is induced because of the change in omega.

Since I constantly calculate r, I can interchange between "horizontal" velocity and omega. They are really the same thing. (The horizontal velocity in the stationary frame IS the angular velocity in the rotating frame times the radius).

I am interested to know where the 1/2 comes from...
 
Last edited:
So am I correct in saying that you apply the Coriolis force to the horizontal velocity in the stationary frame?

EDIT: *cough*, ok, in saying that you apply the acceleration resulting from Coriolis force to the horizontal velocity in the stationary frame.
 
Last edited:
I guess. But in a way there is never really a stationary frame. :hmm:
 
The Coriolis force is a "fictitious force". What magnitude do these forces have in an inertial frame?
 
I see where you are going with applying fictitious forces in an inertial frame. No force!


What else can you apply Coriolis force to? You know intuitively that in Orbit in your frame of reference, as your radial velocity increases, your orbital velocity decreases. (Euler force goes the other way.)

I think my assumption is that applying the Coriolis and Euler acceleration on the "horizontal" velocity will convert to to proper omega in the rotating frame. I should think about this some more.
 
I have no idea exactly what happens in what you're doing. If it works, maybe it's a two wrongs make a right kind of thing- I don't know, but it seems to me there's something wrong in your construction.

Like, yes, the Coriolis force being applied in an inertial frame.

Coriolis force exists in a rotating frame, yes. The question is -why- does it exist there. Basically, it exists because, while an object goes on its merry way, the frame rotates "beneath" it. The typical example is a ball floating inertially in a line above a rotating disk. In inertial frame, the ball goes in a line. To an observer on the edge of the disk, the ball appears to move curved sideways. That's why the disk observer needs a Coriolis force.

You could apply Coriolis force in a frame that rotates with the Earth- but then, the angular velocity you use is that of the Earth, not that of the rocket-tracking frame.

In your rocket-tracking frame however, things get a bit weird because the movement of the frame is linked with the rocket. The frame never moves "beneath" the rocket. If you had Coriolis force on the rocket, it should move it tangentially- but the frame is constrained so that this doesn't happen. So Coriolis force computed in your rocket-tracking frame cannot result in acceleration (in the rocket tracking frame) of the rocket.

Rather, what you (should?) do is you get your horizontal velocity for the rocket in some frame, which can either be inertial or rotating with the Earth, say, (and you only apply the forces relevant in that auxiliary frame) then based on that you adjust how your rocket-tracking frame looks.

OR, you need to pay attention to something else: that "forces" acting tangentially in your rocket-tracking frame are actually torques on the frame. Because, if you have a force acting sideways on your rocket in the rocket-tracking frame, it won't change the rocket's sideways motion in the tracking frame (it's constrained to 0). Rather, it changes the frame's motion.
 
I guess none of the details really matter, as long as the formula matches observations, and makes testable predictions.

I would be very interested if you could post the spreadsheet here so that we can take a closer look and see how well it works under various circumstances.
 
I think there is confusion as to why the Euler force exists. In your definition of the rotating frame, you have created a constraint that the tangential velocity (in the rotating frame) is zero. This means that all of the forces in this frame must combine together to ensure that this constraint is met. In mathematical terms this is a necessary condition.

Imagine if you will that you are sitting in a chair (should be easy to do). The chair is constraining your motion so that you aren't falling to the floor. Now there is at least one force acting on you in the form of weight (mass times gravity), and that force is trying to pull you towards the floor. But what is keeping your butt and the floor from getting together? The normal force that the chair is exerting on you. Furthermore, some of us weigh more than others and thus the chair is having to exert more force in order to ensure that the constraint on the motion is preserved.

What's happening with your rotating frame is that as the rocket moves, the rotating frame must increase or decrease its rotation rate however it needs to in order to ensure that the zero tangential velocity constraint is always satisfied. This means that the Euler force (which is dependent on angular acceleration) is taking whatever value it must in order to perfectly balance the Coriolis force (just like the chair's normal force had to take whatever value to balance the weight of the the person sitting in said chair).

In the absence of any external forces, setting the Coriolis force equal to the Euler force results in

[math]0 = -m\frac{d\omega}{dt}r-2m\omega\frac{dr}{dt}[/math]

If we multiply both sides by [math]r[/math] and divide by [math]-m[/math] then this necessary condition becomes

[math]\frac{d\omega}{dt}r^2+2\omega r\frac{dr}{dt} = \frac{d}{dt}\left(\omega r^2\right) = 0[/math]

which implies that [math]\omega r^2 = const.[/math]. With a little more work it can be shown that this constant is the magnitude of the specific angular momentum. When you add external forces, the angular momentum is no longer conserved, but the constraint remains. Therefore the Euler force (and hence angular acceleration of the rotating frame) must exist and must necessarily take on a value that perfectly balances the Coriolis and external force.

Now, in your simulation you are integrating the tangential velocity in the non-rotating frame ([math]V = \omega r[/math]). This leads to

[math]\frac{dV}{dt} = \frac{d}{dt}\left(\omega r\right) = \frac{d\omega}{dt}r+\omega\frac{dr}{dt}[/math]

Add and subtract [math]2\omega\frac{dr}{dt}[/math] from the right side to get

[math]\frac{dV}{dt} = \frac{d\omega}{dt}r+3\omega\frac{dr}{dt}+\left(-2\omega\frac{dr}{dt}\right)[/math]

Now the constraint requires that [math]F_{Coriolis} = -F_{Euler}[/math] which implies that [math]\omega\frac{dr}{dt} = -\frac{1}{2}\frac{d\omega}{dt}r[/math]. So we obtain

[math]\frac{dV}{dt} = \frac{d\omega}{dt}r-\frac{3}{2}\frac{d\omega}{dt}r+\left(-2\omega\frac{dr}{dt}\right) = \frac{1}{2}\left(-\frac{d\omega}{dt}r\right)+\left(-2\omega\frac{dr}{dt}\right) = \frac{1}{2}\left(\frac{F_{Euler}}{m}\right)+\left(\frac{F_{Coriolis}}{m}\right)[/math]

And that is why you were getting the correct results when you exactly halved your Euler force. Hope this helps.
 
Well, it's over 7 Mb right now. (Yes, 7Mb for a spreadsheet. Only a small amount of autoshapes). I might need to use it to demonstrate my experience using Excel in an interview first. I do plan to release at some point. I may release a watered-down version in the meantime.

I will say that I'm convinced that I am working in the correct frame however weird it might be; it's the frame that answers the question "what will surface MFD tell you your state is five minutes from now?"

And no, I'm not actually applying a fictitious force in the inertial frame, however poorly I explain it to sound that way. I'm simply using the Coriolis force in the rotating frame to determine how much to change the frame's rotation to maintain 0 velocity, then applying the Euler force. The rotating frame rotation changes by
(DV/r). The horizontal velocity in the inertial frame changes by the same DV. So it just looks like the fictitious force was applied in the stationary frame. It's consequence of the "frame torque" which I AM taking into account.
 
Back
Top