aivika-transformers-6.1.1: Transformers for the Aivika simulation library
CopyrightCopyright (c) 2009-2017 David Sorokin <david.sorokin@gmail.com>
LicenseBSD3
MaintainerDavid Sorokin <david.sorokin@gmail.com>
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

Simulation.Aivika.Trans.Dynamics.Memo

Description

Tested with: GHC 8.0.1

This module defines memo functions. The memoization creates such Dynamics computations, which values are cached in the integration time points. Then these values are interpolated in all other time points.

Synopsis

Documentation

class Monad m => MonadMemo m where Source #

A monad with the support of memoisation.

Methods

memoDynamics :: 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 :: 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.

iterateDynamics :: Dynamics m () -> Simulation m (Dynamics m ()) Source #

Iterate sequentially the dynamic process with side effects in the integration time points. It is equivalent to a call of the memo0Dynamics function but significantly more efficient, for the array is not created.

Instances

Instances details
MonadMemo IO Source #

The IO monad is an instance of the MonadMemo type class.

Instance details

Defined in Simulation.Aivika.IO.Dynamics.Memo

unzipDynamics :: MonadMemo m => Dynamics m (a, b) -> Simulation m (Dynamics m a, Dynamics m b) Source #

Memoize and unzip the computation of pairs, applying the memoDynamics function.

unzip0Dynamics :: MonadMemo m => Dynamics m (a, b) -> Simulation m (Dynamics m a, Dynamics m b) Source #

Memoize and unzip the computation of pairs, applying the memo0Dynamics function.