packages feed

aivika-experiment-chart-3.0: examples/ChemicalReaction/Experiment.hs

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" }

generators :: ChartRendering r => [WebPageGenerator r]
generators =
  [outputView defaultExperimentSpecsView,
   outputView $ defaultLastValueView {
     lastValueSeries =
        resultByName "t" <>
        resultByName "a" <>
        resultByName "b" <>
        resultByName "c" },
   outputView $ defaultTableView {
     tableSeries =
        resultByName "t" <>
        resultByName "a" <>
        resultByName "b" <>
        resultByName "c" },
   outputView $ defaultTimeSeriesView {
     timeSeriesTitle = "Time Series",
     timeSeriesLeftYSeries =
        resultByName "a" <>
        resultByName "b" <>
        resultByName "c" },
   outputView $ defaultXYChartView {
     xyChartTitle = "XYChart - 1",
     xyChartPlotTitle = "b=b(a), c=c(a)",
     xyChartXSeries =
       resultByName "a",
     xyChartLeftYSeries =
       resultByName "b",
     xyChartRightYSeries =
       resultByName "c" },
   outputView $ defaultXYChartView {
     xyChartTitle = "XYChart - 2",
     xyChartPlotTitle = "a=a(b), c=c(b)",
     xyChartXSeries =
       resultByName "b",
     xyChartRightYSeries =
       resultByName "a" <>
       resultByName "c" },
   outputView $ defaultXYChartView {
     xyChartTitle = "XYChart - 3",
     xyChartPlotTitle = "a=a(c), b=b(c)",
     xyChartXSeries =
       resultByName "c",
     xyChartLeftYSeries =
       resultByName "b",
     xyChartRightYSeries =
       resultByName "a" } ]