The answer is (just for the record, I discussed that with Vincent) :
In a 2nd order finite difference scheme for Newtons law, positions
and forces are defined at times t+Ndt, while velocities are defined
at times t+(N+1/2)dt. If everything was defined at times Ndt, it
would be a first order sheme.
v(t+0.5*dt) = v(t-0.5*dt) + a(t)*dt
p(t+dt) = p(t) + v(t+0.5*dt)*dt
Bruno
Vincent Richefeu a écrit :
(I re-send this mail because it didn't appear in yade-dev list...
sorry if you receive it for a second time)
Hi everybody,
This morning I had a look at the file LeapFrogPositionIntegrator.cpp
and I a little scarred of what I saw (I exaggerate of course).
Can someone enlighten me on that point:
If I translate the c++ code into human readable operations, I've got:
v(t+dt) = v(t) + a(t)*dt
p(t+dt) = p(t) + v(t+dt)*dt + getMove
1. The first thing that seems odd to me is the use of v(t+dt) in the
evaluation of p(t+dt). There's no great danger if the displacements
are small and slow. However, it is know that even a quasistatic load
may be accompanied by small localized dynamic crises. If there is
indeed a problem here, no big deal because reducing the time step is
enough to correct it. But it's a pity!
2. The second that I don't understand is the method getMove that
seems to return a force (!) I know, I am probably wrong. Can anyone
give me details on what this function returns ?
Thank you in advance for your helpful comments,
VR
_______________________________________________
Mailing list: https://launchpad.net/~yade-dev
Post to : yade-dev@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~yade-dev
More help : https://help.launchpad.net/ListHelp