module Experiment (experiment, generators) where
import Data.Monoid
import Simulation.Aivika
import Simulation.Aivika.Experiment
import Simulation.Aivika.Experiment.Chart
specs = Specs { spcStartTime = 0,
spcStopTime = 13,
spcDT = 0.01,
spcMethod = RungeKutta4,
spcGeneratorType = SimpleGenerator }
experiment :: Experiment
experiment =
defaultExperiment {
experimentSpecs = specs,
experimentRunCount = 1,
experimentTitle = "Chemical Reaction",
experimentDescription = "Chemical Reaction as described in " ++
"the 5-minute tutorial of Berkeley-Madonna" }
t = resultByName "t"
a = resultByName "a"
b = resultByName "b"
c = resultByName "c"
generators :: ChartRendering r => [WebPageGenerator r]
generators =
[outputView defaultExperimentSpecsView,
outputView $ defaultLastValueView {
lastValueSeries = t <> a <> b <> c },
outputView $ defaultTableView {
tableSeries = t <> a <> b <> c },
outputView $ defaultTimeSeriesView {
timeSeriesTitle = "Time Series",
timeSeriesLeftYSeries = a <> b <> c },
outputView $ defaultXYChartView {
xyChartTitle = "XYChart - 1",
xyChartPlotTitle = "b=b(a), c=c(a)",
xyChartXSeries = a,
xyChartLeftYSeries = b,
xyChartRightYSeries = c },
outputView $ defaultXYChartView {
xyChartTitle = "XYChart - 2",
xyChartPlotTitle = "a=a(b), c=c(b)",
xyChartXSeries = b,
xyChartRightYSeries = a <> c },
outputView $ defaultXYChartView {
xyChartTitle = "XYChart - 3",
xyChartPlotTitle = "a=a(c), b=b(c)",
xyChartXSeries = c,
xyChartLeftYSeries = b,
xyChartRightYSeries = a } ]