| Copyright | Copyright (c) 2009-2017 David Sorokin <david.sorokin@gmail.com> | 
|---|---|
| License | BSD3 | 
| Maintainer | David Sorokin <david.sorokin@gmail.com> | 
| Stability | experimental | 
| Safe Haskell | None | 
| Language | Haskell2010 | 
Simulation.Aivika.Internal.Dynamics
Description
Tested with: GHC 8.0.1
This is an internal implementation module that should never be used directly.
The module defines the Dynamics monad representing a time varying polymorphic function. 
- newtype Dynamics a = Dynamics (Point -> IO a)
- class DynamicsLift m where
- invokeDynamics :: Point -> Dynamics a -> IO a
- runDynamicsInStartTime :: Dynamics a -> Simulation a
- runDynamicsInStopTime :: Dynamics a -> Simulation a
- runDynamicsInIntegTimes :: Dynamics a -> Simulation [IO a]
- runDynamicsInTime :: Double -> Dynamics a -> Simulation a
- runDynamicsInTimes :: [Double] -> Dynamics a -> Simulation [IO a]
- catchDynamics :: Exception e => Dynamics a -> (e -> Dynamics a) -> Dynamics a
- finallyDynamics :: Dynamics a -> Dynamics b -> Dynamics a
- throwDynamics :: Exception e => e -> Dynamics a
- time :: Dynamics Double
- isTimeInteg :: Dynamics Bool
- integIteration :: Dynamics Int
- integPhase :: Dynamics Int
- traceDynamics :: String -> Dynamics a -> Dynamics a
Dynamics
A value in the Dynamics monad represents a polymorphic time varying function.
Instances
class DynamicsLift m where Source #
A type class to lift the Dynamics computations to other computations.
Minimal complete definition
Methods
liftDynamics :: Dynamics a -> m a Source #
Lift the specified Dynamics computation to another computation.
runDynamicsInStartTime :: Dynamics a -> Simulation a Source #
Run the Dynamics computation in the initial time point.
runDynamicsInStopTime :: Dynamics a -> Simulation a Source #
Run the Dynamics computation in the final time point.
runDynamicsInIntegTimes :: Dynamics a -> Simulation [IO a] Source #
Run the Dynamics computation in all integration time points.
runDynamicsInTime :: Double -> Dynamics a -> Simulation a Source #
Run the Dynamics computation in the specified time point.
runDynamicsInTimes :: [Double] -> Dynamics a -> Simulation [IO a] Source #
Run the Dynamics computation in the specified time points.
Error Handling
catchDynamics :: Exception e => Dynamics a -> (e -> Dynamics a) -> Dynamics a Source #
Exception handling within Dynamics computations.
finallyDynamics :: Dynamics a -> Dynamics b -> Dynamics a Source #
A computation with finalization part like the finally function.
Simulation Time
isTimeInteg :: Dynamics Bool Source #
Whether the current time is an integration time.
integIteration :: Dynamics Int Source #
Return the integration iteration closest to the current simulation time.
integPhase :: Dynamics Int Source #
Return the integration phase for the current simulation time.
 It is (-1) for non-integration time points.