7
$\begingroup$

If you have a large multivariable ODE system, and certain processes occur at a much smaller time scale, how can you implement a solver that uses smaller time steps for state variables involved in fast processes, and large time steps for state variables involved in slow processes, and ensure the result is still mathematically sound. For simplicity, we assume that we are using the explicit Euler solver method per state variable.

I ask because I am concerned, for example, about ensuring certain quantities remain conserved. There is a lot of literature about variable time step size depending on the error estimation, but I am asking about assuming different time steps for different state variables. This is an optimization to reduce runtime on a computing architecture that does not do well with runtime adaptive time stepping.

$\endgroup$
  • 1
    $\begingroup$ If you know something about the relative ranking of time scales for different variables, you could look at multirate methods for ODEs. $\endgroup$ – Geoff Oxberry Oct 23 '13 at 19:24
7
$\begingroup$

You will want to read up on operator splitting methods. In essence, in every "macro time step" you would treat fast processes by doing many "micro time steps" in one half of the algorithm, and then do a single macro time step for the slow processes in the other half.

For higher order, you will want to use what's known as "Strang splitting".

$\endgroup$
6
$\begingroup$

The term that you want to search for is multiple timestepping (see, for instance, [1-3]).

[1] http://www.cs.unc.edu/Research/nbody/pubs/external/Berne/tuckerman-berne-rossi91.pdf

[2] http://www3.nd.edu/~izaguirr/papers/newM3paper.pdf

[3] http://arxiv.org/abs/1307.1167

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.