packages feed

aivika 5.0.1 → 5.1

raw patch · 79 files changed

+585/−163 lines, 79 filesdep +binarydep +deepseqdep ~basePVP ok

version bump matches the API change (PVP)

Dependencies added: binary, deepseq

Dependency ranges changed: base

API changes (from Hackage documentation)

- Simulation.Aivika.Results: instance (GHC.Arr.Ix i, GHC.Show.Show i, Simulation.Aivika.Results.ResultComputing m) => Simulation.Aivika.Results.ResultProvider (m (GHC.Arr.Array i GHC.Types.Double))
- Simulation.Aivika.Results: instance (GHC.Arr.Ix i, GHC.Show.Show i, Simulation.Aivika.Results.ResultComputing m) => Simulation.Aivika.Results.ResultProvider (m (GHC.Arr.Array i GHC.Types.Int))
- Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultComputing m => Simulation.Aivika.Results.ResultProvider (m (Data.Vector.Vector GHC.Types.Double))
- Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultComputing m => Simulation.Aivika.Results.ResultProvider (m (Data.Vector.Vector GHC.Types.Int))
- Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultComputing m => Simulation.Aivika.Results.ResultProvider (m (Simulation.Aivika.Statistics.SamplingCounter GHC.Types.Double))
- Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultComputing m => Simulation.Aivika.Results.ResultProvider (m (Simulation.Aivika.Statistics.SamplingCounter GHC.Types.Int))
- Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultComputing m => Simulation.Aivika.Results.ResultProvider (m (Simulation.Aivika.Statistics.SamplingStats GHC.Types.Double))
- Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultComputing m => Simulation.Aivika.Results.ResultProvider (m (Simulation.Aivika.Statistics.SamplingStats GHC.Types.Int))
- Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultComputing m => Simulation.Aivika.Results.ResultProvider (m (Simulation.Aivika.Statistics.TimingCounter GHC.Types.Double))
- Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultComputing m => Simulation.Aivika.Results.ResultProvider (m (Simulation.Aivika.Statistics.TimingCounter GHC.Types.Int))
- Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultComputing m => Simulation.Aivika.Results.ResultProvider (m (Simulation.Aivika.Statistics.TimingStats GHC.Types.Double))
- Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultComputing m => Simulation.Aivika.Results.ResultProvider (m (Simulation.Aivika.Statistics.TimingStats GHC.Types.Int))
- Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultComputing m => Simulation.Aivika.Results.ResultProvider (m GHC.Base.String)
- Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultComputing m => Simulation.Aivika.Results.ResultProvider (m GHC.Types.Double)
- Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultComputing m => Simulation.Aivika.Results.ResultProvider (m GHC.Types.Int)
- Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultComputing m => Simulation.Aivika.Results.ResultProvider (m [GHC.Types.Double])
- Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultComputing m => Simulation.Aivika.Results.ResultProvider (m [GHC.Types.Int])
- Simulation.Aivika.Results.Transform: instance Simulation.Aivika.Results.Transform.ResultTransformer Simulation.Aivika.Results.ResultTransform
+ Simulation.Aivika.Activity: resetActivity :: Activity s a b -> Event ()
+ Simulation.Aivika.Arrival: resetArrivalTimer :: ArrivalTimer -> Event ()
+ Simulation.Aivika.Composite: class CompositeLift m
+ Simulation.Aivika.Composite: instance Simulation.Aivika.Composite.CompositeLift Simulation.Aivika.Composite.Composite
+ Simulation.Aivika.Composite: liftComposite :: CompositeLift m => Composite a -> m a
+ Simulation.Aivika.Gate: invertGate :: Gate -> Event ()
+ Simulation.Aivika.Generator: [generateSequenceNo] :: Generator -> IO Int
+ Simulation.Aivika.Internal.Arrival: Arrival :: a -> Double -> Maybe Double -> Arrival a
+ Simulation.Aivika.Internal.Arrival: [arrivalDelay] :: Arrival a -> Maybe Double
+ Simulation.Aivika.Internal.Arrival: [arrivalTime] :: Arrival a -> Double
+ Simulation.Aivika.Internal.Arrival: [arrivalValue] :: Arrival a -> a
+ Simulation.Aivika.Internal.Arrival: data Arrival a
+ Simulation.Aivika.Internal.Arrival: instance GHC.Classes.Eq a => GHC.Classes.Eq (Simulation.Aivika.Internal.Arrival.Arrival a)
+ Simulation.Aivika.Internal.Arrival: instance GHC.Classes.Ord a => GHC.Classes.Ord (Simulation.Aivika.Internal.Arrival.Arrival a)
+ Simulation.Aivika.Internal.Arrival: instance GHC.Show.Show a => GHC.Show.Show (Simulation.Aivika.Internal.Arrival.Arrival a)
+ Simulation.Aivika.Internal.Cont: CancelChildAfterParent :: ContCancellation
+ Simulation.Aivika.Internal.Cont: CancelInIsolation :: ContCancellation
+ Simulation.Aivika.Internal.Cont: CancelParentAfterChild :: ContCancellation
+ Simulation.Aivika.Internal.Cont: CancelTogether :: ContCancellation
+ Simulation.Aivika.Internal.Cont: Cont :: (ContParams a -> Event ()) -> Cont a
+ Simulation.Aivika.Internal.Cont: ContCancellationInitiating :: ContEvent
+ Simulation.Aivika.Internal.Cont: ContPreemptionBeginning :: ContEvent
+ Simulation.Aivika.Internal.Cont: ContPreemptionEnding :: ContEvent
+ Simulation.Aivika.Internal.Cont: catchCont :: Exception e => Cont a -> (e -> Cont a) -> Cont a
+ Simulation.Aivika.Internal.Cont: contAwait :: Signal a -> Cont a
+ Simulation.Aivika.Internal.Cont: contCanceled :: ContParams a -> IO Bool
+ Simulation.Aivika.Internal.Cont: contCancellationActivated :: ContId -> IO Bool
+ Simulation.Aivika.Internal.Cont: contCancellationBind :: ContId -> [ContId] -> Event DisposableEvent
+ Simulation.Aivika.Internal.Cont: contCancellationConnect :: ContId -> ContCancellation -> ContId -> Event DisposableEvent
+ Simulation.Aivika.Internal.Cont: contCancellationInitiate :: ContId -> Event ()
+ Simulation.Aivika.Internal.Cont: contCancellationInitiated :: ContId -> Event Bool
+ Simulation.Aivika.Internal.Cont: contCancellationInitiating :: ContId -> Signal ()
+ Simulation.Aivika.Internal.Cont: contParallel :: [(Cont a, ContId)] -> Cont [a]
+ Simulation.Aivika.Internal.Cont: contParallel_ :: [(Cont a, ContId)] -> Cont ()
+ Simulation.Aivika.Internal.Cont: contPreemptionBegin :: ContId -> Event ()
+ Simulation.Aivika.Internal.Cont: contPreemptionBeginning :: ContId -> Signal ()
+ Simulation.Aivika.Internal.Cont: contPreemptionBegun :: ContId -> Event Bool
+ Simulation.Aivika.Internal.Cont: contPreemptionEnd :: ContId -> Event ()
+ Simulation.Aivika.Internal.Cont: contPreemptionEnding :: ContId -> Signal ()
+ Simulation.Aivika.Internal.Cont: contSignal :: ContId -> Signal ContEvent
+ Simulation.Aivika.Internal.Cont: data ContCancellation
+ Simulation.Aivika.Internal.Cont: data ContEvent
+ Simulation.Aivika.Internal.Cont: data ContId
+ Simulation.Aivika.Internal.Cont: data ContParams a
+ Simulation.Aivika.Internal.Cont: data FrozenCont a
+ Simulation.Aivika.Internal.Cont: finallyCont :: Cont a -> Cont b -> Cont a
+ Simulation.Aivika.Internal.Cont: freezeCont :: ContParams a -> Event (FrozenCont a)
+ Simulation.Aivika.Internal.Cont: freezeContReentering :: ContParams a -> a -> Event () -> Event (FrozenCont a)
+ Simulation.Aivika.Internal.Cont: instance Control.Monad.IO.Class.MonadIO Simulation.Aivika.Internal.Cont.Cont
+ Simulation.Aivika.Internal.Cont: instance GHC.Base.Applicative Simulation.Aivika.Internal.Cont.Cont
+ Simulation.Aivika.Internal.Cont: instance GHC.Base.Functor Simulation.Aivika.Internal.Cont.Cont
+ Simulation.Aivika.Internal.Cont: instance GHC.Base.Monad Simulation.Aivika.Internal.Cont.Cont
+ Simulation.Aivika.Internal.Cont: instance GHC.Classes.Eq Simulation.Aivika.Internal.Cont.ContEvent
+ Simulation.Aivika.Internal.Cont: instance GHC.Classes.Eq Simulation.Aivika.Internal.Cont.ContId
+ Simulation.Aivika.Internal.Cont: instance GHC.Classes.Ord Simulation.Aivika.Internal.Cont.ContEvent
+ Simulation.Aivika.Internal.Cont: instance GHC.Show.Show Simulation.Aivika.Internal.Cont.ContEvent
+ Simulation.Aivika.Internal.Cont: instance Simulation.Aivika.Internal.Dynamics.DynamicsLift Simulation.Aivika.Internal.Cont.Cont
+ Simulation.Aivika.Internal.Cont: instance Simulation.Aivika.Internal.Event.EventLift Simulation.Aivika.Internal.Cont.Cont
+ Simulation.Aivika.Internal.Cont: instance Simulation.Aivika.Internal.Parameter.ParameterLift Simulation.Aivika.Internal.Cont.Cont
+ Simulation.Aivika.Internal.Cont: instance Simulation.Aivika.Internal.Simulation.SimulationLift Simulation.Aivika.Internal.Cont.Cont
+ Simulation.Aivika.Internal.Cont: invokeCont :: ContParams a -> Cont a -> Event ()
+ Simulation.Aivika.Internal.Cont: newContId :: Simulation ContId
+ Simulation.Aivika.Internal.Cont: newtype Cont a
+ Simulation.Aivika.Internal.Cont: reenterCont :: ContParams a -> a -> Event ()
+ Simulation.Aivika.Internal.Cont: rerunCont :: Cont a -> ContId -> Cont a
+ Simulation.Aivika.Internal.Cont: resumeCont :: ContParams a -> a -> Event ()
+ Simulation.Aivika.Internal.Cont: resumeECont :: ContParams a -> SomeException -> Event ()
+ Simulation.Aivika.Internal.Cont: runCont :: Cont a -> (a -> Event ()) -> (SomeException -> Event ()) -> (() -> Event ()) -> ContId -> Bool -> Event ()
+ Simulation.Aivika.Internal.Cont: spawnCont :: ContCancellation -> Cont () -> ContId -> Cont ()
+ Simulation.Aivika.Internal.Cont: substituteCont :: ContParams a -> (a -> Event ()) -> ContParams a
+ Simulation.Aivika.Internal.Cont: throwCont :: IOException -> Cont a
+ Simulation.Aivika.Internal.Cont: traceCont :: String -> Cont a -> Cont a
+ Simulation.Aivika.Internal.Cont: transferCont :: Cont () -> Cont a
+ Simulation.Aivika.Internal.Cont: unfreezeCont :: FrozenCont a -> Event (Maybe (ContParams a))
+ Simulation.Aivika.Internal.Dynamics: Dynamics :: (Point -> IO a) -> Dynamics a
+ Simulation.Aivika.Internal.Dynamics: catchDynamics :: Exception e => Dynamics a -> (e -> Dynamics a) -> Dynamics a
+ Simulation.Aivika.Internal.Dynamics: class DynamicsLift m
+ Simulation.Aivika.Internal.Dynamics: finallyDynamics :: Dynamics a -> Dynamics b -> Dynamics a
+ Simulation.Aivika.Internal.Dynamics: instance Control.Monad.Fix.MonadFix Simulation.Aivika.Internal.Dynamics.Dynamics
+ Simulation.Aivika.Internal.Dynamics: instance Control.Monad.IO.Class.MonadIO Simulation.Aivika.Internal.Dynamics.Dynamics
+ Simulation.Aivika.Internal.Dynamics: instance GHC.Base.Applicative Simulation.Aivika.Internal.Dynamics.Dynamics
+ Simulation.Aivika.Internal.Dynamics: instance GHC.Base.Functor Simulation.Aivika.Internal.Dynamics.Dynamics
+ Simulation.Aivika.Internal.Dynamics: instance GHC.Base.Monad Simulation.Aivika.Internal.Dynamics.Dynamics
+ Simulation.Aivika.Internal.Dynamics: instance GHC.Classes.Eq (Simulation.Aivika.Internal.Dynamics.Dynamics a)
+ Simulation.Aivika.Internal.Dynamics: instance GHC.Float.Floating a => GHC.Float.Floating (Simulation.Aivika.Internal.Dynamics.Dynamics a)
+ Simulation.Aivika.Internal.Dynamics: instance GHC.Num.Num a => GHC.Num.Num (Simulation.Aivika.Internal.Dynamics.Dynamics a)
+ Simulation.Aivika.Internal.Dynamics: instance GHC.Real.Fractional a => GHC.Real.Fractional (Simulation.Aivika.Internal.Dynamics.Dynamics a)
+ Simulation.Aivika.Internal.Dynamics: instance GHC.Show.Show (Simulation.Aivika.Internal.Dynamics.Dynamics a)
+ Simulation.Aivika.Internal.Dynamics: instance Simulation.Aivika.Internal.Dynamics.DynamicsLift Simulation.Aivika.Internal.Dynamics.Dynamics
+ Simulation.Aivika.Internal.Dynamics: instance Simulation.Aivika.Internal.Parameter.ParameterLift Simulation.Aivika.Internal.Dynamics.Dynamics
+ Simulation.Aivika.Internal.Dynamics: instance Simulation.Aivika.Internal.Simulation.SimulationLift Simulation.Aivika.Internal.Dynamics.Dynamics
+ Simulation.Aivika.Internal.Dynamics: integIteration :: Dynamics Int
+ Simulation.Aivika.Internal.Dynamics: integPhase :: Dynamics Int
+ Simulation.Aivika.Internal.Dynamics: invokeDynamics :: Point -> Dynamics a -> IO a
+ Simulation.Aivika.Internal.Dynamics: isTimeInteg :: Dynamics Bool
+ Simulation.Aivika.Internal.Dynamics: liftDynamics :: DynamicsLift m => Dynamics a -> m a
+ Simulation.Aivika.Internal.Dynamics: newtype Dynamics a
+ Simulation.Aivika.Internal.Dynamics: runDynamicsInIntegTimes :: Dynamics a -> Simulation [IO a]
+ Simulation.Aivika.Internal.Dynamics: runDynamicsInStartTime :: Dynamics a -> Simulation a
+ Simulation.Aivika.Internal.Dynamics: runDynamicsInStopTime :: Dynamics a -> Simulation a
+ Simulation.Aivika.Internal.Dynamics: runDynamicsInTime :: Double -> Dynamics a -> Simulation a
+ Simulation.Aivika.Internal.Dynamics: runDynamicsInTimes :: [Double] -> Dynamics a -> Simulation [IO a]
+ Simulation.Aivika.Internal.Dynamics: throwDynamics :: Exception e => e -> Dynamics a
+ Simulation.Aivika.Internal.Dynamics: time :: Dynamics Double
+ Simulation.Aivika.Internal.Dynamics: traceDynamics :: String -> Dynamics a -> Dynamics a
+ Simulation.Aivika.Internal.Event: CurrentEvents :: EventProcessing
+ Simulation.Aivika.Internal.Event: CurrentEventsOrFromPast :: EventProcessing
+ Simulation.Aivika.Internal.Event: DisposableEvent :: Event () -> DisposableEvent
+ Simulation.Aivika.Internal.Event: EarlierEvents :: EventProcessing
+ Simulation.Aivika.Internal.Event: EarlierEventsOrFromPast :: EventProcessing
+ Simulation.Aivika.Internal.Event: Event :: (Point -> IO a) -> Event a
+ Simulation.Aivika.Internal.Event: [disposeEvent] :: DisposableEvent -> Event ()
+ Simulation.Aivika.Internal.Event: cancelEvent :: EventCancellation -> Event ()
+ Simulation.Aivika.Internal.Event: catchEvent :: Exception e => Event a -> (e -> Event a) -> Event a
+ Simulation.Aivika.Internal.Event: class EventLift m
+ Simulation.Aivika.Internal.Event: data EventCancellation
+ Simulation.Aivika.Internal.Event: data EventProcessing
+ Simulation.Aivika.Internal.Event: enqueueEvent :: Double -> Event () -> Event ()
+ Simulation.Aivika.Internal.Event: enqueueEventWithCancellation :: Double -> Event () -> Event EventCancellation
+ Simulation.Aivika.Internal.Event: enqueueEventWithIntegTimes :: Event () -> Event ()
+ Simulation.Aivika.Internal.Event: enqueueEventWithPoints :: [Point] -> Event () -> Event ()
+ Simulation.Aivika.Internal.Event: enqueueEventWithStartTime :: Event () -> Event ()
+ Simulation.Aivika.Internal.Event: enqueueEventWithStopTime :: Event () -> Event ()
+ Simulation.Aivika.Internal.Event: enqueueEventWithTimes :: [Double] -> Event () -> Event ()
+ Simulation.Aivika.Internal.Event: eventCancelled :: EventCancellation -> Event Bool
+ Simulation.Aivika.Internal.Event: eventFinished :: EventCancellation -> Event Bool
+ Simulation.Aivika.Internal.Event: eventQueueCount :: Event Int
+ Simulation.Aivika.Internal.Event: finallyEvent :: Event a -> Event b -> Event a
+ Simulation.Aivika.Internal.Event: instance Control.Monad.Fix.MonadFix Simulation.Aivika.Internal.Event.Event
+ Simulation.Aivika.Internal.Event: instance Control.Monad.IO.Class.MonadIO Simulation.Aivika.Internal.Event.Event
+ Simulation.Aivika.Internal.Event: instance GHC.Base.Applicative Simulation.Aivika.Internal.Event.Event
+ Simulation.Aivika.Internal.Event: instance GHC.Base.Functor Simulation.Aivika.Internal.Event.Event
+ Simulation.Aivika.Internal.Event: instance GHC.Base.Monad Simulation.Aivika.Internal.Event.Event
+ Simulation.Aivika.Internal.Event: instance GHC.Base.Monoid Simulation.Aivika.Internal.Event.DisposableEvent
+ Simulation.Aivika.Internal.Event: instance GHC.Classes.Eq Simulation.Aivika.Internal.Event.EventProcessing
+ Simulation.Aivika.Internal.Event: instance GHC.Classes.Ord Simulation.Aivika.Internal.Event.EventProcessing
+ Simulation.Aivika.Internal.Event: instance GHC.Show.Show Simulation.Aivika.Internal.Event.EventProcessing
+ Simulation.Aivika.Internal.Event: instance Simulation.Aivika.Internal.Dynamics.DynamicsLift Simulation.Aivika.Internal.Event.Event
+ Simulation.Aivika.Internal.Event: instance Simulation.Aivika.Internal.Event.EventLift Simulation.Aivika.Internal.Event.Event
+ Simulation.Aivika.Internal.Event: instance Simulation.Aivika.Internal.Parameter.ParameterLift Simulation.Aivika.Internal.Event.Event
+ Simulation.Aivika.Internal.Event: instance Simulation.Aivika.Internal.Simulation.SimulationLift Simulation.Aivika.Internal.Event.Event
+ Simulation.Aivika.Internal.Event: invokeEvent :: Point -> Event a -> IO a
+ Simulation.Aivika.Internal.Event: liftEvent :: EventLift m => Event a -> m a
+ Simulation.Aivika.Internal.Event: memoEvent :: Event a -> Simulation (Event a)
+ Simulation.Aivika.Internal.Event: memoEventInTime :: Event a -> Simulation (Event a)
+ Simulation.Aivika.Internal.Event: newtype DisposableEvent
+ Simulation.Aivika.Internal.Event: newtype Event a
+ Simulation.Aivika.Internal.Event: retryEvent :: String -> Event a
+ Simulation.Aivika.Internal.Event: runEvent :: Event a -> Dynamics a
+ Simulation.Aivika.Internal.Event: runEventInStartTime :: Event a -> Simulation a
+ Simulation.Aivika.Internal.Event: runEventInStopTime :: Event a -> Simulation a
+ Simulation.Aivika.Internal.Event: runEventWith :: EventProcessing -> Event a -> Dynamics a
+ Simulation.Aivika.Internal.Event: throwEvent :: Exception e => e -> Event a
+ Simulation.Aivika.Internal.Event: traceEvent :: String -> Event a -> Event a
+ Simulation.Aivika.Internal.Event: yieldEvent :: Event () -> Event ()
+ Simulation.Aivika.Internal.Parameter: Parameter :: (Run -> IO a) -> Parameter a
+ Simulation.Aivika.Internal.Parameter: catchParameter :: Exception e => Parameter a -> (e -> Parameter a) -> Parameter a
+ Simulation.Aivika.Internal.Parameter: class ParameterLift m
+ Simulation.Aivika.Internal.Parameter: dt :: Parameter Double
+ Simulation.Aivika.Internal.Parameter: finallyParameter :: Parameter a -> Parameter b -> Parameter a
+ Simulation.Aivika.Internal.Parameter: generatorParameter :: Parameter Generator
+ Simulation.Aivika.Internal.Parameter: instance Control.Monad.Fix.MonadFix Simulation.Aivika.Internal.Parameter.Parameter
+ Simulation.Aivika.Internal.Parameter: instance Control.Monad.IO.Class.MonadIO Simulation.Aivika.Internal.Parameter.Parameter
+ Simulation.Aivika.Internal.Parameter: instance GHC.Base.Applicative Simulation.Aivika.Internal.Parameter.Parameter
+ Simulation.Aivika.Internal.Parameter: instance GHC.Base.Functor Simulation.Aivika.Internal.Parameter.Parameter
+ Simulation.Aivika.Internal.Parameter: instance GHC.Base.Monad Simulation.Aivika.Internal.Parameter.Parameter
+ Simulation.Aivika.Internal.Parameter: instance GHC.Classes.Eq (Simulation.Aivika.Internal.Parameter.Parameter a)
+ Simulation.Aivika.Internal.Parameter: instance GHC.Float.Floating a => GHC.Float.Floating (Simulation.Aivika.Internal.Parameter.Parameter a)
+ Simulation.Aivika.Internal.Parameter: instance GHC.Num.Num a => GHC.Num.Num (Simulation.Aivika.Internal.Parameter.Parameter a)
+ Simulation.Aivika.Internal.Parameter: instance GHC.Real.Fractional a => GHC.Real.Fractional (Simulation.Aivika.Internal.Parameter.Parameter a)
+ Simulation.Aivika.Internal.Parameter: instance GHC.Show.Show (Simulation.Aivika.Internal.Parameter.Parameter a)
+ Simulation.Aivika.Internal.Parameter: instance Simulation.Aivika.Internal.Parameter.ParameterLift Simulation.Aivika.Internal.Parameter.Parameter
+ Simulation.Aivika.Internal.Parameter: invokeParameter :: Run -> Parameter a -> IO a
+ Simulation.Aivika.Internal.Parameter: liftParameter :: ParameterLift m => Parameter a -> m a
+ Simulation.Aivika.Internal.Parameter: memoParameter :: Parameter a -> IO (Parameter a)
+ Simulation.Aivika.Internal.Parameter: newtype Parameter a
+ Simulation.Aivika.Internal.Parameter: runParameter :: Parameter a -> Specs -> IO a
+ Simulation.Aivika.Internal.Parameter: runParameters :: Parameter a -> Specs -> Int -> [IO a]
+ Simulation.Aivika.Internal.Parameter: simulationCount :: Parameter Int
+ Simulation.Aivika.Internal.Parameter: simulationIndex :: Parameter Int
+ Simulation.Aivika.Internal.Parameter: simulationSpecs :: Parameter Specs
+ Simulation.Aivika.Internal.Parameter: starttime :: Parameter Double
+ Simulation.Aivika.Internal.Parameter: stoptime :: Parameter Double
+ Simulation.Aivika.Internal.Parameter: tableParameter :: Array Int a -> Parameter a
+ Simulation.Aivika.Internal.Parameter: throwParameter :: Exception e => e -> Parameter a
+ Simulation.Aivika.Internal.Process: Process :: (ProcessId -> Cont a) -> Process a
+ Simulation.Aivika.Internal.Process: cancelProcess :: Process a
+ Simulation.Aivika.Internal.Process: cancelProcessWithId :: ProcessId -> Event ()
+ Simulation.Aivika.Internal.Process: catchProcess :: Exception e => Process a -> (e -> Process a) -> Process a
+ Simulation.Aivika.Internal.Process: class ProcessLift m
+ Simulation.Aivika.Internal.Process: data ProcessId
+ Simulation.Aivika.Internal.Process: enqueueProcess :: Double -> Process () -> Event ()
+ Simulation.Aivika.Internal.Process: enqueueProcessUsingId :: Double -> ProcessId -> Process () -> Event ()
+ Simulation.Aivika.Internal.Process: finallyProcess :: Process a -> Process b -> Process a
+ Simulation.Aivika.Internal.Process: holdProcess :: Double -> Process ()
+ Simulation.Aivika.Internal.Process: instance Control.Monad.IO.Class.MonadIO Simulation.Aivika.Internal.Process.Process
+ Simulation.Aivika.Internal.Process: instance GHC.Base.Applicative Simulation.Aivika.Internal.Process.Process
+ Simulation.Aivika.Internal.Process: instance GHC.Base.Functor Simulation.Aivika.Internal.Process.Process
+ Simulation.Aivika.Internal.Process: instance GHC.Base.Monad Simulation.Aivika.Internal.Process.Process
+ Simulation.Aivika.Internal.Process: instance GHC.Classes.Eq Simulation.Aivika.Internal.Process.ProcessId
+ Simulation.Aivika.Internal.Process: instance Simulation.Aivika.Internal.Dynamics.DynamicsLift Simulation.Aivika.Internal.Process.Process
+ Simulation.Aivika.Internal.Process: instance Simulation.Aivika.Internal.Event.EventLift Simulation.Aivika.Internal.Process.Process
+ Simulation.Aivika.Internal.Process: instance Simulation.Aivika.Internal.Parameter.ParameterLift Simulation.Aivika.Internal.Process.Process
+ Simulation.Aivika.Internal.Process: instance Simulation.Aivika.Internal.Process.ProcessLift Simulation.Aivika.Internal.Process.Process
+ Simulation.Aivika.Internal.Process: instance Simulation.Aivika.Internal.Simulation.SimulationLift Simulation.Aivika.Internal.Process.Process
+ Simulation.Aivika.Internal.Process: interruptProcess :: ProcessId -> Event ()
+ Simulation.Aivika.Internal.Process: invokeProcess :: ProcessId -> Process a -> Cont a
+ Simulation.Aivika.Internal.Process: liftProcess :: ProcessLift m => Process a -> m a
+ Simulation.Aivika.Internal.Process: memoProcess :: Process a -> Simulation (Process a)
+ Simulation.Aivika.Internal.Process: neverProcess :: Process a
+ Simulation.Aivika.Internal.Process: newProcessId :: Simulation ProcessId
+ Simulation.Aivika.Internal.Process: newtype Process a
+ Simulation.Aivika.Internal.Process: passivateProcess :: Process ()
+ Simulation.Aivika.Internal.Process: passivateProcessBefore :: Event () -> Process ()
+ Simulation.Aivika.Internal.Process: processAwait :: Signal a -> Process a
+ Simulation.Aivika.Internal.Process: processCancelled :: ProcessId -> Event Bool
+ Simulation.Aivika.Internal.Process: processCancelling :: ProcessId -> Signal ()
+ Simulation.Aivika.Internal.Process: processId :: Process ProcessId
+ Simulation.Aivika.Internal.Process: processInterrupted :: ProcessId -> Event Bool
+ Simulation.Aivika.Internal.Process: processInterruptionTime :: ProcessId -> Event (Maybe Double)
+ Simulation.Aivika.Internal.Process: processParallel :: [Process a] -> Process [a]
+ Simulation.Aivika.Internal.Process: processParallelUsingIds :: [(ProcessId, Process a)] -> Process [a]
+ Simulation.Aivika.Internal.Process: processParallelUsingIds_ :: [(ProcessId, Process a)] -> Process ()
+ Simulation.Aivika.Internal.Process: processParallel_ :: [Process a] -> Process ()
+ Simulation.Aivika.Internal.Process: processPassive :: ProcessId -> Event Bool
+ Simulation.Aivika.Internal.Process: processPreemptionBegin :: ProcessId -> Event ()
+ Simulation.Aivika.Internal.Process: processPreemptionBeginning :: ProcessId -> Signal ()
+ Simulation.Aivika.Internal.Process: processPreemptionEnd :: ProcessId -> Event ()
+ Simulation.Aivika.Internal.Process: processPreemptionEnding :: ProcessId -> Signal ()
+ Simulation.Aivika.Internal.Process: processUsingId :: ProcessId -> Process a -> Process a
+ Simulation.Aivika.Internal.Process: processYield :: Process ()
+ Simulation.Aivika.Internal.Process: reactivateProcess :: ProcessId -> Event ()
+ Simulation.Aivika.Internal.Process: reactivateProcessImmediately :: ProcessId -> Event ()
+ Simulation.Aivika.Internal.Process: retryProcess :: String -> Process a
+ Simulation.Aivika.Internal.Process: runProcess :: Process () -> Event ()
+ Simulation.Aivika.Internal.Process: runProcessInStartTime :: Process () -> Simulation ()
+ Simulation.Aivika.Internal.Process: runProcessInStartTimeUsingId :: ProcessId -> Process () -> Simulation ()
+ Simulation.Aivika.Internal.Process: runProcessInStopTime :: Process () -> Simulation ()
+ Simulation.Aivika.Internal.Process: runProcessInStopTimeUsingId :: ProcessId -> Process () -> Simulation ()
+ Simulation.Aivika.Internal.Process: runProcessUsingId :: ProcessId -> Process () -> Event ()
+ Simulation.Aivika.Internal.Process: spawnProcess :: Process () -> Process ()
+ Simulation.Aivika.Internal.Process: spawnProcessUsingId :: ProcessId -> Process () -> Process ()
+ Simulation.Aivika.Internal.Process: spawnProcessUsingIdWith :: ContCancellation -> ProcessId -> Process () -> Process ()
+ Simulation.Aivika.Internal.Process: spawnProcessWith :: ContCancellation -> Process () -> Process ()
+ Simulation.Aivika.Internal.Process: throwProcess :: Exception e => e -> Process a
+ Simulation.Aivika.Internal.Process: timeoutProcess :: Double -> Process a -> Process (Maybe a)
+ Simulation.Aivika.Internal.Process: timeoutProcessUsingId :: Double -> ProcessId -> Process a -> Process (Maybe a)
+ Simulation.Aivika.Internal.Process: traceProcess :: String -> Process a -> Process a
+ Simulation.Aivika.Internal.Process: transferProcess :: Process () -> Process a
+ Simulation.Aivika.Internal.Process: unzipProcess :: Process (a, b) -> Simulation (Process a, Process b)
+ Simulation.Aivika.Internal.Process: whenCancellingProcess :: Event () -> Process ()
+ Simulation.Aivika.Internal.Process: zip3ProcessParallel :: Process a -> Process b -> Process c -> Process (a, b, c)
+ Simulation.Aivika.Internal.Process: zipProcessParallel :: Process a -> Process b -> Process (a, b)
+ Simulation.Aivika.Internal.Simulation: Simulation :: (Run -> IO a) -> Simulation a
+ Simulation.Aivika.Internal.Simulation: SimulationAbort :: String -> SimulationAbort
+ Simulation.Aivika.Internal.Simulation: SimulationException :: e -> SimulationException
+ Simulation.Aivika.Internal.Simulation: SimulationRetry :: String -> SimulationRetry
+ Simulation.Aivika.Internal.Simulation: catchSimulation :: Exception e => Simulation a -> (e -> Simulation a) -> Simulation a
+ Simulation.Aivika.Internal.Simulation: class SimulationLift m
+ Simulation.Aivika.Internal.Simulation: data SimulationAbort
+ Simulation.Aivika.Internal.Simulation: data SimulationException
+ Simulation.Aivika.Internal.Simulation: data SimulationRetry
+ Simulation.Aivika.Internal.Simulation: finallySimulation :: Simulation a -> Simulation b -> Simulation a
+ Simulation.Aivika.Internal.Simulation: instance Control.Monad.Fix.MonadFix Simulation.Aivika.Internal.Simulation.Simulation
+ Simulation.Aivika.Internal.Simulation: instance Control.Monad.IO.Class.MonadIO Simulation.Aivika.Internal.Simulation.Simulation
+ Simulation.Aivika.Internal.Simulation: instance GHC.Base.Applicative Simulation.Aivika.Internal.Simulation.Simulation
+ Simulation.Aivika.Internal.Simulation: instance GHC.Base.Functor Simulation.Aivika.Internal.Simulation.Simulation
+ Simulation.Aivika.Internal.Simulation: instance GHC.Base.Monad Simulation.Aivika.Internal.Simulation.Simulation
+ Simulation.Aivika.Internal.Simulation: instance GHC.Exception.Exception Simulation.Aivika.Internal.Simulation.SimulationAbort
+ Simulation.Aivika.Internal.Simulation: instance GHC.Exception.Exception Simulation.Aivika.Internal.Simulation.SimulationException
+ Simulation.Aivika.Internal.Simulation: instance GHC.Exception.Exception Simulation.Aivika.Internal.Simulation.SimulationRetry
+ Simulation.Aivika.Internal.Simulation: instance GHC.Show.Show Simulation.Aivika.Internal.Simulation.SimulationAbort
+ Simulation.Aivika.Internal.Simulation: instance GHC.Show.Show Simulation.Aivika.Internal.Simulation.SimulationException
+ Simulation.Aivika.Internal.Simulation: instance GHC.Show.Show Simulation.Aivika.Internal.Simulation.SimulationRetry
+ Simulation.Aivika.Internal.Simulation: instance Simulation.Aivika.Internal.Parameter.ParameterLift Simulation.Aivika.Internal.Simulation.Simulation
+ Simulation.Aivika.Internal.Simulation: instance Simulation.Aivika.Internal.Simulation.SimulationLift Simulation.Aivika.Internal.Simulation.Simulation
+ Simulation.Aivika.Internal.Simulation: invokeSimulation :: Run -> Simulation a -> IO a
+ Simulation.Aivika.Internal.Simulation: liftSimulation :: SimulationLift m => Simulation a -> m a
+ Simulation.Aivika.Internal.Simulation: memoSimulation :: Simulation a -> Simulation (Simulation a)
+ Simulation.Aivika.Internal.Simulation: newtype Simulation a
+ Simulation.Aivika.Internal.Simulation: runSimulation :: Simulation a -> Specs -> IO a
+ Simulation.Aivika.Internal.Simulation: runSimulationByIndex :: Simulation a -> Specs -> Int -> Int -> IO a
+ Simulation.Aivika.Internal.Simulation: runSimulations :: Simulation a -> Specs -> Int -> [IO a]
+ Simulation.Aivika.Internal.Simulation: simulationEventQueue :: Simulation EventQueue
+ Simulation.Aivika.Internal.Simulation: throwSimulation :: Exception e => e -> Simulation a
+ Simulation.Aivika.Internal.Specs: Euler :: Method
+ Simulation.Aivika.Internal.Specs: EventQueue :: PriorityQueue (Point -> IO ()) -> IORef Bool -> IORef Double -> EventQueue
+ Simulation.Aivika.Internal.Specs: Point :: Specs -> Run -> Double -> Int -> Int -> Point
+ Simulation.Aivika.Internal.Specs: Run :: Specs -> Int -> Int -> EventQueue -> Generator -> Run
+ Simulation.Aivika.Internal.Specs: RungeKutta2 :: Method
+ Simulation.Aivika.Internal.Specs: RungeKutta4 :: Method
+ Simulation.Aivika.Internal.Specs: Specs :: Double -> Double -> Double -> Method -> GeneratorType -> Specs
+ Simulation.Aivika.Internal.Specs: [pointIteration] :: Point -> Int
+ Simulation.Aivika.Internal.Specs: [pointPhase] :: Point -> Int
+ Simulation.Aivika.Internal.Specs: [pointRun] :: Point -> Run
+ Simulation.Aivika.Internal.Specs: [pointSpecs] :: Point -> Specs
+ Simulation.Aivika.Internal.Specs: [pointTime] :: Point -> Double
+ Simulation.Aivika.Internal.Specs: [queueBusy] :: EventQueue -> IORef Bool
+ Simulation.Aivika.Internal.Specs: [queuePQ] :: EventQueue -> PriorityQueue (Point -> IO ())
+ Simulation.Aivika.Internal.Specs: [queueTime] :: EventQueue -> IORef Double
+ Simulation.Aivika.Internal.Specs: [runCount] :: Run -> Int
+ Simulation.Aivika.Internal.Specs: [runEventQueue] :: Run -> EventQueue
+ Simulation.Aivika.Internal.Specs: [runGenerator] :: Run -> Generator
+ Simulation.Aivika.Internal.Specs: [runIndex] :: Run -> Int
+ Simulation.Aivika.Internal.Specs: [runSpecs] :: Run -> Specs
+ Simulation.Aivika.Internal.Specs: [spcDT] :: Specs -> Double
+ Simulation.Aivika.Internal.Specs: [spcGeneratorType] :: Specs -> GeneratorType
+ Simulation.Aivika.Internal.Specs: [spcMethod] :: Specs -> Method
+ Simulation.Aivika.Internal.Specs: [spcStartTime] :: Specs -> Double
+ Simulation.Aivika.Internal.Specs: [spcStopTime] :: Specs -> Double
+ Simulation.Aivika.Internal.Specs: basicTime :: Specs -> Int -> Int -> Double
+ Simulation.Aivika.Internal.Specs: data EventQueue
+ Simulation.Aivika.Internal.Specs: data Method
+ Simulation.Aivika.Internal.Specs: data Point
+ Simulation.Aivika.Internal.Specs: data Run
+ Simulation.Aivika.Internal.Specs: data Specs
+ Simulation.Aivika.Internal.Specs: instance GHC.Classes.Eq Simulation.Aivika.Internal.Specs.Method
+ Simulation.Aivika.Internal.Specs: instance GHC.Classes.Ord Simulation.Aivika.Internal.Specs.Method
+ Simulation.Aivika.Internal.Specs: instance GHC.Show.Show Simulation.Aivika.Internal.Specs.Method
+ Simulation.Aivika.Internal.Specs: integIterationBnds :: Specs -> (Int, Int)
+ Simulation.Aivika.Internal.Specs: integIterationHiBnd :: Specs -> Int
+ Simulation.Aivika.Internal.Specs: integIterationLoBnd :: Specs -> Int
+ Simulation.Aivika.Internal.Specs: integPhaseBnds :: Specs -> (Int, Int)
+ Simulation.Aivika.Internal.Specs: integPhaseHiBnd :: Specs -> Int
+ Simulation.Aivika.Internal.Specs: integPhaseLoBnd :: Specs -> Int
+ Simulation.Aivika.Internal.Specs: integPoints :: Run -> [Point]
+ Simulation.Aivika.Internal.Specs: integPointsStartingFrom :: Point -> [Point]
+ Simulation.Aivika.Internal.Specs: integStartPoint :: Run -> Point
+ Simulation.Aivika.Internal.Specs: integStopPoint :: Run -> Point
+ Simulation.Aivika.Internal.Specs: integTimes :: Specs -> [Double]
+ Simulation.Aivika.Internal.Specs: newEventQueue :: Specs -> IO EventQueue
+ Simulation.Aivika.Internal.Specs: pointAt :: Run -> Double -> Point
+ Simulation.Aivika.Operation: resetOperation :: Operation a b -> Event ()
+ Simulation.Aivika.Process: passivateProcessBefore :: Event () -> Process ()
+ Simulation.Aivika.Process: processInterruptionTime :: ProcessId -> Event (Maybe Double)
+ Simulation.Aivika.Process: reactivateProcessImmediately :: ProcessId -> Event ()
+ Simulation.Aivika.Process: transferProcess :: Process () -> Process a
+ Simulation.Aivika.Queue: resetQueue :: Queue si sm so a -> Event ()
+ Simulation.Aivika.Queue.Infinite: resetQueue :: Queue sm so a -> Event ()
+ Simulation.Aivika.Resource: resetResource :: Resource s -> Event ()
+ Simulation.Aivika.Resource.Preemption: resetResource :: Resource -> Event ()
+ Simulation.Aivika.Results: instance (GHC.Arr.Ix i, GHC.Show.Show i, Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue [e])) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Dynamics.Dynamics (GHC.Arr.Array i e))
+ Simulation.Aivika.Results: instance (GHC.Arr.Ix i, GHC.Show.Show i, Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue [e])) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Event.Event (GHC.Arr.Array i e))
+ Simulation.Aivika.Results: instance (GHC.Arr.Ix i, GHC.Show.Show i, Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue [e])) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Parameter.Parameter (GHC.Arr.Array i e))
+ Simulation.Aivika.Results: instance (GHC.Arr.Ix i, GHC.Show.Show i, Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue [e])) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Simulation.Simulation (GHC.Arr.Array i e))
+ Simulation.Aivika.Results: instance (GHC.Arr.Ix i, GHC.Show.Show i, Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue [e])) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Ref.Base.Ref (GHC.Arr.Array i e))
+ Simulation.Aivika.Results: instance (GHC.Arr.Ix i, GHC.Show.Show i, Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue [e])) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Ref.Ref (GHC.Arr.Array i e))
+ Simulation.Aivika.Results: instance (GHC.Arr.Ix i, GHC.Show.Show i, Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue [e])) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Signal.Signalable (GHC.Arr.Array i e))
+ Simulation.Aivika.Results: instance (GHC.Arr.Ix i, GHC.Show.Show i, Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue [e])) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Var.Var (GHC.Arr.Array i e))
+ Simulation.Aivika.Results: instance (Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a), Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue (Simulation.Aivika.Statistics.SamplingStats a))) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Dynamics.Dynamics (Simulation.Aivika.Statistics.SamplingCounter a))
+ Simulation.Aivika.Results: instance (Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a), Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue (Simulation.Aivika.Statistics.SamplingStats a))) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Event.Event (Simulation.Aivika.Statistics.SamplingCounter a))
+ Simulation.Aivika.Results: instance (Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a), Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue (Simulation.Aivika.Statistics.SamplingStats a))) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Parameter.Parameter (Simulation.Aivika.Statistics.SamplingCounter a))
+ Simulation.Aivika.Results: instance (Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a), Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue (Simulation.Aivika.Statistics.SamplingStats a))) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Simulation.Simulation (Simulation.Aivika.Statistics.SamplingCounter a))
+ Simulation.Aivika.Results: instance (Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a), Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue (Simulation.Aivika.Statistics.SamplingStats a))) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Ref.Base.Ref (Simulation.Aivika.Statistics.SamplingCounter a))
+ Simulation.Aivika.Results: instance (Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a), Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue (Simulation.Aivika.Statistics.SamplingStats a))) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Ref.Ref (Simulation.Aivika.Statistics.SamplingCounter a))
+ Simulation.Aivika.Results: instance (Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a), Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue (Simulation.Aivika.Statistics.SamplingStats a))) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Signal.Signalable (Simulation.Aivika.Statistics.SamplingCounter a))
+ Simulation.Aivika.Results: instance (Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a), Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue (Simulation.Aivika.Statistics.SamplingStats a))) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Var.Var (Simulation.Aivika.Statistics.SamplingCounter a))
+ Simulation.Aivika.Results: instance (Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a), Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue (Simulation.Aivika.Statistics.TimingStats a))) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Dynamics.Dynamics (Simulation.Aivika.Statistics.TimingCounter a))
+ Simulation.Aivika.Results: instance (Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a), Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue (Simulation.Aivika.Statistics.TimingStats a))) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Event.Event (Simulation.Aivika.Statistics.TimingCounter a))
+ Simulation.Aivika.Results: instance (Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a), Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue (Simulation.Aivika.Statistics.TimingStats a))) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Parameter.Parameter (Simulation.Aivika.Statistics.TimingCounter a))
+ Simulation.Aivika.Results: instance (Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a), Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue (Simulation.Aivika.Statistics.TimingStats a))) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Simulation.Simulation (Simulation.Aivika.Statistics.TimingCounter a))
+ Simulation.Aivika.Results: instance (Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a), Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue (Simulation.Aivika.Statistics.TimingStats a))) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Ref.Base.Ref (Simulation.Aivika.Statistics.TimingCounter a))
+ Simulation.Aivika.Results: instance (Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a), Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue (Simulation.Aivika.Statistics.TimingStats a))) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Ref.Ref (Simulation.Aivika.Statistics.TimingCounter a))
+ Simulation.Aivika.Results: instance (Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a), Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue (Simulation.Aivika.Statistics.TimingStats a))) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Signal.Signalable (Simulation.Aivika.Statistics.TimingCounter a))
+ Simulation.Aivika.Results: instance (Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a), Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue (Simulation.Aivika.Statistics.TimingStats a))) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Var.Var (Simulation.Aivika.Statistics.TimingCounter a))
+ Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue [e]) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Dynamics.Dynamics (Data.Vector.Vector e))
+ Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue [e]) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Event.Event (Data.Vector.Vector e))
+ Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue [e]) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Parameter.Parameter (Data.Vector.Vector e))
+ Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue [e]) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Simulation.Simulation (Data.Vector.Vector e))
+ Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue [e]) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Ref.Base.Ref (Data.Vector.Vector e))
+ Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue [e]) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Ref.Ref (Data.Vector.Vector e))
+ Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue [e]) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Signal.Signalable (Data.Vector.Vector e))
+ Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue [e]) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Var.Var (Data.Vector.Vector e))
+ Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Dynamics.Dynamics a)
+ Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Event.Event a)
+ Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Parameter.Parameter a)
+ Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Internal.Simulation.Simulation a)
+ Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Ref.Base.Ref a)
+ Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Ref.Ref a)
+ Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Signal.Signalable a)
+ Simulation.Aivika.Results: instance Simulation.Aivika.Results.ResultItemable (Simulation.Aivika.Results.ResultValue a) => Simulation.Aivika.Results.ResultProvider (Simulation.Aivika.Var.Var a)
+ Simulation.Aivika.Server: resetServer :: Server s a b -> Event ()
+ Simulation.Aivika.Signal: handleSignalComposite :: Signal a -> (a -> Event ()) -> Composite ()
+ Simulation.Aivika.Statistics: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Simulation.Aivika.Statistics.SamplingCounter a)
+ Simulation.Aivika.Statistics: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Simulation.Aivika.Statistics.SamplingStats a)
+ Simulation.Aivika.Statistics: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Simulation.Aivika.Statistics.TimingCounter a)
+ Simulation.Aivika.Statistics: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Simulation.Aivika.Statistics.TimingStats a)
+ Simulation.Aivika.Statistics: instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (Simulation.Aivika.Statistics.SamplingCounter a)
+ Simulation.Aivika.Statistics: instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (Simulation.Aivika.Statistics.SamplingStats a)
+ Simulation.Aivika.Statistics: instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (Simulation.Aivika.Statistics.TimingCounter a)
+ Simulation.Aivika.Statistics: instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (Simulation.Aivika.Statistics.TimingStats a)
+ Simulation.Aivika.Statistics: instance GHC.Generics.Generic (Simulation.Aivika.Statistics.SamplingCounter a)
+ Simulation.Aivika.Statistics: instance GHC.Generics.Generic (Simulation.Aivika.Statistics.SamplingStats a)
+ Simulation.Aivika.Statistics: instance GHC.Generics.Generic (Simulation.Aivika.Statistics.TimingCounter a)
+ Simulation.Aivika.Statistics: instance GHC.Generics.Generic (Simulation.Aivika.Statistics.TimingStats a)
- Simulation.Aivika.Generator: Generator :: (Double -> Double -> IO Double) -> (Int -> Int -> IO Int) -> (Double -> Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (Double -> IO Double) -> (Double -> Int -> IO Double) -> (Double -> IO Int) -> (Double -> Int -> IO Int) -> (Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (forall a. DiscretePDF a -> IO a) -> Generator
+ Simulation.Aivika.Generator: Generator :: (Double -> Double -> IO Double) -> (Int -> Int -> IO Int) -> (Double -> Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (Double -> IO Double) -> (Double -> Int -> IO Double) -> (Double -> IO Int) -> (Double -> Int -> IO Int) -> (Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (forall a. DiscretePDF a -> IO a) -> IO Int -> Generator
- Simulation.Aivika.Signal: newSignalHistory :: Signal a -> Event (SignalHistory a)
+ Simulation.Aivika.Signal: newSignalHistory :: Signal a -> Composite (SignalHistory a)
- Simulation.Aivika.Signal: newSignalHistoryStartingWith :: Maybe a -> Signal a -> Event (SignalHistory a)
+ Simulation.Aivika.Signal: newSignalHistoryStartingWith :: Maybe a -> Signal a -> Composite (SignalHistory a)

Files

CHANGELOG.md view
@@ -1,4 +1,13 @@ +Version 5.1+-----++* Includes changes destined for Aivika Exension Pack.++* Minor changes in the resource preemption statistics.++* Added the statistics reset.+ Version 5.0 ----- 
LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2009-2015 David Sorokin <david.sorokin@gmail.com>+Copyright (c) 2009-2017 David Sorokin <david.sorokin@gmail.com>  All rights reserved. 
Simulation/Aivika.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Activity.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Activity--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -30,6 +30,8 @@         activityUtilisationFactor,         activityIdleFactor,         activityPreemptionFactor,+        -- * Statistics Reset+        resetActivity,         -- * Summary         activitySummary,         -- * Derived Signals for Properties@@ -563,3 +565,14 @@        showString tab .        showString "preemption time:\n\n" .        samplingStatsSummary xs3 (2 + indent)++-- | Reset the statistics.+resetActivity :: Activity s a b -> Event ()+resetActivity act =+  Event $ \p ->+  do writeIORef (activityTotalUtilisationTimeRef act) 0+     writeIORef (activityTotalIdleTimeRef act) 0+     writeIORef (activityTotalPreemptionTimeRef act) 0+     writeIORef (activityUtilisationTimeRef act) mempty+     writeIORef (activityIdleTimeRef act) mempty+     writeIORef (activityPreemptionTimeRef act) mempty
Simulation/Aivika/Activity/Random.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Activity.Random--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Agent.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Agent--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Arrival.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Arrival--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -22,7 +22,8 @@         arrivalTimerChannel,         arrivalProcessingTime,         arrivalProcessingTimeChanged,-        arrivalProcessingTimeChanged_) where+        arrivalProcessingTimeChanged_,+        resetArrivalTimer) where  import Control.Monad import Control.Monad.Trans@@ -102,3 +103,9 @@ arrivalTimerChannel timer =   Channel $ \sa ->   return $ arrivalTimerSignal timer sa++-- | Reset the statistics.+resetArrivalTimer :: ArrivalTimer -> Event ()+resetArrivalTimer timer =+  do writeRef (arrivalProcessingTimeRef timer) emptySamplingStats+     triggerSignal (arrivalProcessingTimeChangedSource timer) ()
Simulation/Aivika/Channel.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Channel--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Circuit.hs view
@@ -3,7 +3,7 @@  -- | -- Module     : Simulation.Aivika.Circuit--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Composite.hs view
@@ -3,7 +3,7 @@  -- | -- Module     : Simulation.Aivika.Composite--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -15,6 +15,7 @@ module Simulation.Aivika.Composite        (-- * Composite Monad         Composite,+        CompositeLift(..),         runComposite,         runComposite_,         runCompositeInStartTime_,@@ -125,3 +126,12 @@     Composite $ \h0 ->     do a <- liftEvent m        return (a, h0)++-- | A type class to lift the 'Composite' computation to other computations.+class CompositeLift m where+  +  -- | Lift the specified 'Composite' computation to another computation.+  liftComposite :: Composite a -> m a++instance CompositeLift Composite where+  liftComposite = id
Simulation/Aivika/Cont.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Cont--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/DoubleLinkedList.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.DoubleLinkedList--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Dynamics.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Dynamics--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Dynamics/Extra.hs view
@@ -3,7 +3,7 @@  -- | -- Module     : Simulation.Aivika.Dynamics.Extra--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Dynamics/Memo.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Dynamics.Memo--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Dynamics/Memo/Unboxed.hs view
@@ -3,7 +3,7 @@  -- | -- Module     : Simulation.Aivika.Dynamics.Memo.Unboxed--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Dynamics/Random.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Dynamics.Random--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Event.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Event--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Gate.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Gate--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -16,6 +16,7 @@         newGateClosed,         openGate,         closeGate,+        invertGate,         gateOpened,         gateClosed,         awaitGateOpened,@@ -56,6 +57,11 @@ closeGate :: Gate -> Event () closeGate gate =   writeRef (gateRef gate) False++-- | Invert the gate.+invertGate :: Gate -> Event ()+invertGate gate =+  modifyRef (gateRef gate) not  -- | Test whether the gate is open. gateOpened :: Gate -> Event Bool
Simulation/Aivika/Generator.hs view
@@ -3,7 +3,7 @@  -- | -- Module     : Simulation.Aivika.Generator--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -71,8 +71,10 @@               generateWeibull :: Double -> Double -> IO Double,               -- ^ Generate a random number from the Weibull distribution by               -- the specified shape and scale.-              generateDiscrete :: forall a. DiscretePDF a -> IO a+              generateDiscrete :: forall a. DiscretePDF a -> IO a,               -- ^ Generate a random value from the specified discrete distribution.+              generateSequenceNo :: IO Int+              -- ^ Generate a sequence number which can be considered quite unique.             }  -- | Generate the uniform random number with the specified minimum and maximum.@@ -331,6 +333,8 @@      g2 <- newNormalGenerator01 g1      let g3 mu nu = do { x <- g2; return $ mu + nu * x }          g4 mu nu = do { x <- g2; return $ exp (mu + nu * x) }+     seqNoRef <- newIORef 0+     let seqNo = do { x <- readIORef seqNoRef; modifyIORef' seqNoRef (+1); return x }      return Generator { generateUniform = generateUniform01 g1,                         generateUniformInt = generateUniformInt01 g1,                         generateTriangular = generateTriangular01 g1,@@ -343,4 +347,5 @@                         generateGamma = generateGamma01 g2 g1,                         generateBeta = generateBeta01 g2 g1,                         generateWeibull = generateWeibull01 g1,-                        generateDiscrete = generateDiscrete01 g1 }+                        generateDiscrete = generateDiscrete01 g1,+                        generateSequenceNo = seqNo }
Simulation/Aivika/Internal/Arrival.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Internal.Arrival--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Internal/Cont.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Internal.Cont--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -51,6 +51,7 @@         substituteCont,         contCanceled,         contAwait,+        transferCont,         traceCont) where  import Data.IORef@@ -860,6 +861,26 @@                                   Just c  ->                                     invokeEvent p $ reenterCont c a      writeIORef r $ Just h          ++-- | Like the GoTo statement it transfers the direction of computation,+-- but raises an exception when used within 'catchCont' or 'finallyCont'.+transferCont :: Cont () -> Cont a+transferCont x =+  Cont $ \c ->+  Event $ \p ->+  do let worker =+           do let cid   = contId $ contAux c+                  cont  = return+                  econt = throwEvent+                  ccont = return+              when (contCatchFlag $ contAux c) $+                error "Cannot be combined with the exception handling: unsafeTransferCont"+              invokeEvent p $+                runCont x cont econt ccont cid False+     z <- contCanceled c+     if z+       then cancelCont p c+       else worker  -- | Show the debug message with the current simulation time. traceCont :: String -> Cont a -> Cont a
Simulation/Aivika/Internal/Dynamics.hs view
@@ -3,7 +3,7 @@  -- | -- Module     : Simulation.Aivika.Internal.Dynamics--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Internal/Event.hs view
@@ -3,7 +3,7 @@  -- | -- Module     : Simulation.Aivika.Internal.Event--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Internal/Parameter.hs view
@@ -3,7 +3,7 @@  -- | -- Module     : Simulation.Aivika.Internal.Parameter--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Internal/Process.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Internal.Process--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -51,9 +51,12 @@         holdProcess,         interruptProcess,         processInterrupted,+        processInterruptionTime,         passivateProcess,+        passivateProcessBefore,         processPassive,         reactivateProcess,+        reactivateProcessImmediately,         cancelProcessWithId,         cancelProcess,         processCancelled,@@ -90,6 +93,8 @@         neverProcess,         -- * Retrying Computation         retryProcess,+        -- * GoTo Statement+        transferProcess,         -- * Debugging         traceProcess) where @@ -180,6 +185,20 @@   Event $ \p ->   readIORef (processInterruptRef pid) +-- | Return the expected interruption time after finishing the 'holdProcess' computation,+-- which value may change if the corresponding process is preempted.+processInterruptionTime :: ProcessId -> Event (Maybe Double)+processInterruptionTime pid =+  Event $ \p ->+  do let x = processInterruptCont pid+     a <- readIORef x+     case a of+       Just c  ->+         do t <- readIORef (processInterruptTime pid)+            return (Just t)+       Nothing ->+         return Nothing+ -- | Define a reaction when the process with the specified identifier is preempted. processPreempted :: ProcessId -> Event () processPreempted pid =@@ -223,6 +242,20 @@        Nothing -> writeIORef x $ Just c        Just _  -> error "Cannot passivate the process twice: passivateProcess" +-- | Passivate the process before performing some action.+passivateProcessBefore :: Event () -> Process ()+passivateProcessBefore m =+  Process $ \pid ->+  Cont $ \c ->+  Event $ \p ->+  do let x = processReactCont pid+     a <- readIORef x+     case a of+       Nothing ->+         do writeIORef x $ Just c+            invokeEvent p m+       Just _  -> error "Cannot passivate the process twice: passivateProcessBefore"+ -- | Test whether the process with the specified identifier is passivated. processPassive :: ProcessId -> Event Bool processPassive pid =@@ -244,6 +277,19 @@          do writeIORef x Nothing             invokeEvent p $ enqueueEvent (pointTime p) $ resumeCont c () +-- | Reactivate a process with the specified identifier immediately.+reactivateProcessImmediately :: ProcessId -> Event ()+reactivateProcessImmediately pid =+  Event $ \p ->+  do let x = processReactCont pid+     a <- readIORef x+     case a of+       Nothing -> +         return ()+       Just c ->+         do writeIORef x Nothing+            invokeEvent p $ resumeCont c ()+ -- | Prepare the processes identifier for running. processIdPrepare :: ProcessId -> Event () processIdPrepare pid =@@ -723,6 +769,12 @@ -- as a 'SimulationRetry' exception message in case of failure. retryProcess :: String -> Process a retryProcess = liftEvent . retryEvent++-- | Like the GoTo statement it transfers the direction of computation,+-- but raises an exception when used within 'catchProcess' or 'finallyProcess'.+transferProcess :: Process () -> Process a+transferProcess (Process m) =+  Process $ \pid -> transferCont (m pid)  -- | Show the debug message with the current simulation time. traceProcess :: String -> Process a -> Process a
Simulation/Aivika/Internal/Simulation.hs view
@@ -3,7 +3,7 @@  -- | -- Module     : Simulation.Aivika.Internal.Simulation--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Internal/Specs.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Internal.Specs--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Net.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Net--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Net/Random.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Net.Random--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Operation.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Operation--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -22,6 +22,8 @@         operationPreemptionTime,         operationUtilisationFactor,         operationPreemptionFactor,+        -- * Statistics Reset+        resetOperation,         -- * Summary         operationSummary,         -- * Derived Signals for Properties@@ -70,7 +72,7 @@               -- ^ Provide @b@ by specified @a@.               operationProcessPreemptible :: Bool,               -- ^ Whether the process is preemptible.-              operationStartTime :: Double,+              operationStartTimeRef :: IORef Double,               -- ^ The start time of creating the operation.               operationLastTimeRef :: IORef Double,               -- ^ The last time of utilising the operation activity.@@ -110,6 +112,7 @@                            -> Event (Operation a b) newPreemptibleOperation preemptible provide =   do t0 <- liftDynamics time+     r' <- liftIO $ newIORef t0      r0 <- liftIO $ newIORef t0      r1 <- liftIO $ newIORef 0      r2 <- liftIO $ newIORef 0@@ -121,7 +124,7 @@      s4 <- liftSimulation newSignalSource      return Operation { operationInitProcess = provide,                         operationProcessPreemptible = preemptible,-                        operationStartTime = t0,+                        operationStartTimeRef = r',                         operationLastTimeRef = r0,                         operationTotalUtilisationTimeRef = r1,                         operationTotalPreemptionTimeRef = r2,@@ -281,7 +284,7 @@ operationUtilisationFactor :: Operation a b -> Event Double operationUtilisationFactor op =   Event $ \p ->-  do let t0 = operationStartTime op+  do t0 <- readIORef (operationStartTimeRef op)      t1 <- readIORef (operationLastTimeRef op)      x  <- readIORef (operationTotalUtilisationTimeRef op)      return (x / (t1 - t0))@@ -308,7 +311,7 @@ operationPreemptionFactor :: Operation a b -> Event Double operationPreemptionFactor op =   Event $ \p ->-  do let t0 = operationStartTime op+  do t0 <- readIORef (operationStartTimeRef op)      t1 <- readIORef (operationLastTimeRef op)      x  <- readIORef (operationTotalPreemptionTimeRef op)      return (x / (t1 - t0))@@ -352,7 +355,7 @@ operationSummary :: Operation a b -> Int -> Event ShowS operationSummary op indent =   Event $ \p ->-  do let t0 = operationStartTime op+  do t0  <- readIORef (operationStartTimeRef op)      t1  <- readIORef (operationLastTimeRef op)      tx1 <- readIORef (operationTotalUtilisationTimeRef op)      tx2 <- readIORef (operationTotalPreemptionTimeRef op)@@ -381,3 +384,16 @@        showString tab .        showString "preemption time:\n\n" .        samplingStatsSummary xs2 (2 + indent)++-- | Reset the statistics.+resetOperation :: Operation a b -> Event ()+resetOperation op =+  Event $ \p ->+  do let t0 = pointTime p+     writeIORef (operationStartTimeRef op) t0+     writeIORef (operationLastTimeRef op) t0+     writeIORef (operationTotalUtilisationTimeRef op) 0+     writeIORef (operationTotalPreemptionTimeRef op) 0+     writeIORef (operationUtilisationTimeRef op) emptySamplingStats+     writeIORef (operationPreemptionTimeRef op) emptySamplingStats+     
Simulation/Aivika/Operation/Random.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Operation.Random--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Parameter.hs view
@@ -1,6 +1,6 @@ -- | -- Module     : Simulation.Aivika.Parameter--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Parameter/Random.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Parameter.Random--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/PriorityQueue.hs view
@@ -3,7 +3,7 @@  -- | -- Module     : Simulation.Aivika.PriorityQueue--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/PriorityQueue/Pure.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.PriorityQueue.Pure--- Copyright  : Copyright (c) 2015-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2015-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Process.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Process--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -48,9 +48,12 @@         holdProcess,         interruptProcess,         processInterrupted,+        processInterruptionTime,         passivateProcess,+        passivateProcessBefore,         processPassive,         reactivateProcess,+        reactivateProcessImmediately,         cancelProcessWithId,         cancelProcess,         processCancelled,@@ -85,6 +88,8 @@         neverProcess,         -- * Retrying Computation         retryProcess,+        -- * GoTo Statement+        transferProcess,         -- * Debugging         traceProcess) where 
Simulation/Aivika/Process/Random.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Process.Random--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Processor.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Processor--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Processor/Random.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Processor.Random--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Processor/RoundRobbin.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Processor.RoundRobbin--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Queue.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Queue--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -70,6 +70,8 @@         queueContains,         queueContainsBy,         clearQueue,+        -- * Statistics Reset+        resetQueue,         -- * Awaiting         waitWhileFullQueue,         -- * Summary@@ -1214,3 +1216,22 @@        showString tab .        showString "the dequeue wait time (when was requested for dequeueing -> when was dequeued) = \n\n" .        samplingStatsSummary dequeueWaitTime (2 + indent)++-- | Reset the statistics.+resetQueue :: Queue si sm so a -> Event ()+resetQueue q =+  Event $ \p ->+  do let t = pointTime p+     queueCount <- readIORef (queueCountRef q)+     writeIORef (queueCountStatsRef q) $+       returnTimingStats t queueCount+     writeIORef (enqueueCountRef q) 0+     writeIORef (enqueueLostCountRef q) 0+     writeIORef (enqueueStoreCountRef q) 0+     writeIORef (dequeueCountRef q) 0+     writeIORef (dequeueExtractCountRef q) 0+     writeIORef (queueWaitTimeRef q) mempty+     writeIORef (queueTotalWaitTimeRef q) mempty+     writeIORef (enqueueWaitTimeRef q) mempty+     writeIORef (dequeueWaitTimeRef q) mempty+  
Simulation/Aivika/Queue/Base.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Queue.Base--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Queue/Infinite.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Queue.Infinite--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -50,6 +50,8 @@         queueContains,         queueContainsBy,         clearQueue,+        -- * Statistics Reset+        resetQueue,         -- * Summary         queueSummary,         -- * Derived Signals for Properties@@ -747,3 +749,17 @@        showString tab .        showString "the dequeue wait time (when was requested for dequeueing -> when was dequeued) = \n\n" .        samplingStatsSummary dequeueWaitTime (2 + indent)++-- | Reset the statistics.+resetQueue :: Queue sm so a -> Event ()+resetQueue q =+  Event $ \p ->+  do let t = pointTime p+     queueCount <- readIORef (queueCountRef q)+     writeIORef (queueCountStatsRef q) $+       returnTimingStats t queueCount+     writeIORef (enqueueStoreCountRef q) 0+     writeIORef (dequeueCountRef q) 0+     writeIORef (dequeueExtractCountRef q) 0+     writeIORef (queueWaitTimeRef q) mempty+     writeIORef (dequeueWaitTimeRef q) mempty
Simulation/Aivika/Queue/Infinite/Base.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Queue.Infinite.Base--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/QueueStrategy.hs view
@@ -3,7 +3,7 @@  -- | -- Module     : Simulation.Aivika.QueueStrategy--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Ref.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Ref--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Ref/Base.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Ref.Base--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Resource.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Resource--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -53,6 +53,8 @@         -- * Altering Resource         incResourceCount,         decResourceCount,+        -- * Statistics Reset+        resetResource,         -- * Signals         resourceCountChanged,         resourceCountChanged_,@@ -585,5 +587,24 @@      a' `seq` writeIORef (resourceTotalWaitTimeRef r) a'      modifyIORef' (resourceWaitTimeRef r) $        addSamplingStats delta+     invokeEvent p $+       triggerSignal (resourceWaitTimeSource r) ()++-- | Reset the statistics.+resetResource :: Resource s -> Event ()+resetResource r =+  Event $ \p ->+  do let t = pointTime p+     count <- readIORef (resourceCountRef r)+     writeIORef (resourceCountStatsRef r) $+       returnTimingStats t count+     utilCount <- readIORef (resourceUtilisationCountRef r)+     writeIORef (resourceUtilisationCountStatsRef r) $+       returnTimingStats t utilCount+     queueCount <- readIORef (resourceQueueCountRef r)+     writeIORef (resourceQueueCountStatsRef r) $+       returnTimingStats t queueCount+     writeIORef (resourceTotalWaitTimeRef r) 0+     writeIORef (resourceWaitTimeRef r) emptySamplingStats      invokeEvent p $        triggerSignal (resourceWaitTimeSource r) ()
Simulation/Aivika/Resource/Base.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Resource.Base--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Resource/Preemption.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Resource.Preemption--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -33,6 +33,8 @@         incResourceCount,         decResourceCount,         alterResourceCount,+        -- * Statistics Reset+        resetResource,         -- * Signals         resourceCountChanged,         resourceCountChanged_,@@ -286,6 +288,7 @@                            then do PQ.dequeue (resourceActingQueue r)                                    PQ.enqueue (resourceActingQueue r) (- priority) $ ResourceActingItem priority pid                                    PQ.enqueue (resourceWaitQueue r) p0 (Right $ ResourcePreemptedItem p0 t pid0)+                                   invokeEvent p $ updateResourceWaitTime r 0                                    invokeEvent p $ updateResourceQueueCount r 1                                    invokeEvent p $ processPreemptionBegin pid0                                    invokeEvent p $ resumeCont c ()@@ -497,5 +500,24 @@      a' `seq` writeIORef (resourceTotalWaitTimeRef r) a'      modifyIORef' (resourceWaitTimeRef r) $        addSamplingStats delta+     invokeEvent p $+       triggerSignal (resourceWaitTimeSource r) ()++-- | Reset the statistics.+resetResource :: Resource -> Event ()+resetResource r =+  Event $ \p ->+  do let t = pointTime p+     count <- readIORef (resourceCountRef r)+     writeIORef (resourceCountStatsRef r) $+       returnTimingStats t count+     utilCount <- readIORef (resourceUtilisationCountRef r)+     writeIORef (resourceUtilisationCountStatsRef r) $+       returnTimingStats t utilCount+     queueCount <- readIORef (resourceQueueCountRef r)+     writeIORef (resourceQueueCountStatsRef r) $+       returnTimingStats t queueCount+     writeIORef (resourceTotalWaitTimeRef r) 0+     writeIORef (resourceWaitTimeRef r) emptySamplingStats      invokeEvent p $        triggerSignal (resourceWaitTimeSource r) ()
Simulation/Aivika/Resource/Preemption/Base.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Resource.Preemption.Base--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Results.hs view
@@ -1,9 +1,9 @@ -{-# LANGUAGE FlexibleContexts, FlexibleInstances, UndecidableInstances, ExistentialQuantification #-}+{-# LANGUAGE FlexibleContexts, FlexibleInstances, UndecidableInstances, ExistentialQuantification, OverlappingInstances #-}  -- | -- Module     : Simulation.Aivika.Results--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -1870,71 +1870,158 @@ intSubscript :: Int -> ResultName intSubscript i = "[" ++ show i ++ "]" -instance ResultComputing m => ResultProvider (m Double) where+instance {-# OVERLAPPABLE #-} ResultItemable (ResultValue a) => ResultProvider (Parameter a) where    resultSource' name i m =     ResultItemSource $ ResultItem $ computeResultValue name i m -instance ResultComputing m => ResultProvider (m [Double]) where+instance {-# OVERLAPPABLE #-} ResultItemable (ResultValue a) => ResultProvider (Simulation a) where    resultSource' name i m =     ResultItemSource $ ResultItem $ computeResultValue name i m -instance ResultComputing m => ResultProvider (m (SamplingStats Double)) where+instance {-# OVERLAPPABLE #-} ResultItemable (ResultValue a) => ResultProvider (Dynamics a) where    resultSource' name i m =     ResultItemSource $ ResultItem $ computeResultValue name i m -instance ResultComputing m => ResultProvider (m (TimingStats Double)) where+instance {-# OVERLAPPABLE #-} ResultItemable (ResultValue a) => ResultProvider (Event a) where    resultSource' name i m =     ResultItemSource $ ResultItem $ computeResultValue name i m -instance ResultComputing m => ResultProvider (m (SamplingCounter Double)) where+instance {-# OVERLAPPABLE #-} ResultItemable (ResultValue a) => ResultProvider (Ref a) where    resultSource' name i m =-    samplingCounterResultSource $ computeResultValue name i m+    ResultItemSource $ ResultItem $ computeResultValue name i m -instance ResultComputing m => ResultProvider (m (TimingCounter Double)) where+instance {-# OVERLAPPABLE #-} ResultItemable (ResultValue a) => ResultProvider (BR.Ref a) where    resultSource' name i m =-    timingCounterResultSource $ computeResultValue name i m+    ResultItemSource $ ResultItem $ computeResultValue name i m -instance ResultComputing m => ResultProvider (m Int) where+instance {-# OVERLAPPABLE #-} ResultItemable (ResultValue a) => ResultProvider (Var a) where    resultSource' name i m =     ResultItemSource $ ResultItem $ computeResultValue name i m -instance ResultComputing m => ResultProvider (m [Int]) where+instance {-# OVERLAPPABLE #-} ResultItemable (ResultValue a) => ResultProvider (Signalable a) where    resultSource' name i m =     ResultItemSource $ ResultItem $ computeResultValue name i m -instance ResultComputing m => ResultProvider (m (SamplingStats Int)) where+instance {-# OVERLAPPING #-} (ResultItemable (ResultValue a),+                              ResultItemable (ResultValue (SamplingStats a)))+                             => ResultProvider (Parameter (SamplingCounter a)) where    resultSource' name i m =-    ResultItemSource $ ResultItem $ computeResultValue name i m+    samplingCounterResultSource $ computeResultValue name i m -instance ResultComputing m => ResultProvider (m (TimingStats Int)) where+instance {-# OVERLAPPING #-} (ResultItemable (ResultValue a),+                              ResultItemable (ResultValue (SamplingStats a)))+                             => ResultProvider (Simulation (SamplingCounter a)) where    resultSource' name i m =-    ResultItemSource $ ResultItem $ computeResultValue name i m+    samplingCounterResultSource $ computeResultValue name i m -instance ResultComputing m => ResultProvider (m (SamplingCounter Int)) where+instance {-# OVERLAPPING #-} (ResultItemable (ResultValue a),+                              ResultItemable (ResultValue (SamplingStats a)))+                             => ResultProvider (Dynamics (SamplingCounter a)) where    resultSource' name i m =     samplingCounterResultSource $ computeResultValue name i m -instance ResultComputing m => ResultProvider (m (TimingCounter Int)) where+instance {-# OVERLAPPING #-} (ResultItemable (ResultValue a),+                              ResultItemable (ResultValue (SamplingStats a)))+                             => ResultProvider (Event (SamplingCounter a)) where    resultSource' name i m =+    samplingCounterResultSource $ computeResultValue name i m++instance {-# OVERLAPPING #-} (ResultItemable (ResultValue a),+                              ResultItemable (ResultValue (SamplingStats a)))+                             => ResultProvider (Ref (SamplingCounter a)) where++  resultSource' name i m =+    samplingCounterResultSource $ computeResultValue name i m++instance {-# OVERLAPPING #-} (ResultItemable (ResultValue a),+                              ResultItemable (ResultValue (SamplingStats a)))+                             => ResultProvider (BR.Ref (SamplingCounter a)) where++  resultSource' name i m =+    samplingCounterResultSource $ computeResultValue name i m++instance {-# OVERLAPPING #-} (ResultItemable (ResultValue a),+                              ResultItemable (ResultValue (SamplingStats a)))+                             => ResultProvider (Var (SamplingCounter a)) where++  resultSource' name i m =+    samplingCounterResultSource $ computeResultValue name i m++instance {-# OVERLAPPING #-} (ResultItemable (ResultValue a),+                              ResultItemable (ResultValue (SamplingStats a)))+                             => ResultProvider (Signalable (SamplingCounter a)) where++  resultSource' name i m =+    samplingCounterResultSource $ computeResultValue name i m++instance {-# OVERLAPPING #-} (ResultItemable (ResultValue a),+                              ResultItemable (ResultValue (TimingStats a)))+                             => ResultProvider (Parameter (TimingCounter a)) where++  resultSource' name i m =     timingCounterResultSource $ computeResultValue name i m -instance ResultComputing m => ResultProvider (m String) where+instance {-# OVERLAPPING #-} (ResultItemable (ResultValue a),+                              ResultItemable (ResultValue (TimingStats a)))+                             => ResultProvider (Simulation (TimingCounter a)) where    resultSource' name i m =-    ResultItemSource $ ResultItem $ computeResultValue name i m+    timingCounterResultSource $ computeResultValue name i m +instance {-# OVERLAPPING #-} (ResultItemable (ResultValue a),+                              ResultItemable (ResultValue (TimingStats a)))+                             => ResultProvider (Dynamics (TimingCounter a)) where++  resultSource' name i m =+    timingCounterResultSource $ computeResultValue name i m++instance {-# OVERLAPPING #-} (ResultItemable (ResultValue a),+                              ResultItemable (ResultValue (TimingStats a)))+                             => ResultProvider (Event (TimingCounter a)) where++  resultSource' name i m =+    timingCounterResultSource $ computeResultValue name i m++instance {-# OVERLAPPING #-} (ResultItemable (ResultValue a),+                              ResultItemable (ResultValue (TimingStats a)))+                             => ResultProvider (Ref (TimingCounter a)) where++  resultSource' name i m =+    timingCounterResultSource $ computeResultValue name i m++instance {-# OVERLAPPING #-} (ResultItemable (ResultValue a),+                              ResultItemable (ResultValue (TimingStats a)))+                             => ResultProvider (BR.Ref (TimingCounter a)) where++  resultSource' name i m =+    timingCounterResultSource $ computeResultValue name i m++instance {-# OVERLAPPING #-} (ResultItemable (ResultValue a),+                              ResultItemable (ResultValue (TimingStats a)))+                             => ResultProvider (Var (TimingCounter a)) where++  resultSource' name i m =+    timingCounterResultSource $ computeResultValue name i m++instance {-# OVERLAPPING #-} (ResultItemable (ResultValue a),+                              ResultItemable (ResultValue (TimingStats a)))+                             => ResultProvider (Signalable (TimingCounter a)) where++  resultSource' name i m =+    timingCounterResultSource $ computeResultValue name i m+ instance ResultProvider p => ResultProvider [p] where    resultSource' name i m =@@ -2019,22 +2106,82 @@         in resultSource' name' (VectorItemId y) x       items' = V.map resultSourceSummary items -instance (Ix i, Show i, ResultComputing m) => ResultProvider (m (A.Array i Double)) where+instance {-# OVERLAPPING #-} (Ix i, Show i, ResultItemable (ResultValue [e])) => ResultProvider (Parameter (A.Array i e)) where    resultSource' name i m =     ResultItemSource $ ResultItem $ fmap A.elems $ computeResultValue name i m -instance (Ix i, Show i, ResultComputing m) => ResultProvider (m (A.Array i Int)) where+instance {-# OVERLAPPING #-} (Ix i, Show i, ResultItemable (ResultValue [e])) => ResultProvider (Simulation (A.Array i e)) where    resultSource' name i m =     ResultItemSource $ ResultItem $ fmap A.elems $ computeResultValue name i m -instance ResultComputing m => ResultProvider (m (V.Vector Double)) where+instance {-# OVERLAPPING #-} (Ix i, Show i, ResultItemable (ResultValue [e])) => ResultProvider (Dynamics (A.Array i e)) where    resultSource' name i m =+    ResultItemSource $ ResultItem $ fmap A.elems $ computeResultValue name i m++instance {-# OVERLAPPING #-} (Ix i, Show i, ResultItemable (ResultValue [e])) => ResultProvider (Event (A.Array i e)) where++  resultSource' name i m =+    ResultItemSource $ ResultItem $ fmap A.elems $ computeResultValue name i m++instance {-# OVERLAPPING #-} (Ix i, Show i, ResultItemable (ResultValue [e])) => ResultProvider (Ref (A.Array i e)) where++  resultSource' name i m =+    ResultItemSource $ ResultItem $ fmap A.elems $ computeResultValue name i m++instance {-# OVERLAPPING #-} (Ix i, Show i, ResultItemable (ResultValue [e])) => ResultProvider (BR.Ref (A.Array i e)) where++  resultSource' name i m =+    ResultItemSource $ ResultItem $ fmap A.elems $ computeResultValue name i m++instance {-# OVERLAPPING #-} (Ix i, Show i, ResultItemable (ResultValue [e])) => ResultProvider (Var (A.Array i e)) where++  resultSource' name i m =+    ResultItemSource $ ResultItem $ fmap A.elems $ computeResultValue name i m++instance {-# OVERLAPPING #-} (Ix i, Show i, ResultItemable (ResultValue [e])) => ResultProvider (Signalable (A.Array i e)) where++  resultSource' name i m =+    ResultItemSource $ ResultItem $ fmap A.elems $ computeResultValue name i m++instance {-# OVERLAPPING #-} ResultItemable (ResultValue [e]) => ResultProvider (Parameter (V.Vector e)) where++  resultSource' name i m =     ResultItemSource $ ResultItem $ fmap V.toList $ computeResultValue name i m -instance ResultComputing m => ResultProvider (m (V.Vector Int)) where+instance {-# OVERLAPPING #-} ResultItemable (ResultValue [e]) => ResultProvider (Simulation (V.Vector e)) where++  resultSource' name i m =+    ResultItemSource $ ResultItem $ fmap V.toList $ computeResultValue name i m++instance {-# OVERLAPPING #-} ResultItemable (ResultValue [e]) => ResultProvider (Dynamics (V.Vector e)) where++  resultSource' name i m =+    ResultItemSource $ ResultItem $ fmap V.toList $ computeResultValue name i m++instance {-# OVERLAPPING #-} ResultItemable (ResultValue [e]) => ResultProvider (Event (V.Vector e)) where++  resultSource' name i m =+    ResultItemSource $ ResultItem $ fmap V.toList $ computeResultValue name i m++instance {-# OVERLAPPING #-} ResultItemable (ResultValue [e]) => ResultProvider (Ref (V.Vector e)) where++  resultSource' name i m =+    ResultItemSource $ ResultItem $ fmap V.toList $ computeResultValue name i m++instance {-# OVERLAPPING #-} ResultItemable (ResultValue [e]) => ResultProvider (BR.Ref (V.Vector e)) where++  resultSource' name i m =+    ResultItemSource $ ResultItem $ fmap V.toList $ computeResultValue name i m++instance {-# OVERLAPPING #-} ResultItemable (ResultValue [e]) => ResultProvider (Var (V.Vector e)) where++  resultSource' name i m =+    ResultItemSource $ ResultItem $ fmap V.toList $ computeResultValue name i m++instance {-# OVERLAPPING #-} ResultItemable (ResultValue [e]) => ResultProvider (Signalable (V.Vector e)) where    resultSource' name i m =     ResultItemSource $ ResultItem $ fmap V.toList $ computeResultValue name i m
Simulation/Aivika/Results/IO.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Results.IO--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Results/Locale.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Results.Locale--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Results/Transform.hs view
@@ -1,9 +1,9 @@ -{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-}+{-# LANGUAGE FlexibleInstances #-}  -- | -- Module     : Simulation.Aivika.Results.Transform--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -132,9 +132,6 @@    -- | Return the result transform.   tr :: a -> ResultTransform--instance ResultTransformer ResultTransform where-  tr = id  -- | Represents a statistics based upon observations. newtype SamplingStats = SamplingStats ResultTransform
Simulation/Aivika/Server.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Server--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -32,6 +32,8 @@         serverProcessingFactor,         serverOutputWaitFactor,         serverPreemptionFactor,+        -- * Statistics Reset+        resetServer,         -- * Summary         serverSummary,         -- * Derived Signals for Properties@@ -707,3 +709,16 @@        showString tab .        showString "preemption time (waiting for the proceeding after preemption):\n\n" .        samplingStatsSummary xs4 (2 + indent)++-- | Reset the statistics.+resetServer :: Server s a b -> Event ()+resetServer server =+  Event $ \p ->+  do writeIORef (serverTotalInputWaitTimeRef server) 0+     writeIORef (serverTotalProcessingTimeRef server) 0+     writeIORef (serverTotalOutputWaitTimeRef server) 0+     writeIORef (serverTotalPreemptionTimeRef server) 0+     writeIORef (serverInputWaitTimeRef server) mempty+     writeIORef (serverProcessingTimeRef server) mempty+     writeIORef (serverOutputWaitTimeRef server) mempty+     writeIORef (serverPreemptionTimeRef server) mempty
Simulation/Aivika/Server/Random.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Server.Random--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Signal.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Signal--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -16,6 +16,7 @@        (-- * Handling and Triggering Signal         Signal(..),         handleSignal_,+        handleSignalComposite,         SignalSource,         newSignalSource,         publishSignal,@@ -68,8 +69,10 @@ import Simulation.Aivika.Internal.Specs import Simulation.Aivika.Internal.Parameter import Simulation.Aivika.Internal.Simulation+import Simulation.Aivika.Internal.Dynamics import Simulation.Aivika.Internal.Event import Simulation.Aivika.Internal.Arrival+import Simulation.Aivika.Composite  import qualified Simulation.Aivika.Vector as V import qualified Simulation.Aivika.Vector.Unboxed as UV@@ -111,6 +114,12 @@ handleSignal_ signal h =    do x <- handleSignal signal h      return ()++-- | Like 'handleSignal' but within the 'Composite' computation.+handleSignalComposite :: Signal a -> (a -> Event ()) -> Composite ()+handleSignalComposite signal h =+  do x <- liftEvent $ handleSignal signal h+     disposableComposite x       -- | Create a new signal source. newSignalSource :: Simulation (SignalSource a)@@ -278,24 +287,24 @@                   signalHistoryValues :: V.Vector a }  -- | Create a history of the signal values.-newSignalHistory :: Signal a -> Event (SignalHistory a)+newSignalHistory :: Signal a -> Composite (SignalHistory a) newSignalHistory =   newSignalHistoryStartingWith Nothing  -- | Create a history of the signal values starting with -- the optional initial value.-newSignalHistoryStartingWith :: Maybe a -> Signal a -> Event (SignalHistory a)+newSignalHistoryStartingWith :: Maybe a -> Signal a -> Composite (SignalHistory a) newSignalHistoryStartingWith init signal =-  Event $ \p ->-  do ts <- UV.newVector-     xs <- V.newVector+  do ts <- liftIO UV.newVector+     xs <- liftIO V.newVector      case init of        Nothing -> return ()        Just a ->-         do UV.appendVector ts (pointTime p)-            V.appendVector xs a-     invokeEvent p $-       handleSignal_ signal $ \a ->+         do t <- liftDynamics time+            liftIO $+              do UV.appendVector ts t+                 V.appendVector xs a+     handleSignalComposite signal $ \a ->        Event $ \p ->        do UV.appendVector ts (pointTime p)           V.appendVector xs a
Simulation/Aivika/Signal/Random.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Signal.Random--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Simulation.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Simulation--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Specs.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Specs--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Statistics.hs view
@@ -1,7 +1,9 @@ +{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-}+ -- | -- Module     : Simulation.Aivika.Statistics--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental@@ -44,7 +46,13 @@         setTimingCounter,         returnTimingCounter) where +import GHC.Generics (Generic)++import Control.DeepSeq+ import Data.Monoid+import Data.Typeable+import Data.Binary  -- | Defines data types that can be converted to 'Double'. class Ord a => ConvertableToDouble a where@@ -72,8 +80,11 @@                   samplingStatsMean2 :: !Double                    -- ^ The average square value.                 }-  deriving (Eq, Ord)-           +  deriving (Eq, Ord, Typeable, Generic)++instance NFData a => NFData (SamplingStats a)+instance Binary a => Binary (SamplingStats a)+ -- | Specifies data type from which values we can gather the statistics.            class Num a => SamplingData a where              @@ -259,7 +270,10 @@                 -- ^ Return the sum of values.                 timingStatsSum2      :: !Double                  -- ^ Return the sum of square values.-                } deriving (Eq, Ord)+                } deriving (Eq, Ord, Typeable, Generic)++instance NFData a => NFData (TimingStats a)+instance Binary a => Binary (TimingStats a)                             -- | Defines the data type from which values we can gather the timing statistics. class Num a => TimingData a where                           @@ -461,8 +475,11 @@                     -- ^ The counter value.                     samplingCounterStats :: SamplingStats a                     -- ^ The counter statistics.-                  } deriving (Eq, Ord, Show)+                  } deriving (Eq, Ord, Show, Typeable, Generic) +instance NFData a => NFData (SamplingCounter a)+instance Binary a => Binary (SamplingCounter a)+ -- | An empty counter. emptySamplingCounter :: SamplingData a => SamplingCounter a emptySamplingCounter =@@ -501,7 +518,10 @@                   -- ^ The counter value.                   timingCounterStats :: TimingStats a                   -- ^ The counter statistics.-                } deriving (Eq, Ord, Show)+                } deriving (Eq, Ord, Show, Typeable, Generic)++instance NFData a => NFData (TimingCounter a)+instance Binary a => Binary (TimingCounter a)  -- | An empty counter. emptyTimingCounter :: TimingData a => TimingCounter a
Simulation/Aivika/Statistics/Accumulator.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Statistics.Accumulator--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Stream.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Stream--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Stream/Random.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Stream.Random--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/SystemDynamics.hs view
@@ -3,7 +3,7 @@  -- | -- Module     : Simulation.Aivika.SystemDynamics--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Table.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Table--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Task.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Task--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Transform.hs view
@@ -3,7 +3,7 @@  -- | -- Module     : Simulation.Aivika.Transform--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Transform/Extra.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Transform.Extra--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Transform/Memo.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Transform.Memo--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Transform/Memo/Unboxed.hs view
@@ -3,7 +3,7 @@  -- | -- Module     : Simulation.Aivika.Transform.Memo.Unboxed--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Unboxed.hs view
@@ -3,7 +3,7 @@  -- | -- Module     : Simulation.Aivika.Unboxed--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Var.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Var--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Var/Unboxed.hs view
@@ -1,7 +1,7 @@  -- | -- Module     : Simulation.Aivika.Var.Unboxed--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Vector.hs view
@@ -3,7 +3,7 @@  -- | -- Module     : Simulation.Aivika.Vector--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
Simulation/Aivika/Vector/Unboxed.hs view
@@ -3,7 +3,7 @@  -- | -- Module     : Simulation.Aivika.Vector.Unboxed--- Copyright  : Copyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2009-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental
aivika.cabal view
@@ -1,17 +1,21 @@ name:            aivika-version:         5.0.1+version:         5.1 synopsis:        A multi-method simulation library description:-    Aivika is a multi-method simulation library focused on -    discrete event simulation (DES) with partial support of -    system dynamics and agent-based modeling.+    Aivika is a discrete event simulation (DES) framework with support of activity-oriented,+    event-oriented and process-oriented paradigms. It supports resource preemption and other+    improved simulation techniques. There is also a partial support of system dynamics and+    agent-based modelling. All the complexity is hidden under easy-to-use computations.+    . +    The represented package is a basic simulation library optimized for sequential execution. +    There are also packages for nested and parallel distributed simulation.     .     The library has the following features:     .     * allows defining recursive stochastic differential equations of        system dynamics (unordered as in maths via the recursive do-notation);     .-    * supports the event-driven paradigm of DES as a basic core for +    * supports the event-driven paradigm of DES as a basis for        implementing other paradigms;     .     * supports extensively the process-oriented paradigm of DES@@ -21,13 +25,14 @@     * allows working with the resources based on specified queue strategies        (FCFS\/FIFO, LCFS\/LIFO, SIRO, static priorities and so on);     .-    * allows customizing the infinite and finite queues based on strategies too;+    * allows customizing the unbounded and bounded queues based on strategies too;     .     * supports the resource preemption;     .-    * allows defining a queue network based on streams of data (transacts) -      and their processors;+    * allows defining a queue network based on streams of data (transacts);     .+    * allows using a GPSS-like DSL with help of the additional library;+    .     * allows simulating circuits with recursive links and delays;     .     * supports the activity-oriented paradigm of DES;@@ -52,8 +57,8 @@     * hides technical details in high-level simulation computations       (monads, streams and arrows).     .-    Aivika itself is a light-weight engine with minimal dependencies. -    However, it has additional packages [1, 2] that offer the following +    The simulation engine itself has minimal dependencies. +    However, there are additional packages [1, 2] that offer the following      features:     .     * automating simulation experiments;@@ -70,17 +75,21 @@     * has an extensible architecture.     .     The charting package has two interchangeable back-ends [3, 4],-    where one of them uses Cairo and it is more preferable.+    where one of them uses Cairo and it creates small PNG images, while another+    creates more detailed SVG files and it can be used on Windows.     .-    The PDF documentation and installation instructions are -    available on the Aivika Wiki website [5]. +    There are also additional packages that allow saving the results of simulation +    in SQL databases. Then the results can be accessed from other software applications.+    For example, it can be useful when creating flight simulators in other programming languages+    such as C# or Java.     .-    Moreover, the method was generalized [6] and applied to -    nested simulation [7] and parallel distributed simulation [8]. +    Moreover, the method was generalized [5] and applied to +    nested simulation [6] and parallel distributed simulation [7].      .     The libraries were tested on Linux, Windows and OS X.     .-    A more full information about Aivika is available on the project website [9].+    The PDF documentation, installation instructions and a more full information about Aivika +    are available on the the AivikaSoft website [8].     .     \[1] <http://hackage.haskell.org/package/aivika-experiment>     .@@ -90,15 +99,13 @@     .     \[4] <http://hackage.haskell.org/package/aivika-experiment-diagrams>     .-    \[5] <https://github.com/dsorokin/aivika/wiki>-    .-    \[6] <http://hackage.haskell.org/package/aivika-transformers>+    \[5] <http://hackage.haskell.org/package/aivika-transformers>     .-    \[7] <http://hackage.haskell.org/package/aivika-branches>+    \[6] <http://hackage.haskell.org/package/aivika-branches>     .-    \[8] <http://hackage.haskell.org/package/aivika-distributed>+    \[7] <http://hackage.haskell.org/package/aivika-distributed>     .-    \[9] <http://www.aivikasoft.com/en/products/aivika.html>+    \[8] <http://www.aivikasoft.com>     .     P.S. Aivika is actually a genuine female Mari name which is pronounced      with stress on the last syllable.@@ -106,13 +113,13 @@ category:        Simulation license:         BSD3 license-file:    LICENSE-copyright:       (c) 2009-2016. David Sorokin <david.sorokin@gmail.com>+copyright:       (c) 2009-2017. David Sorokin <david.sorokin@gmail.com> author:          David Sorokin maintainer:      David Sorokin <david.sorokin@gmail.com>-homepage:        http://www.aivikasoft.com/en/products/aivika.html+homepage:        http://www.aivikasoft.com cabal-version:   >= 1.10 build-type:      Simple-tested-with:     GHC == 8.0.1+tested-with:     GHC == 8.0.2  extra-source-files:  examples/BassDiffusion.hs                      examples/BouncingBall.hs@@ -161,6 +168,14 @@                      Simulation.Aivika.Event                      Simulation.Aivika.Gate                      Simulation.Aivika.Generator+                     Simulation.Aivika.Internal.Cont+                     Simulation.Aivika.Internal.Dynamics+                     Simulation.Aivika.Internal.Event+                     Simulation.Aivika.Internal.Parameter+                     Simulation.Aivika.Internal.Process+                     Simulation.Aivika.Internal.Simulation+                     Simulation.Aivika.Internal.Specs+                     Simulation.Aivika.Internal.Arrival                      Simulation.Aivika.Net                      Simulation.Aivika.Net.Random                      Simulation.Aivika.Operation@@ -212,21 +227,14 @@                      Simulation.Aivika.Vector                      Simulation.Aivika.Vector.Unboxed -    other-modules:   Simulation.Aivika.Internal.Cont-                     Simulation.Aivika.Internal.Dynamics-                     Simulation.Aivika.Internal.Event-                     Simulation.Aivika.Internal.Parameter-                     Simulation.Aivika.Internal.Process-                     Simulation.Aivika.Internal.Simulation-                     Simulation.Aivika.Internal.Specs-                     Simulation.Aivika.Internal.Arrival-                     -    build-depends:   base >= 4.5.0.0 && < 6,+    build-depends:   base >= 4.6.0.0 && < 6,                      mtl >= 2.1.1,                      array >= 0.3.0.0,                      containers >= 0.4.0.0,                      random >= 1.0.0.3,-                     vector >= 0.10.0.1+                     vector >= 0.10.0.1,+                     deepseq >= 1.1.0.0,+                     binary >= 0.6.4.0      other-extensions:   FlexibleContexts,                         FlexibleInstances,@@ -239,8 +247,10 @@                         ExistentialQuantification,                         TypeFamilies,                         DeriveDataTypeable,+                        DeriveGeneric,                         TypeSynonymInstances,-                        RankNTypes+                        RankNTypes,+                        OverlappingInstances                           ghc-options:     -O2