fun putStrLn str = (TextIO.output (TextIO.stdOut, str); TextIO.output (TextIO.stdOut, "\n")) fun putStr str = (TextIO.output (TextIO.stdOut, str)) fun showReal n = let open StringCvt open Real in (if n < 0.0 then "-" else "") ^ (fmt (FIX (SOME 12)) (abs n)) end fun printstate (input) = ( (showReal (#t(input))) ^ " " ^ (showReal (#V(input))) ^ " " ^ (showReal (#U(input))) ) fun start (initial,tmax,f) = let fun run (input) = let val nstate = f input val nstate1 = {d=(#d(initial)),U=(#U(nstate)),V=(#V(nstate)),b=(#b(initial)),c=(#c(initial)),t=(#t(nstate)),theta=(#theta(initial)),a=(#a(initial)),Isyn=(#Isyn(initial)),k3=(#k3(initial)),k2=(#k2(initial)),k1=(#k1(initial)),h=(#h(nstate))} in putStrLn (printstate nstate1); if (#t nstate) > tmax then (putStrLn "# All done!"; nstate) else (run nstate1) end in printstate initial; run initial end val _ = start (Model.RS_initial,240.0,Model.RS) (* val _ = (start (Model.IB_initial,240.0,Model.IB,make_pulse (40.0,200.0,0.0,10.0))) val _ = (start (Model.CH_initial,240.0,Model.CH,make_pulse (40.0,200.0,0.0,10.0))) val _ = (start (Model.FS_initial,240.0,Model.FS,make_pulse (40.0,200.0,0.0,10.0))) val _ = (start (Model.LTS_initial,240.0,Model.LTS,make_pulse (40.0,200.0,0.0,10.0))) *)