{-# LANGUAGE RecursiveDo #-} import Control.Monad.Fix import Simulation.Aivika.Trans import Simulation.Aivika.Trans.SystemDynamics specs = Specs { spcStartTime = 0, spcStopTime = 13, spcDT = 0.01, spcMethod = RungeKutta4, spcGeneratorType = SimpleGenerator } model :: (MonadComp m, MonadFix m) => Simulation m (Results m) model = mdo a <- integ (- ka * a) 100 b <- integ (ka * a - kb * b) 0 c <- integ (kb * b) 0 let ka = 1 kb = 1 return $ results [resultSource "a" "variable A" a, resultSource "b" "variable B" b, resultSource "c" "variable C" c] main = printSimulationResultsInStopTime printResultSourceInEnglish model specs