Stability | experimental |
---|---|
Maintainer | David Sorokin <david.sorokin@gmail.com> |
Safe Haskell | Safe-Inferred |
Tested with: GHC 7.6.3
The module defines the Simulation
monad representing a simulation run.
- data Simulation a
- class Monad m => SimulationLift m where
- liftSimulation :: Simulation a -> m a
- data Specs = Specs {
- spcStartTime :: Double
- spcStopTime :: Double
- spcDT :: Double
- spcMethod :: Method
- data Method
- = Euler
- | RungeKutta2
- | RungeKutta4
- runSimulation :: Simulation a -> Specs -> IO a
- runSimulations :: Simulation a -> Specs -> Int -> [IO a]
- catchSimulation :: Simulation a -> (IOException -> Simulation a) -> Simulation a
- finallySimulation :: Simulation a -> Simulation b -> Simulation a
- throwSimulation :: IOException -> Simulation a
- simulationIndex :: Simulation Int
- simulationCount :: Simulation Int
- simulationSpecs :: Simulation Specs
Simulation
data Simulation a Source
A value in the Simulation
monad represents something that
doesn't change within the simulation run but may change for
other runs.
This monad is ideal for representing the external parameters for the model, when the Monte-Carlo simulation is used. Also this monad is useful for defining some actions that should occur only once within the simulation run, for example, setting of the integral with help of recursive equations.
Monad Simulation | |
Functor Simulation | |
MonadFix Simulation | |
MonadIO Simulation | |
Eq (Simulation a) | |
Floating a => Floating (Simulation a) | |
Fractional a => Fractional (Simulation a) | |
Num a => Num (Simulation a) | |
Show (Simulation a) |
class Monad m => SimulationLift m whereSource
A type class to lift the simulation computations in other monads.
liftSimulation :: Simulation a -> m aSource
Lift the specified Simulation
computation in another monad.
It defines the simulation specs.
Specs | |
|
It defines the integration method.
Euler | Euler's method |
RungeKutta2 | the 2nd order Runge-Kutta method |
RungeKutta4 | the 4th order Runge-Kutta method |
runSimulation :: Simulation a -> Specs -> IO aSource
Run the simulation using the specified specs.
runSimulations :: Simulation a -> Specs -> Int -> [IO a]Source
Run the given number of simulations using the specified specs,
where each simulation is distinguished by its index simulationIndex
.
Error Handling
catchSimulation :: Simulation a -> (IOException -> Simulation a) -> Simulation aSource
Exception handling within Simulation
computations.
finallySimulation :: Simulation a -> Simulation b -> Simulation aSource
A computation with finalization part like the finally
function.
throwSimulation :: IOException -> Simulation aSource
Like the standard throw
function.
Utilities
simulationIndex :: Simulation IntSource
Return the run index for the current simulation.
simulationCount :: Simulation IntSource
Return the number of simulations currently run.
simulationSpecs :: Simulation SpecsSource
Return the simulation specs