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.
|