Linear and angular spring simulation

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
5 replies · 4K views
account
Messages
2
Reaction score
0
Hello,

I am trying to implement a simple simulation of a point mass connected to a linear and to an angular spring. I thought this would be very easy, basically just integrating these two equations:

[tex]mr''=-k_l(r-L)-c_lr'[/tex]
[tex]m\theta''=-k_a(\theta-\alpha)-c_a\theta'[/tex]

These are in polar coordinates [tex](r,\theta)[/tex], where [tex]k_l,c_l,L[/tex] are the stiffness, damping coefficient and rest length of the linear spring and [tex]k_a,c_a,\alpha[/tex] - of the angular spring.

It looks like it works correctly but then I realized that it is wrong. For example, with initial conditions [tex]r'(0)=0,r(0)=L[/tex] the point will never change its distance from the origin no matter what the angular speed is, so there is no centrifugal force... This is obvious in hindsight because the two equations are completely independent.

So now I'm stuck and not really sure what I'm missing here. Any help is appreciated.
 
Physics news on Phys.org
You could calculate motion in Cartesian coordinate system (x,y). You can still calculate the force in polar coordinate system and then transform it to Cartesian.
 
It is also possible to calculate in polar coordinates, but one must correctly calculate
acceleration componets in radial and tangential direction. In this case you start with
position vector (rcos(fi),rsin(fi)), take a second time derivative and then split it into radial and tangential component. Since polar coordinates are not straight, an expression with second time derivative of fi (centrifugal force) also appears in r component of force and an expression with time derivative of r (Coriolis force) appears in fi component of force.
 
I have the answer to this (I think) I solved it using Laplace transforms. It's a loooong answer though, so email me if you want the equations. brian.kernan@gmail.com
 
Lojzek said:
You could calculate motion in Cartesian coordinate system (x,y). You can still calculate the force in polar coordinate system and then transform it to Cartesian.

I prefer to calculate in polar coordinates because there is a problem with calculating [tex]\theta[/tex] only from [tex](x,y)[/tex]. For example if I use [tex]\theta=\mbox{atan2}(y,x)[/tex] then if there is any oscillation outside of [tex][-\pi,\pi][/tex] the angle will wrap around and strange things happen.

Lojzek said:
It is also possible to calculate in polar coordinates, but one must correctly calculate acceleration componets in radial and tangential direction. In this case you start with position vector (rcos(fi),rsin(fi)), take a second time derivative and then split it into radial and tangential component. Since polar coordinates are not straight, an expression with second time derivative of fi (centrifugal force) also appears in r component of force and an expression with time derivative of r (Coriolis force) appears in fi component of force.

Ok, I just tried that. If I understand correctly I should write:

[tex]p=r(\cos \theta,\sin \theta)[/tex]
[tex]\hat{p}=r(-\sin \theta,\cos \theta)[/tex]
[tex]mp''=(-k_l(r-L)-c_lr')\frac{p}{r}+(-k_a(\theta-\alpha)-c_a\theta')\frac{\hat{p}}{r}[/tex]

Solving these for the forces I get the following equations:

[tex]m(r''-r\theta'^2)=-k_l(r-L)-c_lr'[/tex]
[tex]m(r\theta''+2r'\theta')=-k_a(\theta-\alpha)-c_a\theta'[/tex]

I implemented these and it seems to work correctly now. Does this look correct to you?

kernanb said:
I have the answer to this (I think) I solved it using Laplace transforms. It's a loooong answer though, so email me if you want the equations. brian.kernan@gmail.com

I wrote to you about this. I'm waiting for your reply and I will try to summarize it and post it here. Thanks.
 
account said:
Solving these for the forces I get the following equations:

[tex]m(r''-r\theta'^2)=-k_l(r-L)-c_lr'[/tex]
[tex]m(r\theta''+2r'\theta')=-k_a(\theta-\alpha)-c_a\theta'[/tex]
These equations are correct. If would you put [tex]m(-r\theta'^2)[/tex] to the other side of
the first equation, you would get centrifugal force. Similary you can get Coriolis force if you put [tex]m(2r'\theta')[/tex] to the other side of the second equation. These two pseudo forces must be added in a rotating coordinate system (with angular velocity [tex]\theta'[/tex]) if one wants to consider the system to be inertial.