Structure of the Eco Lab Simulation System

Eco Lab is built on the following components:

tcl++
which provides bindings to the TCL scripting language,
TCL_obj
which exposes the internals of C++ objects to TCL
pack
performs serialisation of objects, for checkpoint, and client/server applications
ClassdescMP
parallel programming support
Graphcode
provides an abstraction of objects moving on a distributed graph.
arrays
which implements dynamic arrays used in a number of Eco Labmodels
analysis/Xecolab
which provides a number of generic instruments for observing the Eco Lab models
random
a thin abstraction on random number generators, kindly supplied by UNURAN or GNUSSL (as preferred)
cacheDBM
Persistent object map
eco_strstream
classdesc stringstream class
eco_hashmap
hashmap -- using either std::map or TCL's hash map
netcomplexity
Network complexity measure
C++ Standard Library
(of course!)

The Eco Lab model itself is defined in the model specific file ecolab.cc. To define another model, replace this file by another one with similar functions. An example of this is jellyfish.cc. See §8 for more details.

The whole computation is constructed from a TCL[5] script. Example scripts include ecolab.tcl, pred-prey.tcl and console.tcl/engine.tcl for a sample client/server system.

Figure: Structure of the Eco Lab Simulation System for the Eco Lab model. Shaded boxes are specific to the Eco Lab model, and are replaced by equivalent modules for other models.

Figure: Structure of the Eco Lab Simulation System for the Jellyfish model. Shaded boxes are specific to the Jellyfish model, and are replaced by equivalent modules for other models.