MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Re: want to modify NDSolve--molecular dynamics with mathematica

  • To: mathgroup at
  • Subject: [mg26427] Re: [mg26365] Re: want to modify NDSolve--molecular dynamics with mathematica
  • From: Jens-Peer Kuska <kuska at>
  • Date: Wed, 20 Dec 2000 00:21:47 -0500 (EST)
  • Organization: Universitaet Leipzig
  • References: <90v82t$> <> <zJE%5.114767$>
  • Sender: owner-wri-mathgroup at


funny idea. 
How often did you expect to restart the initial value
solver with say 10 particles in three dimensions, when
only one of the 30 coordinates cross a boundary ?

StoppingTest stops not exactly when the condition
is full filled. It stop a bit later. Than you have
to the exact time where the crossing take place,
extract the initial conditions for the restart
and save the truncated interpolation functions.
Since every call of NDSolve has a overhead (compile
the functions, extract the inital conditions ..)
you will end up with a incredible solwing down.

More over, the InterpolationFunction[] of all coordinates
will overlap a bit on every restarting time, you can't draw
them correctly because every pice can only used for a
small time interval and you have extract the time interval
to prevent the extrapolation.

The basic idea of molecular dynamics is that the
trajectories of the particles are useless. The basic
idea of NDSolve[] is, that the trajectories are
the most important result. It can't get together.

Additional one has to say that NDSolve[] use 
integration methods that don't care for so
important physical quatities like the energy
conservation. None of the integration methods
(Runge Kutta, Adams-Bashford/Adams-Multon or Gear)
is symplectic or can deal with algebraic constrains
like the momentum or energy conservation.
Even when the methods would be symplectic the
step size control of NDSolve[] will destroy the
time reversal symmetrie and the energie conservation.


Richard Gass wrote:
> Hi,
> There is a little known option to NDSolve called "StoppingTest". Rob
> Knapp talked about this option is his talk on NDSolve at the last
> developers conference. I believe that you can use StoppingTest to
> stop the solution when x[t]>a0 . You can then restart NDSolve after
> you have moved the atom.
> Jens-Peer Kuska wrote:
> >Hi,
> >
> >you can write your equation with Mod[x[t],a0]
> >but it will make the InterpolatingFunction[]s
> >returned by NDSolve[] unusable. Because
> >x[t] will jump back to for x>a0 and the
> >interpolation is useless.
> >
> >You must write your own initial value solver.
> >
> >Regards
> >   Jens
> >

  • Prev by Date: Re: ListPlot bug
  • Next by Date: RE: bug with Compile ?
  • Previous by thread: Re: Re: want to modify NDSolve--molecular dynamics with mathematica
  • Next by thread: Ritts algorithm