Copyright | Copyright (c) 2009-2014, David Sorokin <david.sorokin@gmail.com> |
---|---|

License | BSD3 |

Maintainer | David Sorokin <david.sorokin@gmail.com> |

Stability | experimental |

Safe Haskell | Safe-Inferred |

Language | Haskell2010 |

Tested with: GHC 7.8.3

This module defines the unboxed memo functions. The memoization creates such `DynamicsT`

computations, which values are cached in the integration time points. Then
these values are interpolated in all other time points.

- memoDynamics :: (Unboxed m e, MonadComp m) => Dynamics m e -> Simulation m (Dynamics m e)
- memo0Dynamics :: (Unboxed m e, MonadComp m) => Dynamics m e -> Simulation m (Dynamics m e)

# Documentation

memoDynamics :: (Unboxed m e, MonadComp m) => Dynamics m e -> Simulation m (Dynamics m e) Source

Memoize and order the computation in the integration time points using
the interpolation that knows of the Runge-Kutta method. The values are
calculated sequentially starting from `starttime`

.

memo0Dynamics :: (Unboxed m e, MonadComp m) => Dynamics m e -> Simulation m (Dynamics m e) Source

Memoize and order the computation in the integration time points using
the `discreteDynamics`

interpolation. It consumes less memory than the `memoDynamics`

function but it is not aware of the Runge-Kutta method. There is a subtle
difference when we request for values in the intermediate time points
that are used by this method to integrate. In general case you should
prefer the `memo0Dynamics`

function above `memoDynamics`

.