aivika-0.3: examples/ChemicalReaction.hs
import Simulation.Aivika.Dynamics
import Simulation.Aivika.Dynamics.Simulation
import Simulation.Aivika.Dynamics.SystemDynamics
specs = Specs { spcStartTime = 0,
spcStopTime = 13,
spcDT = 0.01,
spcMethod = RungeKutta4 }
model :: Simulation [Double]
model =
do integA <- newInteg 100
integB <- newInteg 0
integC <- newInteg 0
let a = integValue integA
b = integValue integB
c = integValue integC
let ka = 1
kb = 1
integDiff integA (- ka * a)
integDiff integB (ka * a - kb * b)
integDiff integC (kb * b)
runDynamicsInFinal $ sequence [a, b, c]
main = runSimulation model specs >>= print